# 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
}
THE DILLINGER ESCAPE PLAN (usa) - Ire Works (2007)

Label : Relapse Records / Pias
Sortie du Scud : 13 novembre 2007
Pays : Etats Unis
Genre : Post Hardcore Culte
Type : Album
Playtime : 13 Titres - 39 Mins
THE DILLINGER ESCAPE PLAN. Un nom qui fait rêver bon nombre de jeunes groupes adeptes de brutalité mâtinée de douceur trompeuses et de structures hypnotiques. Qu’il est difficile d’être le précurseur d’un style galvaudé jusqu’à la mœlle, le maître es diplomatie poil à gratter. LED ZEPPELIN, BLACK SABBATH, MOTORHEAD, IRON MAIDEN, KISS, KORN, METALLICA, SLAYER, tous ces ensembles qui ont un jour enfanté d’un nouveau né ne ressemblant à personne, ont parfois regretté d’avoir à assumer un tel héritage.
On les attend toujours au tournant. On en veut plus, encore, mieux, différent, similaire, on est surpris, désorienté, déçu, emballé, mais au petit jeu des comparaisons, tout le monde perd.
DILLINGER s’en fout. Comme de sa première leçon de solfège. Ont il encore quelque chose à prouver de toute façon ?
Non bien sur.
Des performances live à faire pleurer Kerry KING et sa bande. La furie de Jello BIAFRA. Les casse-tête d’Ornette COLEMAN. Le tir de roquettes de Shane, Barney, Mitch et Danny. C’est tout ça le PLAN. S’évader ? Pas question. De murs en échafaudages, de barreaux en plaines, ils ont appris à tout franchir, à tout escalader, sans accrocs. Pour l’instant.
Ire Works est sans conteste leur travail le plus sujet à la critique. On n’occulte pas Calculating Infinity ou Irony Is A Dead Scene comme on balance une vieille paire de Nike. Raté les mecs. Et si justement la superposition permanente était le but ultime fixé par un plan de carrière turbulent, voire carrément calculé ?
Des deux missiles d’ouverture, « Fix Your Face » et « Lurch », aucun vainqueur. La tradition, le savoir-faire, on retrouve ici des terrains foulés mille fois, devinés, esquissés, détaillés dans des cartes antérieures.
Mais « Black Bubblegum » ? Du Glam ? De la Pop savante ? De l’ironie ? C’est catchy, le refrain est acidulé comme un bonbon rose, carré, mais si vaporeux…On croit rêver, mais pourtant les noms sont les bons.
« Sick On Dunsay » et sa contrepèterie fine comme l’humour des Grosses Têtes, n’est que Dub teinté d’accélérations fulgurantes, comme si Aphex Twin avait avalé son dictionnaire. Avant de partir vers du DEFTONES plus vrai que nature. « When Acting Like A Particle », nous offre l’univers selon DILLINGER, avant le trou noir « Nong Eye Gong » le bien nommé. C’est dru, cru, nu, mais qui saurait s’en offusquer ? Les automatismes ont la vie dure, même si les rythmes se font un tantinet plus réguliers qu’auparavant. Tout comme « When Acting As A Wave », qui étoffe un peu le débat. Les arrangements sont savants et riches, et l’auditeur se retrouve une fois de plus au milieu d’un univers à quatre dimensions, où le temps le dispute à l’espace. « 82588 » trace la ligne à suivre, cassée, remaniée, partant dans toutes les directions. Free Jazz Core. Mathcore ? Qui s’en soucie ? Le break est à point. Le fantôme de FANTOMAS fantasme tous azimuts, et nous en sommes quitte pour une redite. Mais « Milk Lizard » ? Rock’n’Roll ? Ok les mecs, c’est trendy, autant JET que WHITE STRIPES sous amphés, mais qu’en est il vraiment ? Ceux qui ont vu le clip hurlent à la blague de potache, les autres, non initiés croient au Messie qui a un métro de retard. Et à l’imposture. Mais vous, vous savez bien. Pas la peine de vous expliquer.
Surtout que « Party Smasher » tombe à point nommé. Des réminiscences de « 43% Burnt », ça vous dit ? Bien sur ! « Dead As History » ne vous donne pas le temps de réfléchir, et les mélodies développées sur un beat raide comme un piquet sonnent l’hallali. Du lourd, un tambour échoué sur une plage de Normandie. Passer du berceau au lit, sans veilleuse.
Le final, « Horse Hunter » et « Mouth Of Ghosts », illustre tellement bien cette dichotomie. Séduire pour planter dans le dos. Faire fuir pour ramener à soi. Aimer pour haïr.
J’ai vu un pré hier, perdu au milieu de nulle part. Je m’y suis assis, et la quiétude ambiante, la torpeur rassurante m’ont fait ouvrir les yeux sur l’état du monde actuel.
Noir, sans avenir, misanthrope. J’étais au centre d’une création naturelle digne de béatitude, et pourtant le pessimisme m’a pris de plein fouet.
Quel paradoxe n’est ce pas ?
Ajouté : Vendredi 07 Mars 2008 Chroniqueur : Mortne2001 Score :      Lien en relation: The Dillinger Escape Plan Website Hits: 12609
|