# 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
}
COWARDS (FRA) - Rise To Infamy (2015)

Label : Throatruiner Records
Sortie du Scud : 9 février 2015
Pays : France
Genre : Hardcore Sludge
Type : Album
Playtime : 10 Titres - 41 Mins
Allez, cette fois-ci, je ne quitte pas mon pays. Et je ne quitte pas non plus ma ville, quoi que celle-ci ne devrait pas le rester longtemps.
Vous pourriez vous aussi vous sentir proche, avoir des accointances avec le groupe dont je vais vous parler aujourd'hui. Pour peu que vous soyez Parisien, que vous aimiez KICKBACK, CONVERGE, CANDIRIA, EYEHATEGOD ou même COILGUNS et tous ces nouveaux groupes jouant une musique hermétique, centrée sur elle même et incroyablement fusionnante. Car les COWARDS viennent justement de Paris, jouent une musique fermée et compacte, basée sur une certaine idée de la violence larvée qui menace d'exploser à chaque riff, à chaque coup de caisse claire...
Les COWARDS, on en entend parler depuis un certain temps. Ils ont déjà à leur actif un 12'', Shooting Blanks And Pills, sorti en juin 2012, et un EP cinq titres paru en septembre 2013... A l'étranger, outre les références déjà énoncées, on aime en faire le parallèle avec GAZA, TRAPP THEM ou même PARISO. Mais je pense que même si le quintette ne cherche pas forcément la petite bête pour se différencier de leurs concurrents, ils possèdent une identité propre, née d'un mélange de courants aussi violents que puissants.
Il était donc temps pour eux de passer l'épreuve du longue durée, ce qu'ils font aujourd'hui avec ce Rise To Infamy for bien nommé.
Infâme, cet album l'est, mais pas pour de mauvaises raisons, ni en rapport avec des standards de qualité non respectés.
Il l'est, parce qu'il est particulièrement sale, et c'est aussi pour ça que je citais les COILGUNS tout à l'heure. Il est à l'image de cette nouvelle scène core d'Europe centrale qui s'obstine à trouver le son de guitare le plus crade, les rythmiques les plus engluées, et les breaks les plus assourdissants. Avec en tête de ballet la voix criarde et étouffée dans le mix de J.H, qui peine à surnager dans cet océan furieux de distorsion, de fracas de basse compressée, les morceaux de Rise To Infamy pourraient tout aussi bien réveiller le spectre d'un Black Core vraiment sombre, blasts à l'appui ("Birth Of The Sadistic"), ou celui d'un Dirty Core à la CANDIRIA/UNSANE, pour ce son de six cordes passé à la lamineuse, dont les câbles sortant du corps semblent branchés sur un vieil ampli en bout de course qui menace de rendre son dernier souffle.
Ils parlent eux mêmes de "Haine ordinaire". Je ne sais pas si la musique présentée ici représente LEUR vision de la haine, mais celle ci fait froid dans le dos, semble émaner d'un esprit fatigué, pervers, qui suinte au travers de chansons désespérées de ne pas se faire entendre dans l'écho d'une scène qui commence à être surchargée. Il est vrai que les disques comme celui-ci fleurissent sur tous les trottoirs, et pas seulement ceux de Manille, mais la force de COWARDS est d'offrir quand même un regard un tant soit peu nouveau, chargé d'une intensité électrique qui vrille les neurones.
Si la grosse moyenne des titres tourne autour d'un marigot où surnagent les cadavres des illusions modernes, un marigot épais, profond, noir comme la tristesse, certains cassent cette quasi résignation en privilégiant une vitesse assez enivrante, comme "Anything But The Highroad", qui se brise en moins de deux minutes sur des tempi chaotiques et une structure qui semble aléatoire.
"Bend The Knee" est une autre exception notable, et fait montre d'une fureur plus volontiers directe que les allusions et autres marches fatalistes qui jonchent ce premier LP. Une fois de plus, certaines réflexions découlent directement de la misanthropie sans concession du Black le plus poisseux, avant qu'une fois de plus un break ne brise cet allant d'un heurt douloureux et ramenant les débats dans un giron Thick Core venimeux et suintant.
La voix de J.H redevient alors ce long cri déchirant, les guitares se plombent à nouveau d'une chape acide, et la machine se noie dans un chaos perturbant.
Et inutile d'attendre une quelconque porte de sortie s'ouvrant sur un monde meilleur, puisque le quintette insiste jusqu'à la dernière seconde. La dernière étape de ce périple nuageux atteint même une sorte d'épiphanie, sous les coups de boutoir d'un "So Easy" de clôture qui appuie encore plus sur le malaise, en aménageant des espaces blancs de faux silence, dominés par une basse écrasante à peine éclairée de stridences en arrière plan. Les riffs se cambrent alors sur une thématique unique, circulaire et répétitive, pour une dernière montée vers des enfers qu'on pensait beaucoup plus bas...
Rise To Infamy pour être simple et direct, est à l'image de sa pochette malsaine, couchée sur un noir et blanc verdâtre. C'est un album qui prend à la gorge, qui enserre votre souffle d'une emprise qui ne se relâche pas, et qui assombrit tout ce qui vous entoure. C'est un disque qui ne connaît que peu de respirations, moite, étouffant, et caractéristique d'une scène qui n'en peut plus de s'enfoncer chaque jour un peu plus dans une noirceur à la non brillance presque palpable.
Et c'est aussi, plus prosaïquement, un très bon début en version longue, pour un groupe Parisien qui refuse les clichés de carte postale de sa capitale.
Car seule la souffrance l'est.
Ajouté : Jeudi 10 Septembre 2015 Chroniqueur : Mortne2001 Score :     Lien en relation: Cowards Website Hits: 4898
|