# 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
}
DAGARA (FRA) - La Route Du Chaos (2013)

Label : Auto-Production
Sortie du Scud : 19 octobre 2013
Pays : France
Genre : Hardcore / Thrash Metal
Type : Album
Playtime : 12 Titres - 44 Mins
Verra !
"On saluera les idées, les efforts, car leurs présences combinées réconfortent et égaient considérablement La Règle Du Je, mais on attendra quand même sagement ce premier full-lenght pour se prononcer. Qui vivra..." (extrait de la chronique de La Règle Du Je).
Verra !
Il est désormais temps pour DAGARA de connaître la vérité, tout le bien, tout le mal qu'on pense d'eux. C'est nécessaire, car on sait tous ici qu'un premier EP de 5 titres et 25 minutes, aussi louable soit-il, n'est qu'un maigre avant-goût. Qu'il est comme la fonction "aperçu" sur eMule quand tu télécharges Cum In My Ass, Not In My Mouth #3. A peine le temps d'avoir une demi-molle que c'est déjà fini. La version longue, c'est donc pour maintenant, en suivant La Route Du Chaos. L'occasion pour moi de relever trois détails.
1 – DAGARA semble toujours autant attaché à la complexité et à la richesse de la langue française.
2 – Cette pochette me fait étrangement penser à celle d'Idiocracy de VIOLENCE FROM WITHIN.
3 – Sauf qu'un manque de lumière flagrant éclipse tous ses détails.
Dans son déroulement, maintenant, il convient de constater d'abord que La Route Du Chaos est un album qui ne renie pas forcément La Règle Du Je mais qu'il s'en distingue à bien des égards. On est en présence d'une œuvre complète, brossée, grouillante, censée matérialiser les forces et les faiblesses de l'entité DAGARA. Comme j'avais déjà pu le remarquer dans le passé, certains paramètres font de ce groupe ce qu'il est aujourd'hui, et c'est avec pas mal de satisfaction qu'on les retrouve ici. Les percussions (plus probablement le djembé, lequel cognait déjà sur l'EP) qui font écho à la prestation proprette de Camille (successeur de Richard) et apportent une profondeur à ce Metal nimbé de Hardcore, Metalcore et rythmiques Thrash. Il y a aussi les textes en bon français. Certes, ça ne respire pas la joie de vivre, mais on est quand même loin de la prose chamallow d'un TESS. Et pour finir, il y a eux. Jim et Max. Deux chanteurs, deux coffres, deux timbres. Autant je trouvais leur entente approximative sur l'EP, autant le placement et la puissance sont deux éléments beaucoup plus travaillés ici. Deux éléments qui participent à la crédibilité de La Route Du Chaos, deux éléments qui départissent DAGARA de ce sentiment de relatif amateurisme régissant La Règle Du Je. Plus pro et surement plus mémorable, cet opus jouit également des faiblesses inhérentes au groupe n'ayant pas vingt ans de carrière derrière lui. Ainsi, j'ai tendance à trouver la formule proposée par le combo assez banale dans l'idée, même si sa mise en œuvre est foutrement dynamique, hargneuse et taillée pour la scène. Il y a l'esprit du Hardcore, la vitesse du Thrash, la modernité d'une production correcte, mais tout ça ne sépare pas vraiment les Parisiens de ce qui se fait ailleurs. DAGARA aura encore du mal à chasser cette image de jeunots, parce que leur Metal 2.0 croustillant à l'extérieur, est encore relativement cru à l'intérieur. Et il manque ce tube, ce hit en puissance qui rendrait l'album moins homogène, cette pièce centrale autour de laquelle graviteraient toutes les autres. Est-ce "Le Miroir" ? Est-ce "Le Meilleur Et Le Pire" ? Est-ce "Memento Mori" ? On ne le sait pas vraiment.
J'ai vécu, et j'ai vu. J'ai vu le chemin parcouru par DAGARA en plusieurs mois, et je l'approuve car il est de ceux qui font avancer le dialogue. Sans pour autant atteindre la transcendance par le biais d'une musique en laquelle je ne me retrouve de toute façon pas beaucoup, je peux décréter sans trop craindre pour ma vie que ces garçons ne sont assurément pas toute la sainte journée sur la route qu'ils dépeignent via ce premier effort. Heureux paradoxe.
Ajouté : Vendredi 01 Août 2014 Chroniqueur : Stef. Score :     Lien en relation: Dagara Website Hits: 8622
|