# 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
}
BELTEZ (de) - Tod: Part 1 (2013)
Label : Bret Hard Records
Sortie du Scud : 15 novembre 2013
Pays : Allemagne
Genre : Raw Black Metal
Type : Album
Playtime : 6 Titres - 43 Mins
J'aurais décidemment passé ma journée à parler de groupes très productif... Après EYEHATEGOD, voici le retour des allemands de BELTEZ, qui nous avaient quittés il y a neuf ans, en nous laissant en 2004 coup sur coup leur dernier album studio Selbstmord, et leur unique live Live in Much. Depuis, plus rien. L'underground allemand se taisait, au point qu'on les croyait même morts.
Mais ils étaient bien vivants.
La mort est justement au centre de ce nouvel effort, s'intitulant très justement Tod : Part I (ndr: La mort : Première partie). Est il utile de préciser que la musique de BELTEZ est en accord avec ce concept? Si vous y tenez...
BELTEZ, c'est du Black à l'ancienne. Formé en 2002 par son unique leader Dominic Kappelhoff, le one man project/trio/quatuor n'a pas changé son fusil d'épaule depuis ses débuts avec Beltane, et continue de pilonner notre système nerveux et de ruiner nos illusions à grands coups de Black des origines, sans toutefois cracher sur des arrangements modernes offrant un peu d'oxygène à l'ensemble de l'entreprise.
Si Dominic a tant attendu pour publier ce nouvel album, c'est qu'il voulait parfaire son approche. La mort étant un sujet vaste, souvent abordé n'importe comment, il lui fallait un oeil nouveau et pertinent sur l'affaire avant de nous développer ses vues. Si le Black Metal est devenu si redondant ces dernières années, au point que ses représentants les plus illustres s'en sont éloignés, c'est la faute d'un manque de "fraîcheur", de "naturel", aussi incongru cela puisse paraître.
Alors Dominic s'est attelé à la tâche, a composé, a tout jeté, et à fini par utiliser son expérience personnelle, son ressenti pour illustrer sa vision de la mort, qui frappe à tout moment et laisse une trace indélébile dans la vie de chacun.
Et à l'écoute de Tod, on peut dire qu'il a réussi son pari. Refusant le parti pris de paroles préparées à l'avance, il s'est quasiment lancé dans des improvisations, pour garder cet aspect de témoignage pris sur le vif.
Pour accompagner ses textes spontanés, il a opté pour une musique adaptée, savant mélange de parties furieuses, de plans écrasants, et de breaks qui constellent les morceaux sans les déséquilibrer.
Et le résultat est plus que probant. Car si la démarche instinctive était la recette miracle selon son auteur, chaque morceau semble avoir été préparé avec soin, construit, pièce après pièce, au point que malgré de nombreuses variations, chaque titre à sa propre cohésion, qui épouse celle de l'ensemble. Bien loin du son maigrelet et âpre des premières années, Tod bénéficie d'une production puissante qui permet aux morceaux de Dominic de prendre toute l'ampleur nécessaire, ampleur indispensable puisque deux d'entre eux tournent autour des dix minutes.
Si le chant inhumain fait souvent penser à BURZUM ou bien SILENCER de par sa volonté de nous écorcher les tympans, la musique se pose en croisement entre les accélérations Punk d'un IMPALED NAZARENE, et la sobriété de composition de Vikerness justement. Mais l'intelligence de Dominic est d'offrir aux ossatures une multitude de possibilités rythmiques, qui loin de noyer les morceaux dans trop de directions différentes, leur offre une palette de teintes noirâtres du meilleur effet.
Que ce soit "Selbstmord" et ses accords de piano malsains, ou "Zu Den Sternen Blickend" et son alternance permanente de tempi sur fond de crescendo apocalyptique, les deux points forts sont donc ces deux longues digressions qui nous emmènent sur le chemin de la découverte, celle de la mort, de la fin quelle qu'elle soit, et des conséquences qu'elle impose. Kappelhoff a extrêmement bien travaillé son sujet, développé ses riffs pour qu'ils restent accrocheurs tout en lacérant les enceintes, épuré les mélodies pour qu'elles restent en arrière plan tout en teintant la pénombre, laissé la basse à sa place tout en lui offrant une exposition inédite dans le Black Metal, et sorti ses tripes sur le travail vocal pour ne laisser que feu et sang.
Tout au plus pourra on lui reprocher cette reprise finale de SLIME, qui détonne sur le disque, en étant un peu trop "Heavy Metal" pour conclure de façon probante. La chanson en elle même n'est pas désagréable, plutôt catchy même, mais sa présence est incongrue et hors sujet. Peut être aurait il mieux valu la réserver à un EP ?
En tout cas, grâce à BELTEZ, et aussi rares soient ses saillies, le Black Metal traditionnel a encore de beaux jours devant lui. Respectant les aînés tout en y apportant sa touche personnelle, Tod : Part I, malgré son sujet morbide, prouve que le Metal extrême est bien vivant, et toujours aussi créatif.
Ajouté : Mercredi 02 Juillet 2014 Chroniqueur : Mortne2001 Score : Lien en relation: Beltez Website Hits: 14206
|