# 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
}
HOLY MOSES (de) - 30th Anniversary: In The Power Of Now (2012)
Label : Steamhammer / SPV
Sortie du Scud : 23 Avril 2012
Pays : Allemagne
Genre : Thrash Metal
Type : Album
Playtime : 22 Titres - 86 Mins
La mode est au rafraîchissement, alors allons y… Après DESTRUCTION et son Thrash Anthems, SODOM et son relooking de In The Sign Of Evil, l’école allemande revient à la charge avec un de ses représentants les plus atypique, HOLY MOSES.
Précisons d’emblée une ou deux choses. Trente ans de carrière, c’est vrai. Si l’on compte les démos. Car entre 1980 et 1986, le groupe en a quand même aligné pas moins de huit. C’est beaucoup plus que la plupart de ses contemporains, qui après quelques brouillons ont fini par enregistrer dans des conditions plus « officielles ». Cela ne veut sans doute rien dire, mais c’est quand même un détail qui a son importance. Ensuite, soyons franc. Si HOLY MOSES n’avait pas été vocalement mené par une femme, je ne sais pas si un label se serait intéressé à eux. Ok, les riffs du frangin Classen étaient plutôt sympathiques, et la rythmique compacte, mais rien de bien révolutionnaire.
Là, je joue un peu l’avocat du diable… Mais cette mode de réenregistrer d’anciens morceaux sous prétexte de rester sous les feux de l’actualité commence à me gonfler. D’autant plus qu’un Best-Of du combo est déjà disponible depuis les années 90, avec l’essentiel de son répertoire. Vous me direz que depuis, il y a eu de nouveaux LPs. Certes. Mais sont-ils pour autant aussi indispensables que ceux parus entre 86 et 94 ? Pas si sur…
Ensuite, pour passer pour un être odieusement tatillon, l’accroche publicitaire de l’album reste discutable. Réenregistrer vingt morceaux « importants » de la carrière du groupe…Importants pour qui ? Pour les fans ? Ok, alors je vais être très égoïste. Où sont passés les fulgurants « Current Of Death », « Military Service », et « Roadcrew » ? Pas importants ? Ah, OK.
Je m’incline.
Alors allons y. Le pire, c’est que je suis sur qu’en lisant mon laïus d’introduction, vous allez être persuadés que je n’aime pas HOLY MOSES.
Perdu.
A l’époque, j’étais fan de Finished With The Dogs, et fin mordu de The New Machine of Liechtenstein. J’ai aussi beaucoup aimé World Chaos, Terminal Terror, plus anecdotiques, et même appréciés certains albums post reformation.
Voilà.
Je vais maintenant parler en toute objectivité de ce double CD.
Première constatation, si l’on en croit la démarche du groupe, The New Machine… est ce qu’ils ont fait de plus accompli. Pas moins de cinq titres repris sur neuf, c’est quasiment de l’intégral. Je ne m’en plaindrais pas, car c’est de loin mon favori. Le problème, c’est que les morceaux en question n’ont plus tout à fait la couleur qu’ils avaient en 1989. Avec des guitares accordées deux tons en dessous, et une Sabina qui ne module plus du tout sa voix, l’uniformité pointe le bout de son nez et enlève pas mal de saveur à ce LP unique. La même critique pourrait être formulée à l’égard de toutes les nouvelles interprétations de titres parus avant la reformation.
A tel point que ce double album donne l’impression d’en être un nouveau sans en être un.
Les deux inédits, puisqu’ils sont quand même là en guise de « cadeau », sont honnêtes, sans plus. « Borderland » est bien rapide, avec un refrain Heavy, et pourrait avoir été composé il y a vingt ans. Cependant, le bon riff saccadé à la SLAYER est vite gâché par le chant de Sabina, désespérément plat.
« Entering The Now » serait sympathique, s’il n’était une resucée de « Near Dark » mélangé à « Defcon II ». Alors autant écouter les originaux…
Si vous avez découvert les HOLY MOSES avec Master Of Disaster ou un des albums suivants, et que vous apprécié leur musique, il y a quand même de grandes chances qu’il en soit de même avec In The Power Of Now. Car toute cette affaire reste dans le domaine du Thrash bien fait, grave, contemporain avec cette petite touche 80’s pas désagréable.
Mais si comme moi, Finished With The Dogs vous avait séduit par sa fraîcheur, que vous avez adoré The New Machine of Liechtenstein pour son côté techno bancal le cul entre deux chaises, et que vous avez vu et rencontrée Sabina au festival de Lourdes, vous regretterez je pense l’époque bénie ou miss Classen se raclait la gorge avec furie, un peu à la manière de Dawn Crosby.
Pour les autres, jetez une oreille sur 30th Anniversary: In The Power Of Now. Il y a quand même matière à s’enthousiasmer.
Ne serait ce que par respect pour la carrière particulière et méritante de cette musicienne qui aura rythmé de ses cris rauques nos nuits de jeunes thrasheurs.
Ajouté : Mercredi 14 Mars 2012 Chroniqueur : Mortne2001 Score : Lien en relation: Holy Moses Website Hits: 11600
|