# 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
}
WITHIN THE RUINS (usa) - Elite (2013)

Label : E1 Entertainment
Sortie du Scud : 26 février 2013
Pays : Etats-Unis
Genre : Deathcore technique
Type : Album
Playtime : 11 Titres - 39 Mins
WITHIN THE RUINS, c’est un top pour dix flops. Ce rapport illustre assez bien je pense la teneur de chacun de leurs albums. On passera évidement sur un début de carrière en dents de scie, ponctué par deux EP (en 2006 et 2008) d’une qualité plus que médiocre. On reviendra volontiers par contre sur Creature, un premier album enfin pertinent et synonyme d’embellie, surtout quand on connaît le manque de consistance de Driven By Fear et d’Empires. Puis il y a l’Invade de 2010, un second opus trop m’as-tu-vu malgré son capital sympathie. Ce dernier m’est resté en travers de la gorge, je dois l’admettre. Je n’ai jamais compris comment on pouvait torcher un « Ataxia » magistral en moins de quatre minutes (en en se privant de son chanteur de surcroît) quand dans le même temps, on foire ses dix autres morceaux. Avoir un chanteur n’est pas une tare, sauf cas exceptionnel. WITHIN THE RUINS, c’est donc cette cote agaçante mais néanmoins imprévisible, qui reste aujourd’hui pour moi un joyau de technicité et de perfectionnisme. Quant à piger l’espoir qui motive et justifie Elite, leur troisième album, j’avoue ne pas encore être arrivé à ce stade.
Pour le coup, franchement, ça tourne en rond. J’utilise souvent cette expression pour manifester le fossé trop peu profond entre deux disques mais dans le cas de WITHIN THE RUINS, j’ai même tendance à trouver la formule faiblarde. Partant d’un postulat résolument Deathcore, ces garçons ont connu entre 2008 et 2010 une phase transitoire avec une sortie annuelle qui aura mis trop de pression sur Elite et les trois années qui le sépare d’avec Invade. On pouvait s’attendre à un tour de force, à quelque chose d’extrêmement mûri et affiné. Malheureusement, cet opus est bâclé dans ses grandes largeurs. Son véritable problème, c’est qu’il est une resucée facile et évitable du précédent. Les mecs ont désormais huit années d’expérience, une chiée de concerts dans les jambes, trois disques au compteur. Ce n’est plus de la bleusaille. Alors oui, ça reste techniquement invivable, tellement décousu qu’on hésite entre leur accorder un profond respect et leur conseiller d’accorder leurs violons. Mais l’effet de surprise s’est volatilisé. A l’image d’un THE CONTORTIONIST capable jadis d’écrire de vrais tubes (« Oscillator »), WITHIN THE RUINS s’embourbe dans son auto-caricature et ne se dépêtre jamais de la toile tissée par ces lignes mélodiques inextricables. Au bout d’un moment, c’est d’une véritable overdose dont il s’agit. « Terminal » achève à peine son rôle d’introduction qu’on comprend déjà qu’Elite sera un pet très mouillé. Complètement haché, extravagant, rythmiquement instable, ce troisième volet propose peu ou prou les mêmes recettes qu’un Invade qui faisait déjà preuve de suffisance à l’époque. Tim Goergen déploie ses plus beaux hurlements sans qu’il ne soit jamais suivi dans son effort par Joe Cocchi, ce dernier préférant taper un sweap dans son coin pendant que Kevin McGuill cogne bêtement ses peaux. La production est tellement gonflée qu’elle menace de crever, ce qui n’aide évidement pas le groupe à trouver le peu de cohérence dont il aurait tant besoin. Certains aimeront évidement cette œuvre parce que justement, elle est aléatoire, brossée, plastifiée, qu’elle va au bout de ses limites, dans ses derniers retranchements. Mais j’aimerais bien savoir pourquoi attendre trois ans avant de sortir ça ? Et surtout, quel est l’intérêt d’un « Ataxia II » si ce dernier fait honte au premier ? L’indifférence s’est dès lors muée en colère, parce que WITHIN THE RUINS avait prouvé son aptitude au génial avec le premier chapitre de ce diptyque.
Il y aura bien la fin de « The Charm » pour évoquer péniblement cette période Nintendocore qui, à défaut d’être brillante, illuminait au moins le visage d’un sourire narquois. C’est si peu de réconfort après 40 minutes d’un Deathcore polyrythmique, générique et échevelé. Et dans le même temps, c’est tant d’espoirs qui s’envolent. WITHIN THE RUINS, formation prometteuse dans un passé plus que récent, a troqué son arrogance et sa vulgarité contre un costume de déesse du sexe qui a pour ambition dans la vie de branler qu’une seule et unique queue (ou guitare). Egoïste et tristement frigide.
Ajouté : Mercredi 28 Août 2013 Chroniqueur : Stef. Score :   Lien en relation: Within The Ruins Website Hits: 8844
|