# 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
}
NERVOUS IMPULSE (ca) - Time To Panic (2015)

Label : Blast Head Records
Sortie du Scud : 10 février 2015
Pays : Canada
Genre : Death Grind Metal
Type : Album
Playtime : 15 Titres - 36 Mins
Chacun à les buts qu'il souhaite après tout... Il y en a qui veulent juste être heureux, d'autres avoir un bon boulot et bien gagner leur vie, d'autres fonder une famille et avoir une jolie maison avec un chien.
Et puis il y a les autres, ceux dont les buts avoués sont un peu plus étranges...
Situons le propos à Montréal, Canada, tiens. Là bas, il fait froid, c'est joli, mais il fait froid, alors on doit certainement avoir envie de se réchauffer. Et la vision des choses de la vie doit être altérée par les conditions d'existence différentes, c'est indéniable.
Il parait qu'à une certaine époque, certains pensaient que lorsque les hommes vivraient d'amour, il n'y aurait plus de misère, et que les soldats seraient troubadours. <br<
Cette prophétie/espoir ne s'est jamais réalisée je crois. Mais du coup, je pense que ce matin j'ai trouvé des troubadours qui deviendraient de bon soldats.
Alors, fusionnons tout ça. Canada, froid, se réchauffer, vision de la vie différente, troubadours. Et si ces inconnues dans l'équation n'aboutissaient qu'à un seul résultat valable ? Oui, je le crois aussi. Mettons là en forme. Canada+froid+se réchauffer+vision de la vie différente+troubadours = NERVOUS IMPULSE. Simple non, and accurate.
Mais si, ils le disent eux mêmes. Formé en 2007 sous l'impulsion de Yan Chamberland, l'ambition de ce groupe à toujours été de produire la musique la plus brutale possible, à la croisée des chemins entre le Grind européen et le Brutal Death US. Déjà responsable d'un LP, Enough for Dementia en 2009, chaudement accueilli par une presse toujours avide de sensations brutales, ils reviennent en 2015 avec un nouveau long brûlant comme des braises de barbecue cannibale, foncièrement costaud et sans pitié aucune pour toute forme d'harmonisation musicale.
En préambule, ils citent volontiers des influences en rapport avec leur démarche. BRUTAL TRUTH, AGORAPHOBIC NOSEBLEED, MAGRUDERGRIND, SUFFOCATION, INTERNAL BLEEDING, FOETOPSY, ce sont des repères fiables et je vous garantis que lorsque vous aurez glissé Time To Panic dans vos esgourdes, vous les approuverez aussi, et comprendrez de suite la pertinence du titre choisi.
Ne tournons pas autour du parterre de pétunias, Time To Panic est une boucherie, un truc qui ratiboise au ras du sol tout ce qui pousse. Mais de toute façon, là ou NERVOUS IMPULSE, l'herbe ne repousse pas, ou alors complètement cramée. Leur recette est simple, prendre sous influence le Death le plus barbare, le Grind le plus torride, les assimiler et les régurgiter avec une puissance dévastatrice. Aucune empathie, aucune tempérance, on se concentre sur les riffs les plus gras et efficaces, on les anime d'une rythmique qui ne semble pas connaître le sens du mot "modération", et on porte le tout à ébullition sous le souffle d'un grogneur des cavernes qui est décidemment toujours de mauvais poil. La marmite chauffe, la sauce ne déborde pas, mais une fois dans l'assiette, ça arrache la gueule et ça carbonise la langue et le palais.
Les terroristes sont en plus dotés d'une production bouillonnante, compressée au maximum, qui "3déise" les morceaux et donne le sentiment qu'ils sont prêts à exploser à la moindre étincelle. La basse est tendue, gonflée à outrance, la guitare est compacte, grave et brillante, le chant traité comme un mode d'expression animal, et pour peu que l'on soit friand de ces batteries mitraillettes qui tirent à vue sans laisser de témoins, la perfection dans le style n'est pas si loin que ça...
Mais loin de se contenter d'empiler les borborygmes sur fond de cacophonie bruitiste de fin du monde, le quatuor à travaillé son plan de bataille pour décimer proprement, sans laisser de traces. Chaque attaque est patiemment élaborée, pour avoir une efficacité maximale, et même si leur avancée laisse parfois place à des blitzkriegs un peu fous et moins canalisés ("Time To Panic", "Vexed" reprise d'AGORAPHOBIC NOSEBLEED), la plus grande partie de leur marche en avant se montre sous un jour implacable, comme une poignée de soldats et de blindés battant la campagne sans relâche.
Pour ressentir cette puissance de feu de plein fouet, il est évident qu'une écoute intégrale s'impose. Car c'est ainsi que la troupe a conçu les choses. Car même si certains mouvements sont plus efficaces que d'autres ("Syrian NATO Meat Grinder", carrément barré, "The Neighbor's House Is On Fire", cintré et abandonnant presque toutes les caractéristiques d'une musique produite par des êtres humains, "Eclipse Of Personnality" et sa rythmique au cordeau), la guerre contre la mélodie et la raison est globale, et la demi heure subie laisse sur le flanc, blessure ouverte et bouche en coeur, avec éclat d'obus entre les côtes.
Alors, peut être que quand les hommes vivront d'amour, il n'y aura plus de misère. Seulement, même si les NERVOUS IMPULSE sont troubadours, leur pratique musicale de caserne en feu les fait plus ressembler à des soldats de l'extrême, affûtés, sans pitié.
Et si jamais un jour, l'amour remplace la violence, nous, nous serons morts mon frère.
Ajouté : Mercredi 01 Juillet 2015 Chroniqueur : Mortne2001 Score :     Lien en relation: Nervous Impulse Website Hits: 6114
|