# 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
}
BESTIAL SOUL (FRA) - Perpetual Darkness (2015)

Label : Auto-Production
Sortie du Scud : 6 septembre 2015
Pays : Etats-Unis
Genre : Thrash Metal
Type : Album
Playtime : 10 Titres - 41 Mins
Delpech chantait le Loir et Cher, mais il oubliait en passant de parler de l'Eure et Loir. Certes, sa famille n'habite peut être pas la bas, mais ici non plus, les gens ne font pas de manières. Et lorsqu'on tend l'oreille sur la production musicale du cru, il m'étonnerait que les musiciens n'aient pas le temps de finir leur bière.
Sus aux clichés, pourquoi cette précision mi géographique, mi variétés françaises ?
Parce que BESTIAL SOUL vient justement de ce département, et que le quatuor sort justement son premier album longue durée en autoproduction.
Après deux démos, dont la très remarquée deuxième obtint nombre de bonnes critiques, Steven (guitare/chant), Jow (guitare solo), Gwen (basse) et Eddy (batterie) lancent un gros pavé dans la mare avec cet excellent début, Perpetual Darkness.
Le groupe s'est formé en 2013, et n'a cessé depuis d'arpenter les scènes et de produire de la musique, répétant sans relâche, sortant une première démo (First Bleeding), jouant au Gibus à Paris, évacuant une deuxième démo quatre titres (Chaos Of Insanity), et en ce mois de septembre franchissent enfin le grand pas, pour notre plus grande joie.
Si dans le Loire et Cher les gens ne font pas de manières, les BESTIAL SOUL non plus. Mais loin de la sauvagerie rudimentaire que pourrait suggérer leur patronyme, les quatre potes jouent un Thrash old-school certes violent, mais loin d'être bête et bas du front. Outre le fait qu'ils sont techniquement très capables, il se révèlent avec ce premier LP des compositeurs non dénués de finesse, et ont soigné leur dix morceaux aux petits oignons, histoire de pousser la nostalgie dans ses derniers retranchements.
Impossible en effet à l'écoute de Perpetual Darkness de ne pas se croire de retour au golden age du Thrash Français et Européen de la fin des années 80, tant celui ci possède une emprunte forte et symptomatique de nombreux groupes qui évoluaient dans ces années là.
Le premier nom qui m'est venu à l'esprit, sans vraiment savoir pourquoi, est celui de NO RETURN. Non que la musique en soit inspirée, mais cette façon de bien détacher le chant, ce son clair et précis qui laisse de l'espace à chaque instrument à quelque chose du Psychological Torment initial des Parisiens. Mais alors que ces derniers agrémentaient leur Thrash féroce de quelques intonations Death, BESTIAL SOUL reste fidèle à l'éthique Thrash pure, option débridée et véloce, et fonce droit devant sans se poser de question, tout en aménageant quelques espaces dans ses bourrasques violentes.
Speed, violent, agressif, épais, le Thrash de Perpetual Darkness l'est, presque de bout en bout. Mais il est aussi carré, inspiré, et joué par des passionnés, et à ce sujet, je souligne l'énorme travail en lead de Jow, qui tricote des soli parfaits, apportant de fait une grosse plus value à l'ensemble. Loin d'être de simples figures imposées, ses interventions sont toujours mélodiques, véloces, tombent pile quand il faut, et relancent le morceau qu'ils décorent avec un brio indéniable.
Mais le chant teigneux et râpé de Steven n'est pas en reste, et le bonhomme a bien retenu les leçons de ses aînés en termes de harangues vindicatives. Sans tomber dans la gravité, il arrache de ses intonations parfois stridentes un peu à la Paul Baloff, et reste la plupart du temps dans un registre médium bienvenu qui à le mérite de ne jamais lasser.
Musicalement, l'affaire est simple. La musique se situe dans une très bonne moyenne de Thrash classique 88/89, et évoque dans ses moments les plus furieux DARK ANGEL (notamment à cause de cette double grosse caisse analogique qui rappelle les pieds en feu de Gene Hoglan), mais aussi un VIKING beaucoup moins médiocre que l'original (comprenez mois épileptique et plus carré rythmiquement).
Si le tempo global reste collé aux alentours de 220/240 BPM, le quatuor sait aussi ralentir la machine de temps en temps, et reste aussi à l'aise dans les parties mid que dans les instants Heavy. Mais c'est dans la précipitation qu'il reste le plus efficace, et sous cet aspect là, les dix morceaux de ce premier LP sont des modèles du genre. Riffs tranchants, qui passent en revue toute l'étendue autorisée par le style, et comble du luxe, nous avons même droit à une vraie basse en bonne et due forme, qui mouline quelques arabesques savoureuses. Le son est à la hauteur de l'évènement, clair, puissant, avec sans doute une légère emphase sur la batterie, mais qui permet d'apprécier les compos en l'état, sans faire d'effort particulier d'attention.
Plus en détail, il est assez difficile d'extraire un morceau en particulier, tant tous méritent les honneurs. Peut être une légère mise en avant pour le morceau éponyme, vraiment très efficace, et qui mélange intermèdes en arpèges et brusques peignées décoiffantes sans transition. Outre le morceau d'ouverture punchy qui met les choses au point d'entrée ("Brain Damage" que VENDETTA à chanté un jour), désignons d'office le schizophrénique "Disciple Of Death", qui navigue sur un mid tempo appuyé avant de tout balayer d'une course haletante, et qui contient sans doute le refrain le plus fédérateur.
Impossible de ne pas aborder le cas du rouleau compresseur "Trench For Forgotten" qui annihile tout sur son passage à grand coups de double pédale assassine, ni celui du très évolutif "Pain and Despair" et sa construction à tiroir reposant sur une belle montée en puissance citant les plus grandes heures du Thrash allemand de la fin des 80's.
Comme vous le voyez, l'examen est passé haut la main par ce quatuor sympathique, et je n'ose imaginer la boucherie scénique que les concerts de BESTIAL SOUL doivent étaler sous nos yeux et oreilles. Un conseil, ne les manquez pas on stage, la folie doit être totale et maîtrisée, à l'image de ce premier LP haut en couleurs et en décibels.
Alors peu importe le Loire et Cher, et peu importe que vous deviez encore trouver un poste d'essence. Restez donc là bas, ne soyez pas gêné de marcher dans la boue, car au bout du chemin se cache un excellent groupe de Thrash bien de chez nous, qui vous aidera sans problème à finir votre bière !
Ajouté : Vendredi 18 Mars 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Bestial Soul Website Hits: 6622
|