# 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
}
SABBATH ASSEMBLY (usa) - Sabbath Assembly (2015)
Label : Svart Records
Sortie du Scud : 11 septembre 2015
Pays : Etats-Unis
Genre : Heavy Metal occulte
Type : Album
Playtime : 9 Titres - 47 Mins
Cinquième album pour la procession Doom de SABBATH ASSEMBLY, et premier éponyme, ce qui en soit sonne comme un aveu d'identité. Ce qu'il est assurément au vu de ses aspirations, de sa direction et de son émancipation...
Pour les néophytes, SABBATH ASSEMBLY est un quatuor formé depuis pas mal d'années déjà, dans l'optique d'interpréter les hymnes de la Process Church of The Final Judgment, une secte apocalyptique fondée dans les années 60. Leurs liens avec l'occulte et la religion étaient donc très prononcés, et leur musique en adéquation. Mais comme ils l'affirment eux mêmes sur leur site officiel, Sabbath Assembly est donc le LP de la libération, puisque pour la première fois ils jouent leurs propres morceaux, qui s'ils restent dans le même domaine annoncent quand même un changement notable, musicalement parlant.
Si tout avait commencé sous des auspices clairement Doom, la formation à évolué sous l'impulsion de Jamie Myers, l'énigmatique chanteuse brune du quatuor, à la voix au grain si particulier. Le groupe pratique maintenant un Heavy Metal occulte de fort bon ton, tel qu'on pouvait déjà l'entendre au début des années 70, avec une touche contemporaine légère. Plus les albums passent et plus l'emphase mélodique est forte, même si la puissance est bien réelle et concrète. Mais ne vous attendez pas à une succession de litanies pleurées sur fond de marches funèbres interminables, car là n'est pas/plus le propos. En 2015, la musique de SABBATH ASSEMBLY se veut beaucoup plus harmonique, complexe, et s'inspire du BLACK SABBATH le plus aventureux, mâtiné de COVEN, sans non plus tomber dans les délires lysergiques de SALEM, mais se rapprochant d'un LUCIFER, en beaucoup plus aéré et moins monolithique.
En effet, les riffs de Kevin Hufnagel sont beaucoup plus ventilés que ceux de son homologue anglais Gary Jennings, ses arpèges moins acides, même si parfois le Doom pur vient pointer le bout de son nez (le segment principal et funeste de "Only You" est là pour en témoigner).
En outre, la voix plus modulée aux accents moins systématiques de Jamie Myers contrebalance les longues incantations de Johanna Sadonis, qui s'accroche à une gamme s'en jamais s'en écarter. La comparaison ne se veut pas péjorative pour LUCIFER, et je ne dresse ce parallèle que parce que les deux groupes évoluent dans des eaux similaires, mais admettons le, l'écoute de Sabbath Assembly est beaucoup mois roborative que celle de Lucifer I, tant la variété du premier surpasse les choix omnidirectionnels du second.
Les thématiques n'ont par contre pas beaucoup changé, avec toujours cet affrontement entre le bien et le mal, la dualité manichéisme/diabolisme de la nature humaine, mais cette fois-ci, le fond est personnel, et résolument énergique, sans pour autant perdre son côté envoûtant. Pour affamer les fans, le groupe avait lâché le très mélodique "Ave Satanas" en éclaireur, ce qui n'est pas un mauvais choix tant ce single illustré d'une belle vidéo est assez représentatif de l'album qu'il défend. Peut être un des plus mélodiques du lot, avec sa construction à tiroirs malgré sa durée restreinte, agrémenté de choeurs désincarnés et de courts soli harmoniques, ce titre pourrait même se faire partie d'un tout de Comédie Musicale, tant sa théâtralité excessive est plaisante et séduisante. Nombre de plans différents impressionnant, voix de Jamie qui caresse, invoque, ordonne, menace... Le quatuor passe en revue toutes les possibilités offertes et restitue un véritable opéra occulte en puissance et nuances, signe d'une créativité interne qui laisse présager un bel avenir à ses propres compositions.
A l'exact opposé, des morceaux plus entêtés comme l'introductif "Risen From Below" privilégient la force de frappe et les percussions qui trouvent écho dans le lointain, se permettant quand même un final en up tempo libérateur et rappelant parfaitement BLACK WIDOW.
La troupe se permet quelques incursions dans les évocations médiévales, et l'épique "Sharp Edge of The Earth" emprunte les respirations et couleurs de la chanson de geste, multiplie les choeurs qui se répondent en cascade, un violon à la douce nostalgie (joué par Eva Vonne), avant de laisser parler un riff ample qui rebondit sur le texte de Jamie. Cette même structure se retrouve à un degré moindre dans le poignant et tendu "Apparition Of The Revolution", qui distille des arpèges angéliques sur les deux bon tiers de sa durée, avant d'équilibrer sur un final pesant et grandiloquent qui stagne dans les graves.
"Only You" au contraire s'envole le long d'une ossature virevoltant toutes guitares dehors, qui chemine à dos d'une rythmique qui avance d'un bon train, avant une fois de plus d'interrompre le voyage en écrasant le pas, et de s'achever tout en douceur.
Et comme pour bien marquer la cassure, "Shadow Of Emptiness" termine ce nouveau chapitre sur une longue pause mélodique superbe, durant laquelle la voix de Jamie feule délicatement sur les arpèges ciselés de Kevin, comme une ultime ballade dans la lande embrumée...
Comme le groupe le disait, Sabbath Assembly est plus qu'une scission avec les ambitions d'origine du groupe, c'est une indication très ferme de ce que les quatre américains ont l'intention de proposer à l'avenir, et cette musique riche et complexe est très prometteuse.
Bien loin des dédales symétriques Doom que ses contemporains se plaisent à proposer, SABBATH ASSEMBLY leur préfère des couloirs plus richement décorés, des ambiances plus volontiers versatiles, et surtout, une emprunte mélodique beaucoup plus forte, qui les rapproche de la source même du Heavy Metal occulte, qui s'inspirait du Blues, de la musique médiévale, et du Folk. La variété des climats proposés vous garantit une écoute pleine de surprises, qui ne lasse jamais, et même si certains enchaînements semblent encore un tant soit peu téléphonés, l'aisance dont fait preuve le quatuor depuis sa mue semble prouver qu'il a trouvé sa réelle voie.
Nous attendons maintenant la suite, qui s'annonce d'ors et déjà passionnante, avec pourquoi pas, un concept album pur, un double, ou tout autre format qui leur permettra de s'épanouir avec brio. Rejoignez donc l'assemblée et enfilez votre toge. La cérémonie 2015 présidée par SABBATH ASSEMBLY semble en effet faire plus honneur à la vie qu'à la mort.
Ajouté : Lundi 15 Février 2016 Chroniqueur : Mortne2001 Score : Lien en relation: Sabbath Assembly Website Hits: 5498
|