# 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
}
SONANCE (uk) - Like Ghosts (2012)

Label : Auto-Production
Sortie du Scud : 12 novembre 2012
Pays : Angleterre
Genre : Post Sludge Expérimental
Type : Album
Playtime : 2 Titres - 42 Mins
En ce moment, ma playlist est une véritable invitation au suicide (très bon label des années 80 ceci dit en passant…). Rien de bien gai, peu ou pas d’optimisme, les ténèbres, refus de la moindre lumière. J’assume, je revendique, c’est comme ça.
Alors je fouine. Je parcours les bandcamp, j’écoute, j’aime, je prends, je déteste, je laisse… Et je garde souvent, c’est un fait.
Et c’est encore ce que j’ai fait ce soir. Car depuis quelques temps, j’ai du mal à rester dans la ligne du parti, et me cantonner au Heavy classique, au Thrash maison ou au Grind torride.
Donc, du Post Hardcore, de l’Expérimental, du Sludge, du Drone, du Doom. En gros, les longues messes en dissonances majeures, les lenteurs le confinant au désespoir, les cris de douleur, les coups derrière la nuque.
Et ce soir ne dérogera pas à la règle. Car je vais vous parler de SONANCE, qui pratique une hybridation plus que réussie entre le Doom le plus lugubre, le Sludge le plus épais, sans pour autant noyer la mélodie dans un océan d’indifférence déplacée.
SONANCE est un jeune groupe anglais, de Bristol plus exactement, et Like Ghosts est son premier témoignage sonore.
Et à l’écoute de ces deux pistes riches et enrichissantes, il est difficile de croire que le quintette vient juste d’éclore sur la scène d’outre Manche. Un titre, deux parties, pour une longue dispersion de cendres dans le ciel de la nuit. Aucun titre n’eut été plus approprié que « Comme des fantômes ». Car c’est bien de cela dont il s’agit.
L’instinct harmonique naturel développé durant ces quarante minutes est tout bonnement impressionnant.
Outre les figures imposées par le style choisi, à savoir ces lourdeurs maladives, ces invectives vocales plaintives mais écorchées, et ces riffs pesants, SONANCE se permet des libertés mélodiques réellement prenantes, qui rendent passionnants même les segments les plus répétitifs.
Loin de lasser au bout de quelques minutes, les deux morceaux captivent, kidnappent votre libre arbitre pour vous faire pénétrer dans un monde où le nihilisme et la noirceur règnent en maîtres, tout en laissant filtrer un léger rai de lumière par une porte dérobée.
Avec une puissance hors du commun lors des passages principaux (une rythmique suffocante, avec en exergue une basse extrêmement grave et percutante), et une délicatesse surprenante lors des intermèdes plus « légers », SONANCE rend ses compositions attractives et construites sur une véritable progression réfléchie, à cent lieues des roboratives itérations approximatives de tous les parasites d’un genre rongé jusqu’à l’os.
Une simple écoute de l’incroyable « Side B », qui débute en nappes de cordes et de claviers, puis se fond dans un silence à peine troublé par de sobres arrangements, avant de s’évanouir pour mieux laisser le chaos reprendre ses droits en un cri primal terriblement dérangeant suffira à vous convaincre de l’intelligence de composition de ces cinq jeunes anglais.
Car loin de se contenter d’assener des vérités toutes faites et déjà périmées, ils transcendent le minimalisme de leur style originel pour le transformer en essence brute, en procédé discursif musical qui nous permet d’en saisir chaque note, chaque mot, et de leur conférer l’importance qu’ils méritent.
Aidés en cela par une production parfaitement taillée à la mesure de leurs ambitions, sèche, mais claire, puissante, mais précise, tout en sachant laisser la part belle aux débordements parfois, SONANCE réussit la performance de sonner progressif en alignant de longs passages pas si uniformes qu’ils en ont l’air à la première écoute.
Il est bien évident que l’aspect « extrême » de leur musique va leur aliéner une bonne frange du public habitué à des pulsions moins morbides, mais ils sauront convaincre ceux qu’un effort de compréhension et d’appréhension ne rebutent pas, et qui savent fouiller sous la poussière pour y trouver l’éclat de la lumière.
Car il faut savoir affronter l’obscurité parfois pour en ressortir vierge et apaisé. Et affronter la mort en face pour apprécier les bonheurs qu’offre la vie.
Ajouté : Mercredi 28 Novembre 2012 Chroniqueur : Mortne2001 Score :      Lien en relation: Sonance Website Hits: 9458
|