# 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
}
VARIOUS ARTISTS - Emergency Attack (2015)
Label : Klinik 66 production
Sortie du Scud : mars 2015
Pays :
Genre : Hardcore / Fastcore / Grind / Punk
Type : Compilation
Playtime : 63 Titres - 124 Mins
Dimanche après midi, Jacques Martin à disparu depuis longtemps alors que faites vous ? Une balade, la télé, autre chose ? Mais surtout, avez vous été gentil en ce moment printanier ensoleillé ? Je sens que oui, même si ça n'est pas vrai. Alors soyez heureux et souriants, j'ai un cadeau pour vous, chers amateurs d'extrême et de boucan en tout genre.
Un truc gratuit, comme ça, à la volée, ça vous branche ? Non, pas un truc piraté, c'est illégal n'insistez pas. je vous parle d'un truc VRAIMENT gratuit, officiel, et tout le tralala. Distribué un peu partout en téléchargement direct et cautionné, même encouragé. Et pas un truc tout moisi, genre le sampler avec deux pauvres titres de groupes obscurs dont personne n'a jamais entendu parler, non. Je vous parle d'une compilation peaufinée, élaborée avec patience et amour, et blindée ras la gueule de petites pépites internationales à découvrir.
Ce sont plusieurs collectifs qui s'y sont collés. On trouve à gauche Klinik 66, un genre de groupement DIY d'Indonésie, les INVALID BRAIN, groupe de Crust Punk, et Atomic Pollution. Ces trois là, et bien d'autres, défendent l'éthique du Do It Yourself, combattent le consumérisme qui gangrène la société, la mondialisation, et la dictature de pensée. Alors, comme ils sont conscients qu'une idée se répand encore plus vite qu'un virus, ils essaient d'en inoculer à la population le plus souvent possible. Emergency Attack est la dernière en date, et la plus massive. Les trois acolytes ont rassemblé sur un même support digital trente deux groupes venant de tous les coins du globe et possédant les mêmes points communs. Musique ad hoc, idéologie en phase, et refus des grands circuits de distribution. Vous trouverez donc dans ce fichier pas mal de bonnes choses, en l'état, et il y a de quoi vous occuper un bon moment.
Mais outre cette initiative louable et engagée, quelle est la qualité du produit en question ? Je me dois d'abord de vous avertir que c'est une compile fait main. Pas de masterisation haut de gamme, le son des groupes est restitué tel quel, alors il varie d'une entité à l'autre, allant du massif pro à la démo enregistrée dans le garage, mais loin de pénaliser l'entreprise, ça lui donne un côté amateur vérité que j'apprécie beaucoup. Côté style, tout est là. Les enragés du Grind, les tordus du Fastcore, les cramés du Punk, les étourdis affolés du Powerviolence. C'est en phase avec son époque, délicieusement rétro, hors du temps, mais ça envoie, c'est varié, et ça s'écoute sans faire le moindre effort. Ca part d'un machin de trois secondes (DEVASTAR), à un truc de plus de cinq minutes sur le premier CD (RAVEN, genre de Dark ambient bouillonnant et un peu flippant quand même), en passant par une reprise ludique de SORE THROAT (SLAUGHTERGRAVE), le Grind d'apoplexie de TERSERAH, le Punk traditionnel d'INVALID BRAIN, le Hardcore épais à la DISCHARGE de KAWAKAMI NIGHTMARE, j'en passe et des plus bruyants, des plus barrés et des moins sociables.
La face B (si l'on peut utiliser ce terme) reprend le même principe, puisqu'à l'intérieur du dossier vous trouverez en effet un Emergency Side, et un Attack Side. Les mêmes groupes figurent sur les deux, à un détail près, et les styles que l'on trouvait en premier lieu n'ont bien sur pas changé.
Le morceau de RAVEN est aussi bruitiste que le premier, DEVASTAR s'étale cette fois ci sur plus de quarante seconde pour un Grind paillard et incroyablement bordélique, TERSERAH ne s'est pas non plus calmé, au contraire, PUNAH et son "Optimism" concourt pour le titre du son le plus aigrelet et de la voix la plus horrible possible (les grognements sont en constante surchauffe et saturent à mort), SLAUGHTERGRAVE rappelle à lui seul les premières compilations Nuclear Blast avec son Core/grind épileptique et amateur, DARGE remporte finalement au détriment de PUNAH le prix spécial du jury pour la production la plus infâme, COMPULSION TO KILL se charge de faire péter les potards, et DESIRE se veut irrespectueux en balançant un "Fuck Your Zion" extrêmement mécontent et bruyant. Soit.
Ce qui est sur, et certain, c'est que vous trouverez sur cette compilation de quoi vous satisfaire. Je peux en témoigner, j'en ai moi même été fort content. Dans un souci d'exhaustivité, je vous livre ici la liste des groupes que vous trouverez sur Emergency Attack :
AGAMENON PROJECT - ASHES OF DEATH - BESTHOVEN - BIO ATOMICO TERROR - BOMBARDIR - COMPULSION TO KILL - CONDUTA DESTRUTIVA - DARGE - DEAFENESTRATION - DEATH FROM ABOVE - DEPRESS - DESIRE - DEVASTAR - DISAGREE - DISCRIME - EUTANASIA - FIRST BLOOD - INVALID BRAIN - JOLLYTYJOY - KAWAKAMI NIGHTMARE - KONTRÄDIKSI - KORRÜPT - KRANIO - LIBERTY DECEIT - PUNAH - RAVEN - SILENCE KILLER - TERSERAH - WARKRUSHER - WARWHORE - WHIPSTRIKER.
Voilà, je pense que j'ai fait mon boulot. Ca fait du bien en tout cas de tomber sur des gens qui se bougent le cul et proposent de changer les choses, via une musique véhémente certes, et chaotique, mais sincère. Car tout n'est pas affaire de gros labels, indépendants ou non, de musiciens bouffis de suffisance. Loin de là. Il existe, partout dans le monde, des gens qui ne veulent que s'exprimer, partager leur point de vue, sans attendre en retour qu'une oreille concernée et de l'honnêteté. Et ça, ça mérite d'être souligné non ??
Et comme la vérité est un virus, en cliquant sur le lien de la page, vous pourrez télécharger Emergency Attack par vous même, et répandre la bonne parole.
Tout ça un dimanche... Elle est pas belle la vie ??
Ajouté : Lundi 20 Avril 2015 Chroniqueur : Mortne2001 Score : Hits: 4906
|