# 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
}
KARNYSERA (FRA) - A l’Aube d’Une Fin (2012)
Label : Auto-Production
Sortie du Scud : 2 avril 2012
Pays : France
Genre : Dark / Indus / Electro Metal
Type : Album
Playtime : 13 Titres - 63 Mins
Beaucoup d’entre vous connaissent nommément l’Apocalypse comme étant un feu d’artifice géant qui précipiterait le monde tel que nous le connaissons à sa perte, sous un déluge de vagues et de flammes. La réalité biblique démontre pourtant que ce ne sont que des visions et que ce type de textes sacrés est à prendre avec toute la hauteur qu’il nécessite. Si je vous raconte tout ça, c’est parce que KARNYSERA a fait de l’Apocalypse, ou plutôt des « sujets pré-apocalyptiques » le thème central de son deuxième album, A l’Aube d’Une Fin. Et comme souvent avec les disques dits « conceptuels », il faut s’en méfier tel la peste, soit parce que le groupe en question véhicule des idées reçues, soit parce que son délire est trop poussé et intimiste pour un auditeur lambda. Sur ce point précis, les Nordistes réaliseront un sans-faute, équilibrant parfaitement leur œuvre entre l’accessibilité et la cohérence. Musicalement, on trouvera surement à redire, car vous constaterez plus bas qu’au-delà d’une complexité structurelle honorable, A l’Aube d’Une Fin est surtout un disque construit, ficelé et qui assume ses choix.
Parmi ces choix, on trouve premièrement un découpage entre trois chapitres. Le malaise, résistance, la chute. Ça ressemble à s’y méprendre à une prophétie sur le destin de notre cher pays. Sauf qu’on est déjà en train de vivre le premier chapitre. KARNYSERA est donc plutôt du genre pessimiste, et ça se ressent pleinement en musique. Après une introduction très artificielle et aux sonorités mécaniques, on entre de plein pied dans l’aube de cette fin. Guitares menaçantes aux plaintes lancinantes, arrivée d’un motif mélodique enrobé dans la cohue de claviers atmosphériques, tout se décante assez vite à l’arrivée du chant trafiqué de Mickael, dont les paroles en bon français nous immergent immédiatement dans cet univers glauque et décadent. Aux premiers abords, la production fait grincer des dents. Horriblement machinale et inhumaine, elle fait claquer les patterns de batterie comme des coups de fouets cinglants. Au fur et à mesure que l’opus se déroule, on réalise que tout est savamment calculé pour un offrir un rendu le plus synthétique et robotique possible. KARNYSERA a fait un travail démentiel sur les arrangements et les programmations. A tel point que l’aspect purement Metal des guitares tranchantes de Julien passe au second plan, derrière les remontées électroniques acides qui jonchent cette marche en avant. Futuriste par endroits, industriel par d’autres, A l’Aube d’Une Fin n’en demeure pas moins solide dans les structures, totalement illuminé et impactant. On ne devine jamais à l’avance ce qui va se passer, on passe d’un coup d’un seul d’une composition aléatoire, groovy-extraterrestre comme « L’Insoumis » (dont les paroles manquent dans le booklet sans qu’on sache pourquoi) à un Metal lourd, très teuton avec des pointes de Thrash (« Martyrs »). Entre temps, « En Grève », avec ses faux-airs de Dubstep, aura utilisé un bout de la Marseillaise pour accabler encore un peu plus l’Etat français. KARNYSERA s’affiche donc comme un groupe qui s’intéresse également à la politique et en parle dans ses chansons. A ses risques et périls. L’angoisse est vraiment palpable au cœur du deuxième chapitre. Un parfum de poubelles brulées et de panique sociale s’en dégage, un peu à l’instar des ruines dépeintes au début du film Frontière(s). Et c’est finalement dans son ultime partie que bascule définitivement A l’Aube d’Une Fin vers une entité incontrôlable, une bête mécanique affamée au sang glacé. Eric Lécluse, qui signe le solo de guitare sur « In(e)solarium » apporte sa pierre à l’édifice d’une instrumentale sombre et épique. Au rayon des points noirs, cet album souffrira surement de sa longueur. Plus d’une heure, en enlevant en prime la piste bonus, c’est d’autant plus long que le caractère résolument artificiel, programmé et machinal de ce Dark Metal industriel ne lui offre pas de grandes possibilités de renouvellement. La voix, vocodée de long en large, pourra également s’avérer usante. Heureusement que les paroles en français maintiennent la concentration et portent l’attention sur d’autres détails.
Abouti, cette œuvre l’est, assurément ! L’ectoplasme KARNYSERA se traine comme une âme en peine, froide et transparente au cœur d’une scène Nordiste bouillonnante. Ça fait du bien parfois de se prendre une bonne douche écossaise sur le crâne. A l’Aube d’Une Fin fait partie de ces sorties qui remettent les idées en place, du haut d’une mélancolie et d’une colère aux limites du palpable. Relativement difficile d’accès, cet album plein de revendications a de bonnes raisons d’atterrir rapidement sur un des bureaux de l’Elysée. Si possible avec un morceau de doigt.
Ajouté : Mardi 04 Septembre 2012 Chroniqueur : Stef. Score : Lien en relation: Karnysera Website Hits: 7320
|