# 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
}
MOTÖRHEAD (uk) - Kiss Of Death (2006)
Label : SPV
Sortie du Scud : 29 août 2006
Pays : Grande-Bretagne
Genre : Rock'n Roll
Type : Album
Playtime : 12 Titres - 45 Mins
We Sold Our Soul For Rock'n Roll. Ce titre d'album de BLACK SABBATH ne saurait mieux convenir à un groupe comme MOTORHEAD qui, depuis plus de 30 ans, reste fidèle à ses racines.
Que dire de MOTORHEAD ? Si ce n'est qu'il continue et continuera à jouer du MOTORHEAD jusqu'à ce que mort s'ensuive ? Et cela est tout à son honneur.
Tous les éléments qui ont fait le combo tel qu'on le connaît aujourd'hui sont bien présents sur ce nouvel opus : la voix rugueuse et inimitable de Lemmy, modelée par le whisky et les cigarettes, la batterie infatigable de Mikkey Dee et la guitare de Phil Campbell, aussi pointue dans les rythmiques que dans les solos.
Comme quoi, ce n'est pas le nombre de musiciens mais bien leur talent qui compte. D'autres groupes, comme RUSH ou RAGE, sont là pour en témoigner.
Ce Kiss Of Death s'inscrit haut et fort dans la lignée de ses prédécesseurs avec sans doute plus qu'à l'accoutumée une alternance entre morceaux Rock'n Roll et morceaux plus Heavy.
« Sucker » ouvre la danse de manière particulièrement nerveuse et incisive, véritable hymne au Rock'n Roll Way Of Life. Suivront d'autres titres de la même trempe : « Trigger », « Kingdom Of The Worm ». Changement de rythme avec « One Night Stand » (qui traite de la vie du groupe en tournée), « Christine » et leurs riffs typiquement Rock'n Roll, ou encore « Devil I Know » et son côté Blues.
Dans l'ensemble, Kiss Of Death délivre un Rock'n Roll "couillu" - on n'en attendait pas moins de MOTORHEAD - et même sur des titres plus traditionnels, comme « Be My Baby » (le titre parle de lui-même), les riffs se révèlent parfois assez sombres. Avec une mention spéciale pour « Kingdom Of The Worm » et sa rythmique proche de celle de « Sacrifice ».
Mais le groupe se réserve aussi le luxe de nous livrer une ballade, « God Was Never On Your Side » qui, si elle prête à sourire à la première écoute, apporte finalement une dose de sensibilité pas si incongrue que ça.
A travers Kiss Of Death, MOTORHEAD dresse un bel inventaire de 30 ans de carrière et d'influences et devrait satisfaire aussi bien les fans de la première heure que ceux qui ont découvert le groupe récemment. (Le Comte de la Crypte)
Inferno, paru deux ans auparavant avait remis les choses d’équerres. Enfin, un vrai bon album du monstre à cornes édenté puant de la gueule comme un sanglier. Il était temps que Snaggletooth se remette sur de bons rails. Quoi qu’il en soit, cette décennie est bien supérieure et concluante que la précédente marquée par des sorties en dents-de-scie. Plus de 60 ans et toujours debout et en forme le Lemmy ! Les vétérans du Heavy font un come-back retentissant avec cette dernière livraison en date, le bien nommés Kiss of Death qui est un condensé de ce que MOTORHEAD a fait de mieux ces dernières années.
Jouissant comme sur ses derniers travaux d’une production soignée, cet opus Kiss of Death est valable de part sa qualité à offrir des titre Heavy dans la plus pur tradition du trio, en témoigne les belliqueux «Sucker», «One Night Stand», «Trigger». D’un autre côté, des pistes moins «convenues» et plus inattendues comme «Under The Gun» ou bien le titre tout en douceur et en sensibilité «God Was Nerver on Your Side» qui n’est pas sans rappeler «Whorehouse Blues», une piste au vitriol s’attaquant aux religions et aux sectes. N’ayant rien à foutre des modes ni du qu’en dira-t-on, MOTORHEAD se livre à travers ses pistes plutôt bonnes.
L’esprit Rock’n’Roll, si cher à ce bon vieux Lemmy, est toujours de la partie avec l’excellent groove contenu dans «Christine» ou dans la solide «Be My baby» à la rythmique d’acier trempé. Il n’y a pas à tortiller, MOTORHEAD a toujours su y faire et ce n’est pas maintenant que cela va changer. MOTORHEAD est unique. Ca balance la purée sévère sur cet album.
A noter dans l’édition européenne du CD (SPV Gmbh) la présence d’une cover fort intéressante de «Whiplash» de METALLICA, à la limite même meilleure que la version originale ! Un résultat probant comme ce Kiss of Death convaincant et plaisant à l’écoute, varié et en même temps homogène, offrant son petit lot d’émotion. Un bon cru de la tête de Moteur qui devrait ravir les anciennes carnes tout comme les petits nouveaux désireux d’en connaître un peu plus du monstre à cornes défiguré. (Loki)
Discographie Complète de MOTÖRHEAD :
Motörhead (Album - 1977),
Overkill (Album - 1979),
Bomber (Album - 1979),
On Parole (Album - 1979),
Ace of Spades (Album - 1980),
Iron Fist (Album - 1998),
Another Perfect Day (Album - 1983),
Orgasmatron (Album - 1986),
Rock'n'Roll (Album - 1987),
1916 (Album - 1991),
March Or Die (Album - 1992),
Bastards (Album - 1993),
Sacrifice (Album - 1995),
Overnight Sensation (Album - 1996),
Snake Bite Love (Album - 1998),
We Are Motorhead (Album - 2000),
Hammered (Album - 2002),
Inferno (Album - 2004),
Stage Fright (DVD - 2005),
Kiss Of Death (Album - 2006),
Motörizer (Album - 2008),
Bad magic (Album - 2015)
Ajouté : Vendredi 11 Août 2006 Chroniqueur : Le Comte de la Crypte Score : Lien en relation: Motörhead Website Hits: 34941
|