# 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
}
PURE INC. (ch) - Parasites And Worms (2008)

Label : Dockyard1 / Underclass
Sortie du Scud : 29 août 2008
Pays : Suisse
Genre : Seattle VS Switzerland
Type : Album
Playtime : 13 Titres - 54 Mins
De Suisse nous vient une fois de plus la bonne parole, et devient une sérieuse référence en matière de décibels variés et accrocheurs. L’originalité des groupes du cru n’est plus à prouver, et un élément à charge est même à rajouter au dossier, le dernier album de PURE INC., Parasites And Worms.
Il arrive parfois que le fantôme de certains groupes hante les pistes d’un album de la plus belle des manières qui soient. Et lorsque vous poserez vos oreilles sur ce CD, un nom fameux vous viendra immédiatement à l’esprit, SOUNDGARDEN.
Sauf que Parasites And Worms est tout sauf un plagiat, mais juste un creuset d’influences extrêmement bien digérées. Je ne vais pas tourner autour du pot, mais ce qui choque, dans le bon sens du terme, au premier abord, c’est la voix. Gianni PONTILLO possède une palette vocale à la hauteur de son illustre modèle, Chris CORNELL, et comme lui, sait diablement bien s’en servir. Des lignes vocales feutrées et serpentines qui charment, aux gueulantes qui donnent le frisson, le bonhomme parcourt une palette d’émotions très vaste et nous enchante à chaque intervention.
Derrière, ça ne rigole pas non plus, les guitares se font câlines, enjouées, sombres, menaçantes, et la section rythmique passe allègrement du tempo lourd et 70’s au beat fourbe et déconstruit du Seattle des 90’s.
« The End » l’ouverture, ne laisse planer aucun doute, les musiciens connaissent leur partition, et leurs classiques aussi. Très Heavy, cette compo le doit autant au ZEP du Plant & Page, qu’aux STONE TEMPLE PILOTS et…SOUNDGARDEN justement. Le riff est costaud, et permet à Gianni de s’en donner à cœur joie, ce qu’il fait sans jamais friser l’overdose. C’est lourd, très lourd…
Le thème de « Evenmore » nous ramène encore un peu plus du coté de Kim THAYIL, et on se prend même à rêver d’un nouvel album des natifs de l’état de Washington, sauf que c’est inutile puisque PURE INC. est là ! La construction est parfaite, le son épais mais clair, et les musiciens à la hauteur de…tout !
La preuve est faite sur le magnifique « Carrie’s Alone », d’une émotion à fleur de peau, ou la mélodie et la puissance se tiennent la main pour un voyage au travers du talent. On appelle ça…la perfection je crois ! Immédiatement suivi par « Drowning In Your Blood » qui illustre à merveille le propos une fois de plus, c’est d’ailleurs sur ce titre que la voix de Gianni se rapproche le plus de celle de Chris, à quelques nuances quasi Thrash près !
« Darkened Glow » prend une tournure quasi Pop-Rock, dans le sens noble du terme, avec ses harmonies douces et veloutées, et revêt quasiment le costume de Hit imparable. La demie ballade « Dead Calling », très modulée élève les débats encore un peu plus haut, et Gianni se permet même quelques digressions vocales du meilleur effet.
Mais le véritable hommage au LED, c’est bien sur la reprise de « Immigrant Song », qui, si elle n’apporte pas grand-chose à l’originale et à la batterie de covers qui ont suivi, permet de constater que PONTILLO n’a pas à rougir de la comparaison avec Robert, loin de là. Nous tenons bien un vocaliste dans la plus pure tradition des COVERDALE ou autres LANDE…
Et à l’occasion, on retrouve même par petites touches le délicieux parfum de CHANNEL ZERO, sur le superbe « The Last Remaining Song », son riff plombé, ses légères dissonances et son chant délicieusement agressif.
Point d’orgue de l’album, dans lequel le groupe distille tout son savoir faire, et nous fait passer par toutes les ambiances possibles, ce morceau est sans aucun doute possible symptomatique de la démarche du groupe. Des mélodies travaillées, un chant habité, et une structure aérée ne laissant jamais place à l’ennui ou la routine. Un must !
Le dernier titre de l’album, d’une minute et 22 secondes est une surprise énorme, puisque PURE INC. se la joue Death/Grind, et prouve qu’en plus d’être incroyablement doués, ils sont drôles !! Non sérieusement sur ce coup là, j’avoue que j’ai été eu comme un bleu !
Je ne met pas la note maximale parce qu’aujourd’hui, je me sens d’humeur tatillonne…mais honnêtement messieurs, je ne vois rien à reprocher à votre album, si ce n’est 1 ou 2 titres un peu plus faibles…ce qui au vu des merveilles qui jalonnent Parasites And Worms les place au niveau de réussites de bon nombre de formations actuelles !
Je vous dirais juste bravo pour tant de fougue et d’harmonie…
Et franchement, Gianni…quelle voix !!!
Ajouté : Vendredi 10 Octobre 2008 Chroniqueur : Mortne2001 Score :      Lien en relation: Pure Inc. Website Hits: 12189
|