# Copyright (C) 2002-2004 gregoire HUBERT.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author : gregoire HUBERT
#
# XML_node.objet
#
# This object is an XML node representation
#
# /- name (string)
# xml_node --- attributes (array)
# \- children (array) or value (string)
class xml_node {
var $name;
var $attributes = array();
var $children = array();
var $value = "";
function xml_node($name,$attributes,$children=array(),$value="") {
$this->name = $name;
if (is_array($attributes)) {
$this->attributes = $attributes;
}
$this->children = $children;
$this->value = $value;
}
}
# Copyright (C) 2003-2004 gregoire HUBERT.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author : gregoire HUBERT
#
# xml_tree class
#
# This object parses an XML stream and offers a tree composed by xml_nodes
#
class xml_tree {
var $xml_stream;
var $current_node;
var $root_node;
var $index;
var $value;
function xml_tree() {
$this->root_node = new xml_node("__ROOT_NODE",array());
$this->current_node = $this->root_node;
}
function add_tree($xml_stream) {
# Managing the parser
$this->xml_stream = $xml_stream;
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1);
if (!xml_parse_into_struct($xml_parser,$this->xml_stream,$this->value,$this->index)) {
xml_parser_free($xml_parser);
die("XML Parse error");
}
xml_parser_free($xml_parser);
# Now, $this->value and $this->index are informed, we can use the get_node methode.
$tab_result = $this->get_node(0,count($this->value) - 1);
$this->root_node->children[] = $tab_result[0];
$this->current_node = $this->root_node;
}
function get_node($index_start,$index_stop) {
#echo " \n";
#echo "GET-NODE($index_start,$index_stop) \n";
# What we are going to return is an array of xml_nodes
$return_tab = array();
# depth is only here to check if everything is all right
$tab_node = $this->value[$index_start];
$depth = $tab_node["level"]-1;
# Now we have to be sure we do not forget a single node
for ($index = $index_start;$index <= $index_stop;$index++) {
#echo "\$index = $index ";
# get the current node
$tab_node = $this->value[$index];
# what type of node is it ?
switch($tab_node["type"]) {
case "complete" :
# Depth integrity check
if ($tab_node["level"] != $depth+1) {
die("ERREUR # contrainte d'intégrité au noeud complet $index, niveau $depth + 1 au lieu de ".$tab_node["level"]);
}
#echo "Noeud complet trouvé position $index TAG ".$tab_node["tag"]." \n";
# Easy one, no children to manage, only a value...
$return_tab[] = new xml_node($tab_node["tag"],$tab_node["attributes"],"",$tab_node["value"]);
break;
case "open" :
# Depth integrity check
if ($tab_node["level"] != $depth +1 ) {
die("ERREUR # contrainte d'intégrité au noeud ouvert $index, niveau $depth au lieu de ".$tab_node["level"]);
}
# Open tag, we re-use this methode to return its children
# Where is the correspondong close tag ?
$node_index = $this->index[$tab_node["tag"]];
$flipped_node_index = array_flip($node_index);
#echo "This ".$tab_node["tag"]." is at coords ".$flipped_node_index[$index]." ";
$i=1;
do {
$next_index = $node_index[$flipped_node_index[$index] + $i++];
$next_tag=$this->value[$next_index];
}
while ($next_tag["level"]!=$tab_node["level"]);
#echo "Ouverture de noeud détectée pos $index TAG ".$tab_node["tag"]." \n Parcours jusqu au $next_index \n";
# good, we can now instanciate our node
$return_tab[] = new xml_node($tab_node["tag"],$tab_node["attributes"],$this->get_node($index+1,$next_index),"");
# As we called the get_node methode, we are sure that nodes have been parsed to the corresponding close tag
$index = $next_index;
break;
case "close" :
# Depth integrity check
if ($tab_node["level"] != $depth ){
die("ERREUR # contrainte d'intégrité au noeud fermé $index, niveau $depth au lieu de ".$tab_node["level"]);
}
#echo "Fermeture de noeud detectée pos $index TAG ".$tab_node["tag"]."
\n";
# This ugly thing is useless because reaching a close tag means that $index==$index_stop but who knows ? =)
# it will be skipped soon
$index = $index_stop;
break;
default:
die("Erreur de type de TAG non déterminé :'".$tab_node["type"]."'");
}
}
# We are out ... returns the array with collected children...
return ($return_tab);
}
# this function browse the xml tree and set the current node to the selected node
function give_node($path) {
if ($path[0]=="/") {
$current_node=$this->root_node;
$path=substr($path,1);
#echo "ABSOLUTE PATH GIVEN=$path ";
}
else {
$current_node = $this->current_node;
}
#echo "PATH GIVEN=$path ";
$tab_path = split("/",$path);
foreach ($tab_path as $node_expr) {
#echo "STUDYING EXPR='$node_expr' ";
$node = $current_node;
$expr_tab = split("\?",$node_expr);
$node_name = $expr_tab[0];
$attr_tab = 0;
if (count($expr_tab)>1) {
##echo "TROUVE AU MOINS UNE CONDITION SUR LES ATTRIBUTS... ";
$attr_expr_tab=split(",",$expr_tab[1]);
$attr_tab=array();
foreach($attr_expr_tab as $attr_expr) {
$attr_split_expr=split("=",$attr_expr);
$attr_tab[$attr_split_expr[0]]=$attr_split_expr[1];
}
}
$last=0;
foreach ($node->children as $children) {
#echo "COMPARING WITH '$children->name' ";
if ($children->name == $node_name) {
##echo "TROUVE NOEUD CORRESPONDANT $node_name ";
if (is_array($attr_tab)) {
$node_attributes = $children->attributes;
foreach ($attr_tab as $key=>$value) {
if ($node_attributes[$key] == $value) {
#echo "ATTRIBUTE & CHANGE CURRENT NODE TO ".$children->name." ";
$current_node = $children;
$last = 1;
}
}
}
else {
##echo "CHILD=".$children->name." ";
#echo "CHANGE CURRENT NODE TO ".$children->name." ";
$current_node = $children;
$last=1;
}
}
if ($last) {
break;
}
}
if (!$last) {
#echo "PATH ERROR $node_name ";
#die("MMmmmh It seems that this file is not a DIA XML format...sorry...");
return 0;
}
}
return $current_node;
}
function browse_tree($path) {
$node = $this->give_node($path);
if (is_object($node)) {
$this->current_node = $node;
return 1;
}
return 0;
}
# this method dumps an html representation of the xml tree
function xml_show($node = "",$level=0,$last=0) {
if ($node=="") {
$node=$this->root_node;
}
if (!is_object($node)) {
die("ERROR : node is not an object");
}
$line="";
for($i=1;$i<=$level;$i++) {
if ((i==$level-1) and ($last)) {
$line.=" ";
}
else {
$line.=" |";
}
if ($i==$level) {
$line.="`-";
}
}
$line.=$node->name;
#echo $line;
$line.="".count($node->children)."";
if (count($node->children)==1) {
$line.=" (".$node->value.") \n";
echo "$line";
}
else {
$line.=" \n";
echo "$line";
$i=1;
foreach($node->children as $children) {
if ($i==count($node->children)) {
$this->xml_show($children,$level+1,1);
}
else {
$this->xml_show($children,$level+1);
}
$i++;
}
}
}
#END_CLASS
}
GEIST (uk) - Faith Healing (2015)
Label : Soaked In Torment Records
Sortie du Scud : 15 janvier 2015
Pays : Angleterre
Genre : Darkcore
Type : Album
Playtime : 6 Titres - 16 Mins
En ces temps de métissage, de mélange, d'hybridation, il est rassurant de constater que certains groupes n'en ont cure et s'accroche à un style "pur" pour perpétrer une certaine tradition.
Alors certes, le Fastcore, le Chaotic Hardcore, le Crust Sludge sont dignes d'intérêt, mais il est parfois nécessaire de revenir aux sources de la violence et de... jouer. Simplement jouer une musique puissante, sans concession, qui écrase tout sur son passage.
Direction le nord ouest de l'Angleterre, à la rencontre d'anciens membres de CHOLERA et END REIGN, qui ont associé leurs forces au sein d'un nouveau combo, GEIST.
GEIST a sorti en début d'année 2015 un EP six titres, et celui ci mérite toute votre attention, pour peu que mon pamphlet d'introduction soit vôtre.
Faith Healing est donc à ce qu'il semble un "concept EP" sur la foi, ses racines, ses déviances et aberrations, et sa possibilité de rédemption vers une certaine forme de lucidité. Chaque morceau est développé selon un thème précis, et contient le mot "foi" dans son intitulé.
Car en sus d'être de solides instrumentistes, Jacque, Matt, Ian, Dave et Luke sont loin d'être des idiots bas du front. Ils ont des opinions, des idées, une philosophie qu'ils nous font partager. Et l'association d'une musique solide comme une bible lancée en pleine face et de textes cohérents et intelligents est diablement efficace.
Comme je le disais, GEIST, c'est du Hardcore, option très Dark, et si ce style dilué légèrement dans un Sludge épais et sombre est votre tasse de thé, Faith Healing vous comblera sans aucun doute.
Outre la puissance développée par le groupe, amplifiée par une production énorme et compacte, ce sont les riffs qui impressionnent le plus. Tous sont accrocheurs, déliés ou retenus, lâchés ou plaqués, mais ils possèdent tous une identité individuelle et transcendent des morceaux soutenus par une rythmique extrêmement solide.
Cet EP est clairement scindé en deux options. La première, privilégie la brièveté, n'autorise pas plus de deux minutes de punch, et propose les options les plus véhémentes et rapides. "Faith : Commital" et "Faith : Design" sont les plus véloces du lot, tandis que "Faith : Delusion" se contente d'aligner une minute et trente seconde d'une mélodie maladive et pesante, avec une guitare en écho 50's qui distille quelques notes vrillées.
"Faith : Maker", "Faith : Unspoken" et "Faith : Healer" proposent des formats plus développés, et sont la plupart du temps construits sur un tempo médium, voire Heavy. A ce titre, l'ouverture de "Maker" est un modèle du genre. Basse économique et plombée, larsen modéré, tout se met en place progressivement, avant que le quintette ne se lance dans une violente diatribe Sludgecore presque sudiste, sur laquelle la voix éructe sans discontinuer. La rythmique accélère légèrement, le phrasé vocal est précis et hargneux, c'est un modèle du genre, tels qu'on pu les édicter il y a quelques années PULLING TEETH ou BLACK MASS. Bien construit, interprété avec flair, c'est carré, sans ambages.
"Unspoken" continue sur cette lancée lancinante et écrasante, développant un motif sombre et poisseux, et ne dévie jamais de son entreprise de sape par les bases. C'est lourd, écorché, d'une tension extrême, un peu comme si les EYEHATEGOD et UNSANE lançaient un concours du morceau le plus abrasif possible.
"Healer" relève un peu la barre, heurte quelque peu les plans, avant de laisser un sample finir le travail, comme une catharsis cruelle mais indispensable.
Comme croire en effet en un Dieu qui n'a jamais rien fait pour nous prouver son amour ?
La question reste en suspens sur un dernier larsen qui s'évanouit dans les interrogations, mais offre à cet EP la note en forme de points de suspension qu'il méritait.
Alors, bien sur, encore une fois, rien de vraiment novateur, pas de soulèvement, mais une musique forte, qui n'emprunte pas cinquante chemins à la fois pour masquer la vacuité de son propos. Bien au contraire...
Une association pertinente entre une musique compacte et solide, et des mots choisis, soulevant le débat.
La seule question à laquelle vous serez tenu de répondre est :
Avez vous foi en GEIST ?
Sur la base de Faith Healing, la réponse est claire. Oui.
Ajouté : Mardi 10 Novembre 2015 Chroniqueur : Mortne2001 Score : Lien en relation: Geist Website Hits: 5716
|