# 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
}
GAMA BOMB (ie) - Untouchable Glory (2015)

Label : AFM Records
Sortie du Scud : 30 octobre 2015
Pays : Irlande
Genre : Thrash Metal
Type : Album
Playtime : 12 Titres - 32 Mins
Le Thrash a toujours abrité en son sein constamment exhibé des joyeux drilles, des farceurs, utilisant volontiers les codes de l'humour en multipliant les références aux gore movies, aux blagues séculaires, et avouons le, au pipi-caca-quequette zembla (comme dirait mon cher frère). Nous pourrions parler des moshers d'ANTHRAX, des pétomanes d'ACID REIGN, des borderline de WEHRMACHT, ou plus récemment des fouilleurs de poubelles radioactives de MUNICIPAL WASTE, les exemples ne manquent pas pour définir les contours d'une frange de bons vivants d'une musique qui pourtant ne manque pas de sérieux dans l'exécution.
Oui, après tout, on peut jouer une musique violente ET faire rire en même temps, ça n'est ni interdit par l'église, ni par les raéliens. Quoique pour ces derniers...
Alors l'Irlande à priori, c'est plutôt vert, plein de flûtes et de bardes qui guident des moutons dans la lande. Un truc un peu Folklo, avec des paysages à faire baver les touristes countryphiles, mais pourtant, c'est bien dans le Nord de ce pays déchiré qu'on est un jour tombé sur une bande d'hurluberlus bien décidés à nous dérider.
Avec eux, pas question de sunday bloody Sunday autrement que pour parler d'une glace de fast food entachée par les exactions d'un serial killer, les GAMA BOMB ne se prennent pas la tête, mais enserrent plutôt celle des autres à grands coups de rythmiques nucléaires et de riffs tournoyants. Depuis Survival Of The Fastest, la barre était placée, sous la ceinture et la guillotine, et rien n'a changé depuis. Quelques LP's sont venus enrichir leur anthologie du Thrash fast & fun, Citizen Brain en 2008, Tales From The Grave In Space l'année suivante, et le très enthousiaste The Terror Tapes il y a deux ans.
Et sous une délicieuse pochette signée par les mimines de Graham Humphreys, auteur de quelques graphismes cultes comme les visuels de The Evil Dead, Lesbian Vampire Killers, et maître es-coup-de-crayon-pulp, se cache donc la dernière livraison carambar des Irlandais, qui une fois de plus ont fait très fort. Oui, Untouchable Glory est en effet largement à la hauteur de ses aînés, même parfois supérieur dans les accès de rage hilare incontrôlable.
A l'instar de certains de ses contemporains, GAMA BOMB ne change pas une recette qui fonctionne. Le gag est toujours savamment et patiemment élaboré, en accordant sa confiance à une section rythmique qui cartonne et stimule les neurones et les jetés capillaires, et à des guitares qui tronçonnent et dessinent un joli sourire d'ange sur le visage de Thrasheurs trop heureux d'être ainsi mutilés.
On connaît le principe depuis les 80's, il a été remis en vogue par quelques teigneux rigolards comme les WASTE justement, ou les plus vilains TOXIC HOLOCAUST et BONDED BY BLOOD, mais rien n'a vraiment changé. Tout comme les comédies les plus fines dérivent toutes de l'art séculaire du splapstick, le Thrash made in Ireland de 2015 trouve sa source dans les écoulements nauséabonds des eighties, et il est facile de reconnaître la patte mosh & violence d'EXODUS, ANTHRAX, et autres VIRUS dans la musique de Joel Grind et consorts.
Mais malgré les années et les menaces de redite, ça fonctionne toujours très bien, et l'humour second degré de ces iconoclastes du riff qui castre fait toujours mouche, puisqu'il est mis en exergue par une musique intelligente et efficace qui ne se contente pas de placer pendant le repas quelques vannes éculées depuis longtemps.
Production maousse de Scott Atkins (SAVAGE MESSIAH), morceaux qui ruminent avant de partir comme des dératés, saltos et double axels des guitares qui tournent et virent comme des chauve-souris défoncées, Untouchable Glory est jouissif, disons le sans honte, et comme d'habitude le groupe à été suffisamment malin pour privilégier le format court, au niveau des titres comme de la globalité.
Une demi heure et bonne nuit les petits, mais avant de fermer les yeux, les contes à base de monstres, de tortures douloureuses, et autres odes à la picole se succèdent sans discontinuer. D'ailleurs, les gus se sont même fendus d'une vidéo bien torchée, à base d'extraits d'arts martiaux sur lesquels viennent se coller des lyrics fendards, pour illustrer le morceau d'ouverture "Ninja Untouchables/Untouchable Glory", qui musicalement rappelle les ruades d'AT WAR et autres chantres d'un Speed Thrash franc et sans chichis.
Je ne vais pas faire dans le détail d'autant qu'eux non plus, alors attaquons de front et citons pour l'exemple le lumineux et bref "James Joint", qui ne passe pas la minute, "Avenge Me!" et son intro/riff à la DESTRUCTION en bonne et due forme, le Heavy cautérisé à la chaux de "Tuck Your T-Shirt In" et sa basse brillante qui part vite en vrille, le plutôt BULLDOZER/ACROPHET "She Thing" et le méga compressé à la double grosse caisse pressée 'I Will Haunt You" et son titre en forme de menace qu'on ne prend même pas au sérieux.
Vous avez le truc, du Speed léché, du Thrash racé et du Heavy compacté, c'est bien vous avez tout résumé en une seule formule avérée. Non les GAMA BOMB n'ont pas changé, pas plus que Julio, et continuent leur travail de sape sans jamais lasser, bien au contraire.
Untouchable Glory est une nouvelle bombe au poivre qui explose à la moindre étincelle même involontaire, et s'apprécie comme on colle un coussin péteur sous le cul de sa grand mère.
Tout ici est parfait, de la pochette au contenu, des riffs aux accélérations rythmiques, et le chant toujours aussi convaincant ne vient qu'apporter la plus value fatale à un album qui frôlait déjà l'orgasme instrumental. C'est une épiphanie, et surtout une belle preuve d'allégeance à un style qui n'en finit plus de bomber le torse, fier de voir ses petits-enfants reprendre le flambeau.
Allez y n'ayez pas peur, les mecs ne mordent pas. Et puis imaginez, ça aurait de la gueule un accueil du Ferry bondé de touristes a Valentia Island par GAMA BOMB non ?
Ajouté : Jeudi 25 Août 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Gama Bomb Website Hits: 8234
|