# 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
}
MANOWAR (usa) - The Lord Of Steel (2012)
Label : Magic Circle Music
Sortie du Scud : 16 juin 2012
Pays : Etats-Unis
Genre : Heavy Metal
Type : Album
Playtime : 10 Titres - 47 Mins
Un seul mot suffira pour résumer The Lord Of Steel : lamentable. Jamais un groupe de Heavy Metal n’aura réussi à tomber aussi bas (même pas METALIUM, remarquez, eux, ils ne sont pas allés très haut). Au-delà de toute considération liée à son image, à son discours, à son ridicule qui ne le rend pas plus fort mais va finir par le tuer, avouons-nous une bonne fois pour toutes que MANOWAR creuse sa propre tombe. Et autant un bon retour aux sources peut s’avérer salvateur dans certains cas, autant les pointures du genre (METALLICA serait un bon autre exemple) ne font plus recette avec leurs vieilles formules. Revenir en arrière, pourquoi pas, mais aller de l’avant en respectant le passé, c’est mieux.
Car MANOWAR, rappelons-le, s’il représente le summum de la caricature Metal qu’on aime citer pour rigoler entre potes, c’est quand même à la base une tripotée d’albums de légende, Fighting The World (1987) et Kings Of Metal (1988) en tête. Et puis, il y a cette période, un peu trouble, un peu grandiloquente, ces Warriors Of The World (2002) et Gods Of War (2007), où MANOWAR s’est lancé dans le Metal pompeux, secoué par les évènements du funeste 11 Septembre puis fasciné par le phénomène RHAPSODY OF FIRE, que Joey DeMaio se fera un plaisir de pulvériser quelques mois plus tard avec son label Magic Circle … Si les puristes montrent du doigt ces deux albums en criant à la trahison, les plus lucides continueront de savourer du « Call To Arms », « Warriors Of The World United », « Fight For Freedom », « King Of Kings » ou du « Odin ». Quel rapport avec The Lord Of Steel me direz-vous ? Et bien, au moins, avec un « Gods Of War », MANOWAR atteignait un niveau épique qu’on ne retrouve absolument pas sur cette nouvelle galette. Au moins cela lui évitait-il de retomber dans cette routine stéréotypée du Heavy Metal Manowaresque.
Mais là, avec ce 12ème album studio, MANOWAR a cherché à revenir à ses racines, à composer des chansons plus basiques. Bien mal lui en a pris, car ce qui provoquait la foudre avec Battle Hymns résonne comme un pétard mouillé en 2012. « Manowarriors » (putain, ce titre pourri …) dont les chœurs martiaux et scandés s’inspirent de « Kings Of Metal », ne décolle jamais, à l’instar de son prédécesseur « The Lord Of Steel ». Dommage car à l’entame des premiers riffs, on croit prendre une grosse claque … mais non. Le refrain de « Born In A Grave », un titre qui aurait juste satisfait un HAMMERFALL à la peine, ressemble à un sursaut d’orgueil. Sauf que la ballade « Righteous Glory », sans émotion et assez plate, fout tout par terre …
Heureusement, « Touch The Sky » (qui fait penser à du vieux SCORPIONS), « Expendable » (Heavy à souhait avec une bonne intro et de gros breaks du batteur Donnie Hamzik), « El Gringo » (épique avec ses chants religieux en fond sonore) entretiennent l’espoir. Tout cela est pourtant terni par une prestation minimaliste d’Eric Adams, qui ne se foule pas et semble très peu concerné par ce qu’il chante sur 80 % du disque (écoutez « Annihilation » …). A l’inverse, qu’a-t-il pris au guitariste Karl Logan, qui en fait des tonnes et des tonnes ?!! Le blondinet avait fait preuve, jusqu’ici, d’un jeu sobre et efficace. A moins que Joey ne lui ait demandé de caser un maximum de notes (écoutez « Annihilation », encore … enfin plutôt : ne l’écoutez surtout pas) pour combler son déficit d’inspiration.
Et puis, dans le genre peu inspiré, que dire de cette pochette de Ken Kelly ? Bizarrement, on y voit des mecs hyper musclés lever des épées vers le ciel … Au fait, où sont passées les gonzesses à poil, Ken ?!! Sans rire, Joey, la prochaine fois que tu veux une pochette qui ait de la gueule, demande à Sébastien Grenier, il doit pouvoir faire quelque chose pour vous. Il y aura au moins quelque chose de nouveau, au royaume de MANOWAR. Car on ne fait pas du neuf avec du vieux !
Dire que le premier pressage de cet album n’a pas fait que des heureux (c’est justifié : le mixage ressemble à une démo de bonne qualité, mais à une démo quand même), du coup MANOWAR se fend d’une deuxième édition, agrémentée d’un titre bonus nommé « The Kingdom Of Steel » (original, ça). Mais bon, trop c’est trop, l’overdose de foutage de gueule arrive à grands pas … L’occasion est trop belle pour se priver de réécouter un sérieux et audacieux Warriors Of The World. A l’époque, MANOWAR pouvait revendiquer le statut de « guerrier ». Les autres groupes jouent, MANOWAR pue … et de plus en plus.
A ce rythme là, Scott Columbus ne sera bientôt plus seul dans son cercueil …
Ajouté : Vendredi 15 Février 2013 Chroniqueur : NicoTheSpur Score : Lien en relation: Manowar Website Hits: 7840
|