# 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
}
EIBON LA FURIES (uk) - The Immoral Compass (2013)
Label : Code666 Records
Sortie du Scud : 2013
Pays : Angleterre
Genre : Cyber Post Black Metal
Type : Album
Playtime : 12 Titres - 54 Mins
SISTERS OF MERCY, MINISTRY, MAYHEM, TYPE O NEGATIVE, EMPEROR, NOTRE DAME et COVEN. Non ce ne sont pas des noms glorieux balancés à la volée, ils ont été sciemment choisis, inconsciemment d'ailleurs, car ce sont ceux qui me sont venus à l'esprit lorsque j'ai écouté le second album des Anglais d'EIBON LA FURIES.
Influences dites-vous ? C'est une possibilité, mais inconscientes aussi je pense. Je doute que le quatuor ait pu délibérément mixer des origines aussi disparates que complémentaires dans une musique originale. Mais, c'est une possibilité.
Des SISTERS, ils ont gardé la gravité, de MINISTRY, les riffs redondants, de TYPE O', le décalage gothico-romantique et les arrangements de synthé. D'EMPEROR, la base Black, grandiloquente et progressive ; et de MAYHEM, la volonté novatrice et les tabous brisés. De NOTRE DAME, le côté cabaret grinçant, et de COVEN, la base Rock, et l'ambiance poisseuse.
Tout ça ressemble à une boite de Pandore ouverte au bon moment, mais pas forcément par les bonnes mains. Il est vrai qu'aussi nobles soient les références, encore faut-il qu'elles soient citées avec révérence. Et force talent sous peine d'être balbutiées, ou pire, régurgitées telles qu'elles, sans recul ni distanciation.
Mais là n'est pas le cas, et le résultat est ce qu'il aurait du être en cas de réussite totale.
Et The Immoral Compass n'est rien de moins qu'envoûtant.
Avertissement immédiat. Je ne parlerai d'aucune chanson en détail (ou presque). La linéarité d'une telle chronique serait une insulte au travail accompli. La musique d' EIBON LA FURIES étant aussi hermétique que son nom, il vous appartiendra de l'écouter, de l'apprécier, de la disséquer à votre manière. Ou pas, mais ce serait une belle erreur.
The Immoral Compass est un album qui s'écoute à plusieurs niveaux. Au premier degré, c'est un melting pot incroyable, un creuset de sonorités amalgamées de la façon la plus intelligente qui soit. Au second degré, c'est une puissance, un écho, une déflagration assourdissante, qui reste mélodique et harmonieuse et ne tombe jamais dans le piège du chaos.
Au troisième degré, c'est une œuvre rare, qui vous attire, vous pénètre, vous remue, et vous laisse avec une sensation bizarre, comme le témoin d'une chose qui n'a pas pu arriver. Et qui pourtant, est devenue une occurrence viable et tangible. Mais cessons là ces considérations littéraires et parlons de musique, puisqu'elle est viscérale et profondément humaine.
Comme je l'ai dit plus haut, EIBON LA FURIES est multiple. Et unique à la fois. Gothique, mais sans le décorum moderne lourd et cheap. Sombre et Doom et pourtant mélodique et léger. Black, par nuances, mais d'une école structurelle qui rend la chose abordable et créative. Progressif et lyrique, mais sans être pompeux ou pompier, ni trop complexe.
Tout ça, beaucoup d'autres choses, pour au final ne ressembler qu'à eux-mêmes, et c'est une excellente chose.
Et en sus de cette identité indéniable, le groupe a ciselé chaque détail de sa musique, des intros aux longues digressions de clôture. Avec une production claire et profonde qui n'en fait pas trop, laissant chaque espace à chaque instrument, le rendu est absolument parfait, et semble parfois issu d'une saillie des années 80 remixée au goût du jour.
Un des morceaux les plus symptomatiques m'amenant à cette affirmation reste sans doute le terrible "Astronomy In Absences", dans lequel les Anglais mixent des riffs plus SABBAT que nature, avec un chant à la Kelly Shaefer d'ATHEIST, et des arrangements dignes d'un CORONER des plus grandes heures. Et ceci n'est qu'un exemple parmi tant d'autres...
Et si certaines thématiques de "Imperial Jackals Head" évoquent le MINISTRY de "New World Order", c'est plus par leur redondance que par emprunt. Quand elles sont de plus suivies par une litanie à la VENOM du At War With Satan et un solo à la Alex Skolnick, le doute n'est plus permis. EIBON LA FURIES a pris le meilleur de l'extrême d'il y a vingt cinq ans, et l'a assimilé à notre culture contemporaine avec une maestria époustouflante. Sans oublier d'en parsemer l'essence d'un léger parfum gothique du meilleur ton, celui là même dont Andrew Eldritch avait l'habitude d'utiliser les fragrances.
Je pourrais disserter des heures sur les chansons qui animent le conceptuel The Immoral Compass. Vous dire qu'il traite des choix qu'un homme doit faire dans sa vie, et la façon dont il doit les assumer.
Vous dire que certaines parties de chœurs rappellent "Suite Sister Mary" de QUEENSRYCHE sur fond de Néo Black acoustique.
Qu'un chant peut être diablement versatile mais cohérent. Que des guitares peuvent à la fois susciter la crainte, et séduire l'instant d'après.
Mais à quoi bon décrire avec des mots ce qu'on ressent avec le cœur et l'âme ?
Ajouté : Mercredi 25 Septembre 2013 Chroniqueur : Mortne2001 Score : Lien en relation: Eibon La Furies Website Hits: 7214
|