# 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
}
CENDRA (sp) - 666 Bastards (2015)

Label : Xtreem Music
Sortie du Scud : janvier 2015
Pays : Espagne
Genre : Black Punk
Type : Album
Playtime : 12 Titres - 33 Mins
C'est pas parce qu'on est en 2015 qu'on est obligé de faire comme si... Comme si quoi d'ailleurs ? Sonner moderne ? Up in time, avec le look, les arrangements, le credo ? Donc si un gus se pointe et qu'il se la joue rétro, il va passer pour un imbécile ?
Allez raconter ça à Jack White tiens, ça le fera marrer !
Je ne parle pas de rétro d'ailleurs. Mais plutôt de vintage, de roots, le truc qui à notre époque nous replonge derechef vingt ou trente ans en arrière avec un savoir faire qui tient de la machine à remonter le temps, sacrément bien réglée. Laissez tomber les iPad les mecs, reprenez votre montre à gousset, ou plutôt votre Casio watch, celle avec la calculatrice tiens... qu'est ce qu'on a pu en faire comme trucs avec ce machin là... Parce que cet après midi, on repart en arrière, pas genre Camille Redouble avec la quadra insupportable qu'on a envie d'éventrer, parce que nous d'abord, on a pas manqué notre adolescence. Non, mais cette adolescence, si tant est que vous ayez connu la même que moi, était bercée par les doux accords écorchés de combos dangereux et bruyants. Si souvenez vous, Bestial Devastation, Eternal Devastation (qu'est ce qu'ils pouvaient dévaster en ce temps là...), Obsessed By Cruelty, et puis la clique des sud américains, SARCOFAGO en tête, Endless Pain, les deux premiers BATHORY, HELLHAMMER...
Vous n'avez pas pu oublier. Ces riffs chelou, un peu Thrash teinté de Punk, avec un arrière goût Black un peu provoc' sur les bords. Ces pochettes avec des monstres, des tempêtes, du sang, des créatures démoniaques, des clous et des croix renversées maniaques. Une production tout à l'avenant, avec des guitares suraiguës, une batterie pas toujours en rythme, une basse inexistante ou alors complètement calquée sur la batterie, qui accélérait soudain en lâchant la double croche pour effrayer le chaland. Bah oui, des souvenirs pareils, ça reste gravé c'est sur. Et ça fait un bien fou de s'en rappeler, pendant une petite demie heure. Et c'est justement le genre de coup d'oeil dans le rétroviseur que vous proposent les espagnols de CENDRA.
Ils nous viennent de Catalogne les vilains. Mais foin de Mecano et de Luz Cazal dans leur musique, non... Du charbon, bien compact, qui alimente une turbine qui chauffe au delà du raisonnable, des riffs acérés, une rythmique qui pique un peu au Thrash, un peu au Black dans les blasts soudains, pas mal au Punk pour cet up tempo qui rappelle les trois premiers DESTRUCTION... D'ailleurs, si je devais placer ce 666 Bastards sur une étagère discographique, je le collerai entre Sentence of Death et Morbid Visions... La plupart des titres sonnent comme un crossover entre "Antichrist" de la clique à Max et "Mad Butcher" de celle à Schmier. A vrai dire, même les pseudos sonnent casher... Joey (Batterie, Chant, le seul à avoir opté pour un sobriquet...sobre!), Malparit (guitares) et Agressor (guitares, basse) se démènent comme de beaux diables pour faire exploser ce revival 80's du mieux qu'ils le peuvent, et l'entreprise est une franche réussite, oui.
Pas de grand bouleversement depuis leur premier long il y a deux ans, le bien nommé Sang, Suor i Alcohol, même recette, même exécution, mais ça fonctionne de mieux en mieux.
Allez, enfournez vous ce gaspacho dans les entrailles et digérez comme vous pouvez. Trente deux petites minutes, quasiment aucune variation, ni dans les riffs, ni dans la rythmique, chant d'outre tombe un peu poussif à la Tom Angelripper, tout est là pour vous rappeler au bon souvenir de 85/86. Une grosse louche de DESTRUCTION pour l'attaque et la vitesse de croisière, un brin de KREATOR pour les riffs tendus et piquants, le tout saupoudré d'une pincée de SEPULTURA période Cogumelo pour ces brutales montées en puissance sortant de nulle part. Du Thrash, du Black paillard d'il y a trente ans, et pas mal de Punk dans les intitulés et cette attitude frondeuse. Des bâtards ? Oui c'est possible, mais terriblement sympathiques ces espagnols.
Certes, ça tend parfois à sucer la moelle un peu trop fort, mais qu'importe le fémur pourvu qu'on ait la fracture ! Mimétisme, hommage, emprunt, dans l'éthique Punk on appelle ça du DIY, du salut aux anciens, et de ce côté là, la révérence est tellement bien tirée qu'on ne peut en vouloir à CENDRA. Alors, si d'époque le style vous laissait de marbre, voire vous rebutait de son amateurisme chancelant, il y a peu de chance que ce 666 Bastards vous émeuve d'une quelconque façon. Mais nous autres, qui dès l'instant magique ou le diamant se posait délicatement sur "Tormentor", "Eternal Ban" ou "Sepulchral Voice" sentions nos poils se dresser sur nos bras, la sensation est vivifiante et rajeunissante. Point, que les grincheux aille se coller un LP de SAXON dans le fion.
Bilan, si l'Espagne voit son classement FIFA dégringoler comme son pouvoir d'achat, ses groupes se portent plutôt bien, et se montrent plus que compétitifs sur le marché européen. N'en déplaise aux détracteurs de la paella, le Metal est toujours caliente par là bas. Et en cet hiver rigoureux, c'est exactement ce que l'on cherche.
Los bastardos estan en la calle!!!
Ajouté : Mardi 10 Mars 2015 Chroniqueur : Mortne2001 Score :     Lien en relation: Cendra Website Hits: 7806
|