# 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
}
CARNIST (uk) - Hellish (2015)

Label : Alerta Antifacista Records
Sortie du Scud : 23 septembre 2015
Pays : Angleterre
Genre : Darkcore Crust
Type : EP
Playtime : 6 Titres - 16 Mins
Comme je vous connais, je sais que vous êtes insatiables, alors j'en remets une couche sinon vous allez me bouffer.
Après les suisses de TUER, voici venus les anglais/australiens de CARNIST, qui dès leur patronyme, mettent les choses au clair. Ces quatre furieux (Olly - basse, Gerfried - guitare, Dave - batterie et Alex - chant), prônent en effet les vertus du végétarisme, et sont opposés à beaucoup de choses. La violence bien sur, qu'ils ne pratiquent que musicalement, mais aussi la théorie des genres, le fascisme évidemment, et bien sur militent en faveur du droit des animaux, comme beaucoup d'autres musiciens du cru.
A cheval entre l'Angleterre et l'Australie, ils ont déjà sorti un premier album en décembre 2013, Unlearn, caché sous une superbe pochette en noir et blanc limite photocopie, décrivant les affres d'un pauvre enfant confronté à une assiette de viande qu'il n'a pas l'air décidé à manger.
L'obligation pour nos enfants de manger de la viande est donc remise en cause, et leur philosophie n'a pas changé d'un iota sur ce nouvel EP, pas plus que leur approche de la musique.
Les CARNIST se situent dans la plus directe lignée du Hardcore teinté de Crust typiquement anglais, suivant les traces de DOOM, DISCHARGE, en version toutefois beaucoup plus épaisse et véhémente. Si le quatuor se réclame de l'idéologie d'extrême gauche, leur musique elle fonce au centre, frappe fort et vite, et bénéficie d'un son très étouffé, qui accentue encore plus le caractère foncièrement épais de leurs compositions, qui reposent sur des riffs amples et profonds, qu'un chant caverneux et grave utilise comme vecteur porteur. Rythmiquement, le problème est vite résolu, up tempo rageur la plupart du temps, avec une basse qu'on devine plus qu'on entend, tant les fréquences sont toutes avalées par la puissance de l'ensemble. C'est gras, percutant, et le groupe a souvent recours à des séquences vocales samplées pour étayer son propos. Nous avons donc droit à intervalles réguliers à des annonces politiques, des bribes de discours pro-vegan, anti-fascistes, mais loin de handicaper le projet, ils lui apportent une plus value, et donnent au EP des allures de tract musical dont le fond et la forme ne peuvent être remis en cause.
Quelques inflexions nous font même penser à une sorte d'ANTI NOWHERE LEAGUE en plus sale et violent, voire à un GBH qui s'accouplerait pour quelques secondes avec un groupe de D-Beat suédois. Ce ne sont bien sur que des comparaisons "au feeling", et l'approche de CARNIST est beaucoup moins paillarde et "gratuite" que celle de leurs aînés. Le discours est très premier degré, et on sent que le quatuor n'est pas là pour amuser la galerie, mais bien pour propager un message sincère et sans fioritures. Les fioritures d'ailleurs sont complètement absentes de cet effort, même lorsque les pistes atteignent une durée inhabituelle, comme ce "Hell Is Complicity", introduit par un sentencieux "When we understand carnism, we understand that eating an animal is not just a matter of personnal affect, it is the inevitable result of a deeply entrenched oppressive system".
S'ensuivent quatre minutes de furie sonore qui ne lâche jamais sa prise, et nous enfonce dans le crâne ses théories sur la vie, l'exploitation du peuple via l'obligation intrinsèque de consommer de la viande, et la musique s'adapte donc à cette croyance, en développant un Crustcore lourd et menaçant, qui ne fait aucun mystère de ses intentions.
La vitesse d'exécution ne varie pas d'un iota, malgré quelques breaks percussifs, et le final se dilue dans une coda de larsens à peine soutenue par quelques mots lâchés d'une voix discrète.
L'astuce de cet album est de tourner autour du concept de l'enfer, avec cette optique de pointer du doigt tout ce qu'il peut représenter. Pour CARNISH, l'enfer c'est la croyance, le meurtre, l'ego, la complicité, la société patriarcale, et plus généralement, les autres. Ils pointent du doigt tous les disfonctionnements de notre société de consommation, qui classe les gens par genre, par classe, qui traite les animaux comme du simple bétail d'expérimentation et de consommation, et les femmes comme des objets de désir. L'intention est louable et le propos justifié, d'autant plus qu'il est servi sur un plateau de Crust bouillant à consonance Hardcore, qui ne fait pas de quartier, sans mauvais jeu de mot.
Cela dit, vous pouvez apprécier le contenu de Hellish sans adhérer aux théories énoncées, car son Core teigneux et sans concessions est d'une pureté dans la violence et la lourdeur qu'il serait dommage d'occulter pour des divergences d'opinion.
Mais si, en sus, vous êtes d'accord avec les principes éthiques de CARNISH, alors l'ensemble prendra une valeur encore plus grande.
Viande, pas de viande, respect, mépris, moutons, leaders, peu importe. Mais Crust, avant tout.
Ajouté : Mardi 05 Avril 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Carnist Website Hits: 6544
|