# 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
}
MOONSPELL (pt) - Alpha Noir/Omega White (2012)
Label : Napalm Records
Sortie du Scud : 27 avril 2012
Pays : Portugal
Genre : Dark / Gothic Metal
Type : :Album
Playtime : 17 Titres - 77 Mins
MOONSPELL peut se vanter d’avoir fait saliver ses adeptes durant quatre années d’attente interminable. Ils jettent en pâture à sa horde de charognards une mystérieuse offrande pour laquelle on se risquerait à clamer haut et fort que l’on en connaît le goût. De toutes évidences la prise de risque est limitée en proposant un Alpha Noir/Omega White. On les voit d’ici les vieux clichés du mal et du bien, la bataille des forces opposées et tous ses accoutrements grotesques.
Détrompez-vous, les Portugais ont su une fois de plus duper les plus simples d’esprits et nous livrent au contraire une démonstration de leurs influences assez fascinante. Alpha Noir/Omega White ou l’histoire d’une étrange balance.
Alpha Noir :
Le double album démarrera donc sur Alpha Noir comme dans l’alphabet grec où il tient la place de première lettre et signifie « commencement ». L’obscurité qui émane d’ « Axis Mundi » en ouverture de bal mettra tout le monde d’accord, on sent bien l’accent mis sur les origines sémantiques d’Alpha et ce constat qu’il représente dans l’Antiquité égyptienne « une tête de bœuf » ayant subi une rotation abusive. L’animal est en effet mal mené ici par la férocité des riffs instaurant déjà le parfum qui couvrira l’ensemble des pistes de ce premier parchemin. Une histoire démarre déjà comme toute droite sortie d’une bible antique. L’instrumentation ciblée sur l’aspect ancestral prendra une dimension épique dans certaines épreuves. Fernando Ribeiro (chant) revêt une fois n’est pas coutume son rôle de sorcier méphistophélique pour faire peser la dramaturgie immédiatement.
Alpha prendra son sens de dominant d’une meute de loups dans « Lickanthrope » et si vous tendez bien l’oreille vous entendrez qu’ils se sont essayé aux vocalises des canidés sur fond tapageur.
Bon ce n’est plus une surprise, ce qui se dresse devant nous est bien la tendance Dark du combo, un chant sombre, une musicalité belliqueuse accrochant par ses accents théologiques et la clôture de « Versus » en sera la confirmation même si ce dernier avait plutôt démarré comme un bon Black festif à la SATYRICON.
N’oubliant pas ses véritables origines gothiques MOONSPELL laissera ses guitares rythmer la marche activement pour laisser s’introduire des nappes plus préoccupantes rappelant l’atmosphère de certains de leurs clips aux paysages imaginaires (« Scorpion Flower ») ou aux phénomènes étranges (« Night Eternal »). Les claviers de Pedro Paixao savent comme d’habitude se faire discrets tout en étant indissociables de l’ambiance créée pour des compositions telles que « Em Nome Do Medo », « Grandstand » ou encore l’époustouflant « Sine Missionne » qui compte à lui seul tout une épopée séculaire. Ce morceau achèvera l’album en dressant les poils de bras de l’auditeur ayant sombré déjà dans la bande-son d’un film qu’il s’est construit aux notes de cet instrumental à l’équilibre parfait entre chaque instrument et au poignant de l’atmosphère finement travaillée une fois encore. On notera donc que dans son ensemble ce premier volet tient la part belle à leur penchant obscur avec des guitares développant un jeu nerveux et aiguisé, le tout enveloppé par des percussions haletantes.
Omega White :
Il va de soi qu’après avoir traversé les sombres contrées du combo la frilosité est à son paroxysme dès lors qu’il faille aborder la galette tout de blanc immaculé. Le plus objectivement possible il faudra se détacher du premier pour aborder celui qui a tant d’autres promesses à tenir comme premièrement être au moins à la hauteur de son aîné.
Ne vous fiez pas à ce petit tintement un tantinet puéril qui couvrira les quelques premières secondes de « Whiteomega » car messieurs Ricardo Amorim (guitare et chœurs) et Aires Pereira (basse) vont briser l’enfantin carillon d’un jeu sensuellement envoûtant.
Même si le jeu se veut plus gothique et plus du tout orienté Black ou Dark l’apanage n’en est pas plus gai pour autant, preuve en est « White Skies » qui saupoudre quelques chœurs féminins, mais néanmoins détachés. Le jeu est lui aussi beaucoup plus distendu et vaporeux : « Fireseason ». Le seigneur des lieux use d’un chant moins processif et mène des chœurs nébuleux pour composer d’une subtile élégance un titre des plus mélodiques de cet Omega White.
Comme ils ont l’art et la manière d’accoupler des claviers omniprésents à cette électricité qui leur est propre. « New Tears Eve » en est immanquablement le témoin. Certains diront que le doigté de Pedro Paixao est intempestif, d’autres penseront à tort ou à raison que sans lui l’identité de MOONSPELL serait à jamais anéantie. Ici en tout cas l’homme prend toute sa place et mène d’une main de maître la cérémonie.
Certes Omega White a une véritable identité Rock/Gothique et ça peut paraître radiophonique (« Incantatrix »), mais il rend accessible un monde à part, comme une porte ouverte sur une musique boudée du grand public aussi ignorant soit-il. Il a le mérite de s’offrir sans renier ses racines.
Et puis comme son prédécesseur, Omega White balance sa dernière dynamite sur un auditoire béat. « A Great Darkness » s’introduit sur des riffs couverts, timides, mais qui vont détoner intensément pour laisser le frontman semer cette aura qui n’appartient qu’à lui. Le tempo lancinant dégage une chaleur exquise sur un solo hérissant.
Si Omega est souvent utilisé pour indiquer la fin alors tout est bien qui finit bien.
De quel côté a sombré le balancier ? C’est à vous d’en décider car il est effectivement peu évident de désigner un vainqueur si tenté de penser qu’un combat a eu lieu entre les deux volumes. Grand bien vous fasse de mener un si complexe débat moi je préfère me laisser aller sur chacun d’eux au gré de mes humeurs car c’est sûre ils ont trouvé leur place tous les deux dans ma discothèque tant ils déploient les richesses du quintet.
Ce double opus ravira donc tous les fans des Portugais. Le travail est maîtrisé et efficace sur chacun d’entre eux. Ils donnent une belle succession à tous ces albums qui ont fait leur notoriété. MOONSPELL recèle encore de beaux secrets à nous divulguer au fur et à mesure du temps qui passe et même si la troupe ne date pas d’hier ne dit-on pas que c’est dans les vieux pots qu’on fait la meilleure confiture ?
Discographie Complète de MOONSPELL :
Wolfheart (Album - 1995),
Irreligious (Album - 1996),
Sin Pecado (Album - 1998),
The Butterfly Effect (Album - 1999),
Darkness And Hope (Album - 2001),
The Antidote (Album - 2003),
Memorial (Album - 2006),
Under Satanae (Album - 2007),
Night Eternal (Album - 2008),
Lusitanian Metal (DVD - 2008),
Alpha Noir/Omega White (Album - 2012),
Extinct (Album - 2015)
Ajouté : Jeudi 28 Juin 2012 Chroniqueur : Line44 Score : Lien en relation: Moonspell Website Hits: 8286
|