# 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
}
ASKING ALEXANDRIA (uk) - Reckless & Relentless (2011)

Label : Sumerian Records
Sortie du Scud : 5 avril 2011
Pays : Angleterre
Genre : Deathcore / Trance
Type : Album
Playtime : 12 Titres - 42 Mins
Je ne sais plus avec certitude combien de fois ai-je relu ma chronique du Stand Up And Scream, premier album d’ASKING ALEXANDRIA avant d’entamer celle-ci. Peut-être simplement ai-je voulu comprendre avec mes yeux et non mes oreilles ce qui clochait dans Reckless & Relentless ou plus bêtement, pourquoi ce dernier n’est pas au niveau de ce premier. Neuf mois exactement ont passé depuis ce papier et énormément d’artistes ont défilé dans les enceintes de ma chaine-hifi depuis, et dire qu’un autre à pris la place d’ASKING ALEXANDRIA dans mon cœur serait erroné. Avec ces anglais, c’est toujours un rapport très particulier, parce qu’ils matérialisent, parfois avec exagération, tout ce qui me fait défendre le Deathcore contre vents et marées. Ils ont la musicalité que BRING ME THE HORIZON n’a pas, ils ont le talent et la bouteille qui manque à tous ces jeunes groupes, ils ont un état d’esprit très juvénile et ils ne sont pas hostiles aux nouvelles tendances musicales (Trance, Electro…), ce qui les différencie des mastodontes séniles comme DESPISED ICON. Avec ce second album, ASKING ALEXANDRIA continue sa marche féroce, mais un peu bornée dans un univers qu’il ne connaît que trop bien.
Dès potron-minet, on est assailli par « Welcome », une instrumentale solennelle et un peu trop théâtrale. S’enchaînent alors dans un équilibre vacant les quelques tueries que sont « Closure » ou « To The Stage ». On reconnaît alors ces guitares gémissantes, typiquement Deathcore avec une lead hystérique et une rythmique au taquet. Une fois encore, ce type de procédé fait tilt car ils sont diablement entrainants. Et une fois encore, ASKING ALEXANDRIA fait ce qu’il sait faire de mieux : des enchaînements incalculables entre breakdowns monumentaux et chant de tête magnétique. A la différence près que cette fois, la formule dès plus convenue fait moins son petit effet, au point d’en venir à préférer haut-la-main les DEVIL WEARS PRADA dans le registre. L’album défile sans rencontrer trop d’obstacles, la production est lisse, les partitions sont bien écrites mais il y a quelque chose qui me dérange. La façon d’interpréter les compositions laisse paraître une certaine prétention que je trouve fâcheuse. Les British font dans la surenchère, ce qu’ils faisaient déjà sur Stand Up And Scream mais plus discrètement. Les parties atmosphériques qui faisaient l’excellence de certains titres comme « Not The American Average » ou encore « Final Episode (Let’s Change The Channel ») se font rarissimes, il y a très peu de pauses ou de moments de réflexion. L’ensemble est granuleux, opaque tout en restant sauvage et, il faut bien l’avouer, plutôt efficace. Le chant de Danny Worsnop n’est plus aussi incisif et pénétrant. D’ailleurs, le personnage est tout aussi décevant que sa prestation, puisque le jeune homme ne cache plus son addiction démesurée à l’alcool. Pour autant, les grandes lignes de Stand Up And Scream sont conservées et ASKING ALEXANDRIA ne fuit pas un style qui lui a offert le haut de l’affiche. C’est pourtant regrettable qu’il faille attendre la neuvième piste, à savoir « The Match » pour entendre une ébauche de sample Electro, ces mêmes samples qui ont construits leur réputation. Ce sont des faits comme celui-ci qui me font dire que les britanniques ont, quelque part, cherché à se ranger. Les prises de risques sont éparses mais quand elles sont présentes, on tombe irrémédiablement sur des hits comme « Another Battle Down » et ses orchestrations classiques ou « Someone, Somewhere », très aboutie également car des plus chargées en émotion. En ce qui concerne tous les morceaux que je n’ai pas cité (une bonne demi-douzaine), c’est parce qu’il n’y a rien de fondamental à en dire, donc rien à en retenir. Avec Stand Up And Scream, les trois-quarts des créations avaient trouvé leur place au chaud sur ma playlist personnelle, ce qui n’est pas le cas avec ce Reckless & Relentless.
Je ne voulais pas me l’avouer mais il ne faut pas se cacher la face, ce disque est très en-dessous de son prédécesseur. Il s’en tire avec une note honorable pour la simple et bonne raison que les ingrédients du succès d’ASKING ALEXANDRIA, même s’ils sont moins bien accommodés, sont toujours solidement ancrés dans leur Deathcore. Mais très honnêtement, si quelqu’un vient me voir pour débattre du problème majeur du Deathcore, à savoir une image prétentieuse et une musique aseptisée, je repenserais à cet album avant de lui donner entièrement tort.
Ajouté : Mercredi 10 Août 2011 Chroniqueur : Stef. Score :    Lien en relation: Asking Alexandria Website Hits: 10928
|