# 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
}
DRAKKAR (be) - Once Upon A Time... In Hell! (2014)

Label : Spinal Records
Sortie du Scud : octobre 2014
Pays : Belgique
Genre : Speed Metal
Type : Album
Playtime : 14 Titres - 54 Mins
Aux épreuves de Physique du baccalauréat 2015, il faudra traiter de la question suivante:
Le Drakkar, modèle belge, origine 1983 a t-il une flottaison plus éprouvée que le canot pneumatique au doux nom d'hérétique d'Alain Bombard ? En tous les cas, bien supérieure à celle du Titanic, assurément. Pendant les années 90, le groupe est sorti des écrans radar, on l'a cru touché et coulé au cours d'une bataille navale.
Croiser dans le triangle des Bermudes aurait pu être fatal à DRAKKAR. Nous sommes soulagés de constater que les membres de l'équipage n'ont pas tous sombré corps et âmes, refusant de se laisser séduire par les chants des sirènes, ou bouffer par les requins que sont les capitaines de l'industrie.
Courant 2012, une bouteille à la mer nous informait d'une remise au goût du jour, iodé d'un X-Rated enrichi, remasterisé, lancé comme une bouée aux fans, moussaillons de la première heure. Fin 2014, le DRAKKAR est à nouveau à flot, certain de faire de belles prises en lançant son nouveau filet Once Upon A Time... In Hell! dans les bas-fonds sombres du Heavy / Speed Metal. Laissez-vous attraper ! Pas question pour DRAKKAR de rentrer bredouille au port...
Il ne faut pas oublier que DRAKKAR, créé il a plus de 30 ans, a assuré des premières parties de mastodontes comme QUEENSRYCHE, METALLICA, OVERKILL ou encore SLAYER.
Fin des années 80, la presse spécialisée ne manquait pas de les comparer à HELLOWEEN, référence un peu surannée à ce jour, confirmant toutefois l'influence de la scène teutonne dès l'origine du combo.
Enfin, depuis mars 2013, Fab "Leny" Vanbellinghen, le chanteur d'origine a rejoint le groupe. Le line-up est aujourd'hui stabilisé, soudé pour faire face aux prochains anticyclones. Et que vogue le drakkar contre galères, vents, et marées !
Revenons à l'album Once Upon A Time... In Hell!
Avec le 1er titre instrumental, en intro, "Enter The Darkness", visualisez cet étudiant chinois, seul, sur la place Tian'anmen en 1989 devant les chars, et maintenant imaginez-vous seul devant une panzer division qui fonce droit sur vous...c'est ce que vous éprouverez à l'écoute de ce morceau de DRAKKAR. Le ton est donné, et ensuite les morceaux s'enchainent sans vous laisser de répit comme le blaste de la batterie de Jonas Sanders.
A noter aussi que la configuration à la MAIDEN, trois guitares, donne du relief et de la puissance au jeu et à l'interprétation des titres de l'album.
La production de qualité met en avant la section rythmique, implacable, burnée, un vrai rouleau compresseur, les chœurs sont omniprésents et apportent un côté guerrier sur des refrains vengeurs dès le titre éponyme "Once Upon A Time... In Hell!".
Avec "Lost" nous sommes ligotés dans notre camisole de force aux mailles de fer tricotées par Thierry Delcane sur le manche de sa guitare lors du solo. Et ça n'arrête pas de galoper, de frapper dans "Yerushalayim A.D. 1096" avec les croisés de Godefroi de Bouillon chevauchant sur Jérusalem, et ça n'arrête de saigner avec la nuit de la Saint-Barthélémy.
"Never Give Up" se révèle être un morceau plus poignant avec son alchimie de chant possédé avec les chœurs en appui, et des soli de guitare bien inspirés, même impression avec "War", ici Londres, les sanglots longs des violons de l'automne... un titre qui sent la poudre mêlée de sang, un bel hommage de DRAKKAR aux combattants de tous temps... avec la voix de Leny aux cordes grattées à la toile émeri. "A Destiny That Does Not Heal", "What's Going On?" sont dans la même veine: Son puissant, riff familier et efficace, chœurs "va-t-en guerre", quelques breaks parcimonieux... schéma classique certes mais qui fait du bien quand on a un excédent de tension, d'animosité à évacuer juste avant les vacances.
A la fin de l'album, à n'en pas douter, vous serez sous assistance respiratoire.
Le DRAKKAR ressuscité, à la flottabilité, et étanchéité maintenant éprouvées, a décidé de vous faire boire la tasse, mais Once Upon A Time... In Hell! vous donnera la grande claque salvatrice pour retrouver vos esprits...
Ajouté : Mercredi 01 Juillet 2015 Chroniqueur : Le Patriarche Score :     Lien en relation: Drakkar Website Hits: 6460
|