# 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
}
DISCOMFORT (it) - Worst (2015)

Label : Eastrain Records
Sortie du Scud : 10 mars 2015
Pays : Italie
Genre : Dirtcore
Type : EP
Playtime : 7 Titres - 16 Mins
Hier soir en Autriche, l'Italie a terminé en troisième place du concours Eurovision, grâce à une splendide chanson mélangeant la Pop moderne et le chant classique. Bien joué les voisins.
On résume souvent le territoire transalpin en des termes romantiques. Venise, les gondoles, la Sicile, Rome, Naples, l'opéra, les belles brunes qui font trempette dans la fontaine de Trévi... Ou alors à la rigueur, on parle de football, ce qui peut sembler d'actualité vu les performances des clubs locaux en C1.
Mais tous ces clichés de carte postale peinent à cacher la dure réalité économique et sociale locale, et surtout, la prédominance d'une scène rageuse et bruitiste qui commence à bouillonner sévère.
SLAUGHTER IN THE VATICAN, NIDO DI VESPE, STRANGE FEAR, INFAMIA, INKIONS, SPOSA IN ALTO MARE et autres REPULSIONE ou 2 MINUTA DREKA, tous s'agitent de soubresauts extrêmes, allant du Hardcore de tradition au Crust en passant par le Thrash, le Death, le Grind, en gros, tout ce qui constitue la solide branche de l'underground mondial depuis les années 80. alors inutile de sortir les trémolos et de roucouler avec votre belle au bras, l'Italie est aussi noisy que n'importe quel pays d'Europe.
Sus aux poncifs donc, et pour appuyer mes dires, je fais appel à un autre combo du cru, en l'occurrence le quintette DISCOMFORT.
Ce jeune ensemble qui mérite bien son nom, en est à sa deuxième production, après un EP, Scorn, paru il y a deux ans. Et le moins que l'on puisse dire, c'est qu'ils mettent les choses au point bien avant que la musique ne fasse son office.
Avec un nom pareil, et un premier LP "officiel" (bien qu'il soit sorti au format 12'') se proclamant "pire", on pouvait justement s'y attendre. Mais sous une énigmatique pochette au superbe noir et blanc sur laquelle trône une sublime femme voilée au regard profond se cache un des albums les plus sombres et véhéments de la scène locale.
Dirtcore ? Oui, l'appellation peut faire sourire, mais la description est assez fidèle. Car DISCOMFORT passe un peu par tous les stades. Hardcore bien évidemment, Crust forcément, Grind obligatoirement, le tout abordé avec le même état d'esprit, n'en retenir que la substance la plus compacte et noire de desseins. Ils ne rechignent pas non plus à glisser dans leurs morceaux quelques dissonances irritantes et planantes héritées du Post Punk des années 80, qui agrémentent ces sept morceaux remplis de haine d'une petite touche décalée appréciable.
En dehors de ceci, le quintette ne fait aucun cadeau. Rythmiques heurtées et décalées entre poussées véloces et écrasement presque Sludge parfois ("Karni Mata", malsain), structures qui n'hésitent pas à valdinguer d'un bout à l'autre de la pièce ("Cycle Of Annihilation" qui commence poisseux, avec de verser dans une espèce de Mathcrust impitoyable et anguleux, un peu à la manière des voisins de STORM{O}), poussées Post Grind qui accumulent les stridences, les hurlements déchirants et les accès de fièvre carabinée ("Scream Cutter" au titre bien senti), tout est là pour déranger, et surtout, ne pas laisser l'auditeur s'installer dans un confort d'écoute trop rassurant et disons le, "calibré".
Et ça se sent dans la forme même de l'album, puisque après une poignée de morceaux brefs, les Italiens se laissent aller à une comptine désolée de plus de cinq minutes, qui développe en version longue toutes leurs influences, leurs tics et déviances, avant de s'affaler dans une dernière saillie Crust/Grind de trente secondes qui ne laisse aucune place au doute. Quand on choisit de s'appeler DISCOMFORT, il faut assumer, et ne pas hésiter à pousser le bouchon le plus loin possible.
La production, matte et puissante est évidemment idéale pour ce genre de musique et l'interprétation, précise, diabolique même, est tirée au cordeau.
Pas sûr qu'une fois écouté cet album vous veniez encore nous les briser avec vos pétales de rose et vos voyages de noces sous le pont du Rialto.
Chez DISCOMFORT, les ponts servent à s'y jeter, pour mettre fin à une existence pitoyable. Mais qui sait, si vous enjambez le parapet pour de bon, peut être qu'ils enverront une carte postale à votre famille...
Ajouté : Lundi 21 Septembre 2015 Chroniqueur : Mortne2001 Score :      Lien en relation: Discomfort Website Hits: 6626
|