# 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
}
DEFTONES (usa) - Diamond Eyes (2010)

Label : Reprise Records / Warner Bros
Sortie du Scud : 3 mai 2010
Pays : Etats-Unis
Genre : Deftones relookés
Type : Album
Playtime : 11 Titres - 41 Mins
Alors comme ça les DEFTONES se paient un come-back juste avant de tenir la tête d’affiche du Hellfest 2010… Oui, pourquoi pas, admettons qu’à l’époque ils n’avaient pas dit tout ce qu’ils avaient à dire, et accueillons les donc avec un plaisir non feint, mais non dénué d’esprit critique.
J’avoue que si je ne me prétends pas fan hardcore, j’ai toujours écouté leurs albums avec attention, à l’affût de la petite perle qui allait me faire chavirer. Et de plus, j’aime la voix de Chino. Je n’y peux rien.
Alors en dehors des hits incontournables tel « My Own Summer », « 7 Words » ou « Bored », je vais vous faire un aveu, qui va paraître incongru à bon nombre d’entre vous, mais selon moi, le réel chef d’œuvre des ricains reste le mini LP Back To School, et son titre éponyme à tomber à la renverse.
Archétype de l’hymne teenager au même titre que « School’s Out », je n’ai jamais trouvé mieux dans la discographie du groupe. Est-ce ce Diamond Eyes qui va me faire changer d’avis ?
Oui et non.
Pas de faux semblant, ce dernier né se place d’emblée dans le haut du panier en ce qui concerne la production des DEFTONES. La production est éclatante, les musiciens affûtés, et les morceaux bien troussés.
Et comptez sur eux pour emballer la machine dès le départ. La triplette « Diamond Eyes », « Royal », « CMND/CTRL » est imparable, et mieux qu’une mise en bouche, plus qu’une entrée travaillée, on pourrait presque parler de plat principal à peine le repas entamé.
Les riffs sont cataclysmiques, le chant possédé (une constante chez Chino), et le rythme faussement nonchalant. « You’ve Seen The Butcher » est effectivement une boucherie, mais bien perverse, avec l’infirmière qui vous plante son décolleté sous le nez pendant que le dentiste vous travaille une molaire avec une vieille fraise rouillée.
« Beauty School » ? On retourne encore à l’école, et l’ambiance évoque autant le GATHERING d’Anneke que les fins d’après midi de notre adolescence, quand l’été s’approchait.
« Prince » renoue avec la violence latente, sombre, tapie au fond de l’âme la plus pure. Le constat est aussi valable pour « Rocket Skates », qui vrille le cerveau encore plus efficacement que le PCP.
Un des plaisirs majeurs dans cet album, et c’est un paradoxe récurent chez les DEFTONES, reste le très éthéré « Sextape » au titre pourtant explicite. Petit bijou de mélancolie comme on pouvait les trouver sur les albums de DINOSAUR JR ou encore SUGAR, c’est de l’Emo de compétition, le vrai, celui de la fin des années 80. « Risk » et « 976 EVIL », un ton en dessous néanmoins, poursuivent cette tendance et placent donc la fin de l’album sous des auspices sereins, et offrent une perspective de scission d’album intéressante.
Un peu à la manière d’un JANE’S ADDICTION qui avec Ritual de lo Habitual avait proposé en première moitié les titres les plus déjantés pour offrir ensuite des morceaux moins faciles d’accès (ce postulat vaut aussi pour le U2 de The Joshua Tree), les DEFTONES assurent la partie Core dés le début pour ensuite se concentrer sur des climats plus feutrés, ou leur science de composition prend toute son ampleur.
Certains regretteront cet état de fait, en lui préférant sans doute une homogénéité plus accessible. Mais je ne peux m’empêcher de trouver dans cette structure un charme certain qui laisse un arrière goût de je ne sais quoi, et donne envie de se replonger dans l’album derechef.
Quoiqu’il en soit, Diamond Eyes reste un album à plusieurs dimensions, qui demande un temps d’adaptation certain, et qu’on peut ne pas apprécier à la première écoute (ce qui fut mon cas).
Il n’en reste pas moins une vraie réussite, et la perspective d’entendre ce nouveau répertoire live au Hellfest m’enchante au plus haut point.
Ajouté : Jeudi 06 Mai 2010 Chroniqueur : Mortne2001 Score :     Lien en relation: Deftones Website Hits: 13263
|