# 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
}
PEARL JAM (usa) - No Code (1996)
Label : Epic / Sony Music
Sortie du Scud : 27 août 1996
Pays : Etats-Unis
Genre : Hard-Rock
Type : Album
Playtime : 13 Titres - 50 Mins
Après le faux livre/faux recueil de recettes de bien être, les polaroïds (144 pour être précis), pour un album encore plus introspectif que le précédent.
Là où Vitalogy laissait des portes ouvertes, No Code prend un malin plaisir à les entrouvrir furtivement et à les refermer aussitôt pour mieux nous perdre.
A l’instar du Tonight’s The Night de leur pote Neil Young, PEARL JAM décide de briser les barrières et d’explorer l’intimisme à un degré que peu d’artistes ont pu atteindre. Il faut dire qu’à ce moment de leur histoire, les musiciens entretiennent des relations houleuses.
Vedder, en chef de clan reste discutable. Ses problèmes intérieurs, sa tendance à s’isoler, et la direction qu’il fait prendre au groupe ne font pas l’unanimité. Et c’est donc dans un climat tendu que No Code est enregistré, au gré de jams, de bribes d’idées, ce qui fera dire aux musiciens qu’il fut l’un des plus durs à mettre en boite.
L’un des plus difficiles à écouter aussi.
Car rien n’est évident au premier abord sur ce LP
Partagé entre des compositions intimistes, des débordements Garage, et des compos alambiquées à l’extrême, le PEARL JAM de Ten est indétectable, et le fan se sent parfois un peu lésé. Ce qui est souvent le cas avec ces groupes cultes qui sortent des albums difficiles. La frappe de Jack Irons, différente de celle de son prédécesseur, louvoie entre le martèlement métronomique sauvage, et la percussion tribale inspirée. Les guitares se font souvent capricieuses, serpentines, mais savent rester très âpres lors des climats les plus durs.
Sur Vitalogy, la tendance était à l’expérimentation à tout va, mais le groupe avait su rester attaché à ses racines, malgré de nombreuses compos surprenantes et inhabituelles. Sur No Code, la cassure est totale, au point où l’on en vient à se demander s’il s’agit du même groupe qui quelques années avant avait gravé le séminal Ten.
Le ton est résolument sombre, introspectif à outrance, et la nostalgie lourde d’antan cède la place à des pièces plus torturées, ténébreuses, ou limpides même, pourquoi pas.
Le Rock est toujours là bien sur, mais d’un Hard-Rock seventies nous passons à un Garage dru inspiré des sixties, SONICS et REMAINS en tête de liste, surtout sur le burner fatal et lapidaire d’à peine plus d’une minute qu’est « Lukin », et qui renvoie le légendaire « Territorial Pissing » de NIRVANA à ses chères études Punk.
Le single fédérateur qu’est « Hail, Hail » est sans doute la seule trace du passé du combo, avec ce chant aussi revendicatif que plaintif et ces guitares abrasives à l’extrême, signe d’un groupe en colère, contre le destin, le business et lui-même.
« Habit » ressuscite le fantôme des MELVINS avec son riff sombre et son chant étouffé. Quant à « Mankind » chanté par Gossard, il paie autant son tribut aux RAMONES qu’aux PIXIES de Black Francis.
Mais c’est de loin l’emballage sobre et ciselé qui entoure ces perles brutes qui demeure le réel intérêt de cet album, même si la facette la plus dure du JAM à toujours été source de plaisir.
La doublette « Who You Are » et « In My Tree », menée par les pulsations tribales et orientales d’Irons, qui pour l’occasion à été poussé et encouragé par le reste du groupe à aller de l’avant et se lâcher, est significative de cette nouvelle orientation « à tout va », et reste une réussite totale. Ces deux morceaux créent un climat doux, vaporeux, et offrent à l’album un souffle nouveau salvateur.
« Smile » a la nonchalance Bluesy/Country du « Joker » du Steve Miller Band, la voix d’Eddie en plus.
Il est difficile de croire que le délicat « Off He Goes » a été écrit par Vedder pour se décrire comme « un ami de merde »…Comme quoi le plus lucide et difficile des constats peut se mettre en musique de façon subtile, et être mis en valeur (si l’expression est pertinente dans ce cas précis) par des guitares veloutées, et une rythmique aussi discrète que dépouillée…
La valse dézinguée « Red Mosquito » fait allusion à l’état de santé d’Eddie lors du concert au Golden Gate Park, alors qu’il n’avait tenu sur scène que sept chansons. Sa rythmique bancale et ses riffs désaccordés retranscrivent parfaitement le malaise qu’a du ressentir le chanteur ce jour là !
Si la jolie « Around The Bend » fut composée par Vedder pour qu’Irons puisse la chanter à son fils, ce sont les deux morceaux les plus éthérés de la fin d’album qui retiennent l’attention.
Le chant d’Eddie, juste posé sur des guitares cristallines et/ou grincheuses à l’occasion de « Present Tense » révèle toute sa gravité et sa profondeur. Quant à « I’m Open », c’est l’occasion de faire cohabiter les spoken words avec une bande distordue, et ainsi créer une structure discursive mélodique, et une fois de plus, toucher au but.
No Code, c’est plus que ça en fait. Plus qu’un avertissement, plus qu’un avis d’expulsion des conventions, c’est un aveu. La volonté de défier la starification pour ne retirer de la musique que sa substantifique moelle. La raison et la quête d’identité. Se raccrocher aux branches de peur de tomber de trop haut et de s’apercevoir que l’on n’est pas forcément celui qu’on croit.
Et c’est justement pour montrer au public que PEARL JAM était tout sauf un gadget de major mis sur le marché pour en tirer le maximum de bénéfices que No Code est si vital. Il n’est pas parfait, certaines tentatives sont encore un peu bancales, et la disparité d’opinions et de directions est encore un peu trop voyante, mais c’est un album riche.
Riche de mélodies, de textes superbes et d’implication ultime.
Un peu comme une forêt inextricable que l’on ne peut traverser qu’à force d’efforts difficiles, mais qui révèle toute sa beauté une fois qu’on en connaît les pièges.
Mais les pièges, il y en aura d’autres sur leur parcours.
Discographie Complète de PEARL JAM :
Ten (1991),
Vs (1993),
Vitalogy (1994),
No Code (1996),
Yield (1998),
Live On Two Legs (1998),
Binaural (2000),
Riot Act (2002),
Lost Dogs (2003),
Live At Benaroya Hall (2004),
Rearviewmirror (Greatest Hits 1991-2003) (2004),
Sydney, Australia, 11-07-2006 (2006),
Pearl Jam (2006),
Backspacer (2009),
Live On Ten Legs (2011),
Lightning Bolt (2013),
PEARL JAM AU PAYS DU GRUNGE (BOOK - 2011),
PEARL JAM : Pulsions Vitales (BOOK - 2013)
Ajouté : Lundi 26 Septembre 2011 Chroniqueur : Mortne2001 Score : Lien en relation: Pearl Jam Website Hits: 9518
|