# 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
}
WHEN ICARUS FALLS (ch) - Aegean (2012)
Label : Headstrong Music
Sortie du Scud : 2012
Pays : Suisse
Genre : Post Hardcore
Type : Album
Playtime : 7 Titres - 44 Mins
Ca n’est un secret pour personne, j’aime le Post Hardcore… Je trouve en cette musique une catharsis incroyable aux vicissitudes de la vie, alors même qu’elle est censée en être l’illustration la plus fidèle. Dichotomie, quand tu nous tiens… Mais après tout, ne peut-on soulager la douleur en l’exprimant ? Débat intéressant, et dont il faudrait un jour analyser toutes les réponses possibles…
Et puis, allons y, pinaillons.
Post Hardcore… Après le Hardcore ? Au-delà du Hardcore ? Cette question n’est elle d’ailleurs pas née de la carrière des quasi-géniteurs du genre, NEUROSIS, dont les premiers disques furent d’incendiaires brûlots d’Anarcho Punk teinté de Hardcore ? Mais après tout, est ce vraiment important ?
L’important n’est pas la raison, mais la façon.
Et à musique extrême, démarche extrême. Beaucoup l’avaient d’ailleurs tentée dès le début. Le SAB, et son morceau éponyme, à l’époque, ça collait la chair de poule. Ces cloches, cette guitare sombre, ce tempo lourd comme un destin funeste.
Alors, appelons ça la tradition si vous le voulez bien.
Mais ce qu’il faut retenir du Post Hardcore, c’est qu’il est aussi facile de s’y vautrer que d’y dresser une table élaborée. Je veux dire, rien n’est forcément simple dans cette musique. C’est un peu le doppelganger du Progressif, en ce sens que les deux styles partagent le même goût pour les morceaux à rallonge et alambiqués, à la différence que les uns les remplissent de notes et de breaks tandis que les autres n’y voient qu’ambiances étirées.
Et de Suisse nous vient alors WHEN ICARUS FALLS (vous noterez bien l’absence totale de transition, voulue par le rédacteur. Prenez le comme un effet de manche). Qui - et ça tombe assez bien – joue du Post Hardcore.
Restons à la surface, regardons l’objet, un joli digipack en triptyque, orné d’un graphisme plus ou moins abscons, c’est déjà plaisant.
Sept titres pour presque trois quarts d’heure, on reste dans la norme expansive, ça aussi, c’est rassurant.
Mais la musique ?
La musique, c’est bien le problème.
Aegean, selon le site official du groupe, est un concept album basé sur les travaux d’ Elisabeth Kübler-Ross, qui a plus ou moins décomposé le processus de mort en cinq étapes, le refus, la colère, la négociation, la dépression et l’acceptation. Programme lyrique alléchant s’il en est, mais un concept n’a jamais fait un album. Il peut à la rigueur, en expliquer la cohérence, si toutefois la démarche du groupe allait à l’origine dans ce sens, mais il ne peut en excuser la linéarité.
J’ai dit quelques lignes plus haut que WIF jouait du Post Hardcore. J’avais écrit, encore un peu plus haut que j’aimais le Post Hardcore.
Alors, où est le hic ?
Le hic, c’est que WIF ne joue QUE du Post Hardcore. Sans chercher à aller plus loin. Et comme expliqué précédemment, c’est un style qui ne tolère pas la demie mesure. D’où, un ennui certain.
Non, l’album n’est pas mauvais. Aegean est bien joué, avec conviction, mais las, il ne décolle jamais. Il est toujours bon de laisser une ambiance se développer sans la brider, mais lorsque celle-ci occupe tout l’album, avec un minimum de variations, la lassitude pointe assez vite le bout de son nez.
J’ai écouté le disque, plusieurs fois bien sur, mais jamais, il ne m’a envoûté, ce qui est le but premier du genre impliqué. Un album de Post Hardcore doit remuer les tripes, renverser le cerveau, secouer l’âme, la déchirer. Mais jamais Aegean n’y est parvenu, ni ne s’en est approché. A la rigueur, et si on m’autorise à isoler un titre (ce qui, au vu de leurs similitudes est assez complexe), je dirai que « Acheron – Eumenides » se pose en parfait résumé de l’entreprise, et suffit à lui seul à vous expliquer le modus operandi du quintette. Les guitares proposent quasiment toujours les mêmes tonalités, le tempo est pratiquement le même sur l’ensemble du disque, et même si la voix de Diego prend parfois des accents à la Scott Kelly, il y a autant d’idées sur trente secondes de « The Web » des américains que sur l’ensemble d’Aegean.
Oui, c’est sur, depuis le début des années 90, de sacrés poids lourds sont passés par là. ISIS, NEUROSIS, CULT OF LUNA… Et il est difficile de se faire une place au soleil.
Surtout lorsqu’on préfère rester dans l’ombre.
Ajouté : Mercredi 26 Septembre 2012 Chroniqueur : Mortne2001 Score : Lien en relation: When Icarus Falls Website Hits: 6772
|