# 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
}
VESTIGES (usa) - The Descent Of Man (2010)
Label : Replenish Records
Sortie du Scud : 10 octobre 2010
Pays : Etats-Unis
Genre : Post Black Metal
Type : Album
Playtime : 7 Titres - 47 Mins
J’ai toujours aimé les groupes qui se moquent des frontières, des barrières, de langue, de style, de comportement. Pas forcément la fuck attitude, mais une sorte de coolitude zen ou pas, le genre de musiciens qui se tapent complètement de savoir que ce qu’ils jouent ne rentre pas dans une petite case.
Ca emmerde les journalistes du coup, mais quel bonheur pour les fans.
Je pourrais citer des centaines d’exemples, de ZAPPA à COIL, en passant par les RESIDENTS, PATTON, ou encore des mecs comme Peter Tägtgren, Devin TOWNSEND…
Après, deux écoles se dégagent.
Les trublions qui ne cessent de passer d’un style à un autre, et ceux qui ont tellement assimilé leurs influences qu’ils finissent par créer quelque chose de complètement personnel.
C’est le cas de VESTIGES.
VESTIGES est un groupe au parcours étonnant et admirable. Fondé en janvier 2010, il ne faudra attendre que quelques petits mois pour jeter une oreille sur leurs réflexions, condensées dans ce The Descent Of Man, en tout point remarquable, dans tous les sens du terme.
Constitué dès le départ en duo, VESTIGES a choisi délibérément de ne se poser aucune limite, et de tirer le meilleur parti de styles aussi différents que complémentaires tels que le Hardcore, le Black Metal, Le Crust, Le Screamo, ou le Post-rock.
Mais au lieu de n’en retirer que l’ossature de base, et d’intégrer plusieurs courants à leurs morceaux, ils ont opté pour la solution du melting-pot total, et ainsi, d’aboutir à une engeance particulière au doux parfum d’inédit.
Alors, vous me direz que ça n’est pas la première fois qu’un combo intègre des éléments disparates à sa musique pour en tirer une œuvre fondamentalement à part.
Mais n’oubliez pas qu’il s’agit là d’un premier album, enregistré par un duo avec à peine quelques mois d’existence au compteur.
Et c’est – au-delà de la musique – ce qui rend The Descent Of Man en partie si unique.
Le reste de la performance est à mettre au compte de cette musique justement, si surprenante, si novatrice, et si pertinente.
En tant que concept, car c’en est un, The Descent Of Man propose une immersion totale dans la destinée de l’homme, de sa conception à sa disparition, due à ses tendances à l’auto destruction, à l’égoïsme, et à l’ignorance des lois de la nature, et du respect de celle ci. VESTIGES s’est donc appliqué à mettre en musique cette descente aux enfers programmée, réaliste, en cinq mouvements, une intro, et une outro. Et dès le départ, l’auditeur est happé dans une orgie sonore servie par une production énorme mais aux proportions humaines justement, orgie dessinée par des guitares acides et puissantes, un rythme instable et sur la brèche, et un chant hurlé la plupart du temps, tout en restant intelligible.
Tout démarre pourtant délicatement sur les premières minutes de « I », avant de s’enfoncer dans un Post Hardcore assez cru et vitupérant. Un peu MY DYING BRIDE par moment, en plus féroce, avant que les influences Black ne viennent détourner le tout et nous surprendre.
Mais plus l’album gagne en longueur, plus ces influences vont sombrer dans une pesanteur agitée de mélancolie, à mesure que le futur inéluctable de l’homme se dessine.
Et la vitesse de le céder à la pesanteur, parfois lacérée d’accélérations Punk du meilleur effet (le vertigineux « IV » et ses dix minutes fertiles), mais au final tout se mélange pour ne former qu’un tout, indissociable, inaltérable, et les tempi se heurtent dans un ballet vertigineux à l’occasion de la conclusion en forme d’épiphanie ténébreuse sur « V », conclusion logique d’un comportement aveugle et stupide.
Et la longue outro, paisible, toute en guitares inversées et en respirations d’arrangements épars, d’achever une prédiction qu’on sait depuis longtemps à venir.
Et le nom de VESTIGES de prendre alors tout son sens…
Avec un tel professionnalisme, une telle volonté de rester soi même, au-delà des clivages et des querelles stériles de style, il parait improbable que ces américains ne soient pas découverts par le plus grand nombre. En moins de cinquante minutes, ils nous offrent un portrait fidèle et sincère de l’humanité telle qu’ils la conçoivent, en traduisant en musique des sentiments séculaires, et une peur naturelle de voir l’homme se confondre avec son destin tragique d’espèce futile et dérisoire.
Il n’est donc pas étonnant de voir que la réputation de The Descent Of Man gagne en ampleur, et contamine les blogs musicaux un par un, comme un virus se répandant dans nos veines, tel un poison nous conduisant à notre fin.
Si telle est la musique qui résonne à nos oreilles ce jour là, nous n’aurons donc pas peur de plonger dans le gouffre que nous aurons nous-mêmes créé.
Ajouté : Jeudi 29 Novembre 2012 Chroniqueur : Mortne2001 Score : Lien en relation: Vestiges Website Hits: 8366
|