# 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
}
LABORATORIO CRISTALITOS (it) - Narcoturismo (2009)
Label : Auto-Production
Sortie du Scud : 2009
Pays : Italie
Genre : Death Grind Metal
Type : Album
Playtime : 17 Titres - 53 Mins
Qu’il est doux de reprendre du service après trois longs mois d’inactivité. Aussi, peut-être aurais-je préféré une reprise plus en douceur… Quoiqu’il en soit et au vu de mes penchants avoués pour le Death et le Grind, je voyais en LABORATORIO CRISTALITOS un sujet parfait pour me remettre dans le bain et recommencer à décerner généreusement quelques césars. Dommage pour moi, ces italiens n’ont visiblement pas grand-chose dans le ciboulot. Mieux encore, ils n’auraient probablement jamais eu l’idée de se réunir pour maltraiter nos oreilles si BRUJERIA n’avait pas existé. Car entre des accoutrements clownesques, des paroles frisant le zéro-intellectuel et un Death/Grind clairement parodique, le trio originaire de Bologne n’a pas de quoi faire sauter au plafond. Leur premier album, Narcoturismo se présente à nous avec un léger parfum de moisi qui met en évidence un amateurisme certain, un peu comme un écoulement de pus par l’urètre met en évidence une « chaude-pisse ». Autrement dit, ça brûle, ça pique mais c’est surtout très désagréable et nauséabond.
Cet album est divisé en deux CD’s. Sur le premier, pas de problème, un groupe italien qui fait du Grind en italien. A priori, pas de soucis. Ainsi, après l’écoute de quelques propositions bien agencées telles « Sequestrata » ou « Plancolombia », on arriverait presque à diagnostiquer en eux une improbable manifestation de ce don du ciel qu’est le talent. Alors on réécoute, on tend l’oreille, on cherche le plaisir à tâtons, mais hélas, je pense que LABORATORIO CRISTALITOS n’est vecteur d’une émotion qu’eux seuls pourront comprendre. De par leur parcours difficile probablement, puisque les trois larrons se sont rencontrés dans un centre social d’une banlieue de Bologne. On devine donc dans leur musique un moyen cathartique de refouler une violence accumulée au cours d’une vie pas forcément évidente à vivre. Peu importe, les mecs ont une idée précise du Metal et c’est triste à admettre, mais on se retrouve bel et bien avec une pâle copie du plus pâle des albums de BRUJERIA. D’ailleurs, leur nom de scène est un hommage à peine dissimulé de leur adoration pour la petite troupe mexicaine, qui avait choisi « Laboratoria Cristalitos » pour habiller la cinquième piste de son dernier album, Brujerizmo. Ils en feront d’ailleurs une reprise en italien, qui sonne comme quasiment toutes les autres compositions : brouillonne, bâclée, ratée. Les ritals ne parviennent pas à nous faire accrocher à leur délire et, pour peu que vous compreniez l’italien, ce qui est mon cas et j’en suis sur ce coup désolé, vous serez profondément navré par des paroles infantiles (extrait choisi : « si j’ai la bite dure, c’est parce que je suis un putain de drogué »), faisant l’apologie de la consommation de Marijuana et à l’écoute desquelles les plus grand poètes de ce monde feraient des triples axels dans leur sarcophage. La production semble volontairement souillée, le contenu n’en ressort que plus underground. Et outre ce fait d’arme, les musiciens ne semblent pas bien doués techniquement, ce qui vous l’aurez compris, ne rattrape pas vraiment l’ensemble d’une œuvre déjà dispensable. Alors bon, si l’on resitue un peu le contexte, Narcoturismo n’est pas une sortie majeure d’un grand groupe signé sur un grand label. Et probablement que derrière ce manque de moyens se cache un peu d’humour et de dérision. Mais la blague tourne au vinaigre quand les transalpins nous proposent en complément du premier disque, un second qui s’avère être musicalement 100% identique au premier, si ce n’est que les textes sont déblatérés en espagnol, comme un hommage encore plus hypocrite à leurs maîtres à penser.
Narcoturismo se révèle donc comme foutrement inutile, même si on se surprend presque, au bout de plusieurs minutes de réécoutes, à vivre une forme de syndrome de Stockholm avec nos ravisseurs cagoulés. Cet opus n’apportera rien au Grind, ne changera probablement pas les codes de la Musique, mais indéniablement, il aura sauvé Jefe Cavron, El Maniaco et Grenudo Sin Fe de la misère sociale dans laquelle ils revendiquent de s’être embourbés. Et s’ils ne sont pas excessivement doués musicalement, ils demeurent des hommes avant tout. Et il serait égoïste de ne pas se réjouir que le Metal continue à sauver des âmes égarées.
Ajouté : Mardi 08 Mars 2011 Chroniqueur : Stef. Score : Lien en relation: Laboratorio Cristalitos Website Hits: 9328
|