# 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
}
DUST-THEORITY (FRA) - Wolves (2012)

Label : M & O Music
Sortie du Scud : 13 avril 2012
Pays : France
Genre : Heavy / Metalcore
Type : Album
Playtime : 10 Titres - 48 Mins
J’aurais aimé que ce disque soit aussi magnétique que sa pochette. Vraiment. Parce qu’on a du mal à détourner son regard de celui du loup, mi-authentique, mi-biomécanique qui orne la couverture du premier album de DUST-THEORITY. J’aurais aimé avoir autant de mal à me détacher de ce Metal moderne et pétillant, énergiquement distribué par les Franciliens. Mais la réalité n’est pas aussi simple. En définitive, il n’y aura pas de miracle. Et Kevin Costner restera probablement le seul à avoir percé les secrets du canidé le plus mystique au monde. On ne reprochera pas à ces garçons leurs ambitions, ni même leurs bonnes intentions. Le plus dérangeant sur cet album, c’est finalement l’incroyable élasticité de leur Metal et le peu d’indications offertes quant au chemin à emprunter pour l’analyser à sa juste valeur. Pourtant, DUST-THEORITY n’est pas un bleu dans le milieu. Son nom revenait même avec insistance quand il s’agissait de pronostiquer sur le groupe qui prendrait la relève tricolore de GOJIRA.
Mais dans l’état actuel des choses, en plus d’être tortueux, le chemin est surtout très long. Ce Wolves est une chamaillerie de cour de récréation qui vise à établir la hiérarchie entre différentes valeurs sûres du Metalcore. TRIVIUM meilleur que KILLSWITCH ENGAGE lui-même meilleur que SONIC SYNDICATE qui écrase AS I LAY DYING qui balade BULLET FOR MY VALENTINE. Voilà l’arrivée du quinté dans le désordre. On retrouve en DUST-THEORITY toutes ces références un peu boutonneuses, assimilées dans un emballage de rigidité et de fraicheur digne d’une boîte de Pringles. Indéniablement, cette œuvre manque de réflexion et de maturité. C’est un constat qui saute à la gorge parce que les compositions semblent dépendantes d’une recherche constante de dynamisme et de spontanéité qui débouche souvent sur des contre-performances. Tout n’est pas négatif, loin de là. L’accueil est excellent, avec un « Mother Earth » groovy au possible et qui présente des musiciens très à l’aise avec leurs instruments. Il faut aussi savoir que DUST-THEORITY évolue sous forme de quatuor, avec un chanteur fixe, ce qui signifie une seule guitare. Et à partir de là, on écoute d’une autre oreille l’explosivité remarquable et la production impeccable de ce disque. Malheureusement, on reste obnubilés par cette accumulation de références américaines qui nous tombent dessus par rafales, que ce soit l’écrasante « In My World » ou la balade popisante « Rare Sensation » qui fait très SONIC SYNDICATE période actuelle dans l’esprit. Et quand on réécoute We Rule The Night, on se rend compte à quel point la comparaison peut faire mal. Assez bizarrement, alors que ce choix aurait pu faire partie des points noirs du CD, l’utilisation d’un chant clair en couverture des vocaux Metalcore de Mike Frach n’est pas du tout déplaisante. Juxtaposé au bon endroit et agrémenté de sonorités futuristes, comme sur ma petite favorite, « Existence », on débouche sur de réels moments de plaisir qui parviendraient presque à masquer le côté très bancal et aléatoire de Wolves.
Les temps forts passés, il nous revient hélas en pleine face, comme un boomerang. Pour un premier essai, DUST-THEORITY fait preuve de beaucoup d’application mais manque cruellement d’imagination. Si on pouvait la palper, la musique du groupe serait malléable, plastifiée, lisse et enfermée dans une petite boite étiquetée Metalcore moderne, un peu comme de la pâte à prout. Wolves est un album absolument frustrant, car on connaît ces garçons et qu’on éprouve forcément de la déception après une expérience aussi irrégulière. Et si les mots présents dans ce papier paraissent durs, c’est parce que j’ai toujours beaucoup d’espoir en eux, et secrètement, j’aimerais qu’ils me fassent mentir au prochain coup.
Ajouté : Lundi 13 Août 2012 Chroniqueur : Stef. Score :    Lien en relation: Dust-Theority Website Hits: 9208
|