# 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
}
TOUNDRA (sp) - IV (2015)

Label : Superball Music
Sortie du Scud : 26 janvier 2015
Pays : Espagne
Genre : Atmospheric Post Metal
Type : Album
Playtime : 8 Titres - 51 Mins
On peut apprécier la musique pour plusieurs raisons, et sous des formes multiples. N'y voir, à l'instar de Gainsbourg qu'un art mineur, source de plaisirs mineurs, de quoi passer le temps, souvent en format court, trois minutes, trente secondes et puis s'en vont...
Quel est le pouvoir d'un refrain en fin de compte ? Inutile de blâmer ceux qui n'y voient là qu'une petite alternative brève au quotidien, de quoi accompagner leur ménage, ou leur trajet jusqu'au travail. C'est comme ça. Une multitude de groupes s'offrent alors à eux, des groupes concis, qui appliquent à la lettre la sacro-sainte formule intro-couplet-refrain-couplet-refrain-pont-refrain, et c'est une bonne chose.
Mais la musique, ça peut aussi être autre chose. Un monde différent, dans lequel tout passionné évoluera et dont il aimera arpenter les détours, un univers parallèle, un refuge presque, en tout cas, une source d'émotions inaltérable, sincères, profondes, amenant même dans les cas les plus extrêmes à une introspection qui permettra d'avancer, coûte que coûte, à travers la jungle de la réalité que nous devons tous affronter chaque jour...
Dès lors, tout est permis. Toutes les intonations, toutes les inflexions, tous les formats. De l'abandon de la concision au profit de l'exploration, de l'étude de la répétition comme stimulateur émotionnel, de la traversée au long cours de digressions mélodiques, harmoniques et/ou bruitistes. Et dans ces cas pas vraiment précis, on en vient à oublier de "cataloguer" l'humeur, préférant la laisser voguer au gré de dénominations hasardeuses et pas vraiment importantes. Et aujourd'hui, c'est exactement ce qui m'est arrivé. De ce profond désir de découvrir du nouveau, je suis tombé sur un groupe de Madrid, un quartette instrumental né des cendres de deux autres entités purement Hardcore, TEN MINUTE MAN et NACEN DE LAS CENIZAS.
TOUNDRA, ce sont trois albums, quatre aujourd'hui avec ce dernier né, qui aiment à fouiller dans les recoins du Post Rock, opposant les harmonies les plus éthérées aux inflexions les plus puissantes. Cette recette, si elle à tendance à devenir éprouvée avec les années, reste toujours très difficile à équilibrer. Sans chant aux avants postes, les groupes s'exposent, dans une structure nue, et ne peuvent compter que sur leurs qualités instrumentales, et leur habileté de composition. Dans le cas de IV, TOUNDRA a choisi une optique encore plus ardue. Retranscrire en musique, sans mots, la folie de l'homme qui s'obstine à détruire une nature qui lui a tout donné.
Sous sa pochette splendide (deux renards fuyant une forêt en feu), IV cache bien des trésors. Il est avant tout, une incroyable démonstration d'unité musicale qui dépasse la simple accumulation de gimmicks et d'itérations, même si certains motifs retombent régulièrement sur leurs pieds. Et en à peine deux morceaux, il plante un décor riche, dense, contradictoire dans ses humeurs, à l'image de l'incompréhension légitime d'une folie que rien ne semble pouvoir arrêter.
En effet, en un peu plus de dix sept minutes, "Strelka" et "Qarqom" posent des jalons sérieux, étalent des riffs tendus et denses sur lesquels viennent planer des interventions mélodiques superbes, et multiplient les break sans jamais se départir d'un leitmotiv harmonique remarquable, qui s'il reste dans une gamme de couleurs balisée, se laisse interpréter parfois d'une façon différente.
"Belenos", moins âpre, laisse l'écho du lointain prendre un peu plus de place, et s'achève même dans une coda en forme de percussions sourdes qui évoque le NEUROSIS le plus lancinant.
"Viesca", intermède paisible, se complait dans l'acoustique avant d'atteindre une puissance émotionnelle extraordinaire à l'occasion d'arrangements synthétiques grandiloquents mais sincères. Superbe interlude de moins de cinq minutes, c'est à contrario de son humilité de surface un des moments les plus forts de l'album, comme une mini symphonie de poche...
"Kitsune" et son format plus développé, retrouve les tics de début de LP, tout en les adoucissant et les peaufinant à l'extrême. Mais en son centre, cette composition se recentre sur la violence, le chaos, pour partir dans plusieurs directions pointées du doigt par une rythmique inflexible et décidée. A "Oro Rojo" de conclure cette histoire, comme elle l'avait d'ailleurs annoncée en avant première dès l'année dernière, appuyée par une vidéo d'animation de toute beauté réalisée par Jorge García. Et la surprise est de taille tant le panorama change à ce moment là, marchant sur des chemins bien plus éclairés, offrant des carillons presque optimistes, sur fond de mélodie positive et euphorisante. La richesse de ce dernier morceau se pose en résumé parfait de l'optique des espagnols, qui finalement remportent l'épreuve haut la main, ayant réussi à mettre en musique un état de fait complexe et pourtant élémentaire...
Et c'est je le crois, ce qui pourrait le mieux symboliser leur musique. Cette dernière à beaucoup à offrir, est construite avec patience et attention, et reste pourtant spontanée. Elle est difficile d'accès et pourtant fait appel aux sens les plus élémentaires de la perception. Semble difficile, mais laisse une écoute que tout un chacun saura appréhender sans avoir à faire appel à une mémoire musicale trop enfouie.
Elle s'adresse à tout le monde, car son thème moteur doit/peut tous nous toucher. En un mot, elle reste "naturelle".
Alors si vous vous demandiez en ce début d'année si le Post Rock/Metal avait encore des choses à dire, voilà de quoi vous en persuader. Et TOUNDRA vous convaincra sans rien dire justement, ce qui reste un paradoxe gigantesque. Seule leur musique répondra à vos interrogations.
Mais d'une façon si évidente et belle qu'à l'avenir, vous ne vous poserez plus aucune question. Et que, peut être, vous prendrez les choses en main.
Ajouté : Mercredi 25 Février 2015 Chroniqueur : Mortne2001 Score :      Lien en relation: Toundra Website Hits: 6614
|