# 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
}
HERE COMES THE KRAKEN (mx) - Hate, Greed & Death (2011)

Label : Auto-Production
Sortie du Scud : 26 avril 2011
Pays : Mexique
Genre : Deathcore / Neo Metal
Type : Album
Playtime : 9 Titres - 39 Mins
A la question « qu’est-ce qui pousse un groupe de Brutal Deathcore à s’orienter subitement vers un sous-SLIPKNOT bas du front », sachez que je n’ai pas de réponse précise à apporter. HERE COMES THE KRAKEN, c’était la claque, la relève, pour moi qui voue un culte à l’œuvre d’ALL SHALL PERISH. D’entendre ces Mexicains leur rendre un si brillant hommage sur leur premier album éponyme en 2009, ça m’avait mis la larme à l’œil. Mais ça, c’était avant que l’EP The Omen de 2010, à cause de ses sonorités rangées et proches de sombrer dans le Neo Metal tentaculaire, ne suggère qu’il y aurait prochainement une couille dans le potage. Hate, Greed & Death est venu et ça n’a pas raté. L’amateur de Deathcore pestilentiel que je suis en est vite arrivé à détester les structures musicales de cette cagade, qui ne reflète en rien la réalité d’un premier rejeton spectaculaire.
Du spectacle, il y en a aussi ici, mais dans une toute autre mesure. HERE COMES THE KRAKEN est bien parti pour devenir le ONE DIRECTION du Deathcore. Refrains faciles, créations easy-listening, brutalité de façade, cet album mormon, fils de papa SLIPNKOT, de maman AS I LAY DYING et de maman SOILWORK est un incroyable revirement de situation pour une formation finalement à l’image de son line-up : instable. Seulement sur ce coup, les Mexicains n’ont pas eu le flair. Si Hate, Greed & Death est certainement le plus abordable et le plus agréable à l’oreille de tous leurs enregistrements, il ne leur ressemble pas des masses. On n’a pas connu HERE COMES THE KRAKEN avec ce tel degré d’accessibilité et ce lifting fait peur à voir. Où sont les sweeps entortillés, les breakdowns écrasants, la vivacité d’esprit d’un Deathcore qui n’avait aucune limite ? Bien sur, « Beverly Hell » et « Knights From South Side», les deux morceaux présents sur The Omen et réenregistrés pour l’occasion maintiennent un semblant d’illusion, mais c’est uniquement pour la forme. Les boucles de guitares graisseuses ainsi que quelques tempos proches du Punk se rappellent au bon souvenir des singles les plus « slipknotiens ». On a parfois même l’impression qu’HERE COMES THE KRAKEN a été touché par la pureté de groupes de Metal moderne français. Je pense à « Stoner Sunday » dont le refrain stellaire m’a clairement évoqué les Montpelliérains d’HORD. Désormais scotchés à cette image de formation dynamique et contemporaine, loin de l’ultra-bestialité de leurs efforts passés, ces Mexicains se paient même le cynisme d’inviter Eddie Hermida d’ALL SHALL PERISH sur « Nu Beginning ». Le featuring est de mauvais goût, puisqu’il n’a que pour but de remuer le couteau dans la plaie. Il est surtout à l’image d’Hate, Greed & Death, pas franchement détestable mais totalement incompréhensible, comme ces passages scratchés sur « iDrugs ». Non mais vous n’avez pas honte ?
Et pourtant, en dépit des nombreux défauts et des imperfections de ce second album, je ne peux m’empêcher de penser qu’HERE COMES THE KRAKEN a eu des couilles au cul de sortir un truc pareil, d’autant plus que c’est loin de ressembler à de l’effronterie. Tout au long de l’écoute, mon côté rancunier m’a suggéré de ne pas trop aimer ce genre d’expérimentations, mais avec un peu de recul, si certains choix sont contestables, comme ces poussées technologiques furieuses ou ce chant clair assez mièvre, Hate, Greed & Death s’écoute sans déplaisir. Au final, cette direction leur est inhérente et il serait idiot de regretter un album de Brutal Deathcore qui aurait peut-être été pire que ça.
Ajouté : Mercredi 19 Décembre 2012 Chroniqueur : Stef. Score :    Lien en relation: Here Comes The Kraken Website Hits: 8826
|