# 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
}
TELÜMEHTÅR (FRA) - Blåck (2009)

Label : Auto-Production
Sortie du Scud : 5 mai 2009
Pays : France
Genre : Black Metal
Type : Album
Playtime : 7 Titres - 38 Mins
Quel est le comble pour une formation de Black Metal ? Sortir tout droit d’une ville principalement connue pour sa cathédrale ? C’est l’étrange paradoxe proposé par TELÜMEHTÅR. Originaire de Rouen, ce projet singulier a été fondé dans la nuit du 3 au 4 janvier 2007 par Lord Telümehtår, qui a vu dans la pleine lune illuminant le ciel Normand le point de départ de sa folle ambition. Depuis son premier album, Blåck, sorti en autoproduction le 5 mai 2009, on n’a plus aucune nouvelle de celui qui se tailladait fièrement les veines au verso du digipack. Peut-être a-t-il finalement accompli son lugubre dessein ? Ça n’a pas d’importance, parce que ce garçon ne nous a légué aucun héritage digne de ce nom. A peine un petit full-lenght, convaincant certes, mais pas révolutionnaire. D’ailleurs en le réécoutant, je ne pense pas que c’était là son objectif premier.
Entre croix renversées, pentagrammes et symbolique obscure, cet opus transpire déjà l’hostilité dans son plus simple apparat visuel. On sait forcément plus ou moins à quoi s’attendre, bien que le côté extrêmement underground de l’affaire donne encore plus de piment à ce CD. Lord Telümehtår est vraisemblablement un être torturé, imprévisible, peut-être malade. A l’instar de Nattramn de SILENCER qui se tranchait les doigts et se tailladait le visage pour mieux exprimer sa douleur en musique, son homologue tricolore a très bien pu s’infliger quelques sévices pour brailler de manière aussi frénétique sur cet enregistrement. Je ne sais pas, s’arracher les croutes nasales ou les poils pubiens par exemple. Blague à part, si l’amateurisme proche du ridicule dans lequel baigne cette œuvre est évidement son talon d’Achille, on ne pourra néanmoins pas lui reprocher de dégager un certain magnétisme. Et celui-ci se matérialise dès « Black Mountain », un morceau de Black Metal très intelligemment écrit, avec une accroche incroyable dans le riff principal et beaucoup de vista dans l’exécution. Blåck démarre donc de la plus belle des manières et le professionnalisme qui habite cette première compo est une véritable surprise. Dommage qu’il sera amené à perdre progressivement cette aura par la suite. Déjà avec « Black Moon », un possible écho au « Freezing Moon » de MAYHEM, on dégringole d’un étage. Violente et terrifiante, cette création se décompose en deux parties. La première, longue de trois minutes, est un hommage au Black Metal norvégien dans toute sa splendeur. Une cacophonie sans nom, accumulation grotesque de cris et de blasts. La deuxième s’ouvre à l’art du vrai Metal noir comme une fleur sous les rayons du soleil. Plus épique, plus réfléchie, plus tempérée, elle se permet un riffing presque mélodique et un agencement pénétrant. On retrouve le TELÜMEHTÅR fier et orgueilleux qui faisait sonner la tocante sur « Black Mountain ». Pour la dernière fois. Car que ce soit « Black Snow », « Black Lodge » ou « Black Fjord », aucun des titres proposés ensuite n’arrivera à la cheville des deux premiers. La bestialité primitive du premier, le mid-tempo irrégulier du deuxième et le vide artistique du troisième, on ne saura se décider entre la peste et le choléra. Sans parler de « Black Hymno » et « Black End », un interlude ambiant qui dure cinq minutes de trop et une outro sur laquelle s’épanouit un silence de… cathédrale. Je pense que Lord Telümehtår a voulu consacrer deux moments à la réflexion. Décadence, tourments, nihilisme, misanthropie, soit autant de sujets sur lesquels il nous faudrait réfléchir durant cet opus. Sauf qu’il faut se sentir investi de l’esprit Black Metal pour vivre ce Blåck à fond.
Le mélomane que je suis sera donc à moitié déçu par cette œuvre solennelle qui respire l’engagement mais qui ne brille qu’à son commencement avant de s’éteindre progressivement. On y retrouve largement l’esprit underground qui plait tant aux amateurs de Black et le tohu-bohu qui déplait à ses détracteurs. Ce disque, qui n’aura pas la popularité suffisante pour être controversé est à l’heure actuelle un simple essai sans suite. TELÜMEHTÅR semble s’être perdu dans les méandres de son propre univers, alors même que luisait une flamme dans sa musique. Vite apprécié, vite oublié.
Ajouté : Mercredi 12 Septembre 2012 Chroniqueur : Stef. Score :     Lien en relation: Telümehtår Website Hits: 8578
|