# 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
}
NEPHELIUM (ca/ae) - Coils Of Entropy (2012)

Label : Auto-Production
Sortie du Scud : 7 février 2012
Pays : Canada / Émirats Arabes Unis
Genre : Brutal Death Metal
Type : Album
Playtime : 6 Titres - 42 Mins
Avec l’arrivée récente et rocambolesque de la famille princière Al-Thani à la tête du PSG, certains ont appris à leurs dépens qu’il valait mieux se méfier de la puissance financière que dégage le Qatar (et le Moyen-Orient en général). Alors quand NEPHELIUM se présente à nous comme étant le premier groupe de musique extrême à avoir émergé des sables brulants de Dubaï, c’est un mélange de curiosité, d’étonnement et de scepticisme qui jaillit de nos esprits. Sur le papier, tout ça est vraiment digne d’intérêt. Quand on sait que sur cet émirat qui déborde de pétrodollars, il est interdit de fumer pour les moins de vingt ans, interdit de s’afficher en public pour les couples non-mariés, interdit de se balader torse-nu, interdit de faire un doigt d’honneur au cheikh ou de tripoter des chameaux sur la voie publique, on peut se poser la question de savoir si un groupe de Brutal Death Metal aura tout l’espace culturel nécessaire pour se développer comme il se doit. Voilà peut-être pourquoi le groupe a depuis été relocalisé au Canada, dans la charmante ville de Toronto.
En ce qui concerne ce premier album nommé Coils Of Entropy, il n’est pas qu’un simple coup d’essai, car il succède à une démo et un EP, tous deux parus à l’aube des années 2000. Mais il peut être une renaissance. D’ailleurs, si la presse semble unanime, même ceux qui devraient être jaloux de leur succès ne tarissent pas d’éloges. Pour Andy Larocque (KING DIAMOND et DEATH), ce disque « sonne super bien, il est cru et brutal » tandis que pour Patrick Loisel d’AUGURY, que ce soit « au niveau des guitares ou du chant, ce groupe est explosif ! ». Pour ma part, je vais me montrer un peu plus mesuré que ces deux artistes de grand talent. Il est facile de détruire un groupe par la critique de même qu’il est facile de l’encenser trop rapidement. Quand on connaît les dangers que représente cette deuxième situation, il convient de relativiser leur performance. Certes, ils viennent de Dubaï. Mais Dubaï, c’est pas non plus la Corée du Nord ! Alors oui, ce Brutal Death est admirablement bien construit et réalisé. Mais je refuse de le surclasser pour le simple côté extra-musical un peu larmoyant que cherche discrètement à faire passer ce groupe. « Burial Ground » débute dans une cacophonie assourdissante entre des riffs compliqués et une batterie pas plus inventive. Pas de doutes, ce sera du Brutal Death pur jus, même si cette entrée en matière est vraiment chagrine. Puis doucement, cet album évacue la pression, se libère, trouve ses marques. Il faudra attendre « Merciless Annihilation » pour vraiment réaliser l’ampleur du phénomène. Changements de tempos incessants, riffs qui se greffent sur des racines de Death vieille école, vocaux-éructés suidés du plus bel effet coupés par quelques screams moins convaincants et lignes de guitares mélodiques arabisantes, NEPHELIUM joue la carte de l’authenticité à tous les niveaux. Et même si cet enregistrement n’a pas de grandes vertus artistiques, il a le mérite d’être tatillon, tiré à quatre épingles et terriblement groovy. Je connais l’abhorrence que provoque ce terme quand il s’agit de Death Metal, mais quel autre adjectif qualifierait mieux cette démonstration de rythmes « shake-your-booty » ? Au rayon des furoncles, on ne voit pas toujours l’intérêt des compositions à rallonge qui font neuf et dix minutes pour les plus longues, surtout que la facette épique de ce type de choix est ici absente. Aussi, pour être un peu plus exigeant, la batterie n’a pas un son très recherché et les frappes sur les toms sonnent comme un tambour Fisher-Price. De plus, la prestation de Devlin Anderson (chant) sur « Malediction » en particulier est très décevante. Son imitation finale de Taz, le Diable de Tasmanie des Looney Tunes a de quoi laisser dubitatif.
De belles promesses contrastées par quelques défauts, Coils Of Entropy est un album de Brutal Death tout ce qu’il y a de plus honnête. Je pense que si un groupe européen avait sorti un opus du même calibre, il n’aurait pas reçu meilleur critique. Preuve s’il en est qu’il n’y a pas de favoritisme, qu’on peut venir de Dubaï, faire du Death qui tâche et se mêler à la lutte avec les meilleurs formations. C’est juste dommage que certains s’attarderont davantage sur ce dépaysement qui n’en est pas un, considérant NEPHELIUM comme un animal de foire qui rugit au sein d’une scène de plus en plus lisse. Il ne tient qu’à eux de changer la donne.
Ajouté : Mardi 14 Février 2012 Chroniqueur : Stef. Score :    Lien en relation: Nephelium Website Hits: 14480
|