# 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
}
COMO MUERTOS (FRA) - Cronica Del Dolor (2010)
Label : Auto-Production
Sortie du Scud : 2010
Pays : France
Genre : Death Metal
Type : Album
Playtime : 13 Titres - 44 Mins
Tiens, tiens voilà du boudin !!!
Grande gigue à bidoche graisseuse que je suis, je n'avais pourtant pas mordu aux premières mictions de la formation. Ben oui p'tit gars, perso le grand guignol ça m'a toujours profondément bassiné. Et là tout de même on nageait en pleine gerbénausé sanguinolente ; et qui plus est je ne voyais aucun intérêt à faire revivre un BRUJERIA venu des fromages qui puent !
Alors me voici devant mon très cher ordinateur prêt à réduire en tartare putréfié la dite chronique et son objet inspirateur. Preuve que dans ma mégalomanie il doit rester un zeste d'intelligence je me suis laissé contrarier les tripes par ces bouchers barbares avides de galimatias hispanisants.
Le premier coup de pelle que je prends pleine face à m'en décoller la mâchoire est la production. Du grand Art, et pourtant le Drudenhaus ne nous avait pas habitué à de telles orgies sonores. Mais non mon petit cochon, je ne suis pas en train de dire que Neb XORT fait de la bouillie bordelaise à la place du son, mais simplement qu'il nage naturellement dans des contrées, comment dire, plus noires si je puis m'exprimer en français dans le texte. Du gros Death qui tache au naturel, car point de trig impertinent dans le giron de nos comparses ma chère, juste une prise de son aussi pertinente que le léger vol d'un poulet meurtri de se savoir séparé de sa caboche. Les six cordes pourraient quand à elles se ranger du côté suédois de la chose, entre Clandestine et Soulless sans que cela ne dépareille le moins du monde.
Et la basse dans tout ça, instrument toujours plus ou moins oublié dans le mix, que devient-elle ?
Et bien elle te prend, elle te retourne et elle te... puis crotte de bic tu n'as qu'à faire preuve d'imagination un peu que Diable. Pour t'aider un tout petit chouia, la vérité est plus proche d'un Utopia Banished que d'un Stanley CLARKE par exemple.
Boudiou, j'allais z'oublier la grande saucisse à tablier blanc placée derrière le micro. Autant peut on lui faire la critique de rester un peu trop extatique sur scène, autant ici aucun grief ne pourra être retenu contre lui. D'un placé sans faille aux alternances juteusements brutales, je peux enfin dire que nous avons à faire à un chanteur.
Les zicos ayant choisi de s'exprimer sous des pseudos, je respecterai leur choix en gardant leur cryptonyme. Et c'est avant tout d'EL ARTILLERO dont je voulais te narrer l'histoire, tu vois ce petit gars masqué derrière ses fûts n'est autre que le batteur ! C'était quand même évident non ? Mais il est méconnaissable en comparaison de sa formation d'origine, car même si quelques blasts viennent nous chatouiller les esgourdes, il n'en reste pas moins que le bougre est très fortement inspiré sur cette galette. Tant il est créatif, exalté, imaginatif que j'en reste dubitatif, mais quel talent !
Pour finir tout le monde m'avait conté la ressemblance (trop) flagrante avec BRUJERIA !
Ben, pour te dire, je ne suis pas convaincu du tout. Encore une fois le simple fait de s'exprimer dans la langue d'un autre groupe ne fait pas de toi son duplicata. Bien entendu certaines sonorités se rapprochent du combo cité en référence, mais il ne s'agit pas là de leur influence principale. Un nom de groupe me semble beaucoup plus approprié dans le cas de nos espagnols franc(h)isés, et c'est celui d'ENTOMBED avec leurs deux albums sorties consécutivement en 1991 et 1993. Notre formation du jour à même réussi l'exploit de glisser un énorme hommage au combo suédois en plage 11, quelle délicate attention admirée à sa juste valeur du côté de Tonton. D'autres réminiscences apparaissent également comme GRAVE et NAPALM DEATH avec des albums déjà cités plus haut.
Et que dire de l'ambiance générale engendrée par cet enregistrement qui reste quasiment sans failles ?
On patauge sans aucun espoir entre Hostel et The Hills Have Eyes, et là je tire mon chapeau à ces messieurs car le rendu est stupéfiant. En dehors des samplers, les quelques pistes instrumentales sont jubilatoires d'angoisse.
Alors toutes mes excuses, je me suis encore une fois morflé tel un colombin au fond de son antre, et j'ai confondu Grand Guignol et professionnalisme.
Jetez vous donc sur cette bête inhumaine, je vous souhaite juste de prendre autant de plaisir malsain que moi !
Ajouté : Mardi 03 Août 2010 Chroniqueur : Oncle Machin Score : Lien en relation: Como Muertos Website Hits: 12664
|