# 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
}
KOZH DALL DIVISION (FRA) - Kozh Dall Division (2017)
Label : Autoproduction
Sortie du Scud : 3 février 2017
Pays : France
Genre : Modern Thrash Metal
Type : Album
Playtime : 14 titres – 64 minutes
Il est toujours étrange de chroniquer l'album d'un groupe qui n'en est pas un. Car ne nous méprenons pas, KOZH DALL DIVISION est plus un projet communautaire qu'autre chose, même si le résultat des expériences menées a découlé sur un album très concret que j'ai la chance de vous présenter aujourd'hui.
Car c'est en effet une chance de pouvoir parler d'un tel opus qui résulte d'une long processus de création et de passion, mené de main de maître par un trio d'inspiration qui n'a pas fait les choses à moitié, loin s'en faut.
Plus directement, KOZH DALL DIVISION n'est rien d'autre que le bébé de trois figures du Metal français. On retrouve à la genèse de cette aventure Vince, fameux chroniqueur de webzine et donc confrère, à l'écriture des textes et l'agencement des choeurs, Laurent Plainchamp (ARTSONIC, KRISTENDOM et NO RETURN) à la guitare et au chant, ainsi que Chris de GRAZED à la basse.
Si la structure de base n'a rien d'original, le coeur du concept l'est beaucoup plus. Loin de former un trio classique, les trois hommes ont conçu leur projet comme une sorte de who's who du Metal français, en, invitant une kyrielle de musiciens à y participer, ce qui nous donne un festival de featurings prestigieux résumant quelques décennies de Metal hexagonal de la façon la plus éclatante et brillante qui soit.
Bottin du Metal certes, mais agencé, et surtout, expurgé de toute entrée inutile, puisque sur les quatorze titres proposés, il n'y a absolument rien à jeter.
L'orientation globale de l'oeuvre est résolument violente, et oscille entre Heavy vraiment teigneux, Thrash fumeux et Death poisseux, le tout accommodé à la sauce moderne pour ne pas perdre pied avec la réalité.
Mais qui sont donc tous ces fabuleux vocalistes et instrumentistes ayant participé à la cette croisière de l'extrême ? Ils sont en nombre, mais aussi en qualité, et tout au long de l'écoute de ce premier LP éponyme, vous aurez la joie de retrouver les gosiers et instruments de Laurent Plainchamp évidemment, mais aussi de Crass de CRUSHER, les membres d'ADX, Tanguy de T.H.I.N.K et NO RETURN, Max de MERCYLESS, le trublion Arno Strobl des COC et autres annexes mal rangées, Fab et Ludo de SUP, et même Eric Forrest de VOIVOD, ce qui en dit long sur les ambitions du projet en question.
Mais si le concept est résolument novateur dans le fond et efficace dans la forme, il convient de mettre les choses au point dès le départ en mettant les bonnes croches sur la portée. Si les participations externes représentent évidemment le point de focalisation de ce premier effort, il ne faut surtout pas les réduire à un gimmick. Nous n'assistons pas ici à une simple réunion de potes autour d'un pack de bières ou d'un feu de cheminée, ou à une tentative de soudoiement par l'accumulation de cartes d'identités musicales fameuses. Car l'équipe créative ne s'est pas contenté de brosser quelques portraits approximatifs en forme de cadres photoshop musicaux dans lequel quelques faciès célèbres sont venus s'insérer, mais ont bien composé des morceaux très solides, qui s'inspirent de divers courants du Metal moderne. Ce qui assure donc à l'ensemble une réelle diversité, qui ne nuit aucunement à l'homogénéité globale agressive et enlevée.
Ainsi, il est tout à fait possible de passer d'un Heavy Metal torride et flamboyant à un Death féroce et dévorant, en enjambant des morceaux comme "13-11-2015" en compagnie des ADX, pour poser le pied sur un dévastateur "Devoted To Evil", hurlé d'une voix de démon par un Max Otero au sommet de sa forme John Tardy.
A vous ensuite de faire votre marché des décibels en choisissant le titres qui correspondent le mieux à votre univers Metal, mais je peux vous assurer en connaissance de cause que l'éventail est large, et les produits proposés de qualité.
S'il est assez logique de se sentir plus concerné en tant que fan d'extrême assumé, Kozh Dall Division n'est en pas pour autant dénué de nuances, certes parfois infimes, mais qui permettent de dénicher de petites pépites décalées comme ce "The Night", entonné d'une voix de noctambule vicieux par notre cher Arno Strobl barbu et fleuri, à la croisée des chemins sombres de FAITH NO MORE et de NOTRE DAME.
De son côté, Tanguy des T.H.I.N.K se lâche velu sur un bref et tendu "A Qui La Faute ?" qui cavale d'un DISCHARGE bien Crust teinté de Hardcore preste, dans la plus droite lignée de toutes ses participations passées de vocaliste versatile au verbe acide, qui endosse ici la peau d'un conteur Core agreste qui justement ne s'en laisse pas conter...
Max des MERCYLESS offre une caution d'ultraviolence savoureuse, et les deux morceaux qu'il honore de ses prestations caverneuses, "Devoted To Evil" et "Sanctification" sont justement des allégories qui doivent autant à Platon qu'à son groupe d'horizon, naviguant entre Brutal Death de tradition et Néo Death sans concessions. On pense évidemment à OBITUARY, mais aussi à AT THE GATES, en gros, à un survol du panorama Death des 90's, adapté aux exigences modernes.
Et alors que Fab et Ludo se font plaisir sur un très épique "Amanda", qui en dix minutes passe par une multitude de climats délétères, rappelant les SUP, OPETH, PARADISE LOST et autres CREMATORY, les ADX nous offrent un beau cadeau de Heavy épique qui arrache grave sans trahir leurs convictions éternelles. Et comme notre mémoire l'est à leur égard, nous applaudissons cette démonstration de Power Metal aussi puissant qu'abordable mélodiquement, avec ses guitares à la tierce et sa basse fière, qui nous font voyager dans le temps et ravivent notre passion d'antan.
Ce patchwork nous offre aussi de jolies surprises, comme le retour au micro après vingt-deux ans d'éloignement de Philtor, premier chanteur des NO RETURN, qui prouve que le temps n'a en rien altéré sa véhémence vocale. Deux occurrences pour ce comeback sans errance, "Squads of Despair" et son Thrash à relents Death plein de flair qui nous ramène justement à l'époque de Psychological Torment, mais aussi "From Dust and Ashes", dans la même lignée, quoique subtilement plus véhément.
Crass des CRUSHER s'offre un "Your Life" symptomatique de son crédo radical, et pousse quelques grognements bien vilains sur fond de Death US très malin, tandis que notre ami Canadien Eric Forrest profite de la clôture pour imposer son très VOIVODIEN "Tormented", qui bifurque de coups de sang rythmiques en passages atmosphériques inquiétants et ludiques.
Pour finir ou commencer d'ailleurs c'est un des mentors, Laurent Plainchamp qui nous propose deux virées en sa compagnie, le terrible et étouffant "Visions D'Horreur", disponible en vidéo et suintant de Thrash Death rapide et fumant, et cette question en suspens, "Pourquoi ?", qui y répond d'un Metal extrême inspiré et flagrant.
C'est un beau roman, c'est une belle histoire ? Je ne sais pas si KOZH DALL DIVISION est une romance d'aujourd'hui, mais c'est surtout une très jolie leçon de confiance et d'amitié, qui débouche sur un album extrêmement travaillé, au spectre musical aussi étendu que resserré. Un vrai plaisir de retrouver des musiciens impliqués et passionnés, dont la foi et la sincérité ne sauraient être remises en doute en cours de route. Puzzle séduisant, chemin en énigmes fascinant, ce premier album à l'artwork sublime en appelle évidemment un autre qui est déjà en gestation.
La rumeur qui aime définir le monde du Metal français comme un nid de vipères où les coups de crocs volent bas et où le venin coule sur les bras tatoués en est pour ses frais, et cette leçon d'amitié est là pour le prouver. Et au royaume des sourds, le vieil aveugle est roi.
Ajouté : Jeudi 05 Janvier 2017 Chroniqueur : Mortne2001 Score : Lien en relation: Kozh Dall Division Website Hits: 7367
|