# 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
}
VULCANO (br) - Drowning In Blood (2011)

Label : Renegados Records
Sortie du Scud : 1er septembre 2011
Pays : Brésil
Genre : Blackened Thrash Metal
Type : Album
Playtime : 11 Titres - 38 Mins
Visiblement, il n’y a pas qu’en France que les vieilles gloires du début des années 80 reviennent en force. Nous, on a VULCAIN, SATAN JOKERS, TRUST et au Brésil, ils ont VULCANO. Ces mecs-là, sans vous mentir, sont probablement les premiers à avoir pratiqué le Metal extrême en Amérique du Sud, des années avant SEPULTURA, OVERDOSE, HOLOCAUSTO et SARCOFAGO. C’est en 1981, rendez-vous compte, que VULCANO sort de son œuf. Vous faisiez quoi à cette époque ? Pour ma part, mon père n’avait même pas encore pour projet de m’engendrer. Et, fait étonnant à l’heure actuelle, leur premier album paraitra en 1985 sous la forme d’un live, une pratique pourtant en vogue à cette époque. Terriblement actifs jusqu’en 1990, les brésiliens s’effondrent soudainement après la sortie de Ratrace. Plus rien, silence radio pendant quatorze longues années, le temps que dure en général une enfance. Et en août 2004, le groupe marque son grand retour avec Tales From The Black Book. On ne s’en rend pas compte depuis notre Europe douillette, mais au Brésil, VULCANO c’est juste un mythe, une légende. Il apparaît démesuré de vouloir qualifier le respect qu’éprouvent les fans de Metal extrême brésiliens pour ces gars. Mais pourquoi parle-t-on encore d’eux aujourd’hui ? Eh bien parce qu’après trente ans de carrière, ils sont toujours frais comme des gardons, et continuent leur lutte avec un septième full-lenght intitulé Drowning In Blood.
Pour être honnête avec vous, VULCANO, c’est pas ce qui se fait de mieux musicalement. Je ne sais pas si leur stature de dieux vivants du Metal des années 80 leur est montée à la tête, mais ces messieurs donnent l’impression de s’être carré trente années d’évolution là où je pense. Leur Blackened Thrash Metal est poisseux, délavé, peut-être périmé. On comprend tout de suite leur succès passé. Pareille violence était encore inédite il y a trois décennies. Et au passage, j’en profite pour dire que je respecte énormément le culot dont ils ont fait preuve jadis. Ils auront au moins eu le mérite de faire avancer les mentalités étroites. Mais en 2011, ce Thrash aux relents de HELLHAMMER, de VENOM et de MOTÖRHEAD est juste passé de mode. Et quitte à m’en réinjecter une dose, je préfère le faire avec les seringues stérilisées estampillées MUNICIPAL WASTE. Par exemple, Arthur Von Barbarian, batteur fraichement intégré à la formation, n’a de cesse de multiplier les skank-beats sans aucune autre proposition à faire, même quand ses petits partenaires se démarquent par des solos ou autres fanfreluches (« Prison In The Hexagon »). Cette manière de jouer, totalement monotone, n’aide pas vraiment cet album à décoller. Emotionnellement, c’est le calme plat. VULCANO fait une sortie cérébralement fatiguée. Techniquement, les papys tiennent encore relativement la route, à l’image de son chanteur Luiz Carlos Louzada qui rugit de façon appréciable pour une première fois. Il prend la place du mythique Angel avec pas mal de conviction. Mais ce n’est pas suffisant pour dissiper la léthargie qui anime un disque très scolaire. On a vite compris que ces garçons maitrisaient le sujet depuis belle lurette, mais pour des Dieux, on aurait pu espérer quelque chose d’un peu plus… divin ! Les tempos sont souvent épileptiques, inarrêtables et paradoxalement, c’est quand VULCANO tombe dans le mid-tempo qu’il est le plus efficace. En étant franc, il y a quand même une composition qui est très bien écrite, très bien jouée et pour une fois, assez intense. Il s’agit d’« Infamous Poet » qui démarre en sous-régime, avec un riffing presque Doom et une batterie latente et qui se termine avec un magnifique dialogue entre guitares sèches et électriques, au terme d’un soli Heavy un peu prétentieux mais terriblement accrocheur. Un don du Ciel qui hélas, ne suffit pas à effacer d’un coup de baguette magique une prestation frustrante.
C’est toujours avec plus ou moins de plaisir, qu’on redécouvre des légendes oubliées, surtout quand elles proviennent d’autres horizons. Je crois aussi qu’il faut être lucide trente secondes et considérer deux choses importantes. S’il est indéniable que VULCANO peut s’attribuer une partie de la réussite de la scène extrême brésilienne, il apparaît tout aussi flagrant que c’est le propre de chaque groupe de savoir s’arrêter quand il est temps. Sans dire que ça sent le sapin pour eux, il faut avouer qu’à part faire durer le plaisir d’une façon relativement égoïste, Drowning In Blood n’est pas une sortie marquante, encore moins convaincante. Pire, elle émet de sérieux doutes sur leurs capacités à tenir encore ne serait-ce que cinq ans à ce rythme. Après une telle carrière, ce serait dommage qu’ils soient relégués de la sorte au rang de vieilles gloires séniles, franchement…
Ajouté : Mardi 15 Novembre 2011 Chroniqueur : Stef. Score :    Lien en relation: Vulcano Website Hits: 7972
|