# 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
}
BATHORY (se) - The Return (of the Darkness and Evil) (1985)

Label : Black Flag
Sortie du Scud : 2010
Pays : Suède
Genre : Black Originel poussé au paroxysme
Type : Album
Playtime : 11 Titres - 36 Mins
Si VENOM avait été le premier groupe à poser les bases d’un Metal satanique pur et dur, ils ont beaucoup plus fait rire qu’ils n’ont dérangé à l’époque (à part quelques mères de familles et autres hommes d’église facilement impressionnables…). Il faut dire que leur côté « malsain » reposait surtout sur une iconographie bien choisie, des paroles paillardes et des prestations live hautes en couleurs.
Mais étant des musiciens somme toute assez faibles, et avouant bien vite que leur investissement dans l’œuvre du malin restait relativement prosaïque et surtout fondé sur l’appât du gain et l’attraction d’un public friand d’humour borderline, ils ne tinrent pas longtemps la distance. Et après deux albums introductifs légendaires (Welcome To Hell et Black Metal, le bien nommé…), puis un autre très ambitieux mais plus ou moins brouillon (At War With Satan et sa chanson titre de 20 minutes…), ils finirent par tomber dans l’auto parodie, et les fans les boudèrent irrémédiablement.
Mais il faut leur reconnaître la paternité du concept (Même si le groupe COVEN et leur introuvable Witchcraft Destroys Minds and Reaps Souls avait vu le jour 11 ans plus tôt et posé les jalons d’un Rock dur et foncièrement satanique aussi).
Ceci étant, le véritable géniteur du Black Metal vient d’ailleurs. D’un pays beaucoup plus froid et libéral que l’Angleterre.<br<
Il aurait été difficile, voire impossible à l’époque de prévoir que ce petit suédois allait quasiment à lui tout seul (le « quasiment » étant représenté par HELLHAMMER/CELTIC FROST) être responsable de la naissance d’une scène entière quelques années plus tard.
Mais ne vous y trompez pas. Si MAYHEM, BURZUM, MARDUK, IMMORTAL et consorts ont un jour poussé le vice aussi loin, c’est à cause de lui, Quorthon.
Ace Thomas Forsberg, puisqu’il a quand même un nom humain, n’a jamais vraiment été fasciné par le satanisme. Il l’a beaucoup plus été par le Paganisme et les légendes des Dieux nordiques, ce que prouvera la suite de sa carrière. Mais il était terriblement anticonformiste, et profondément irrité par les ténors du Heavy Metal de l’époque.
Ses influences, il faut les chercher dans le Punk et le Metal originels, DISCHARGE, MOTORHEAD, BLACK SABBATH. Comme le démontre assez bien son premier album éponyme, assez calqué sur le Rock sale et rapide de Lemmy et sa bande.
Mais ce qui caractérise le mieux le Black Metal de BATHORY, c’est l’approche qu’il en a. Ce son qui semble surgir des profondeurs des abysses de la noirceur humaine. Cette voix d’écorché vif, torturée, quasi inhumaine (inutile après de se demander ou le conte de BURZUM est allé chercher son modèle…).
Mais plus que sur Bathory, c’est sur The Return… que Quorthon pousse les choses à leur paroxysme.
Ici tout est sombre, souillé, malmené pour arriver à créer l’ambiance la plus poisseuse qui soit.
Et même s’il n’est pas forcément meilleur musicien que Mantas, Cronos et Abbadon, il croit en ce qu’il fait, et c’est la toute la différence.
Avec cette batterie en permanence en contretemps des guitares, ces riffs répétitifs ou lancinants, et ce chant qui semble lui arracher ce qu’il lui reste de cordes vocales, le tout soutenu par une production cheap, Quorthon nous emmène très loin dans l’Hadès. Avec des morceaux comme « Possessed », inimaginable pour l’époque, « Sadist », et « The Wind Of Mayhem », bâtis sur le même moule de violence sourde, Ace a ouvert la porte infernale à tous les débordements futurs de la scène scandinave (pour l’anecdote, sa première apparition discographique fut sur le LP compilation Scandinavian Metal Attack…Prémonitoire ??).
Avec son intro interminable et suffocante « Revelation Of Doom », il place l’ambiance au premier plan et choque considérablement. Certains ne s’en sont encore pas remis.
Et histoire de ne pas nous laisser dormir en paix, il clôt son album avec « The Return of the Darkness and Evil », un des morceaux les plus dérangeants de The Return. Histoire sans doute de dire que tout commence, et que les pires cauchemars sont à venir…
Le fait que BATHORY ne se soit jamais produit live à l’époque, et que ses membres n’apparaissaient sur les photos promos que vêtus de slips en peaux de bêtes dans la forêt ajoutait une patte à l’aura de mystère dont bénéficiait le groupe. Ce qui a aussi franchement influencé les générations suivantes dans la gestion de leur image.
Vous aurez donc compris à la lecture de cette chronique que The Return fut influent sur de nombreux niveaux. Qu’il fait partie de cette catégorie d’œuvres dont on découvre l’importance de nombreuses années après leur parution.
Mais Varg, Hellhammer, Abbath, Morgan, Nocturno Culto et tous les autres savent quelle dette ils ont envers Quorthon.
Et le froid scandinave sait leur rappeler, nuit après nuit, hiver après hiver…
Ajouté : Samedi 28 Août 2010 Chroniqueur : Mortne2001 Score :     Lien en relation: Bathory Website Hits: 14433
|