# 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
}
SATAN (uk) - Trail Of Fire (2014)
Label : Listenable Records
Sortie du Scud : 3 novembre 2014
Pays : Angleterre
Genre : Heavy Metal
Type : Live
Playtime : 15 Titres - 76 Mins
Les coïncidences sont parfois étonnantes... Depuis quelques temps, l'envie de vous parler d'un vieil album culte me démangeait... Et puis, vous savez, la routine, des news, et l'affaire était momentanément passée à la trappe. Jusqu'à aujourd'hui. Et non seulement, je vais pouvoir enfin vous parler de cet album que j'affectionne tant, mais je vais le faire à partir d'une nouveauté !
Elle est pas belle la vie ?
Si.
Tout le monde connaît la NWOBHM. SAMSON, ANGEL WITCH, DIAMOND HEAD, IRON MAIDEN, SAXON, tous ces groupes anglais qui ont émergé au début des années 80 ont tous connu divers hommages, des destins différents, mais resteront à jamais responsables du regain d'intérêt du public pour le Hard Rock entre 1979 et 1981. Certains bien sur sont passés à la postérité. D'autres ont connu une suite plus mouvementée, de nombreuses séparations, reformations au gré des envies et/ou des modes. Mais s'il est un groupe qui a connu une carrière hors normes, c'est bien SATAN.
Dès le départ, c'était mal barré. Avec un patronyme pareil, une pochette aussi macabre, ça ne pouvait pas coller. En 1983, et le Thrash naissant de l'autre côté de l'Atlantique, impossible de deviner que sous cette couverture verdâtre au juge squelettique effrayant dissimulait un des plus grands albums que le Heavy Metal ait pu enfanter. C'était pourtant le cas. Court in the Act était un bijou, savant mélange de Speed mélodique, de Heavy puissant, joué par des musiciens fabuleux, qui sans le savoir, allaient influencer une génération entière de praticiens, HELLOWEEN et ADX en première ligne (une simple écoute consécutive de "Trial By Fire" et "Suprématie" suffit à s'en rendre compte).
Mais à la surprise générale, le groupe prit des décisions incompréhensibles, changea de nom comme de pantalon, et continua son parcours sous les patronymes successifs et interchangeables de PARIAH, BLIND FURY, avant de jeter l'éponge en 1990, las de tout ce cirque. Mais toutes ces dénominations, tous ces albums avaient un seul point commun, la qualité. Rarement SATAN/BLIND FURY/PARIAH fut/furent décevant(s), et cette schizophrénie de surface n'arrivait pas en dépit des circonstances à faire oublier le talent de ses personnalités individuelles.
Court in the Act a depuis été jugé, réévalué, et est maintenant considéré à juste titre comme une pierre angulaire de la NWOBHM, ce qu'il a toujours été sans conteste. Et aujourd'hui, justice est faite, car grâce à l'excellent Life Sentence paru l'année dernière sur Listenable Records, SATAN peut enfin récolter les fruits de son génie lors d'une tournée US qui cartonne. Et du coup, le groupe a décidé face à cet enthousiasme général de nous gratifier d'un live, dont je vais vous parler de suite.
Première chose qui m'a vraiment fait plaisir, on retrouve sur ce Trail of Fire le line-up complet de Court in the Act, à savoir Brian Ross au chant, Steve Ramsey et Russ Tippins aux guitares, Graeme English à la basse, et Sean Taylor à la batterie.
Deuxième petit plaisir, pas moins de six titres de cet album sont joués. Vous retrouverez donc sur ce live le diptyque "Trial by Fire"/"Blades of Steel" en intro, comme à la grande époque, "No Turning Back", "Break Free", "The Ritual" et "Alone in the Dock". Le reste du LP étant bien sur constitué d'une bonne partie de l'excellent Life Sentence, et du premier single du groupe "Kiss of Death". Fait amusant, le quintette aura donné six concerts aux Etats-Unis, en six jours, dans six états...Impossible de ne pas y voir une volonté de coller à leur nom !
SATAN garantit d'ailleurs à ses fans un live cent pour cent authentique, et à l'écoute de celui ci, difficile de ne pas les croire. Le son est vif, piquant, un peu irrégulier, dans la veine d'un très bon bootleg pris direct à la table. Avec des instrumentistes de cette trempe, le risque est mesuré, et c'est avec un vrai bonheur que l'on retrouve la voix fabuleuse de Brian Ross, sans doute un des chanteurs de Heavy à la voix la plus pure, qui peut encore atteindre de sacrés aigus ! Le duo Ramsey/Tippins fonctionne à plein régime et fait tourner les riffs d'acier, les tierces harmoniques et les soli tranchants. La rythmique suit sans peiner, et du coup, la petite heure et quart en leur compagnie passe bien vite...
En tant que fan absolu de Court in the Act, je devrais bien sur avoir une légère préférence, mais impossible de les différencier des nouveaux morceaux tant les trente années qui les séparent n'ont eu aucun impact sur l'inspiration du groupe. Life Sentence, bien que moderne fleure bon les 80's et aurait pu/du sortir dès 1984. Peut être que le groupe aurait alors connu une histoire différente...
Mais pour être honnête, "Trial of Fire" m'a donné la chair de poule, tant son up tempo et son riff d'anthologie sonnent toujours aussi frais en 2014...
Du coup, j'ai réécouté pour le plaisir ce fameux album de 1983. Et ce qui est surprenant, c'est que trente ans après, sa production parait toujours aussi en avance sur son temps. Mais au delà de ces considérations, je suis sincèrement heureux que SATAN soit encore présent aujourd'hui, tant ils le méritent malgré un parcours pour le moins chaotique. Ces mecs ont beau avoir un certain âge, ils ont encore l'envie, l'énergie, le talent, et proposent une musique de meilleure qualité que bien des cadors de l'époque, plus fêtés. Et ça, ça n'a pas de prix.
Et en octobre 2014, si longtemps après leurs débuts, les membres de SATAN ont toujours des lames d'acier !
Ajouté : Jeudi 05 Février 2015 Chroniqueur : Mortne2001 Score : Lien en relation: Satan Website Hits: 5532
|