# 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
}
BRAIN FAMINE (usa) - Exploding Paranoid Universe (2015)

Label : Auto-Production
Sortie du Scud : 19 octobre 2015
Pays : Etats-Unis
Genre : Death Metal Grind
Type : Album
Playtime : 10 Titres - 30 Mins
Oui non ne me dites rien je vois le tableau. Samedi soir, la picole avec les potes, la télé avec bobonne, les puzzles avec les nains, ou... la solitude.
Mais vous savez bien que la solitude ça n'existe pas. Alors pour vous, les esseulés, les isolés, les parias et les abîmés, j'ai la solution. Oui je vous parle à vous parce que les autres, après tout, c'est bien fait ils ont choisi leur destin.
Vous, pas forcément.
Moi le samedi soir, comme les autres de la semaine d'ailleurs, je fouille, je cherche, de la matière, de quoi me cramer le cerveau et les trois neurones qui me restent.
Et ce soir, bonne pioche, quelques unes vont encore finir au tapis. Merci les américains !
Yeah, Weymouth (pas Tina, la ville), Massachusetts, je plante le décor, mais à vrai dire, il est facile à imaginer. Une vieille zone industrielle défraîchie et laissée à l'abandon, et à l'intérieur, une pièce vaguement aménagée en local de répète, avec trois zigues qui font un boucan à réveiller les presses hydrauliques. Leur nom ? Globalement, BRAIN FAMINE, individuellement Matt O'Rourke (basse), Chris Leamy (guitare) et John Gillis (batterie). Ils se partagent le chant, mais aussi le champ. D'action. Certes, sur ce point là, la rythmique à une sacrée longueur d'avance, mais la guitare n'est pas pour autant en reste. Quant au chant, selon leur site Facebook, il est anonyme, selon leur Bandcamp, ils se le partagent, avec avantage à Chris Et Matt. Mais à dire vrai, il est si caverneux et grave qu'on ne fait pas vraiment la différence entre les deux...
La différence, on la fait par contre entre leur musique et celle des autres. Car ils ont beau faire les malins et se la jouer gros bourrins avec leur Face-slicing GrindThrashDeath (c'est eux qui le disent, pas moi), leur album n'est pas pour autant privé de nuances et juste bon à caler une fissure dans un muret.
Pas franchement tarte à la myrtille, mais pas non plus quatre quart ravagé par un kilo de beurre, leur Death Grind est certes roboratif, mais précis, puissant et surtout, imaginatif... parfois.
Et après une intro maousse que même le NAPALM de 88 n'aurait pas tentée, ça part direct dans les blasts, avec cassures sans prévenir, breaks imprévisibles, roulements de caisse claire calqués sur le défibrillateur, et hurlements en tous genres. Solo à la Trey A. pour caler un peu, et ça repart de plus belle en se prenant les pieds dans un tapis mi BRUTAL TRUTH, mi FULL OF HELL, mi AVULSED, et re mi coton derrière. En gros, la barbarie du Death moderne et brutal, la vélocité du Grind et sa folie, mais surtout, de la technique sous des atours grossiers et un but, faire du bruit, mais dans les règles de l'art.
Alors, cocktail. Des riffs à la fois salement Death et découpés façon Grind, une rythmique qui abat les chênes par paquets de cent, et une furie sonore incontrôlable qui vrille les oreilles et brise les orteils.
C'est efficace comme une Vodka/Schnapps avalée cul sec, mais de temps à autres, ça grogne un peu moins et ça groove dans tous les coins. Et quand les saligauds manipulent le Heavy pour le faire rentrer dans un cageot Death, ça respire le CARCASS de Necrotism/Surgical Steel par tous les orifices ("Absurdist Eurphoria"). Oui, le CARCASS de Steer et Walker, qui manifestement à l'époque n'ont pas donné des cours de dissection dans l'anus d'un constipé, puisque BRAIN FAMINE à bien retenu la leçon, en l'adaptant en quelque sorte à la sauvagerie primale du Death/Grind de l'Est.
Est/Ouest, confrontation, et quand ça pète, ça donne un truc bizarrement prenant au riff presque ludique comme "Ignite & Repeal", tellement touffu et diffus qu'il ressemble à un délire MathGrind de furieux.
Court, médium, long, peu importe le format puisque tout est bon. Les tancées lapidaires qui ne se posent pas de question ("Exploding Paranoid Universe", à moitié bouffé par l'intro mais qui cavale quand même comme un lièvre hors du chapeau), les dîners aux vieilles chandelles qui s'éternisent jusqu'au vieux flambi moisi ("Implement Systematic Dogmacide", toujours aussi CARCASSien dans l'esprit, mais qui se lâche complètement et part dans tous les sens, "Wallow At The Lower Rungs" qui essaie tellement de pistes qu'on finit par s'y paumer, mais qui ne lâche jamais la pédale du pied).
Mais comme je l'ai dit, le flacon importe peu dans le cas de BRAIN FAMINE, puisque l'ivresse et là. Production parfaite et bien abrupte, une bonne fournée d'intros pour mettre dans l'ambiance, option "femme en détresse harcelée par un serial killer", pour un Death Grind très futé qui ne lorgne pas au dessous, mais bien au dessus.
Bon certes, parfois ça sent quand même la vieille piste accélérée pour donner le tournis, un peu à la MACABRE de Grim Reality ("Selfward While Blind", le riff de guitare supersonique à la perceuse, faut pas non plus nous prendre pour des quiches les gars...), mais ça charcute, ça empile la barbaque, et regardez bien, pas une goutte de sang par terre.
Oui CARCASS, BRUTAL TRUTH, l'école Death Grind moderne, mais une putain d'énergie débridée, et juste ce qu'il faut de créativité qui tombe pile au bon moment. Avec ça, votre cerveau ne risque pas de crier famine...
"And the lights all went out in Massachusetts
And Massachusetts is one place I have seen.
I will remember Massachusetts"
Oui Barry G, tu es tout seul maintenant sans tes frères, mais il faut t'y faire. Le Massachusetts, ça ressemble à ça maintenant.
Ajouté : Dimanche 12 Juin 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Brain Famine Website Hits: 7902
|