# 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
}
IN THIS MOMENT (usa) - Blood (2012)
Label : Century Media Records
Sortie du Scud : 14 août 2012
Pays : Etats-Unis
Genre : Metalcore mélodique
Type : Album
Playtime : 14 Titres - 48 Mins
Jusqu'ici, IN THIS MOMENT a eu un parcours irréprochable depuis ses débuts en 2007 avec le très agréable Beautiful Tragedy en passant par le délectable The Dream et le surprenant A Star-Crossed Wasteland. Nous faisant changer d'univers sans jamais être à court d'idées pour nous étonner, le groupe a su trouver rapidement ses fans. On accroche à la divine voix de Maria Brink qui chante aussi bien qu'elle hurle, aux compositions musclées et efficaces qui marchent à tous les coups et à toutes les atmosphères qu'ils nous ont offertes.
Mais que s'est-il donc passé pour Blood ? Il m'a fallu trois écoutes approfondies pour apprivoiser l'album et en comprendre ses subtilités, chose que je n'avais encore jamais fait avec les anciens opus du groupe. C'est un album convenable mais je n'irai pas jusqu'à dire que c'est le meilleur album de leur discographie. The Dream reste une vraie perle qui sera dure à surpasser. Un univers plus hard, plus froid, loin de la magie d'Alice sur le parfait The Dream. De quoi faire une nouvelle fois parler d'eux et provoquer l'étonnement.
Nous allons commencer par les réussites de ce nouvel opus, que sont des morceaux comme "Blood", avec une voix beaucoup plus proche du 1er album d'IN THIS MOMENT dans un style Metalcore. Le refrain est quasi-hurlé, le solo manque de tonus mais reste convenable. Cependant, un truc bloque avec ce titre qui ne ressemble pas vraiment au groupe, sans que je sache dire quoi. Ce morceau reste toutefois une belle prestation du groupe. "Adrenalize", quant à elle, nous offre une belle ambiance musclée bien servie par la voix de Maria qui sait se faire juste et douce puis qui explose au bon moment. C'est l'une des compositions à retenir de cet opus ! Puis il y a des titres comme "Burn" avec l'entrée au piano suivie d'un réveil à la guitare doublé d'une voix travaillée et feutrée. Ce titre est en droite lignée avec des morceaux comme "Her Kiss" présent sur The Dream sorti en 2008 ou bien encore "A Star-Crossed Wasteland" sur l'album éponyme datant de 2010. "Burn" est donc une autre réussite ! Quant à "Scarlet", les guitares acoustiques apportent avec brio une ambiance aérienne qui n'a rien à voir avec le reste de l'album. Le morceau se rapproche d'un côté Pop qui, je trouve, n'a pas sa place dans la discographie du groupe. Ce titre reste sympathique à écouter mais il manque de puissance, même si l'émotion est son maître-mot. Et enfin, je retiendrais deux autres plages qui sont "Comanche" et "The Blood Legion". La première est très singuliere, ressemblant à ce que peut faire le très bon groupe de Glam Metalcore, BLACK VEIL BRIDES. Les chœurs masculin en rajoutent à cette ambiance proche de la folie, tandis que "The Blood Legion" se fait très aérien, se rapprochant du morceau "Scarlet".
Ces 6 titres très honnêtes sont donc à écouter avec beaucoup d'attention. Mais le reste, me direz-vous ? Eh bien c'est frustrant, tout simplement. IN THIS MOMENT est capable de bien mieux. "Whore", "You're Gonna Listen", "From The Ashes" ou bien encore "Beast Within" ne sont pas à la hauteur. Et je ne parle même pas des morceaux inutiles comme "It Is Written", "Aries" et "11:11".
De plus, l'album se trouve être beaucoup trop axé sur la voix de Maria Brink et laisse de côté le talent des musiciens qui l'accompagnent. Blood est donc décevant par rapport aux autres albums du groupe. IN THIS MOMENT prouve une fois de plus qu'ils se cherchent dans un univers différent de l'ancien album. On retrouve cependant parfois le lyrisme d'un The Dream ou bien un Metalcore proche d'A Star-Crossed Wasteland, mais qui reste néanmoins très éloigné du premier bon album Beautiful Tragedy. Un gros coup de gueule aussi pour la tournure que prend les shows d'IN THIS MOMENT, qui se “ladygagatisent”. Oui, désormais, le groupe se laisse décrire comme pratiquant du "Metal Gaga" aux yeux des médias populaires. Des tenues extravagantes, Maria en a toujours portée sur scène, mais là c'est trop. Il faut se recentrer sur le principal : la musique. Ce que semble avoir laissé de côté IN THIS MOMENT, pour le moment...
Ajouté : Mardi 20 Mai 2014 Chroniqueur : Mystic Laurëa Score : Lien en relation: In This Moment Website Hits: 10330
|