# 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
}
PENSEES NOCTURNES (FRA) - Grotesque (2010)
Label : Les Acteurs de l’Ombre Productions / Season Of Mist
Sortie du Scud : 27 mars 2010
Pays : France
Genre : Black Metal Avant-avant-avant-gardiste
Type : Album
Playtime : 8 Titres - 54 Mins
J’avoue avoir déjà posé plusieurs fois l’oreille sur de nombreux bouffons du Metal. Ceux qui mériteraient sans conteste un ticket pour la Salpêtrière, tant leur œuvre est en décalage total avec la société moderne dans laquelle nous évoluons. SILENCER, SPEKTR, IWRESTLEDABEARONCE, PESTE NOIRE, SUNN O)))… tous ceux-là avaient déjà un beau grain. Mais il n’avait pas encore germé, tel celui qui grandit, grandit, grandit dans le cerveau détraqué de Vaerohn, le seul maître à bord du projet PENSEES NOCTURNES. Un homme qui vous conduira dans un monde fantastique, délirant, par la seule force de son imagination hors-normes. La même qui l’a poussé à faire de la « musique ». Ou du moins d’en concevoir, aussi loufoque et maladive qu’il lui plaira. Grotesque, qui porte sacrément bien son nom, est le deuxième album de ce one-man-band singulier, déjanté, unique. Ainsi je vous propose davantage, si vous avez été séduit par le papier à suivre, de faire l’expérience par vous-même. Car les mots ici présents ne seront jamais assez précis pour vous décrire l’expérience vécue, d’ailleurs relative à la sensibilité de chacun.
L’artwork est le fruit du travail de 3-Crosses XXX, que je soupçonne d’être le bassiste d’OTARGOS. Vaerohn a donc des relations. Des relations de grande qualité. Mais sa musique, il ne la doit qu’à lui et lui seul. Elle est beaucoup trop personnelle pour être l’aboutissement d’une combinaison d’esprits. Elle alterne sans cesse, se renouvèle, change brutalement d’altitude et d’attitude. Oscillant entre un Black avant-gardiste et une musique de forains, combinée à des multitudes d’éléments tous plus étranges les uns que les autres tels l’orgue, l’accordéon, les orchestrations de fanfare, les animations typiques de la foire aux asperges d’Argenteuil et les pitreries d’Achille Zavatta, la création de Vaerohn est conçue pour vous plonger dans un univers décalé et décadent. Le personnage le dit très justement, « c’est un album qui s’écoute, et non que l’on entend ». Tout est dit. Quoique, une seule écoute, même attentive ne suffira pas. A chaque relecture, ce sont des dizaines de détails qui vous sautent aux yeux et qui complexifient d’autant plus l’affaire. Les compositions, bien que longues, sont aérées. Beaucoup s’y perdront, c’est clair ! Certains le traiteront de merdier, d’autres glorifieront l’audace et le culot du projet. J’en fais partie ! Car qu’il est agréable d’entendre, une fois, une seule, un disque qui refuse les carcans et les stéréotypes que la profession exige. Grotesque n’est pas un banal album de Black, comme on en reçoit dans nos bureaux par paquets de dix et qui se voient toujours évalués avec les mêmes critères redondants. Avec PENSEES NOCTURNES, adieu les riffs dégoulinants, la batterie dégueulasse et les hurlements de pipistrelle leucémique. Il en ressort l’essence même du Black Metal. Cet aspect glauque, malsain, poisseux. Accommodé comme il ne l’a jamais été, à des sonorités bien plus cauchemardesques et vicieuses que n’importe quel tube de Britney Spears (je m’excuse publiquement auprès de Vaerohn pour avoir osé la comparaison dans un élan humoristique pas bien malin). Mais quand même mon garçon, quel espèce de détraqué es-tu pour nous servir pareil festin de pitreries, de clowneries, d’actes schizophrènes et psychotropes ? Et en plus, c’est un festin qui sonne terriblement juste, qui met le doigt sur nos peurs les plus profondes, sur nos angoisses d’enfants. Le chant est horrible, à vous procurer une peur bleue. Des plaintes profondes et sincères, venant de l’âme du docteur Faust, ne voulant pas rejoindre son nouveau propriétaire. Des murmures, des chuchotements fantomatiques, des pleurs de femme, tout est sujet à l’imagination de chacun. Cet opus impressionne par sa formidable droiture. Pas besoin d’avoir fait Sciences-Po pour comprendre la sincérité de ce garçon, loin d’être le fou qu’on croit.
De toute façon, chacun vivra l’expérience de sa propre manière. Et personne ne stagnera sur le carreau avec un avis mitigé ou partagé. Il est impossible de rester indifférent, de marbre, de glace ou d’argile. Grotesque restera pour chacun d’entre nous, qu’on le veuille ou pas, la bande-originale de notre inconscient. Celui qui vous évade à sa guise dans des lieux obscurs et pétrifiants ou dans de verts pâturages fleuris. Avez-vous déjà réalisé à quelle vitesse un rêve peut se transformer en cauchemar ? Non ? Alors laissez-vous tenter…
Ajouté : Mercredi 22 Décembre 2010 Chroniqueur : Stef. Score : Lien en relation: Pensées Nocturnes Website Hits: 9797
|