# 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
}
SIX DAYS AFTER (FRA) - Therapy (2011)
Label : Nao Noise Productions
Sortie du Scud : 11 novembre 2011
Pays : France
Genre : Rock / Metal Alternatif
Type : Album
Playtime : 5 Titres - 17 Mins
Les SIX DAYS AFTER nous viennent des belles terres lilloises. Formé fin 2008, le quatuor se rassemble autour d’une même musique : spontanée, aux tournures principalement Rock et Metal, mais parfois Punk, ou Pop. Après quelques années, le combo se débrouille pour s’autoproduire et ainsi graver sa créativité dans la galette qu’est Therapy, une première sortie sous forme d’EP, histoire de commencer à se faire connaître en vue d’un prochain album.
Les cinq compositions proposées dévoilent une interprétation énergique, profitant d’une qualité de production d’excellente envergure et d’une clarté convenable. Des titres qui laissent généralement se dessiner la force d’une instrumentation compétente, et exécutée avec plaisir. Les pistes sont directes et adroitement menées par une section rythmique déchaînée, qui les dynamise décemment tandis que Nicolas Sallerin s’affirme d’un ton autoritaire à la basse. Il fait vibrer ses cordes avec aisance, laissant aussi échapper quelques arpèges en compagnie de voix claire, et profite à apporter une grosseur appréciable aux morceaux, tout en accroissant leur force d’impact. A l’image de « The Taste Of Violence », Nicolas appuie fermement le rythme imposé par la batterie de Matthieu Grigy. Ce dernier se montre tout à fait capable, répercutant plans dynamiques et syncopes mesurées agissant sur la tension des titres. Les jeux du batteur sont réfléchis et vitaminés, sans non plus être complexes. Sa participation est globalement pêchue, et offre une bonne cinétique aux plages accrocheuses telles que « Psychoanalysis », où la rythmique déploie entrain et vélocité, tandis que le chant parfait les structures entêtantes de la piste. La basse y est d’ailleurs plutôt nerveuse, participant à renforcer les lignes de guitares.
Ces dernières, prises en charge par Rémi Delecroix, se font adroites et, hormis une formule classique, parviennent à conserver un attrait pour l’auditeur ; les morceaux débutant souvent sur des intros efficaces de par les jeux Rock/Metal modernes. Qui plus est, les refrains accusent des déferlantes de riffs solides et expressifs, bien étayés de la basse ronflante (« Mistakes, Pain & Illusions »). L’on note, également, un usage récurrent d’arpèges mélodiques et mélancoliques, comme sur « Saddest Day ». Malgré sa courte durée, le morceau ne s’épanche pas en une interprétation fougueuse, mais alterne passages placides emplis d’accords légers et percussions tout en retenu, avec des sections instrumentalement plus chargées, de par les plans rythmiques vivaces. Ces parties véhémentes sont guidées de discrets leads qui n’en sont pas moins efficients et apportent un air entraînant sur les répliques de la basse. Néanmoins, cette piste demeure en deçà des autres de l’album, en dépit de bons riffs ; et ce à cause du chant clair, moins convaincant émotionnellement, ainsi que dans ses harmonies.
Pourtant, le groupe joue avec les sentiments et l’efficacité, au travers d’une musique immédiate et puissante, mais qui sait également montrer ses côtés plus intimistes. Une palette d’émotions qui passe aussi par la prestation vocale d’Olivier Cauderlier, toujours un coup d’avance sur l’instrumentation pour délivrer le meilleur de ses capacités. Le jeune homme se satisfait d’un spectre Rock au timbre mélodieux accrocheur, tout en contrastant avec un léger penchant Metal de par les sections criées. Si le chant hurlé permet d’intensifier l’instant en puisant dans ses retranchements, à l’instar des subites envolées rageuses soutenues de riffs incisifs au détour de chuchotements, les vocaux clairs ne sont pas pour autant mièvres et démontrent une certaine vigueur dans leur rendu. Olivier expose davantage ses qualités lors des ponts partagés entre arpèges et cymbales, où sa voix mélodique s’accorde sans mal à la musique adoucie. Quelques harmonies vocales Rock nuancées pas déplaisantes rappellent même Tuomas Tuominen, lorsqu’il était chez FALL OF THE LEAFE. Il n’hésite pas, toutefois, à laisser poindre des inflexions nerveuses en chant clair, ouvrant ainsi la voie aux lignes modernes des guitares. Hormis ces quelques pointes éructées, les principaux vocaux demeurent majoritairement épurés, mais énergiques grâce au support concret des cordes, donnant lieu à des refrains particulièrement réussis, même lorsqu’ils misent sur un combo hurlements/batterie tout à fait correct. Cela n’empêche pas celui de « Right Corner » de tomber un peu à plat, manquant de la puissance que l’excellent riff l’introduisant laissait présager. Le titre se rattrape tout de même grâce à une pincée de lignes criées bien prenantes qui ne manquent pas de raviver l’intérêt. Enfin, l’EP se termine de manière classique, avec une outro chuchotée et cristalline sur l’ultime morceau.
SIX DAYS AFTER est un jeune groupe qui ne se prend pas la tête, et joue la musique qui fait vibrer ses membres. Therapy, leur premier EP, s’avère donc un mélange tout à fait soigné de Rock et Metal moderne. La formation tire sa force de l’énergie qu’ils parviennent à disséminer au travers du chant hardi et de leurs rythmiques volatiles, sans être cacophoniques, ainsi que de leurs mélodies plaisantes. On peut toujours leur reprocher quelques plans clairs un peu en deçà, et l’utilisation d’agencements semblables ; cependant cela n’enlève pas, à ce disque, la fraîcheur de son écoute.
Ajouté : Mercredi 01 Février 2012 Chroniqueur : CyberIF. Score : Lien en relation: Six Days After Website Hits: 9930
|