# 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
}
DARK MOOR (sp) - Ancestral Romance (2010)

Label : Scarlet Records
Sortie du Scud : 24 novembre 2010
Pays : Espagne
Genre : Metal mélodique
Type : Album
Playtime : 10 Titres - Mins
Le plaisir d'être chroniqueur, c'est de pouvoir se pencher d'un peu plus près sur des groupes de seconde zone, ceux dont on ne parle pas trop, ceux qui restent dans l'ombre des grosses écuries, ceux qui, médiatiquement, ne bénéficient pas du même soutien que les groupes incontournables. Vous savez, ce genre de combos dont on se dit "il faudrait vraiment que j'écoute ce qu'ils font, depuis le temps". Oui, depuis le temps. DARK MOOR n'est qu'un exemple parmi tant d'autres. Depuis le temps, on devrait savoir que DARK MOOR a débuté sa carrière discographique en 1999 avec Shadowland. Que DARK MOOR a survécu à un gros remaniement de line-up, et que Ancestral Romance est son huitième album. Quand même ...
Espagnol d'origine, ce qui reste suffisamment rare pour être souligné, DARK MOOR pratique un Metal mélodique très européen, finalement, ce qui n'est pas un mal. Même si le quatuor mené par Enrik Garcia (guitares) hispanise pour la première fois et le temps d'un titre ("Cancion Del Pirata"), le dépaysement ne sera pas évident. Sans toutefois s'approcher de son style néo-classique trop pompeux, DARK MOOR peut rappeler, dans la démarche, la polyvalence d'un AT VANCE. A savoir cette faculté à passer d'un titre grandiloquent à des choses plus directes.
Une intro à base de flûtes et arpèges évoque le Metal façon médiéval, et là déboule "Gadir" : des guitares dansantes à la BLIND GUARDIAN, un Alfred Romero (chants) grandement aidé par ce duel avec la soprano Berenice Musa, et hop, le tour est joué. La donzelle apparaît à plusieurs reprises sur Ancestral Romance, et à chaque fois le charme opère. Mais comment DARK MOOR va-t-il faire en live ? L'apport de Berenice paraît tellement essentielle que son absence serait préjudiciable ... D'autant que dès "Love From The Stone", on change la recette mais pas les acteurs. Berenice s'en donne à coeur joie et nous la joue Opéra, tandis que DARK MOOR déroule tout son savoir-faire en matière de signle en puissance. S'il fallait choisir entre les différents visages de DARK MOOR, c'est celui là que je retiendrais. Non pas que son Power orchestral soit aussi mortellement ennuyeux que le dernier RHAPSODY (la preuve, le virevoltant "Alaric de Marnac" et ses choeurs n'ont rien de désagréable), mais c'est le DARK MOOR le plus aguicheur qui fait mouche.
La mélodie de "Moi Cid" est imparable, de même que son solo à la guitare espagnole et ses arrangements travaillés. Le riff de "Ah ! Wretched Me" se veut très old school, avant qu'une rythmique et des claviers limite Indus ne laissent place à un refrain prévisible (c'est ce qu'on aime ...) mais avant tout efficace. Le tout donne un résultat des plus entrainants. L'impression demeure identique à l'écoute de "Tilt At Windmills" qui, malgré quelques mesures encore dignes de troubadours en collant, s'envole une bonne fois pour toutes, avec un gratteux talentueux qui visiblement se fait plaisir et une Berenice toujours à son aise. C'est bien simple, on croirait entendre la chanson de "L'Histoire sans Fin" version électrique ...
Si la fin de l'album semble téléphonée avec une dispensable ballade ("A Music In My Soul"), entre temps DARK MOOR sait faire preuve d'audace avec "Just Rock", qui, même par son titre, a un quelque chose du "We Will Rock You" de QUEEN. S'agit-il de ces chants scandés, de ces choeurs énormes, du martellement de Roberto Cappa (batterie) ? En tous cas c'est une bonne surprise même si la fin du morceau s'avère plus traditionnelle. Quant à "Ritual Fire Dance", ce n'est qu'une adaptation de la fameuse "Danse du Feu" de Manuel De Falla (je précise, pour les incultes).
Ancestral Romance, s'il ne s'agit pas de l'album du siècle, et encore moins de la décennie, se laisse écouter et sa diversité reste un atout. A ce stade de sa carrière, il y a fort à parier que DARK MOOR ne nous ponde jamais de chef d'oeuvre. Si DARK MOOR devait devenir une légende, ça se saurait ... Mais cet opus, brillamment produit par Luigi Stefanini, remplit son rôle de divertissement. Et c'est déjà ça.
Ajouté : Lundi 07 Mars 2011 Chroniqueur : NicoTheSpur Score :     Lien en relation: Dark Moor Website Hits: 11536 Langue: fra
|