# 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
}
GRACE DISGRACED (ru) - Enthrallment Traced (2013)

Label : More Hate Productions
Sortie du Scud : 1er mars 2012
Pays : Russie
Genre : Brutal Death Metal technique
Type : Album
Playtime : 7 Titres - 44 Mins
Quelque chose n'était pas tout à fait net. J'ai écouté et réécouté Enthrallment Traced sans même chercher à faire connaissance avec GRACE DISGRACED. Je me suis demandé ce qui faisait réellement le seul charme de ce groupe de Death Metal mi-technique, mi-brutal, mi-figue, mi-raisin. La réponse était si simple. Leur chanteur est une chanteuse ! Ok, on est d'accord, en faisant un peu plus attention, on pouvait le deviner. Comme on pouvait très bien deviner que le chanteur d'ARCH ENEMY n'avait pas ce deuxième organe, fier, masculin, à l'époque de Black Earth ou Stigmata. Combien de fois avez-vous déjà entendu la phrase "tu vas être sur le cul, c'est une chanteuse, elle s'appelle Angela !" ? Même combat. Ici, la différence s'appelle Polina Berezko, moscovite, née le 14 septembre 1988. Avec elle, rien de notable, un guitariste, un bassiste et un batteur, sorte de Rogga Johansson à chapka, Dom Juan des baguettes, impliqué 10 projets, batteur live pour deux groupes et passé dans pas moins de 21 autres groupes.
La distillation de ce concentré de testostérone (et d'un peu d'œstrogènes) a abouti en 2012 à un premier disque, dont l'odeur franchement nauséabonde ferait presque passer la culotte de Polina après un concert pour un sapin sent-bon. Niveau visuel, rien à redire, GRACE DISGRACED est déjà profondément enraciné dans le vrai. Couleurs chaudes, saignantes, du logo aux visages pétrifiés, on devine vite la nature du groupe, en lui accordant de ce fait un très grand crédit. "Prophecy Of The Somnambulist" se lance. C'est violent, assez brouillon avec très tôt, une chute rythmique mal fagotée. Un choix précoce qui dénote d'emblée la trop grande impatience de ce combo russe qui semble vouloir exposer sa palette technique sans aucune forme de préméditation. Erreur de jeunesse ? A ce moment précis, on peut encore y penser. Mais à l'arrivée d'"Hypocritical Oath", de son sample piteux digne de la scène la plus tendue d'un épisode de la saga Saw, de son premier riff en papier kraft, on commence à comprendre que GRACE DISGRACED est soit un groupe qui a voulu brûler les étapes, soit un groupe qui a bâclé les finitions, soit un groupe limité. Personnellement, plus cet opus déroule, plus je vais avoir tendance à éliminer les premières propositions pour ne garder que la dernière. Non seulement les compositions sont longues (6 minutes en moyenne) mais en plus, et c'est là le plus grave, elles sont totalement inoffensives. Paradoxalement, si on pouvait penser, dans un élan de machisme éhonté, que Polina est à l'origine de ce manque de mordant, de cette brutalité très machinale, on réalise que ce sont surtout ses musiciens qui n'assurent pas. Les morceaux sont squelettiques, décharnés, bricolés avec les moyens du bord. Du ruban adhésif, de la colle non-homologuée, juste bonne à couper la drogue chez un dealer de supermarché, des clous rouillés. Rien ne semble stable, solide, encore moins cimenté. Assumant totalement la pression exercée sur eux par un groupe comme SUFFOCATION, les Russes ne rendent pas vraiment hommage à Frank Mullen et aux siens. Tout au plus, GRACE DISGRACED est une vague contrefaçon de DEVOURMENT touchée par le bruitisme technico-stérile de BRAIN DRILL. Aucune composition ne se démarque, ni par un riff, ni par une cadence, ni par un break ("Villain" ? Faites moi rire). Tout est bêtement prévisible, très amateur dans l'esprit. Certes, l'image de la petite troupe de Brutal Death UG roots jusqu'à la moelle est omniprésente, mais elle ne suffit pas à combler les nombreuses carences qui émaillent Enthrallment Traced. Dans ce fourbi inconfortable à l'arrière goût de mayonnaise qui a pris le soleil, seule Polina s'en sort finalement avec un minimum d'honneur. Ses vocaux, censés faire toute la différence, remplissent leur rôle, mais pas dans le sens qu'on espérait. Au lieu de donner le coup de grâce, ils sauvent l'album d'une noyade totale, d'une mort absurde. Je suis sûr que la belle se serait très bien entendue avec les PUTREFIED BEAUTY, contrairement à ses collègues qui auraient vraisemblablement pris une leçon de Death vaginal.
Quelque chose n'était pas tout à fait net, en effet. Et après avoir pris en compte chaque paramètre, chaque facteur, la seule chose qui n'est pas net chez GRACE DISGRACED, c'est leur Death Metal. Non seulement, Enthrallment Traced n'a jamais su trouver son chemin entre Death technique et Death brutal mais en plus, les nombreux moments qui assument cette impersonnalité sont d'une fadeur assez extrême, au point d'en réduire cet album à une œuvre très anecdotique, qu'il fait bon écouter chez soi, volets fermés, en décuvant tranquillement devant Confessions Intimes.
Ajouté : Samedi 08 Mars 2014 Chroniqueur : Stef. Score :   Lien en relation: Grace Disgraced Website Hits: 7770
|