# 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
}
GHOST (se) - Meliora (2015)

Label : Loma Vista Recordings
Sortie du Scud : 21 août 2015
Pays : Suède
Genre : Heavy Doom Metal
Type : Album
Playtime : 10 Titres - 41 Mins
Depuis l'avènement de MTV. Oh, et puis on pourrait remonter plus loin dans le temps, jusqu'au BEATLES tiens... En tout cas, il y a fort longtemps que les groupes ont compris que l'image est aussi importante que la musique. Il faut un concept porteur, une imagerie mystérieuse, de quoi susciter l'interrogation, la fascination. Et le monde du Metal n'a pas échappé à la règle...
Les premiers a avoir pigé le truc, Screaming Lord Sutch, Coven, et puis KISS bien sûr, et avant ça, Alice Cooper et son cirque grand guignolesque. La liste est longue en fait... Manson, SLIPKNOT, MUSHROOMHEAD, la vague Glam... Je ne vais pas m'amuser à tous les recenser...
Mais je crois pouvoir affirmer que le premier à avoir trouvé l'équilibre entre la façade et l'intérieur fut ce bon vieux David Bowie, et son alter ego Ziggy...
Car là est la clé. Etre capable de composer une musique à la hauteur des déguisements et des rôles choisis, et ça, c'est difficile, très.
Mais on peut affirmer qu'à ce petit jeu, GHOST fait partie des meilleurs.
En 2010, les goules et leur pape ont émergé sur la scène internationale, avec un premier album intrigant, envoûtant, Opus Eponymous. Trois ans plus tard, Infestissumam les fait véritablement éclater un peu partout, et les propulse attraction du moment, incontournable. Sur scène, c'est la folie, les foules se concentrent sur le devant de la scène pour approcher les créatures de près, et GHOST devient phénomène. Les légendes urbaines affluent, leur anonymat fascine et obsède, on prétend que Tobias Forge serait le pape en question... Mais tout ceci n'a pas vraiment d'intérêt. Car le plus important n'est pas là, on le trouve ailleurs, dans la musique même jouée par le groupe. On se moque de savoir qui se cache derrière ces cinq goules anonymes, tout ce qui compte, ce sont ces morceaux entêtants, ces mélodies étranges sorties de nulle part... Et ça, le groupe le sait. Alors cette année, il lance à la volée "Circe", annonciateur d'un nouvel album à venir, puis "From The Pinnacle To The Pit", et les avis fusent. On commence à gloser sur le chef d'oeuvre que semble devoir être ce fameux troisième LP des suédois, et finalement, celui ci finit par sortir, sous le titre bizarre de Meliora. Et tout le monde avait raison, c'est bien un chef d'oeuvre.
Pour rappel, GHOST, c'est un Heavy Metal unique, aux consonances Doom et progressives, comme une alchimie 2000's extirpé d'un sommeil 70's. Lee Dorian aurait pu à une certaine époque sortir ça sur Rise Above, mais les choses vont en fait beaucoup plus loin que ça. Et Meliora de mériter son titre, "meilleur" en latin. Car en effet, c'est sans conteste possible le meilleur chapitre de l'histoire du sextette. Produit par Klas Åhlund, choix risqué puisque l'homme a taillé ses canines sur les os Pop friables de Britney, Kylie et la Madonne, Meliora assume ses choix, va plus loin dans les extrêmes et pourtant, se complait dans une moyenne mélodique assez inhabituelle, et s'y avère extrêmement doué. On retrouve toujours les influences d'il y a quarante ans, le PURPLE, KANSAS, un tout petit peu de SAB, mais globalement, on reste très éloigné du Doom et de l'extrême, et certains morceaux flirtent même avec les balises du Rock mélodique sucré, le tout avec une grandiloquence unique, et un flair incroyable. Quelle conclusion tirer de tout ça ?
Que GHOST est un groupe unique, doué, et tout simplement grand.
Sur ce troisième effort, GHOST prouve qu'il peut tout faire, absolument tout. Le sextette est aussi à l'aise sur les morceaux sombres et "à ambiance", que sur les instants les plus mélodiques et conformes aux us du Rock radiophonique des 70's. Avec un son énorme mais pas trop, qui oxygène les instruments et les laisse haleter, respirer, et chercher leur propre espace, Meliora part dans tellement de directions différentes sans perdre de son homogénéité, qu'on finit par croire que le groupe à effectivement demandé un coup de main au Seigneur. Même après une bonne dizaine d'écoutes, des détails remontent à la surface, indiscernables au prime abord, qui rendent l'écoute de ce disque toujours plus captivante et surprenante.
D'instinct, comme ça, je me serais jeté d'emblée et j'aurais mis en avant deux, trois titres. "Mummy Dust", pour cet up tempo tranquille gonflé par un riff simple mais tellement redondant qu'il déborde des sillons, pour ces arrangements typiquement 70's et cette basse reptile, ce chant susurré et ce piano cajolant des choeurs désincarnés.
"Spirit" pour cette ambiance cotonneuse qui rappelle le meilleur progressif un peu occulte, cette batterie en contretemps qui se marie avec les guitares en un unisson compact, ce refrain mélodique mais enterré dans le mix.
"Absolution" évidemment, beat Disco Metal, riff frondeur, refrain Pop chaleureux, un peu comme si le ALICE COOPER de Welcome To My Nightmare rencontrait le TYPE O NEGATIVE d'October Rust, sous la supervision de Rob Zombie, produit par Nigel Godrich.
Mais au fil du temps, tout finit par émerger, et aucun titre ne peur revendiquer d'honneur particulier, tant Meliora forme un tout, d'une qualité qui dépasse toutes les espérances. Certes, GHOST a arrondi les angles, et un peu laissé tomber les systématismes Doom et renfermés de ses précédents albums, pour devenir plus abordable. Car après tout, la douceur de "He Is", et ses harmonies qui appellent ABBA à la table de KANSAS et REO SPEEDWAGON, avec en dessert un solo que n'auraient pas renié Bjorn et Benny même en studio, le Hard Rock Heavy de "Majesty" qui vrille d'une basse en roue libre et de guitares tellement Hard Rock qu'elles mordent à pleines dents, "From The Pinnacle To The Pit" qui laisse aussi vibrer cette même basse qui expulse des guitares volubiles au gré d'une rythmique libre et inspirée...
Mais tout est là, le Rock, l'AOR, le Heavy, le Progressif, et surtout, l'intelligence, l'inspiration, et même une humilité indéniable dans le génie. Oui, on peut oser le mot, car à un tel degré de créativité, d'efficacité, tout en ayant l'air de trouver ça normal, l'extraordinaire semble accessible, et GHOST s'impose, en continuant son parcours, simplement... Sidérant...
Jusqu'à présent, je laissais les autres parler de GHOST. Les journalistes, les spécialistes, les fans. Je ne voyais pas quoi dire de plus. Mais Meliora m'a fait sortir de mon mutisme, tant ses qualités évidentes et son homogénéité versatile m'ont donné envie de taper sur mon clavier, puisque tout chef d'oeuvre mérite témoignage en sa faveur. Dix pistes, dix réussites, une surprise constante dans la continuité, de la modestie dans les prétentions artistiques, et tout simplement une musique qui occulte l'imagerie, et ça, le groupe l'a bien compris. Les robes, les titres faussement honorifiques ne sont qu'un plus, qu'un costume taillé sur mesure. Le plus important n'est pas là. Il est dans cette musique, riche, dense, qu'on découvre petit à petit, sans arriver à épuiser ses ressources. Et le plus important de l'essentiel est simple à comprendre.
Meliora est un chef d'oeuvre. Un classique, à peine sorti du confessionnal. Et pas besoin de laisser le temps passer pour le comprendre.
Ajouté : Dimanche 13 Décembre 2015 Chroniqueur : Mortne2001 Score :      Lien en relation: Ghost Website Hits: 7580
|