# 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
}
GORGUTS (ca) - Colored Sands (2013)

Label : Season Of Mist
Sortie du Scud : 30 août 2013
Pays : Canada
Genre : Technical Death Metal
Type : Album
Playtime : 9 Titres - 63 Mins
1991, le monde du Death Metal est bouleversé par la livraison expresse d'un Petit groupe Canadien répondant au doux nom de GORGUTS. La ligne dans laquelle s'inscrit la formation est la tranche la plus technique, clinique et brutale que connaît le Metal de la Mort. Seuls ATHEIST et NOCTURNUS ont avant tout le monde défini ce qu'allait devenir ce style. L'on se souviendra également qu'un autre nouveau venu sort son premier album la même année que nos amis francophones, et il s'agit ni plus ni moins que de MESHUGGAH.
Considered Dead est un condensé de technique, d'ingéniosité et devient par là même le maître étalon, l'album culte d'une formation qui ne l'est pas moins. Il est vrai que le restant de sa discographie, bien que de très haute volée, n'atteindra plus ce nirvana qu'est leur toute première offrande.
2001, soit une décennie plus tard, le groupe nous offre dans sa pochette la plus indigeste accompagnée de son logo revisité un From Wisdom To Hate qui est la véritable réponse à leur monstrueuse genèse. Mais sans doute marqué par le décès de son batteur et partenaire Steeve Mc Donald mais aussi déçu par l'accueil réservé à ce magnifique recueil Luc LEMAY choisit de saborder le navire pour ne plus y revenir.
2008, Luc sans trop faire de bruit remet le couvert et s'attelle à retrouver des musiciens à la hauteur de sa qualité d'écriture. A compter de 2009 la nouvelle équipe reprend d'assaut la scène et nous sommes ravis de constater que le challenge est relevé. Seule ombre au tableau le refus catégorique du leader de remettre la main à la pâte et aucun nouvel album n'est envisagé.
2013, la légende continue !!!
Luc LEMAY reprend les armes ; toutes les armes. Compositeur, guitariste, chanteur, interprète, infographiste, producteur, arrangeur et Patron incontesté et incontestable d'un navire qui n'a rien d'un drakkar viking mais qui a plus l'air d'un cuirassier ultra moderne à la pointe de la puissance nucléaire. Colored Sands est désormais là et ma première question serait de savoir où on peut légitimement placer cet album dans la discographie du prodige ? Il est un condensé de la première et dernière livraison du groupe avec en plus un aspect qui n'avait jamais été élaboré auparavant. La technique reste entière, le caractère propre à la reconnaissance stylistique immédiate également, mais ce côté sombre, noir, décadent, dépressif voir suicidaire vient compléter un tableau pourtant déjà fort chargé. Et ce qui aurait pu devenir un piège supplémentaire dans une surcharge pondérale d'un style déjà très complet aère au contraire son sujet. Cette sombritude absolue (merci Ségolène) replace GORGUTS sur son trône et aucun ne pourra rivaliser. Tout le monde restera coi et sera aspiré par cette machine infernale. Rien que le titre d'ouverture, "Le Toit Du Monde" s'il vous plaît, met d'entrée de jeu tout le monde d'accord avec ses accords à contre temps et sa basse ultra puissante inscrite dans des médiums claquants d'une beauté sans pareil. Les titres s'enchaînent dans une déferlante de technicité et de puissante, raz de marrée providentiel emmenant l'humanité vers une mort certaine par constriction systémique. Seule "The Battle Of Chamdo" vient quelque peu calmer ces ardeurs brûlantes en nous offrant une plage plus classique à la manière d'une pièce issue du cerveau maléfique de Wojciech KILAR compositeur polonais à qui l'on doit, en autre, la bande originale de Dracula de F.F. Coppola. Tout ceci avant de revenir en force sur le monstrueux "Enemies Of Compassion" qui est tout ce qu'il y a de plus étouffant dans le genre. Des parties CORONERiennes, des syncopes, des Blast alambiqués avec guitares à contre temps et surtout pas à contre emploi.
Tout ici est noirceur !
Cet album est celui que plus personne n'attendait. Et il est à lui seul l'apogée, le summum d'une carrière que nous espérons encore longue. Il est le plus abouti, le plus convaincant, le plus dissonant, le plus maîtrisé de tout ce que nous avons pu entendre de Maître Yoda LEMAY.
Aucun retour n'aura été plus culte, mis à part peut être celui de MERCYLESS. Qu'on se le dise !
Ajouté : Jeudi 20 Mars 2014 Chroniqueur : Oncle Machin Score :      Lien en relation: Gorguts Website Hits: 18710
|