# 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
}
SLIPKNOT (usa) - Vol.3: The Subliminal Verses (2004)

Label : Roadrunner Records
Sortie du Scud : 24 mai 2004
Pays : Etats-Unis
Genre : Metal
Type : Album
Playtime : 14 Titres - 60 Mins
Il aura fallu donc attendre trois ans pour voir arriver le tant attendu successeur de Iowa dans les bacs. Trois années difficiles, qui ont vu les membres se séparer pour mieux emprunter leur propre voie, et construire ou reconstruire leurs propres projets.
MURDERDOLLS, STONE SOUR, TO MY SURPRISE, les activités de DJ de Sid « DJ Starscream » Wilson, j’en passe et des meilleures, ont accaparé la plupart des membres de la bande de Des Moines, au point de leur faire comprendre que cette liberté individuelle était nécessaire à la survie de leur créature originelle. Car on ne se contente pas de jouer dans SLIPKNOT. On y vit, on y respire, on y exsude, et on y laisse une partie de soi. Qu’il faut bien reconstruire après, ne serait ce que pour pouvoir continuer la route du cauchemar un peu plus longtemps.
Et même si Vol 3 : The Subliminal Verses a plus d’une fois été annoncé dans la presse comme le dernier album probable du KNOT par Corey (qui changera de version selon son humeur/interlocuteur), il fallait bien d’abord l’écouter pour savoir si on allait regretter une éventuelle disparition de l’hydre à neuf têtes.
On s’attendait un peu à tout à vrai dire. A plus violent (mais était ce possible sans tomber dans le chaos ?), à plus déséquilibré, à différent, nous aurons eu au final quelque chose de beaucoup plus équilibré.
Car de toutes ces escapades en solitaire (ou en duo dans le cas de STONE SOUR) est née une intention louable, celle d’aérer la musique, et de tenter des numéros de funambules plus hasardeux, tenant même du grand écart dans certains cas.
Schizophrénie ?
Non, amalgame de neuf personnalités différentes, avec un quatuor créatif qui se devait de prendre en compte les désirs de chacun. Une équation insoluble pour certains groupes constitué de moitié moins de membres, un sacré mal de tête pour SLIPKNOT, et quelques sacrifices et concessions au passage.
Et ça, on s’en rend compte dès l’intro « Prelude 3.0 ». C’est un KNOT neuf qui avance, encore plus sur de lui, encore plus fort, encore plus polyvalent. Exit les ambiances délétères de prologue sur moins de trente secondes, bonjour la quasi chanson entière portée par la voix suave du nouveau Corey. Parce que Corey, depuis l’épisode STONE en a assez de gueuler à tout bout de champ. Il veut chanter. Car ça aussi, il sait faire, et comment.
Et même si Vol 3 : The Subliminal Verses enchaîne directement sur un de ces burners dont seul Joey et sa bande ont le secret, avec l’imparable « The Blister Exists », on réalise que quelque chose est différent. Fini la violence outrée et démonstrative de « (Sic) » ou les refrains instantanés à la « The Heretic Anthem », SLIPKNOT à de nouvelles choses à dire, et d’une autre façon, plus « adulte » dirons nous. Alors bien sur, la prod’ de mister Rubin apporte au nonette cette patine qui leur donnait un son si cru sur les deux albums précédents. Mais ça n’est pas la production qui a fait les chansons, mais bien l’inverse. Il fallait un son plus clair, une distinction plus subtile, une ventilation salvatrice oserais-je.
Et c’est pour ça que comme d’habitude, Rick a fait du Rubin, et a lâché la bride aux musiciens, plus aptes alors à emprunter la direction idoine.
Las, certains ont lâché le mot qui fait mal, de ceux qui croient entacher une réputation dont seuls les journalistes se soucient.
Mainstream.
Tout ça pour quoi ? Pour justifier « Circle » ? Ok, ça sonne un peu comme les RED HOT, je le concède. Mais peut on en vouloir à un collectif d’artistes (parce que c’est exactement ce qu’est le KNOT, beaucoup plus qu’un groupe) de tenter des choses différentes ? Vous auriez voulu quoi dans votre tour d’ivoire chers journalistes et autres puristes, que LED ZEP se contente de rejouer « Communication Breakdown » ad vitam aeternam ?
Même constat pour « Vermillion Part 2 » je suppose ?
Alors oui, les titres forts sont moins épileptiques. Certains ont un refrain taillé pour les charts, comme « Before I Forget » ou « Duality ». Mais on appelle ça le professionnalisme, pas la trahison. Quel intérêt de sortir un nouvel album pour nous rebalancer encore tièdes des resucées de « People = Shit » ou « Wait And Bleed » ?
Aucun.
Et puis sincèrement, si l’on excepte le son plus clair, « Pulse Of The Maggots », c’est pas du fifrelin non plus, si ? Et « Vermillion », c’est pas poisseux comme la vase qui recouvre un cadavre ?
Si.
La pomme mûrit. Si l’on attend trop, elle pourrit et tombe de l’arbre. L’intelligence du KNOT aura été de ne pas attendre. Et de la cueillir pour la transformer en verger. Alors, de la à gloser de la probabilité d’un dernier album…
Comment pouvoir envisager cela à l’écoute de Vol 3 : The Subliminal Verses ? Impossible. Et laissons cela je vous prie aux vieux grincheux passéistes et rétrogrades.
Mais heureusement, il n’en fut rien. Et nous, les maggots allions avoir notre dose de rab’.
Discographie Complète de SLIPKNOT :
Mate.Feed.Kill.Repeat (1996),
Slipknot (1999),
Iowa (2001),
Vol.3 : The Subliminal Verses (2004),
9.0 : Live (2005),
Voliminal: Inside The Nine (DVD - 2006),
La Monstrueuse Parade (BOOK - 2006),
All Hope Is Gone (2008),
.5: The Gray Chapter (2014)
Ajouté : Mercredi 28 Septembre 2011 Chroniqueur : Mortne2001 Score :      Lien en relation: Slipknot Website Hits: 122080
|