# 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
}
RUINSIDE (fi) - 10 Forms Of Dominion (2014)
Label : Mighty Music
Sortie du Scud : 20 octobre 2014
Pays : Finlande
Genre : Heavy Thrash Metal
Type : Album
Playtime : 11 Titres - 41 Mins
Depuis quelques années, une nouvelle vague de groupes Néo Thrash a envahi les bacs, ce qui je l'avoue n'est pas pour me déplaire. En tant que fan absolu des attaques successives des USA et de l'Allemagne dans les années 80, puis du reste du monde à la fin de cette même décennie, je ne peux que m'en réjouir.
Mais si dans les années 80, les derniers ne furent pas les moins intéressants, la production pléthorique laissait passer à travers les mailles du filet de la qualité des groupuscules qui auraient du/pu rester dans un anonymat mérité.
Il ne suffit pas en effet de jouer vite, en rangs serrés, pour produire une musique digne d'intérêt. Encore faut-il faire preuve d'inventivité, prendre des risques, et ne pas se contenter de reproduire une recette de base, aussi bonne soit elle. Alors oui, nous avons subi des choses assez douloureuses, causées par des ensembles confondant vélocité et efficacité, mais là n'était peut être pas le pire fléau.
Personnellement, j'ai toujours eu beaucoup plus de mal avec les musiciens n'en faisant pas assez que ceux en faisant trop. Ainsi, et envers et contre (presque) tous, j'ai longtemps défendu les démarches excessives du premier WEHRMACHT, Shark Attack, du Do Or Die de VIKING, ou de l'unique LP des frenchies de MORSÜRE, Acceleration Process. Que voulez vous, je suis excessif. C'est comme çà.
Par contre, j'ai toujours été allergique aux timorés. Ceux qui restent dans la moyenne, qui ne franchissent jamais la ligne, qui n'osent pas, par peur, ou par volonté. Ainsi, je me retrouvais à l'époque plus facilement dans le Thrashcore le plus bordélique que dans le Heavy Thrash tiède. Plus CARNIVORE que ATROPHY. Ca résume assez bien. Evidemment, avec le temps, j'ai réévalué certaines choses, l'âge aidant. Mais je ne suis pas sur qu'il en soit de même avec 10 Forms Of Dominion de RUINSIDE dans vingt ans.
Le Heavy Thrash, je ne suis pas contre. Si c'est puissant, bien joué, que ça ne crache pas sur quelques accélérations bien senties, et que les mélodies soient discrètes, amères, et bien travaillées. Un de mes albums préféré fait d'ailleurs partie de ce créneau, je veux bien sur parler de l'immense Reign Of Terror des WILD DOGS. Dans un registre plus moderne, le Black Fuel de CHANNEL ZERO fait aussi partie de mes albums de chevet. Mais ces deux disques ont quelque chose que 10 Forms Of Dominion n'a pas, ou d'une façon trop éparse. En effet, ce deuxième album des thrasheurs finlandais manque d'âme, de folie, et de titres vraiment forts, à une exception près. Et ça ne pardonne pas.
Fondé en automne 2005, le quintette a sorti un premier effort il y a deux ans, The Hunt, sur le même label, Mighty Music. Bien lancée, leur trajectoire ascendante s'est soudain brisée sur une tragédie, la mort de leur bassiste Lauri Aitonurmi dans un très grave accident de voiture. Après une période de deuil, le groupe s'est remis au travail, et nous livre aujourd'hui le fruit de ses réflexions. Et sans faire montre de cruauté à leur égard, je dois me montrer objectif, et laisser échapper un "bof" global qui résume assez bien ce que j'ai ressenti après de multiples écoutes attentives.
Soyons clair, la musique de RUINSIDE doit plus au Heavy qu'au Thrash. Mais la rythmique étant la plupart du temps (sur la première moitié du disque surtout) assez rapide, et les riffs relativement touffus, je ne peux m'empêcher de souligner la seconde analogie. Autre analogie assez frappante, celle qui unit dans un même élan CHANNEL ZERO et RUINSIDE. Même chanteur au timbre chaud et puissant, mêmes inclinaisons à épicer leur musique, les belges et les finlandais se retrouvent sur bien des points, sauf sur celui de la réussite.
Alors que chaque LP de la bande à Franky est intéressant de bout en bout, ici l'affaire est toute autre. Pour être plus clair, après m'être avalé les six premiers titres de cet LP, j'allais stopper son écoute et passer à autre chose. Et puis soudain, trois morceaux successifs ont attiré mon attention, réveillé ma curiosité, et m'ont poussé à vous en parler tant bien que mal.
Si tout l'album avait été de la trempe de "In the Arms of Bitterness", "Juggernaut" et "Chambers of Resurrection", je lui aurais accordé un bon neuf sur dix. Mais malheureusement, ces trois exceptions surnagent dans un océan de banalité, et c'est là que le bât blesse. Car sur trois chansons, RUINSIDE réussit l'exploit de proposer trois hymnes complets, sans que l'on ne trouve quoi que ce soit à redire.
Tout est là, tout ce qu'on peut attendre d'un excellent LP de Heavy Thrash. Les riffs solides et tranchants, la basse ronde, claire et rebondie, la rythmique inventive, et le chant investi. Rajoutez à ça des choeurs convaincants, des refrains à reprendre à pleins poumons, des soli créatifs et des harmonies séduisantes, et le tableau est complet. Au petit jeu du meilleur élève, c'est bien sur "Juggernaut" qui remporte les bons points, avec son croisement entre le TESTAMENT de Practice What You Preach et le CHANNEL ZERO de Black Fuel. Le meilleur de deux époques différentes mais complémentaires, unies en un allant unique et cohérent. Parfait. Mais pour en arriver là, il aura fallu supporter des tentatives mineures, répétitives, aux thèmes tournant en rond dans un labyrinthe de guitares fades et de contretemps usés jusqu'à la corde.
C'est dommage.
Bien sur, armés d'une production moderne et claire, les Finlandais méritaient plus que la moyenne. 10 Forms Of Dominion est un album qui plaira sans le moindre doute aux accros du style qui guettent chaque sortie l'écume aux lèvres. Mais pour ceux, comme moi, exigeant un peu plus que du "classique-bien-joué-mais-sans-plus", seul un tiers du LP est à la hauteur des standards requis. Je pense donc m'être montré assez magnanime avec vous messieurs.
Ajouté : Vendredi 06 Février 2015 Chroniqueur : Mortne2001 Score : Lien en relation: Ruinside Website Hits: 5518
|