# 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
}
TEMPLE OF BAAL (FRA) - Verses Of Fire (2013)
Label : Agonia Records
Sortie du Scud : 29 octobre 2013
Pays : France
Genre : Black / Death Metal
Type : Album
Playtime : 10 Titres - 59 Mins
Je considère la musique comme un langage sans paroles.
A l'image de notre interview réalisée en janvier 2012 dans le cadre de la sortie du split entre RITUALIZATION et TEMPLE OF BAAL, Amduscias aura été d'une franchise que les sourds-muets ne peuvent que trop bien comprendre.
Le Temple. Le Rituel. En employant à la volée des majuscules, comme pour mieux se trahir, le musicien a mis en évidence le côté institutionnel d'un projet qu'il a lui-même fondé en 1998.
Et le Verbe s'est fait chair, et Il a habité parmi nous. (Jean 1, 14) Ne retrouves t'on pas dans la Bible pareilles habitudes ?
Alors que le A.A.A.A. (Amduscias, Arkdaemon, Alastor et Antares, rien à voir avec les amateurs d'andouillette) n'est plus, TEMPLE OF BAAL, lui, est. Comme il n'a jamais cessé d'être. Quatre ans après Lightslaying Rituals, un nouveau palier aura été enjambé avec finesse. Plus loin dans le mystique, plus loin dans l'authenticité et dans l'ésotérisme, TEMPLE OF BAAL est au Black Metal français ce que Saint-Michel est aux Ecritures. Un exemple de persévérance, symbole d'une force capable de terrasser les monstres à écailles.
On aura du mal à réaliser que Verses Of Fire n'est finalement que le quatrième album du groupe, tant leur nom est une force de frappe récurrente dont on aimerait parfois se défaire. Quelques symptômes et boutons sur le visage marqué de Lightslaying Rituals, rien de bien alarmant. En tout cas, rien qui ne pouvait préparer psychologiquement à subir cette drôle d'homélie. TEMPLE OF BAAL pourfend les mots, contorsionne le Black Metal pour lui donner cette forme spectaculaire. Ce n'est pas franchement une Messe Noire au sens caricatural du terme, mais ça se déroule sous la surveillance de je-ne-sais quelle puissance, laquelle pousse le trio dans un état de transe dérangeant. Il est plus facile de lister ce que Verses Of Fire n'est pas plutôt que ce qu'il est. La profondeur du riffing, la perfidie chaotique de certains tempos, la lourdeur moite de la production font de cette œuvre un blind-test qu'on redoute, car on sait que TEMPLE OF BAAL est capable de dissimuler l'une ou l'autre lame de rasoir dans sa farce aux petits oignons. Certains morceaux se construisent sur un schéma classique, comme "Bloodangel" ou "Golden Wings Of Azazel" qui rivalisent d'une violence assez basique. Mais la plupart du temps, c'est le diable qui se cache dans les détails. Dans le soubassement d'un "Gnosis Of Fire" impérial ou d'un "Lord Of The Raging Seas" aux faux-airs de Black vilain pas beau mais nuancé d'un groove mignon tout plein. Puis, plus radical, il y a ces longues balades durant lesquelles TEMPLE OF BAAL ne se cache plus. "Walls Of Fire", dix minutes d'une conclusion épique, chevaleresque, probablement un aboutissement spirituel pour nos trois compères, les dernières secondes spectaculaires d'un film dont ils auront été acteurs et réalisateurs. Et "Arcana Silentium" qui est pour moi avec "The 10th Aethyr", la plus grandiose et imbibante des compositions de cet opus. Parce que l'ouverture est lancinante. Parce que le déroulement est chaotique. Parce qu'en incorporant une nouvelle texture vocale en seconde partie et qu'en implorant ouvertement le "Seigneur", le Temple donne à cette création des allures d'invocation macabre, comme une prière débitée avec des yeux qui brillent d'une lueur inhumaine.
Qui dans la salle pourra nier l'évidence ? Une présence plane au-dessus de Verses Of Fire. Une force qu'on ne s'explique pas, comme on n'a jamais été en mesure d'expliquer rationnellement ou scientifiquement la présence d'un Dieu ou d'un Satan. Tout est finalement une histoire de croyance. Croire en l'un, c'est croire en l'autre. Croire que TEMPLE OF BAAL est au sommet de son Art n'est pas une évidence. Car dans sa perpétuelle remise en question du Moi, le groupe pourrait se voir remettre des réponses par des spectres dont on ne soupçonnait pas l'existence. Les mêmes qui font aujourd'hui de Verses Of Fire un disque hautement abouti.
Ajouté : Lundi 21 Avril 2014 Chroniqueur : Stef. Score : Lien en relation: Temple Of Baal Website Hits: 6332
|