# 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
}
NITROGODS (de) - Nitrogods (2012)

Label : SPV
Sortie du Scud : 27 février 2012
Pays : Allemagne
Genre : Hard Heavy Rock
Type : Album
Playtime : 12 Titres - 44 Mins
Apparemment NITROGODS est un nouveau venu sur la scène métallique et ne devrait rien dire à personne ou presque ! Et pourtant lorsqu’on regarde de plus près le nom des musiciens, on découvre une pléthore de vieux briscards prêts à en découdre et qui savent faire parler la poudre !!!!
A commencer par Henny Wolter (ex guitariste de PRIMAL FEAR, SINNER et THUNDERHEAD formé en 1988) et Klaus Sperling (actuel batteur de FREEDOM CALL, ex PRIMAL FEAR) auquel vient se greffer un ovni nommé Oimel Larcher au chant et à la basse ! Les bases sont posées, ces trois là ne sont pas ici pour faire de la figuration.
Vous avez tout compris, un power trio comme on en fait plus et qui nous balance un déluge de feux entre les oreilles avec un premier album explosif !!!!
D’emblée ce qui frappe dès les premières minutes d’écoute c’est cette similitude vocale extraordinaire de Oimel avec un certain Lemmy de qui vous savez !!!! Incroyable en fermant les yeux on a l’impression de retrouver le père Kilminster période Ace Of Spades.
Le bougre a dû travailler sa voix au bourbon et à la clope pendant de longues nuits d’excès pour arriver à avoir une tessiture aussi proche !!! Ou alors c’est encore un fils caché de Sir Kilminster. Il faut dire que même si le bougre est inconnu sur la scène métallique, on constate qu’il a dû bourlinguer pas mal d’années dans tous les bars Rock de la planète !!!
Le décor est planté. Ajoutez à cela des riffs killer de Henny Wolter excellent guitariste qui doit avoir retrouvé la magie tant au niveau compos que pour ses solos qui semblent émerger de l’époque THUNDERHEAD.
Vous aurez tout de suite saisi que NITROGODS n’est pas loin et même très très proche de MOTÖRHEAD musicalement parlant.
Henny semble prendre un plaisir infini à jouer ce qu’il a toujours aimé à savoir un Heavy Rock’n’Roll !!! On n’est pas loin non plus de THUNDERHEAD qui a connu son heure de gloire très brève au début des années 90 et qui était déjà très inspiré par le gang à tête de moteur !
La similitude est plus que frappante sur des titres comme « Black Car Driving Man » ou « Demoliton Inc » pour ne citer que ces deux morceaux.
Heureusement le panel musical du groupe ne s’arrête pas là, l’ombre de ROSE TATTO et de ZZ TOP plane en permanence sur certaines compos (« Lipsynch Stars ») avec parfois un zeste de STATUS QUO avec du Boogie survitaminé (« Riffle Down ») ou plus blues comme sur « Whiskey Wonderland ».
L'indispensable pour NITROGODS est de ne pas être limité à un seul style et avoir bien digéré leurs influences pour varier les plaisirs.
NITROGODS, c’est du bon gros Heavy Rock parfait pour les soirées de bikers où la bière et le Jack Daniel se déversent sans interruption jusqu’au trop plein ! D’ailleurs, il suffit d’écouter les paroles de « At Least I’m Drunk » ou de « Whiskey Wonderland » pour comprendre que nos gaillards ont déjà un sérieux entraînement et qu’ils ne sont pas là pour vous proposer une tasse de thé avec des petits gâteaux !!!!
Ici on parle de beuverie jusqu’au petit matin, de soirées d’anthologie, de bolides ultra puissants, et de Harley Davidson bien sûr (au vu de la pochette le message est limpide). En bref de la vie on the road avec toute la folie de la rock n roll life. Penchez-vous sur les paroles plus qu’explicites de « Licence To Play Loud » et vous aurez tout compris !
Tout ça exécuté de main de maître avec une production parfaite sans fioritures mais ultra efficace !
NITROGODS se paye même le luxe de quelques special guests et pas des moindres, jugez plutôt : Dan McCafferty de NAZARETH sur « Whiskey Wonderland » et Fast Eddy Clarke (qu’on ne présente plus) sur « Wasted in Berlin » où notre guitariste culte nous balance entre les feuilles un morceau que l’on croirait sorti tout droit des sessions de Bomber ou Ace Of Spades !!!
12 titres qui transpirent le cambouis et l’authenticité à chaque note, on sent d’emblée l’expérience des tournées harassantes dans des conditions pas faciles et on ne peut que saluer Henny Wolter d’avoir quitté PRIMAL FEAR. Une voie toute tracée pour nous gratifier de cette rondelle qui est à l’image de tout ce qu’il aime et a voulu faire à savoir du pur Rock’n’Roll Heavy sans aucunes concessions. Et dans ce style, NITROGODS est imparable.
Ajouté : Lundi 05 Mars 2012 Chroniqueur : The Veteran Outlaw Score :     Lien en relation: Nitrogods Website Hits: 12152
|