# 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
}
DETOXED (FRA) - It Was Written In Blood (2011)

Label : Auto-Production
Sortie du Scud : 25 Octobre 2011
Pays : France
Genre : Death / Thrash Metal Mélodique
Type : EP
Playtime : 4 Titres - 20 Mins
Créé à l’été 2009 pour assouvir une soif de Metal accrocheur et décapant, DETOXED peut se targuer de réunir un line-up de professionnels avérés avec, notamment, le fondateur Loïc Tézénas, à qui l’on doit les suprêmes lignes de guitares de KALISIA, ou bien Styx, premier chanteur de HORD. En peu de temps, le groupe s’attèle à la création d’un premier EP, It Was Written In Blood, qui bénéficie du doigté clinique de Brett-Caldas Lima, pour ce qui est du mixage et mastering.
En quelques secondes seulement, cet EP déballe son imagerie apocalyptique au travers d’un son explosif. Les textes rageurs trouvent leur juste porte-parole en Laurent Py. A l’instar de « The Great Vacuity Of Modern Life », Styx alterne avec précision entre ses différentes composantes vocales, passant des emportements Thrash hurlés et dévastateurs, au growl abyssal frémissant, ou alors usant d’une voix claire mélodieuse qui joue des nuances pour se marier sans problèmes aux compositions, sans les entacher de niaiserie. Du côté plus vindicatif, les envolées sont hargneuses, succédées d’overdubs growlés, conférant une énergie marquée aux morceaux et refrains, lesquels, portés de bons riffs mélodiques, se font mémorables. L’on note également quelques tonalités à la SOILWORK sur « It Was Written In Blood », qui propose, sur le finale, un mariage de sonorités efficientes avec le chant clair et les arpèges. Une voix mélodique qui, par moment, fait penser à celle de Matt Heafy, et n’a pas honte de s’imposer majoritaire sur certaines pistes, variant entre calme et éreinté. Par ailleurs, l’avant dernière piste voit la présence de Sébastien Daspet (VEILS OF PERCEPTION) qui, de son timbre granuleux, participe à la diversité vocale du disque. Sur ce même titre, les refrains obtiennent un support assuré des riffs dynamiques, offrant une accroche certaine de par la complémentarité des cordes et voix poussives.
Pour ce qui est des guitares, pas de grosses surprises, la qualité est criante d’efficacité. Les riffs sont classiques, modernes, mais infaillibles, et savent gronder pour renforcer le propos, ou bien délivrer de puissantes invectives entraînantes allumant l’étincelle pour que les titres s’ébranlent entre brutalité et mélodie bien sentie. David et Loïc cisaillent les compositions avec vigueur et l’on reconnaît l’inspiration de Göteborg sur la seconde piste, où l’alliance des riffs directs et de la batterie décapante domptent le morceau. Quelques licks de la leads tapissent le fond, avec les bruitages électroniques. Dans l’ensemble, les démonstrations virtuoses ne foisonnent pas ; elles sont essentiellement utilisées pour servir les pistes, comme l’exécution de « Fighting The Dark Days », qui captive pour mieux asseoir la puissance rythmique qui s’ensuit, ou bien celle de clôture du premier titre, même si elle peut sembler un peu trop mécanique à son démarrage. Qui plus est, l’album se clôt par une partition acoustique, vite recouverte d’un brouillard informatique. Outre l’instrumentation classique, le duo de guitariste a agrémenté les titres d’éléments tels que des bruitages industriels, saturés, rajoutant une dimension déstructurée aux passages concernés, et des samples de compression hydraulique, scintillements électroniques, plages atmosphériques, et autres apports subtils. Ces additions sont utilisées avec parcimonie, se faufilant au sein des morceaux, et donnent même une touche BLACK COMEDY à l’entame du titre éponyme.
Côté section rythmique, les riffs bourdonnent tandis que la batterie établit une cadence infernale, sans relâche, plaquant d’intenses rafales. Camille Lecup décape, assène des impacts monstrueux, et scotche l’auditeur à ses baguettes grâce à des plans entreprenants et énergiques, ne laissant que peu de répit pour l’ennui. Tout en restant organique, il défouraille vigoureusement les compositions, jouissant d’un son ultra carré. Dès le morceau d’ouverture, le groupe apparaît survitaminé, alternant un tempo aguicheur et véhément avec des breaks massifs, écrasants. Allié au vocaliste, Camille délivre d’imprévisibles explosions de rage, où la double pédale dévergondée répond aux vocaux sauvages, affamés de brutalité (« Mark Of Impurity »). Quant à la basse, Benoit Salaville la stabilise dans le sentier des guitares, pour décupler leur force d’impact, mais sait également offrir de réelles sections tronçonneuses sur les relances rythmiques, tout en parcourant les portions plus modérées.
Acculé par la force dévastatrice des Montpelliérains, l’on ne peut s’empêcher de penser à la machine de guerre T.A.N.K, qui avait également percuté le public français de plein fouet l’an dernier. Chez DETOXED, ils vont droit au but, enchaînant refrains et couplets sur une cadence endiablée, et une efficacité savamment dosée. La production chirurgicale profite pleinement aux riffs modernes, dont l’apport mélodique ne manque pas de garder l’oreille intéressée. Sur It Was Written In Blood, le groupe propose quatre morceaux aussi diversifiés qu’identiques. Bâtis sur des structures Death Mélodiques infaillibles, les titres laissent se profiler des jeux dynamiques et minutieux, captant quelques tics du Metalcore, pour aboutir en des refrains efficients. Avec ses touches modernes et sa volonté énergique, DETOXED réalise un premier pas saisissant et prometteur, en vue de leur premier album.
Ajouté : Mercredi 01 Février 2012 Chroniqueur : CyberIF. Score :     Lien en relation: Detoxed Website Hits: 14426
|