# 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
}
GNAW THEIR TONGUES & ALKERDEEL (nl/be) - Dyodyo Asema (2014)
Label : Consouling Sounds
Sortie du Scud : 1er janvier 2014
Pays : Pays Bas / Belgique
Genre : Black Noise Doom Experimental
Type : Album
Playtime : 1 Titres - 19 Mins
"Quand un vicomte rencontre un autre vicomte, qu'est ce qu'ils se racontent..."
Vous connaissez tous cette rengaine saucisson qu'on vous inflige depuis votre enfance si vous êtes de ma génération. Et vous devez tous avoir la même réaction en l'entendant... Oui enfin, je veux dire... Il en reste encore des vicomtes ? Et si oui, on s'en tape un peu non ? Biaisons l'effet et transformons la question je vous prie.
Quand une bande de tarés rencontre une troupe d'allumés, qu'est ce qu'ils se racontent ? Des histoires à dormir debout ? Des blagues qui finissent mal ? Des contes sordides parsemés de massacres et de monstres dans le placard ?
Mais est ce qu'ils parlent d'abord ? Peut être ne font ils rien, peut être agissent ils au lieu de causer... Mais parfois, ils nous laissent des indices, solides, qui permettent de remonter la piste et de comprendre.
On ne compte plus les associations de tarés musicaux en tous genres qui ont un jour partagé leurs vues. MERZBOW, MZ 412, LES JOYAUX DE LA PRINCESSE, DILLINGER ESCAPE PLAN, MIKE PATTON, JOHN ZORN, DEATH IN JUNE, CURRENT 93, et un cahier ne suffirait pas à inscrire tous leurs noms... Pour un résultat variable d'ailleurs. Souvent, ça frise l'indécence, c'est parfois catastrophique, drôle à l'occasion, et magnifique de temps en temps. La somme de deux folies ne donne pas toujours un internement de première classe, et encore moins quelque chose d'exploitable, ou pour le moins, d'écoutable.
Alors, lorsque deux gangs réputés pour leur dégoût des conventions et de l'harmonie s'associent pour fêter les cinq ans d'existence d'un label, Consouling Sounds en l'occurrence, on s'interroge... Surtout quand les deux groupes en question ont derrière eux une discographie riche en pièges à cons, en coup fourrés et autre diableries bruitistes.
Alors, traçons la ligne. A gauche, les Bataves de GNAW THEIR TONGUES. Six ans de carrière au compteur et trente saillies dans le rétro. Oui vous avez bien lu, trente. Il faut dire que nos amis néerlandais s'accoquinent avec tous ceux qui veulent bien faire du bruit avec eux. Au menu, du boucan, beaucoup, à la sauce Noise, Black, Doom et toutes les extensions les plus radicales de l'extrême. Beau boulot. Mais du tri à faire, indéniablement.
A ma droite, les Belges de ALKERDEEL. Drone, Doom, Sludge et autres joyeusetés hautement harmonieuses et délicates.
Au centre, l'objet du débat, Dyodyo Asema. Une pochette d'un jaune vif, flanquée d'un énorme moustique noir menaçant, qui contient une piste unique de près de vingt minutes. Car cet "album" comprenez le bien, n'est pas un Split sur lequel deux tribus s'affrontent, mais bien le produit d'une collaboration étroite entre deux groupes bien décidés à unir leurs influences pour aboutir à... Bonne question.
Il faut avoir l'oreille aguerrie, la patience affûtée et l'abnégation saillante pour s'envoyer les divagations bruitistes de nos amis européens. Ici, point de salut, mais un mépris flagrant pour l'humanité, la compassion, l'amour, la tolérance, l'empathie, et une tendance atavique à la dépression, à la misanthropie, et au rejet de toute forme d'affiliation naturelle avec ses contemporains.
A la manière d'un SUNN O))), de DRAGGED INTO SUNLIGHT, ou même d'un WORMPHLEGM, le tout bien mixé dans un shaker nihiliste à l'extrême, GNAW THEIR TONGUES et ALKERDEEL triturent les sons, n'en retirent que ce qu'ils contiennent de plus sombre, de plus écorché, de plus désespéré pour vous enserrer le larynx, vous écraser la cage thoracique, et vous laisser hors d'haleine, en état de choc au bout de dix neuf minutes.
Certains penseront à ABRUPTUM pour le pilonnage massif et étendu, mais nos deux ensembles terroristes ont voulu la chose plus expérimentale encore. Car là où It, All et Evil se cantonnaient au minimum et jouaient la répétition ultime en guise de séance de torture auditive, Mories et ses potes Belges jouent l'alternance, provoquent, stimulent, terrorisent et massacrent à grands coups de Drone, d'Occult Black, de Noise, et de tout ce qui leur passe par la tête.
Si le morceau commence progressivement, avec quelques bruitages, une basse grondante, des larsens, il tombe rapidement dans une lourdeur suffocante, régulièrement interrompue par des silences inquiétants, et des assauts Black torrides plus bruyants qu'un break de BEHERIT. Et durant ce tiers d'heure, il n'a de cesse de rebondir, de se régénérer au plus profond de la haine pour vous mettre mal à l'aise et vous forcer à vous interroger.
Qu'est ce que la vie après tout ?
Mais je doute que ce disque vous apporte la réponse souhaitée. Il n'a été conçu que pour exprimer des vues personnelles, celles de ses concepteurs, au mépris qu'une quelconque audience. Et mis à part une poignée de fans de Black expérimental, de Post Black, ou de bruitistes chevronnés, il ne séduira personne. Mais il n'a pas été engendré pour ça après tout.
Alors oui parfois, les folies combinées aboutissent à une gigantesque déclaration d'intention, aussi introspective que dangereuse, comme c'est le cas ici. Mais il serait difficile d'en décrire la teneur avec des mots, bien que j'ai tenté de relever le défi. Essayez, et vous verrez. Pas sur que vous teniez jusqu'au bout, mais si tel est le cas, vous n'en reviendrez pas forcément indemne.
Ajouté : Lundi 28 Juillet 2014 Chroniqueur : Mortne2001 Score : Lien en relation: Gnaw Their Tongues & Alkerdeel Website Hits: 11706
|