# 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
}
PANTERA (usa) - Vulgar Display Of Power (1992)
Label : Elektra
Sortie du Scud : 25 février 1992
Pays : Etats-Unis
Genre : Power Metal
Type : Album
Playtime : 11 Titres - 53 Mins
Il en va des trajectoires musicales comme des carrières de cinéastes. Pour se faire connaître, certains pontes du 7ème art ont commencé par se faire la main sur de petits quickies, low budget guaranteed (Steven Spielberg et Duel, James Cameron et Piranhas II, Les Tueurs Volants, Peter Jackson et Bad Taste, liste interminable non disponible….), pour se faire un nom, une carte de visite susceptible d’allécher les investisseurs, et de leur permettre d’accéder à un statut plus propice à leurs velléités artistiques.
Le processus est donc le même pour nos musiciens préférés. Sans aller jusqu’à remonter à Claude François (et son « Nabout Twist » sorti sous le redoutable pseudonyme de Kôko…), les exemples sont aussi légion. Citons pour exemple DEEP PURPLE et ses premières tentatives tantôt Pop, tantôt pompeusement symphoniques, SCORPIONS et ses psychédéliques efforts des 70’s, ou même DARKTHRONE et ses deux périodes bien distinctes.
PANTERA avait commencé sa carrière de la façon la plus banale qui soit. Dans la première moitié des 80’s, le groupe, déjà constitué de l’ossature de base (les frangins Abbott bien sur, et Rex, portant alors encore le doux sobriquet de Rexx Rocker…), pratiquait un Hard-Rock basique, fortement influencé par VAN HALEN et KISS. Si les frères n’ont jamais renié par la suite leur fascination pour le Baiser, il convient de préciser que la musique qu’ils jouaient alors n’avait pas grand chose à voir avec les tremblements de terre à venir. Et la tendance soft allait même se durcir par la suite, le quatuor s’enfonçant même dans le Glam le plus cheap, avec des albums pas forcément inintéressants, mais toujours le cul entre deux chaises, et surtout, aux pochettes dont le graphisme infâme était à peine digne d’un atelier peinture d’une colonie de vacances d’été.
Une rencontre changea tout ceci.
Après une valse interminable de vocalistes interchangeables, le trio finit par tomber sur Phil Anselmo, ancien grogneur chez les flingués de SAMHAIN (rien à voir avec l’extension MISFITS de Glenn Danzig) et autres obscurs combos, et décide de fait devant l’alchimie en quatuor enfin trouvée, de virer de bord et de plomber un peu le propos. De cette nouvelle union, naîtra le passable Power Metal, assez moyen, mais indispensable pour comprendre la future orientation du groupe.
Puis, en 1990, viendra enfin la véritable carte de visite d’un groupe ayant enfin trouvé son chemin, le bien nommé Cowboys From Hell, et ses hymnes impérissables. On y trouvait pêle-mêle le title-track surpuissant, le chaloupé mais bien méchant « Psycho Holiday », « Primal Concrete Sledge » et ses percussions assourdissantes, et surtout, ce qui restera sans doute leur meilleure offrande, le majestueux et fabuleux « Cemetary Gates » (qui figurera sur l’OST d’un des épisodes de Tales From The Crypt), dans lequel Phil faisait montre de toute l’étendue de son talent vocal lorsqu’il décidait de chanter, et de ne plus hurler. Le « Stairway To Heaven » du Power Metal en quelque sorte…
Mais on sentait que le groupe pouvait aller beaucoup plus loin. On savait que les racines typiquement Heavy n’allaient pas tenir le coup bien longtemps. Il fallait radicaliser, devenir vraiment bad. Offrir à la scène pure et dure le genre d’album dont on parle avec les cordes vocales fracassées par les chœurs orgiaques d’un concert de l’enfer. Et en 1992, PANTERA allait exaucer nos vœux, tel un génie malfaisant illuminant l’existence de quelques teigneux en mal de testostérone et d’exutoire sudatoire.
Vulgar Display Of Power.
Pour la forme, précisons que ce titre provient d’une tirade issue de l’Exorciste de Friedkin, 1973. « That's much too vulgar a display of power », comme le glapissait Megan devant le prêtre et ses injonctions. Et PANTERA n’avait cure de telles injonctions de la part de la presse, et/ou de ses détracteurs. Mais le fait de se référer à un tel film, en disait long sur les intentions des Texans. Il fallait frapper fort, vite, et bien. Dont acte. Violent comme le poing dans la gueule de la pochette. Qui elle non plus ne cachait pas grand chose.
Et comme le disait Phil sur le morceau d’ouverture, le traumatisant « Mouth For War » :
“The releasing of anger can better any medicine under the sun”
Le combat pouvait commencer.
« Mouth For War » justement. Un riff qui joue au yo-yo sur fond de rythmique up tempo agressive et concassée. « Cowboys From Hell » revu et corrigé par un son énorme et une précision/conviction effrayante. Ca commençait grave par un coup de boule en règle. Pas le temps d’esquiver, juste celui d’essayer de se relever pour encaisser la suite.
« A New Level », et c’est justement ça dont on parle. PANTERA a franchi un nouveau palier, et le démontre. Phil s’époumone, Dimebag mouline comme une usine à gaz, Rex et Vinnie pilonnent tout ce qui bouge. Et le tout part dans une farandole si lourde que même l’apesanteur s’en trouve gênée. « Walk ». Le postulat New Métal définitif. Le Hard sera tranchant et vif ou ne sera pas. C’est efficace, pesant, et pourtant entraînant comme une marche de vingt kilomètres en pleine cambrousse, paquetage de trente kilos sur les épaules.
« Fucking Hostile », ou les RAMONES en pleine digression street fighting. Deux minutes et quarante neuf secondes de condensé de haine, le tout sur rythme épileptique et six cordes furieuse. Un tapis de crachats et d’immondices qui remontent à la surface des égouts de la vie. Bang. Plié.
En parlant de paria, de dévoyés, d’exclus de la grande loterie de la chance, « This Love » se pose là. Couplets duveteux pour refrain massue, c’est l’anti Grunge par excellence. On assume sa fragilité et on la détruit à grands coups de pompe conceptuels.
No more head trips.
It’s time to rise.
“Rise” clôture cette première moitié d’album de la façon la plus cohérente qui soit. Violence sous jacente, tempo qui hésite, gifles Heavy de bon ton pour Speed beton, c’est l’hallali des pisse froid, le tir à vue sur timorés sans biceps, la body culture des rebelles du bon goût. Mind and muscles.
La seconde partie sera plus hésitante, reprendra les mêmes éléments, en plus abstraits, plus nuancés. Il n’empêche qu’on tombera sur un « By Demons Be Driven », et son leitmotiv beckon the call, aussi tendu que les relations Est-Ouest en 62, et un final « Hollow », alambiqué, reposant sur des nappes aléatoires laissant un sentiment de confusion post hallucinatoire d’une violence inouïe. Le syndrome gueule de bois dans toute sa splendeur, courtesy of PANTERA, groupe auto déclaré représentant de lui même. Plus efficace qu’une caisse de Lucky Lager ou qu’un bazooka réglé sur onze.
Le ton s’était déjà durci dans pas mal de boutiques (SKID ROW, WINGER, et autres chantres du Heavy mélodique de tradition), mais il faut prendre ses responsabilités et affirmer ce qui a lieu d’être. PANTERA, par cette engeance diabolique préfigurait la vague Néo Metal à venir. Celle qui allait se débarrasser de l’inutile pour aller à l’essentiel, glorifier les écorchés vifs de tout poil désireux de revendiquer ce à quoi ils avaient le droit de prétendre. Mais Dimebag et sa bande avait la délicatesse de ne pas avoir oublié leurs racines Blues en route. D’être resté musical. D’avoir trouvé l’équilibre.
Avant ? Encore trop timide.
Après ? Trop bordélique.
Et puis de toute façon, tout était là. Même les digressions de DOWN ou DAMAGE PLAN. Alors, que dire de plus ?
Ah si, je sais.
RIP Dimebag. Fous le bordel où que tu sois.
Ajouté : Mercredi 29 Février 2012 Chroniqueur : Mortne2001 Score : Lien en relation: Pantera Website Hits: 11716
|