# 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
}
GODAWFULNOISE (usa) - No Escape (2016)

Label : Autoproduction
Sortie du Scud : 9 mai 2016
Pays : Etats-Unis
Genre : Crust Grind
Type : EP
Playtime : 10 titres – 13 minutes
"Que serais-je sans toi, que ce balbutiement ?"
Non, je ne cite pas ce vers de Jean Ferrat pour séduire une gourgandine ou une jeune éplorée cherchant refuge dans mon giron.
Si je déclare ma flamme ce matin, c'est à un style qui a fait les beaux jours de mes chroniques depuis quelques années, et auprès duquel je me rapproche régulièrement pour retrouver l'énergie.
Le Crust, le Grind, le Powerviolence, enfin tous ces machins qui n'ont cure de la mélodie et des structures, et qui ne sont que riffs furieux et incandescents, rythmique atomique et chant tout à l'avenant.
Et ce matin, c'est du côté de l'Arizona que je suis allé chercher mon réconfort, auprès d'un jeune trio de Phoenix qui ne fait pas dans le motif ouvragé mais bien dans le bordel plus ou moins organisé.
Un trio donc (Danny Ruiz – guitare/basse, Jesse Schoof – chant et Dave Decker – batterie), qui en ce mois de mai d'une pluviométrie affolante sort son premier EP en format quart d'heure ou presque américain.
Pas grand-chose à vous révéler sur ces dégénérés, qui depuis ont aligné quelques splits comme le veut la tradition.
Une fois encore, je ne parlerai que de musique, la bio étant superfétatoire dans ce genre de cas. Et niveau musique, les GODAWFULNOISE ont sacrement bien choisi leur nom, puisque en imaginant le créateur dans une ire foudroyante, on aurait du mal à se figurer bruit plus assourdissant.
Mais il y a bruit, et bruit. Ne croyez pas que celui de nos amis du jour est du genre déconstruit, puisqu'il répond à des règles bien établies, celle du Crust à tendance Grind qui ne rechigne pas à verser un tant soit peu dans le Noise.
Mais juste les doigts de pied, parce que même mouillée, l'eau est encore un peu chaude.
Chaude comme leurs morceaux.
Dix titres de durée homogène, qui ne prenne pas leur temps pour présenter leurs arguments. Une guitare sombre et grasse, une rythmique qui s'affole dès les premières mesures mais ne s'affale jamais, multipliant les jongleries et autres acrobaties sur les fûts et la caisse claire, et un chant qui hésite entre cris porcins et raclage de gorge bien malsain.
Vous connaissez tous le principe, alors disons qu'il est appliqué ici avec un sens de la folie indéniable. Rien de surprenant en soi, mais une bonne dose d'énergie non diluée qui vous gicle à la face sans s'étonner de la pression de la purée.
Nonobstant cette remarque pleine d'élégance, le Crust/Grind des Arizoniens et en tout point remarquable, et pioche ses influences chez les maîtres du genre. D'ailleurs, l'ambiance est plus volontiers Grind qu'autre chose, même si les blasts se calment à intervalles réguliers.
On pense alors inévitablement à NASUM, THE KILL, TRAP THEM, pour l'intensité dégagée et les espaces aménagés. Le rythme ne faiblit jamais, et les treize minutes passées en subissant le courroux divin défilent hyper rapidement, à l'image de ce batteur qu'on se plaît à penser un poil hyperactif.
Après, je ne rentrerai pas dans le détail, puisque tous les titres se ressemblent, mais après tout, c'est aussi tout le charme de ce genre d'entreprise.
On n'est pas là pour admirer les subtilités du paysage, mais bien pour le voir défiler à tout berzingue, la tête en bas et les tripes au bord des lèvres.
Et avec des attaques sans pitié ni freins comme "Stand Up & Fight" ou "Destroy Everything", le doute n'est pas de mise, pas plus que la patience.
Et justement, ici, tout n'est qu'impatience et fureur, et si jamais ça ne vous convient pas, le trio à un conseil tout prêt pour vous. "Shut The Fuck Up", qui retrouve l'esprit paillard des AGATHOCLES et autres NAPALM.
Vous avez pigé ?
Tant mieux, parce que j'ai fini.
Ajouté : Lundi 14 Novembre 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Godawfulnoise Website Hits: 6195
|