# 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
}
DISBELIEF (de) - Spreading The Rage (2003)
Label : Grind Syndicate Media
Sortie du Scud : 21 Octobre 2003
Pays : Allemagne
Genre : Death Metal
Type : Album
Playtime : 13 Titres - 57 Mins
Après une baisse de régime significative, nous sommes en droit d'attendre un renouveau salvateur au sein de la confrérie DISBELIEFienne.
On cherche alors à savoir si le groupe a rédiger un état des lieux et par la même réussi à déterminer qui était à l'origine du relatif échec de Shine ?
Dans tous les cas si ils l'ont fait ce n'est pas autour de la valse des musiciens qu'il faudra scruter, la preuve : Karsten JÄGER – Vocals, Olly LENZ – Guitar, Jan Dirk LÖFFLER – Guitar, Kai BERGERIN – Drums et Joe TRUNK – Bass.
Mais ces 5 là ont tout de même tiré conséquence de tout ceci, et devinez qui se retrouve derrière la console d'enregistrement ?
Monsieur Andy CLASSEN s'il-vous-plait !
Et le club des 6 de nouveau réunit cherche l'absolution à travers près d'une heure de musique qu'il présente devant nos yeux inquisiteurs. Car il faut oublier, que dis-je, enterrer les atermoiements du précédent opus et dès l'introduction on sait que la barre est mise haute. Retour de la production massive et de son lot d'arrangements seulement connu dans le giron du sextette. La voix se fait tantôt suave, tantôt agressive et trône dans une tonalité médium saturée du plus bel effet. L'expérimentation sur les cordes du chanteur ne ressemble en rien cette fois ci à un crooner s'étant inopportunément trompé de cabine d'essayage, mais bien à des phonèmes des bas fonds gothiques. Encore, me direz-vous. Et bien oui il faut l'accepter, ce groupe de Death Metal ne joue jamais aussi bien que lorsqu'il se laisse bercer par cette vague de noirceur indélébile.
Autre chose marque les esprits, car bien que la jaquette indique que toute la musique est composée par le groupe, un seul nom est crédité dans le livret sur 11 des plages que composent ce disque. Sieur TRUNK assume enfin le fait d'être le géniteur hégémonique du clan. Il laisse seulement quelques lyrics à la gorge du combo et deux petites compos à son confrère cordiste Jan-Dirk, qui a bien fait d'en profiter.
Toutefois notre ami bassiste n'est pas tombé dans le piège du ressassé en nous proposant autre chose qu'un Worst Enemy II. Même si l'album est sombre, il s'ouvre vers les contrées plus vertes du Progressif, non pas dans le côté purement technique du terme mais bien de son pendant expérimental, et voire si j'ose dire planant. Des parties psychédéliques sont même à remarquer de ci de là.
Le groupe ose et ça lui va bien, seulement voilà malgré toute la bonne volonté du monde il était inévitable de ne pas glisser du côté obscure de la Force tant la quantité est importante. L'abondance de biens ne nuit peut être pas mais l'orgie sonore lasse. Bien entendu il y a l'énorme reprise « Democracy » de KILLING JOKE en fin de cd qui explose tout sur son passage mais de grâce point trop n'en faut :
- « The Beginning Of Doubt »
- « Ethic Instinct »
- « To The Sky »
- « No More Lies »
- « Spreading The Rage »
- « Inside My Head »
- « Death Will Score »
- « For Those Who Dare »
- « Addiction »
- « It's God Given »
- « Drown »
- « Democracy »
- « Back To Life »
Et c'est bien entendu là la seule ombre au tableau. Juste deux ou trois morceaux de moins n'auraient rien enlevé à cet album qui remet DISBELIEF dans la course au sommet, car même la pochette est artistiquement intéressante.
Et pour ne rien gâcher à la fête de cette renaissance pour le même prix tu as aujourd'hui le cd Bonux qui tue.
Telle la blancheur immaculée de la dite lessive et son cadeau que tous les enfants attendaient en son temps, la deuxième galette est anecdotique.
Le clip de « To The Sky » est simplement lamentable, son making-off ne dure que 49 secondes et les autres petits cadeaux nous emmènent directement chez Kinder tant ses surprises sont attendues.
Enfin si on ne nous demande rien de plus que de le prendre, pourquoi se l'interdire ?
Mais redisons le pour qu'il n'y ai aucune confusion possible, Spreading The Rage écrase de la tête et des épaules son prédécesseur, et rien que pour cela il mérite toute votre attention.
Discographie Complète de DISBELIEF :
Disbelief (Album - 1997),
Infected (Album - 1998),
Worst Enemy (Album - 2001),
Shine (Album - 2002),
Spreading The Rage (Album - 2003),
66Sick (Album - 2005),
Navigator (Album - 2007),
Protected Hell (Album - 2009),
Heal! (Album - 2010)
Metal Impact Bonus :
Karsten "Jagger" Jäger (ITW - Fév-2005)
Ajouté : Vendredi 06 Mai 2011 Chroniqueur : Oncle Machin Score : Lien en relation: Disbelief Website Hits: 8440
|