# 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
}
SEE YOU LEATHER (it) - Back To Aleph (2015)
Label : Auto-Production
Sortie du Scud : 17 septembre 2015
Pays : Italie
Genre : Thrash Death Progressif
Type : EP
Playtime : 4 Titres - 25 Mins
Catania, Sicile, "quatre adolescents qui ont formé en 2012 SEE YOU LEATHER."
Influences hétérogènes, de METALLICA à DEATH en passant par MASTODON et DISSECTION, en gros, un large panel de références pour une musique qui parvient bien à les synthétiser.
Back To Aleph est donc le premier EP de ce très jeune groupe italien, et le son global qui s'en dégage exhale un délicieux parfum vintage qui nous ramène aux grandes heures du Death progressif des années 90, fortement teinté de Thrash.
Luca Longo (chant, guitare), Salvatore Leonardi (chant, guitare), Liliana Teobaldi (basse), et Francesco Ciccio Paladino (batterie) savent manifestement ce qu'ils veulent, et font montre d'un gros potentiel technique au service d'une musique tout sauf passéiste, mais qui trouve son essence dans une époque aujourd'hui presque révolue.
Quatre morceaux, l'essentiel d'un répertoire, pour un Death fortement saupoudré de Thrash dans les attaques de guitares, qui ne néglige pas pour autant quelques pistes Doom assez sobres.
Production claire et distincte, signée par Giacomo Iannaci (NONE OF US, Alternatif/Post Hardcore de Catania, même ville que ses petits protégés) aux Morning View Studios, pour des titres pensés, réfléchis et élaborés dans les moindres détails, qui usent d'une technique individuelle indéniable sans pour autant la mettre trop en avant.
La présence d'une basse très ronde et coulée est d'ailleurs très agréable, et la frappe très matte du batteur la met très bien en valeur, sans pour autant s'oublier dans l'exercice rythmique.
Musicalement, l'ambiance est étrange. Si l'on retrouve sans contestation possible une grosse emprunte MORBID ANGEL, période Covenant, qui définit les grandes lignes Death du projet, certains riffs et accélérations purement Thrash viennent brouiller la donne et placer l'oeuvre dans un contexte crossover très intéressant.
Le chant de Luca est d'ailleurs assez proche des intonations sourdes de David Vincent, quoi que moins grave et incantatoire, sans parler des plans de guitare qu'on croirait exhumés de Blessed Are The Sick parfois, sans parler de plagiat évidemment, mais plutôt d'inspiration.
C'est Old School indéniablement, mais pas pour autant dépassé. SEE YOU LEATHER sait placer des interventions toujours pertinentes, que ce soit dans les claquages au fouet Thrash ou dans les écrasements Death terriblement Heavy, et à la lisière du Doom.
Mais ce qui pimente encore plus leur musique est cette vision technique de la chose, qui confère une allure progressive à tous les morceaux, qui sont d'ailleurs assez longs. Et pourtant, assez étrangement, l'épique final "I Canto Di Ossian" vient se poser en contrepoint parfait de cette constatation, en se traînant sur plus de huit minutes en ondulation d'un tempo Doom/Death très forcé.
Un peu à mi chemin entre un MORBID ANGEL écrasant et un CANDLEMASS des premières années (les meilleures, Epicus Doomicus Metallicus s'en fait encore l'écho trente ans plus tard), cette lente procession module sur un chant en italien qui part parfois dans des hurlements stridents, et équilibre de sa lourdeur un album très heurté.
SEE YOU LEATHER a donc voulu privilégier la variété des humeurs, et marque donc des points. En parfait positif/négatif de l'exemple précédent, "Imaginary Wrong" accumule les changements, s'embourbe dans le Death le plus marécageux avant de s'en extirper d'une pulsion Thrash puissante.
"I Am The Beast" utilise un riff totalement Doom en intro, collé à un mid tempo Heavy, puis bascule soudain dans un Thrash médium, avant d'attaquer une relecture de CELTIC FROST par le versant le moins nihiliste.
Guitares à la tierce, variations de rythmiques, tout est testé et approuvé pour enrichir des compos déjà très solides à la base. Les deux guitaristes savent toujours retomber sur leurs pieds et dénicher des motifs mémorisables et efficaces, tandis que le duo basse/batterie s'en accommode très bien et suit le plan prévu d'une gestuelle très souple.
On pourra regretter éventuellement le chant très particulier de Luca, qui ne colle pas forcément à toutes les tonalités, mais en dehors de ça, c'est un beau boulot, rien à dire.
Si la nostalgie vous surprend au détour d'un après midi d'octobre, et que vous décidez d'y succomber sans pour autant vous noyer dans les souvenirs lointains, Back To Aleph est une jolie porte de sortie sur le passé, sans pour autant se refermer juste derrière vous.
Faisant fi de la normalisation/conformité, les quatre italiens suivent une ligne de conduite personnelle, et n'ont cure des modes et autres tendances. En retournant aux origines et au point de départ (Aleph est en effet la première lettre de l'alphabet Hébreux, donc l'origine du langage), SEE YOU LEATHER valide sa musique en l'ancrant sur un point précis, tout en ne réfutant pas des possibilités autres.
Ajouté : Jeudi 25 Août 2016 Chroniqueur : Mortne2001 Score : Lien en relation: See You Leather Website Hits: 6722
|