# 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
}
ALBATROSS (in) - Fear From The Skies (2015)

Label : Transcending Obscurity India
Sortie du Scud : 20 mai 2015
Pays : Inde
Genre : Horror Metal
Type : Album
Playtime : 8 Titres - 38 Mins
Un peu d'exotisme ce matin, puisque je m'apprête à vous présenter un groupe né dans un pays où le Heavy Metal ne fait pas vraiment loi, l'Inde.
On connaît plutôt l'industrie cinématographique locale, qui génère des millions, voire des milliards chaque année, et popularisée en occident sous le nom de Bollywood, avec ses codes kitsch, ses acteurs qui en font des tonnes, ses cascades improbables, et ses vilains moustachus qui se prennent des trempes... Chorégraphies, musique ultra chargée... Bref.
Niveau musique, il est plutôt rare de tomber sur un groupe s'aventurant sur les terres Metal, mais je dois avouer que je m'en réjouis. De plus, le cas abordé aujourd'hui est digne d'intérêt, car il nous offre un mélange hétéroclite de styles, d'ambiances, de chansons assemblées comme un film, assez loin d'une comédie musicale ou romantique...
Car en effet, ALBATROSS évolue dans le créneau très fermé de l'Horror Metal, et rejoint de fait les KING DIAMOND, DEATH SS, et autres ROB ZOMBIE, avec toutefois des options plus classiques, tout en faisant preuve d'une sacrée imagination.
Formé en 2008, ALBATROSS se nourrit donc de la culture fantastique, des slashers, de la Hammer et de toute autre digression violente et sanglante, pour agrémenter d'images horrifiques une musique relativement riche. Après un premier EP à la pochette savoureuse, Dinner Is You, paru en 2010, le sextette axé autour de ses trois membres originaux (Riju "Dr. Hex" Dasgupta - basse, Jay Thacker - batterie et Biprorshee Das - chant), et de ses trois guitaristes se lance enfin dans le grand bain du LP, et nous propose donc ce Fear From The Skies rafraîchissant, qui en appelle autant au Heavy classique qu'au Thrash, et qui sait surtout développer des climats idoines pour nous entraîner dans son monde.
Ils citent pêle-mêle comme influences, KING DIAMOND, MERCYFUL FATE, WOLF, DEATH, IRON MAIDEN, JUDAS PRIEST, DREAM THEATER, MEGADETH, ICED EARTH, BLACK SABBATH, et je dois avouer que si la plupart de ces références sont justifiées, cet héritage ne les empêche pas d'avoir leur propre identité.
Fear From The Skies est décomposé en deux parties, ou "concepts", la première, Story 1: Children Of The Cloud se compose des cinq premiers morceaux, tandis que la seconde, Story 2: The Assassin’s Flight occupe la fin du disque. Les deux chapitres sont sensiblement différents, et tandis que l'entame propose un Heavy assez technique et mordant, à la lisière du Néo Thrash parfois, le second se préoccupe beaucoup plus de Doom, de Stoner, se veut plus lourd et plus marqué.
ALBATROSS ne fait pas traîner les choses, et dès l'intro, nous plonge dans l'ambiance. Cloche d'église, basse répétitive et menaçante, et interventions vocales grotesques qui en font des caisses. Puis "The Raptorsville Fair" déboule sans prévenir, et déroule un tapis de fête foraine macabre, aux sonorités délicieusement 70's. Un peu Occult Rock en miroir déformant, jusqu'à ce que le Heavy prenne le pas, et que l'affaire ne devienne plus sérieuse. On pense à un DREAM THEATER de cabaret, qui présenterait un numéro avec NOTRE DAME, un truc un peu bancal et effrayant, qui fonctionne en tout cas à merveille. Créativité, efficacité, les musiciens endossent leur costume et jouent le jeu à fond.
"Jugglehead The Clown" rompt soudain avec le décalage, et délivre un Thrash efficace et percutant, laissant les musiciens présenter leurs qualités individuelles. Les riffs sont syncopés, la rythmique entreprenante et changeante, et Biprorshee Das est tout simplement parfait dans son rôle de narrateur, sorte de M. Loyal des Contes de la Crypte, complètement possédé et halluciné. Les plans s'enchaînent avec une souplesse remarquable, et on se retrouve projeté dans les dédales des décors des années 80, recréés avec une magie et une précision redoutable.
"Children Of The Cloud" se veut plus emphatique et lyrique, et cite DIO, KING DIAMOND, en les plaçant dans l'univers de FORBIDDEN, tout en lâchant Devin Townsend dans le tableau. Le côté ludique de la musique n'occulte en aucun cas le talent individuel des musiciens, qui abordent leur délire avec le plus grand des sérieux, et on se retrouve plongé dans un cauchemar cartoonesque qui fonctionne à plein régime.
Le rideau tombe sur l'outro "Fold", et "In The Lair Of Dr. Hex" (incroyable le nombre de groupes qui dédient une chanson à leur bassiste....) brise la belle dynamique pour imposer une sorte de Horror Doom de premier choix, avec interventions en solo brillantes, mélodies travaillées et séduisantes, et lyrisme flamboyant. On part donc aux antipodes du panorama présenté en première partie, et même si "A Tale Of Two Tyrants" renoue avec l'énergie en lâchant à nouveau des guitares mordantes et volubiles en avant scène, qui riffent aiguisé et sévère, la grandiloquence ne cède pas un pouce de terrain, et se conforte d'une union improbable entre ICED EARTH, MEGADETH et NEVERMORE.
"The Empire Of The Albatross" en final augmente la pression, et offre un feu d'artifices époustouflant, dans la veine de ceux qui illuminaient le ciel ténébreux des meilleurs efforts de KING DIAMOND. On a même parfois la sensation de retrouver le doigté unique d'Andy LaRocque, alors qu'en arrière plan les éléments se déchaînent, pour un climax suffocant, et admirablement bien mis en scène par des musiciens à la maestria indéniable.
Quelle très bonne surprise que ce premier LP d'ALBATROSS. Le sextette a évité le piège de la demie mesure, et s'est lancé à corps perdu dans un créneau à haut risque, remportant son pari haut la main. Fear From The Skies est un joli crossover de styles différents et complémentaires, assemblés avec passion et ferveur par un groupe qui n'a heureusement pas eu peur d'en faire trop. Tour à tour Heavy, Thrash, Dark, Doom, dominé par des guitaristes qui ne font pas semblant en rythmique et qui brillent de mille feux en solo, et par un vocaliste délirant aux capacités d'incarnation optimales, ce LP aux allures d'opéra horrifique est un merveilleux conte macabre à écouter, qui se dévore de bout en bout. C'est un peu comme si SYSTEM OF A DOWN, DREAM THEATER, KING DIAMOND et EXODUS se retrouvaient dans une vieille crypte abandonnée, sous la direction artistique et narrative de Vincent Price.
Vous imaginez ? Alors écoutez maintenant.
Ajouté : Vendredi 15 Janvier 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Albatross Website Hits: 8450
|