# 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
}
SARKE (no) - Aruagint (2013)
Label : Indie Recordings
Sortie du Scud : 23 septembre 2013
Pays : France
Genre : Death Metal
Type : Album
Playtime : 9 Titres - 39 Mins
Troisième album longue durée pour SARKE, qui au départ n'était qu'un one piece band créé par Thomas Bergli, alias Sarke (KHOLD, TULUS, OLD MAN'S CHILD), rejoint pour les besoins de ce LP par la crème de la scène Norvégienne, Nocturno Culto (DARKTHRONE) Steinar Gundersen (SATYRICON, SPIRAL ARCHITECT), Anders Hunstad (EL CACO, AUTOPULVER) et Asgeir Mickelson (SPIRAL ARCHITECT, BORKNAGAR).
Avouez que sur un CV, ça en jette...
Est ce pour autant qu'Aruagint sera la révolution promise par ce changement d'équipe ? Non bien sur, tant Thomas continue sa route sans se poser de questions, et surtout, sans remettre en cause sa philosophie musicale, bien ancrée dans le passé, et surtout les années 80.
Pour les néophytes, sachez que SARKE, le groupe, se veut nostalgique et authentique. Avec des influences fleurant bon notre jeunesse extrême, le désormais quintette ne joue pas l'innovation, mais offre une bonne relecture des classiques de l'époque, enrobée d'une couverture tannée dans les années 70. Et si la bio officielle du label jette une foultitude de noms célèbres en pâture, n'y voyez qu'un argument publicitaire. Pêle-mêle on tombe sur l'évocation de SLAYER, KREATOR, BLACK SABBATH, CANDLEMASS, DARKTHRONE, MOTORHEAD ou encore CELTIC FROST, et je dois préciser que pour certains, l'affiliation est loin d'être évidente.
Car si pérennité il y a, il faut surtout aller fouiller dans l'héritage de HELLHAMMER / CELTIC FROST pour la trouver. Point de Thrash ici, la mention de DEATH est même complètement hors contexte (à moins de se référer aux premières démos de MANTAS), mais le nom de DARKTHRONE ne semble pas hors sujet, même si la présence dans le line up de Nocturno Culto doit y être pour beaucoup.
On retrouve en effet par petites touches ce Death n'Roll si cher à Nocturno et Fenriz, mais traité d'une façon beaucoup moins cliché et beaucoup plus efficace.
Il est par contre certain que l'oeuvre de Tom Fischer a beaucoup marqué notre cher Sarke, car l'ensemble des titres sonne comme un long hommage à des saillies séminales telles que Apocalyptic Raids, To Mega Therion et autres Morbid Tales, le son adapté en plus. Mais bien loin du plagiat (nous n'avons pas droit ici aux fameux "Hugh!" que WARHAMMER pillait sans vergogne), SARKE s'est surtout appliqué à mêler les influences frostiennes dans un creuset typiquement Core, y a ajouté la puissance et les ambiances nauséabondes du Black le plus raw, pour en extirper une matrice redoutable, cohérente, qui fait plonger l'auditeur dans les bas fonds de l'âme humaine. Mais même si le FROST originel reste l'emprunte la plus flagrante (Jusqu'à la voix même de Nocturno qui accentue encore plus les intonations de Warrior en laissant traîner les syllabes), le SAB' a aussi droit de cité, et SARKE multiplie les rythmiques étouffantes, tout en nous offrant quelques accélérations caractéristiques du DARKTHRONE transitoire.
Le mélange des genres aboutit à une sorte de malaise ambiant, relativement bien illustré par les morceaux phares de ce LP, le long et douloureux "Icon Usurper" et l'étrange et éthéré "Skeleton Sand", qui reprennent les segments les plus maladifs du FROST, en les agrémentant de riffs tendus dans la plus grande tradition du MAYHEM d'Euronymous.
Les titres les plus rapides tels "Ugly" ont du mal à se décalquer des éternels "Third Of The Storms" ou "Massacra", mais leur adaptation sauce 2013 reste quand même valide et pertinente.
Et si parfois le mimétisme est plus que troublant ("Jodau Aura" qu'on croirait échappé des séances de Monotheist), le reste des morceaux donne suffisamment matière à enthousiasme pour passer l'éponge.
Ainsi, la polyrythmie de "Walls Of Ru" et ses nappes de choeurs/synthé sur fond de hurlements inhumains nous ramène aux début d'un Black à peine né à l'orée des années 90 (cassures comprises), tandis que "Strange Pungent Odyssey" s'offre un riff groovy redondant du meilleur effet.
Somme toute, Aruagint porte l'art de SARKE à sa quintessence, et transcende ses influences avouées pour presque parvenir à en retenir une identité propre. C'est en tout cas un album bien ficelé, qui satisfera les plus nostalgiques d'entre vous, qui savent se ressourcer sans pour autant passer à côté de leur époque.
Ajouté : Vendredi 07 Mars 2014 Chroniqueur : Mortne2001 Score : Lien en relation: Sarke Website Hits: 6142
|