# 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
}
WITCH BLADE (se) - Oskuldernas Eld (2015)
Label : Swords & Chains Records
Sortie du Scud : 1er Juin 2015
Pays : Etats-Unis
Genre : Hard Rock
Type : Album
Playtime : 8 Titres - 26 Mins
Il y en a qui jouent au petit malin et qui trompent leur monde. D'autres au contraire, ne souhaitent qu'une seule chose. Jouer franc jeu, dès le départ, et vous aiguiller dans la bonne direction sans passer par la case énigme. En décidant de m'occuper de ce vinyle (un joli 12'' que vous pouvez vous procurer sur le site du label), je me demandais si le groupe en question pratiquait le second degré, ou si comme certains de ses homologues nordiques s'adonnait au vintage revival contemporain.
En fait, la première idée était bien sûr fausse, mais la seconde n'était pas totalement vraie non plus. Explications. J'ai avalé des LPs qui fleuraient bon la nostalgie et qui tentaient de recréer la magie d'une certaine époque, mais malgré leurs efforts, il était toujours possible de ne pas se faire avoir et de dater leur oeuvre avec précision.
Mais ce soir, je dois reconnaître que c'est une chose impossible sans avoir cette dite date sous les yeux. WITCH BLADE à très bien joué son coup, et leur premier longue durée Oskuldernas Eld pourrait très bien avoir vu le jour en 1981, sans que l'on ne se pose des questions.
L'équation est simple, tout est casher ici. Du pseudo des musiciens qui n'ont pas cherché la complication (Witchhunter, Witchlover, Witchdoctor et Witchburner, bienvenue dans la famille antagoniste), à la pochette faite main, en passant par la production légèrement surannée, et bien sur la musique qui n'a rien à envier à ses ancêtres, et encore moins aux anciens héros de la NWOBHM. Mais ils le disent tel quel, leurs modèles sont et resteront TANK, WITCH CROSS, ANGEL WITCH, TOKYO BLADE, MERCYFUL FATE, VENOM et IRON MAIDEN. Bon, si le cas de VENOM est un peu étrange, puisque WITCH BLADE est à cent lieues du Thrash primaire et bestial des anglais, les noms d'ANGEL WITCH, WITCH CROSS ne sont pas anodins, de par leur étymologie et leur style.
On pourrait en rajouter bien d'autres, SATAN, CROSSFIRE, LEGS DIAMOND, et toute la vague de Heavy mélodique et hargneux du début des 80's. Car oui, c'est bien ça et Oskuldernas Eld n'est rien d'autre qu'un album de Heavy mordant et gentiment harmonieux, comme on en sortait à la pelle il y a plus de trente ans, et qui aurait très bien pu avoir été perdu par le facteur.
Je n'ai pas choisi de parler de ce disque donc pour ses qualités formelles, car en tenant compte des standards du Heavy mélodique, il se situe dans une bonne moyenne, mais sans plus. Voyez le plutôt comme un objet de curiosité, assez fascinant à écouter, mais qui saura vous procurer votre dose de plaisir. La plupart des compos évoluent sur un tempo plutôt Speed, mais modéré, et les suédois ont privilégié la concision, en ne proposant que huit titres, histoire d'accentuer encore plus leur attachement au passé. Peu de chance donc dans la petite demi heure impartie de s'ennuyer, même si certains morceaux sont relativement interchangeables. Le quatuor est constitué d'instrumentistes très capables, surtout au niveau des guitares, qui sortent les dents, et se montrent volontiers agressives.
Certes, de temps à autres, on est plus à la croche près (mais ne serait ce pas aussi fait exprès ??), la rythmique se perd en route, mais disons que ça ajoute au charme de l'ensemble.
Il va par contre falloir vous accoutumer au chant très particulier de Witchhunter, très léger et fluet, mais qui colle plutôt pas mal au style. Alors certes, cette voix étrange et juvénile, parfois à la lisière de la gamme (et même en dehors) qui chante des psaumes guerriers dans sa gutturale langue natale, ça rappelle parfois VONDUR dans les sorties de piste, et ça prête plutôt à sourire.
J'ai bien cherché une différence notable entre les morceaux cavalant à bonne allure, mais je n'en ai pas trouvé beaucoup. Et le groupe est beaucoup plus intéressant lorsqu'il ralentit la machine, comme sur ce plutôt très entraînant "Witch Blade" final, Heavy, mid tempo, qui propose même quelques riffs Doom light, mais surtout des couplets fort convaincants. Je le concède, le chanteur à encore plus de mal à marcher droit, mais ça ne gâche en rien l'écoute.
Concédons aussi à "Ljusets Apostel" le bénéfice de la surprise revival, avec sa rythmique sautillante et ses guitares qui tranchent dans le vif.
On à même parfois l'impression de réécouter un vieux MANILLA ROAD ("Oskuldernas Eld"), la voix geignarde en moins, quoique Witchhunter atteigne des sommets de non sens dans ses choix de notes. Lorsqu'il part dans les aigus, c'est une véritable catastrophe, et du coup... On rigole beaucoup, mais je ne suis pas certain que ça soit le but...
Vous voilà au parfum, et de ce point, de deux choses l'une. Soit vous êtes un absolu fanatique de ce style un peu désuet et vous saurez apprécier ce premier album de WITCH BLADE à sa juste valeur, qui plus est format vinyle, soit vous vous en moquez complètement ou êtes réfractaire, et la chose pourra à la rigueur vous faire sourire une demi heure.
Mais cette authenticité revendiquée, cette naïveté de composition et d'interprétation, font de Oskuldernas Eld un album assez touchant, pour peu que l'on ait connu cette époque fabuleuse qui annonçait une invasion massive du Heavy Metal, et un règne qui allait durer quelques bonnes années.
Ajouté : Lundi 15 Février 2016 Chroniqueur : Mortne2001 Score : Lien en relation: Witch Blade Website Hits: 5540
|