# 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
}
WHITECHAPEL (usa) - Our Endless War (2014)

Label : Metal Blade Records
Sortie du Scud : 28 avril 2014
Pays : Etats-Unis
Genre : Deathcore
Type : Album
Playtime : 10 Titres - 39 Mins
Si vous traversez un jour le Tennessee, n'oubliez pas d'aller visiter ses distilleries. Parmi les incontournables : Lynchburg, berceau d'un Bourbon au flacon noir reconnaissable parmi les mille et une autres marques de Tennessee Whiskey, et Knoxville, où tout à commencé pour WHITECHAPEL. C'est dans ce havre de paix qu'un groupe de furieux, emmené depuis toujours par le charismatique Phil Bozeman, commença à distiller en 2006 son propre Deathcore, devenu depuis le spiritueux à la mode. Régulier dans la performance, cherchant toujours la transcendance sans jamais l'atteindre, WHITECHAPEL revient pour la cinquième fois en 2014 avec Our Endless War, dont le titre suggère qu'on se tapera encore de longues années leur Deathcore de plus en plus stérile, de plus en plus stéréotypé, qui, à force d'acharnement, commence doucement mais surement à décliner.
Comme toujours, et c'est le credo dégueulasse des lois du marketing (que WHITECHAPEL côtoie depuis sa signature avec Metal Blade pour This Is Exile en 2008), on aura eu droit à l'inévitable ceci est notre meilleur album à ce jour. Amusant, quand on sait qu'il est surement le pire.
Depuis son album éponyme de 2012, ça planait dans l'air comme une vieille odeur de clope froide qui imprègne les tissus. Dans peu de temps, WHITECHAPEL va nous faire le coup de l'introspection. Ils sont mûrs pour ça, foudroyés par le syndrome du Black Album. Je crois qu'on y est. Sous couvert de renouveau, barricadé derrière un bouclier créatif qui n'excuse pas l'indigence de certains de ces morceaux, ces garçons nous proposent avec Our Endless War leur plus mauvaise performance en huit ans de carrière. Le rapport entre fond et forme n'aura jamais été aussi déséquilibré. Oui, que de progrès dans l'écriture depuis le Deathcore viril et belliqueux de The Somatic Defilement. WHITECHAPEL a intellectualisé sa musique, se gavant d'inspirations Djent, composant avec méthodologie, ne refusant jamais une petite gâterie à père MESHUGGAH. Et que de vide également. Lugubre comme l'inceste, ce cinquième opus va mettre en exergue la platitude de ce Deathcore technico-progressif, groovy, parfois jazzy, toujours brutal. Une combinaison d'une monotonie extrême, dont la répétition va devenir si lancinante que sans le vouloir réellement, Our Endless War va sortir l'auditeur de son indifférence pour le brûler de divers sentiments. Belle performance pour un disque au contenu si creux, si fantomatique. Entre bande-originale de film gore (merci à Phil Bozeman pour ses borborygmes d'outre-tombe) et réflexion thématique sur le sens de la vie, à vouloir tout dire, ce disque dit tout et son contraire pour ne finalement rien dire de significatif. A quoi servent trois guitaristes si c'est pour taper des power-chords sur 40 minutes et torcher à la ramasse quelques breaks mélodico-atmosphériques ? A quoi sert Phil Bozeman si, de sa voix apocalyptique dont il peut faire tant de choses, il ne débite qu'un ramassis de lieux communs ("we say fuck you", "we will not be stopped", "kill yourself", "let me burn", "everyone is fake"), taclant au passage son Amérique ? Quant à savoir à quoi servent Mark Lewis et Eyal Levi (qui gravitent avec toujours plus ou moins d'importance autour de WHITECHAPEL...), là dessus, aucun problème. Production hollywoodienne, rondeur dans les sons, explosivité des guitares, élévation démesurée de la basse : Our Endless War répond aux normes du DxC U.S qu'ils ont eux-mêmes rédigées il y a quelques années de ça, en compagnie des CARNIFEX et autres SUICIDE SILENCE.
A l'endroit même où Whitechapel (l'album) pourfendait encore le faible de sa puissance rythmique manifeste, imposait sa musculature colossale, Our Endless War éduque le chaland, initie le badaud aux joies d'un Djentcore vaguement musical, avec de temps à autres des interjections à brûle-pourpoint comme "Mono", "Worship The Digital Age" ou encore "Diggs Road" (honorable hommage de Bozeman à des proches disparus), qui répondent aux lamentations pathétiques d'un "The Saw Is The Law", pas choisie comme single au hasard. Musicalement, c'est tout ce dont on se souviendra, ou presque, tant ce cinquième opus n'est qu'une péripétie, une anecdote et peut-être plus qu'un raté...
WHITECHAPEL a manqué sa reconversion. Psychologue de pacotille, marabout d'opérette, commercial capable de vendre des frigos au pôle Nord, ils auraient pu postuler un peu partout pour nous éviter d'avoir à parler d'eux en des termes si pessimistes. Je suis extrêmement inquiet pour leur avenir, inquiet de voir cette figure, qui m'a fait vibrer sévèrement sur quasi-toutes leurs sorties, tomber en décrépitude à la vue de tous et continuer d'affirmer qu'ils sont sur une pente ascendante. Et dire que Mitch Lucker n'est plus là pour leur hurler...
Wake up, wake up, this is no hallucination !
Ajouté : Vendredi 07 Août 2015 Chroniqueur : Stef. Score :    Lien en relation: Whitechapel Website Hits: 7752
|