# 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
}
IMPERIAL TRIUMPHANT (usa) - Abyssal Gods (2015)
Label : Aural Music
Sortie du Scud : 10 mars 2015
Pays : Etats-Unis
Genre : Avant Garde Black Metal
Type : Album
Playtime : 10 Titres - 42 Mins
"Celui qui combat des monstres doit prendre garde à ne pas devenir monstre lui-même. Et si tu regardes longtemps un abîme, l’abîme regarde aussi en toi."
Nietzsche, au delà de ses surhommes et de ses théories sur la mort de Dieu avait raison. Plongeant l'humanité dans les ténèbres qui lui reviennent de droit, il avait anticipé le passé, le présent et l'avenir.
Imaginez vous, au bord de l'abîme.
Les parois se noircissent, et des créatures diaboliques grimpent le long de la roche, se dirigeant vers vous. Protéiformes, gigantesques, monstrueuses.
Mais lorsque vous regardez de plus près, les muscles saillants se flétrissent, les gestes amples et terrifiants sont en fait animés par des ficelles, grossières. Les rictus se transforment en mauvaises grimaces de carnaval, et de l'état de peur, vous passez à celui de dégoût devant cette menace grotesque et artificielle.
Mais soudain, en regardant plus bas, en habituant vos yeux à la pénombre, vous remarquez une masse compacte, collée au fond, qui ne bouge presque pas. Puis elle avance lentement, sans laisser ses contours se dessiner. Vous clignez une fraction de seconde, et elle est là, face à vous. Hideuse, sans émotion, aux pupilles mortes qui vous fixent.
Bravo, après des années d'attente, vous avez découvert le véritable monstre. Celui que vous n'aviez jamais vu. Vous même.
Des abysses du Metal sortent parfois de véritables monstres aussi. Dangereux car peu connus, et pas signalés, ou pas en tant que tel. Le Black Metal essaie bien de nous faire croire régulièrement qu'un de ses enfants bâtard est encore plus bruyant et horrible que le précédent, mais las, toutes ces figurines de carton pâte n'impressionnent plus personne.
Mais de temps à autre, un rejeton qu'il n'a pas reconnu émerge des profondeurs. Laid, animé de très mauvaises intentions. Aujourd'hui, j'en ai rencontré un. Il ne vient ni des pays de l'Est, ni des contrées Nordiques. Mais bien de New York. Perdu.
IMPERIAL TRIUMPHANT est un cas d'école, constitué de cas d'école. Avares en apparitions, ils n'étaient jusqu'à présent prodigues qu'en EPs, avec un seul album à leur actif d'à peine vingt minutes. Le retard est comblé avec Abyssal Gods, qui rattrape le manque de générosité, et de la façon la plus terrible qui soit.
Ce groupe, comme je le disais, est unique. Avec à sa tête un génie de la composition doublé d'un instrumentiste extraordinaire, Ilya Goddessraper et son background classique, le trio/quatuor/quintette frappe à des portes sombres, dont les grincements stridents glacent les sangs et donnent la chair de poule. Empruntant au passage la section rythmique de PYRRHON, avec Alex Cohen, jazzman émérite au kit, et Erik Malave et ses arabesques à la basse, IMPERIAL TRIUMPHANT se permet de fondre dans le même acier la noirceur et la violence brute du Black, les structures absconses et les signatures rythmiques abstraite du Jazzcore/Mathcore, et les arrangements les plus macabres du Symphonique tel qu'EMPEROR a pu les utiliser autrefois.
Analyser froidement cette musique tellement à part est une gageure. Il est difficile de retranscrire par les mots le regard de l'homme dans le miroir/abîme qui découvre que la bête tapie en lui est la raison de tous ses maux.
Un morceau résume peut être à lui seul la philosophie/démarche du groupe Américain. "Krokodil", et ses huit minutes qui virevoltent d'enfer en fournaise, défrichant les terres du Black le plus pénétrant et aride, les moissonnant de rythmiques volubiles et instables, tout en parsemant le sol de graines acoustiques subtiles... Chant d'outre tombe, basse/batterie soudées et pourtant empruntant chacune son chemin, technique effarante au service d'émotions évoluant de la terreur à l'oppression, c'est un morceau à l'image de son contenant, terrifiant, infiniment bruyant, fourmillant d'idées, tout en restant d'une efficacité inouïe.
La dualité captivante - osons le terme - d' IMPERIAL TRIUMPHANT est cette faculté quasi surnaturelle de synthétiser tous les éléments du Black depuis ses origines, parfois au sein d'un seul et unique titre. "Opposing Holiness" débute ainsi comme une vieille démo des années 90, son cru et âpre, avant de dégénérer en hybride symphonique un peu borderline, bruyant, a mi chemin entre la scène Norvégienne des 90's et le Death barbare de la même époque, tout en laissant une emprunte personnelle entre les deux chemins.
La production signée Colin Marston est en plus parfaitement adaptée au style des américains, un peu étouffée et privilégiant la section rythmique, cachant un peu la guitare dans le mixage, pour lui donner cette patine effacée et inquiétante qui lui revient de droit.
Mais les détails abondants parviennent tout de même aux oreilles, et il n'est pas difficile de comprendre, sans multiplier les écoutes que Abyssal Gods est un album intrigant, joué et composé par des musiciens aux facultés techniques évidentes.
L'impression de puissance est omniprésente, semble parfois chaotique et désordonnée, mais les thématiques retombent systématiquement sur leurs pattes, comme par miracle. Et si un interlude aussi décalé et limpide qu'ironique que "Vatican Lust" précède un maelstrom créatif tel que "Black Psychedelia", qui paraît s'embourber dans les marigots Sludge avant d'étaler des propos d'une intensité quasiment insoutenable, ça n'est pas par hasard...
Tout y passe, couplets hermétiques déchirés par des soli venus de nulle part, accélérations brutales sans prévis, parties de batterie à rendre Hellhammer rouge de honte, le tout sur des circonvolutions de basse qui donnent le vertige... Puis le silence, les dissonances...
Qu'ils soient lourds et malsains ("Abyssal Gods" et son intro glauque que le Tom Warrior de 1984 n'aurait pas reniée), arythmiques et en équilibre ("Twins" qui cite autant le Grind Gore que MORBID ANGEL ou MESHUGGAH), ou faussement sereins et célestes (l'intermède "Celestial War Rape"), les IMPERIAL TRIUMPHANT passent par toutes les combinaisons possibles, avec un naturel et une méchanceté que n'importe quel groupe peut leur envier...
Même la chute de l'histoire est inclassable, avec un instrumental brinquebalant et atonal, qui triture quelques notes de piano sur fond d'arrangements étranges et de percussions libres ("Metropolis")...
Abyssal Gods est donc une plongée introspective d'une imagination qui ne souffre aucune limite. IMPERIAL TRIUMPHANT ne supporte aucune entrave, refuse obstinément le cloisonnement, et laisse parler son inspiration inépuisable, aussi iconoclaste que glaçante, dérivant du Black vers le Jazzcore, en passant par le Death le plus sourd, tout en gardant cette touche expérimentale enivrante.
C'est un disque unique, comme le visage et l'âme de chacun d'entre nous. Mais serez vous capable d'y plonger votre regard et votre conscience ?
Mais attention, le voyage est rapide, et traverse des dédales traumatiques qui laissent des séquelles.
Ajouté : Lundi 05 Octobre 2015 Chroniqueur : Mortne2001 Score : Lien en relation: Imperial Triumphant Website Hits: 5714
|