# 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
}
VADER (pl) - Tibi Et Igni (2014)
Label : Nuclear Blast Records
Sortie du Scud : 30 mai 2014
Pays : Pologne
Genre : Death Metal
Type : Album
Playtime : 10 Titres - 42 Mins
Strasbourg, cuvette de chiotte coincée entre les Vosges et la Forêt-Noire. Je te hais. Aujourd'hui, il fait 35° à l'ombre. Je regarde la pochette de Tibi Et Igni, nouvel album de VADER, il en fait 40. J'écoute "Go To Hell", il en fait 45. C'est ça, VADER ! Du culte, du culte, encore du culte. Un culte si suffocant qu'hormis peut-être deux albums légèrement, très légèrement en-dessous des huit autres (pour moi The Beast et Necropolis), jamais, en dépit des changements de line-up, des années de carrière, du côté légendaire qui, plus il devient légendaire, plus il est susceptible de s'effriter, jamais VADER n'aura réellement marqué le pas et défait sa réputation volcanique acquise comme une évidence avec The Ultimate Incantation en 1992 puis De Profundis en 1995. La suite, on la connait. Litany en point d'orgue, Impressions In Blood pas loin derrière, la remontada avec Welcome To The Morbid Reich, Tibi Et Igni pour actualité et toujours, toujours, comme une croute poussiéreuse qui refuse de décrocher du mur, Piotr "Peter" Wiwczarek en souverain pontife.
Injecté de sang frais avec l'apparition dans le line-up de Tomasz "Hal" Halicki à la basse (HERMH) et de James Stewart à la batterie pour épauler Peter et Spider (guitare), Tibi Et Igni, bien qu'étant le onzième full-lenght de la vaste discographie des Polonais, va parvenir à un renouvellement technique, rythmique et organique tout à fait vertigineux pour un groupe aussi rôdé et, disons le clairement, mené par un frontman qui, à bientôt 49 ans, aura bien mérité sa retraite. Rapidement, cet opus marque son besoin d'émancipation. Seulement vieux de trois ans, Welcome To The Morbid Reich semble bien dépassé face à la puissance du VADER 11.0. Aventureux, innovant, audacieux, le Death Metal des Polonais n'a franchement jamais sonné aussi caustique et orchestral. On parlerait presque de Death expérimental si la section rythmique, aussi broyante que bruyante, n'avait pas en permanence le dernier mot dans cette affaire. Jamais dans l'outrance, jamais dans l'ingérence, l'opus démarre dans un condensé de puissance granuleuse que le solo expéditif de "Where Angels Weep" ou les arrangements grandioses de "Go To Hell" nuancent. Des détails, si l'on considère l'humeur Rock N' Roll de "Triumph Of Death" (qui aurait plutôt dû s'intituler "To The Grave" vu la fréquence à laquelle Peter débite ces paroles) comme le symptôme artistique le plus délicieusement nocif de Tibi Et Igni. Et si à côté de ça, on repère aisément les morceaux plus fantomatiques (je pense surtout à "Abandon All Hope"), c'est surtout parce que VADER a eu l'excellente idée de pondre une composition graphique et théâtrale comme "Hexenkessel", laissant envisager qu'après BEHEMOTH, un autre nom ronflant de la scène polonaise est en train de céder à ces plantureuses sirènes orchestrales. Et le plus savoureux dans tout ça, c'est qu'en dépit de l'aversion manifeste que le public convaincu éprouve machinalement pour de tels compromis, le cas VADER ne va pas faire l'ombre d'un débat, tant l'omnipotence de Tibi Et Igni est inéluctable. Rector Orbis de sa génération, Peter, en leader incontestable, en tête pensante, en gourou du Death, de sa voix si facilement identifiable et pénétrante, va faire taire tout le monde, se permettant sur "The End" la facilité d'une narration. L'anecdote, dans cette histoire, c'est que jamais VADER n'aura signifié aussi clairement la fin d'un de ses albums depuis "The Final Massacre", ponctuant en 2000 un certain... Litany ! De la symbolique à l'état pure, à laquelle chacun jugera utile ou pas de croire.
Le plus ceci, le moins cela. Qu'importe. Tibi Et Igni est. Il respire, existe, et existera à jamais. Empreinte digitale dans la discographie du groupe, empreinte génétique dans l'ADN du Death Metal, ce onzième album studio de VADER frôle une forme d'excellence grasse et nerveuse qui force le groupe à se renouveler en permanence. Un jeu d'enfant. Un jeu de feu. Comme ce post-scriptum mystérieux laissé usuellement à l'attention des destinataires des messages secrets pour signifier une nécessité de destruction par le feu après lecture.
Tibi Et Igni, "à toi et au feu". Mais surtout à toi.
Ajouté : Lundi 10 Août 2015 Chroniqueur : Stef. Score : Lien en relation: Vader Website Hits: 5472
|