# 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
}
SADIST (it) - Hyaena (2015)
Label : Scarlet Records
Sortie du Scud : 16 octobre 2015
Pays : Italie
Genre : Progressive Death Metal
Type : Album
Playtime : 10 Titres - 46 Mins
L'exception confirme toujours la règle. Lorsqu'on pense qu'un style musical a tout donné quelques années seulement après son éclosion, on s'en détourne, on oublie, on occulte. On assiste blasé à un défilé de sorties qui ressemblent à des resucées, des pis aller, des copies carbone.
On se gausse bien sur, jusqu'au jour où on tombe sur quelqu'un qui vous contredit. Pas en gueulant plus fort que vous, non, juste en jouant une musique autre, mais définitivement ancré dans une transition d'évolution intelligente.
J'ai largué le Death il y a très longtemps, lorsque j'ai pigé qu'entre les rythmiques marteau piqueur et les hurlements de rigueur, rien ne changerait jamais. Les batteries triggées, les vocalistes gorets, je laisse ça aux autres. Si vous vous en repaissez avec délice, j'en suis ravi. Mais moi, la barbaque, je n'y touche plus depuis longtemps.
Cela étant dit, il reste toujours un ou deux irréductibles, qui n'utilisent le style que pour son côté agressif et puissant, et qui l'accommodent à leur façon. Qui vont plus loin que le carpaccio de tripes ou le filet saignant, et qui agrémentent de Progressif, de Jazz, d'Avant Garde.
Ainsi, si j'ai enterré la plupart des combos s'entêtant dans la mauvaise direction, j'ai assisté le sourire en coin à l'embaumement par des musiciens un peu plus doués que la moyenne. Et surtout, plus curieux.
Genova, Italia. Joli port italien, mais point de tourisme, juste une localisation, celle des pionniers SADIST. SADIST, c'est plus de vingt ans de carrière, entre la première démo Black Screams et aujourd'hui. Entre temps, des chefs d'oeuvre insurpassables, à l'instar du séminal Above The Light, des premières parties de CARCASS, de la volonté, mais aussi du renoncement lorsqu'en 2000 après la déception Lego, ils mettent le projet en sommeil.
On les pensait étendus pour le compte, attendant l'extrême onction, mais en 2005, leur coeur se remet à battre plus fort pour un come-back inespéré. Album éponyme, puis Season In Silence trois ans plus tard, et encore cinq ans de communication breakdown jusqu'à ce mois d'octobre, et Hyaena, sur Scarlet Records.
Si le dossier vous a échappé, ou que vous avez occulté l'affaire depuis son émergence, SADIST est au Death ce que David Fincher est au Thriller. Des esthètes, qui soignent chaque détail, vous entraînent sur de fausses voies, avant de vous ramener à la raison. Des orfèvres, des ciseleurs, qui chassent la précision sur le terrain de la violence instrumentale.
Et à propos de chasse, leur dernier LP en est une bonne.
Il fallait oser consacrer le concept d'un album à ce prédateur d'Afrique qui semble rire dès qu'il a trouvé suffisamment de nourriture pour rassasier sa faim. Si la musique des Italiens peut faire parfois penser au son émis par le carnivore en cas de festin, l'intérêt est quand même particulier. Mais l'analogie n'est pas si bête, puisque SADIST semble en effet se satisfaire d'une éternelle quête de satiété technique et brutale, et en ressort à chaque fois euphorique, tout comme nous.
Et une fois de plus, pas de mauvaise surprise, le résultat du carnage est net, propre, sans bavure, et précis comme un coup de mâchoire sur des chairs à vif.
Plus prosaïquement, nous retrouvons une fois de plus toutes les composantes du génie du groupe. Rythmiques élastiques et protéiformes, guitares volubiles dansant un ballet autour d'un tas de riffs acides et d'arpèges bouclés, et chant rauque, "sadique" osons le mot. Les Italiens étaient presque des précurseurs, et ont côtoyé de près les maîtres du genre - dont ils font à présent partie - DEATH en tête de ligne, mais aussi CYNIC et ATHEIST, voire même NOCTURNUS à un degré moindre.
Hyaena est donc un concentré de leur savoir faire, à mi chemin entre Focus, Individual Thought Pattern et The Key, mais aussi un résumé haut de gamme de leur propre carrière. Car oui, ce nouvel album se hisse au niveau des meilleures réalisations de SADIST, très près de Above The Light et à la hauteur de Season In Silence. Death sourd, Jazz précieux, Progressif nuancé et même Heavy fort en calorie, c'est un plat qui peut se manger froid, mais qui se déguste avec délice sous un soleil de plomb désertique.
Tout est passé en revue, de l'instrumental jazzy et ciselé "Gadawan Kura", à la basse en majuscules à la plume, au mid tempo à cheval entre Techno Heavy et Death primaire de "Scavenger And Thief", lardé de riffs efficaces, en passant par la charge Techno Death préparée comme un plan de bataille millimétré de "Pachycrotuca", qui s'aménage même des percussions tribales exotiques et hypnotiques.
"Bouki" et son drôle de synthé initial fait aussi partie des moments forts, avec son déroulé Jazz Fusion traité à la sauce Metal, "Eternal Enemies" avec son intro exotique qui revient comme un leitmotiv entre deux sections rauques aussi, mais "African Devourers" garde aussi les bons morceaux de côté en mitonnant un break fumeux, à base de basse Free Jazz et de batterie sur le fil du rasoir.
SADIST n'a en rien perdu son aisance de mouvement, et introduit toutes les nuances avec naturel, sans que l'on ait le sentiment qu'un élément n'a pas sa place, ou qu'elle soit forcée au pied de biche. Tout découle d'un art de composition qui refuse toute entrave, et qui assimile la technique pour la restituer de façon puissante, sans démonstration ni bavardage inutile. A vrai dire, et encore plus aujourd'hui qu'hier, les morceaux évoluent de la même façon que le prédateur tournoyant autour de sa proie, avançant à grand pas pour soudain stopper net, louvoyant, faisant mine de se désintéresser, avant de se fondre sans pitié sur le corps déjà mort. Le final "Genital Mask" est d'ailleurs un exemple parfait de cette technique de chasse, avec ses claviers éthérés mais menaçants, ses parties rythmiques lourdes mais agiles, et son chant grinçant comme un rictus macabre.
Oui, le Death Metal peut encore se montrer inventif, pourvu qu'il ne se replie pas sur lui même et n'abuse de ficelles usées jusqu'à la trame. Oui, SADIST est une exception à la règle. Oui Hyaena est une fois de plus une réussite majeure, qui pioche dans l'histoire pour faire avancer l'avenir. Et non, il semblerait que les Italiens ne soient pas à court d'idées. Au contraire, ils semblent plus inspirés et affamés que jamais. Plus affûtés, plus agressifs, plus délicats, plus fins.
Où y'a de la hyène y'a pas de plaisir ?
Rien n'est plus faux, et gageons que Hyaena va changer votre regard sur cet animal somme toute assez sympathique lorsqu'il est accompagné par les bons maîtres.
Ajouté : Samedi 04 Juin 2016 Chroniqueur : Mortne2001 Score : Lien en relation: Sadist Website Hits: 5002
|