# 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
}
JANTE ALU (ch) - Polish Partout Pastis Nulle Part (2009)

Label : Rewolucja Records
Sortie du Scud : 2009
Pays : Suisse
Genre : Mecanik Thrash Mosh D-Beat Grind
Type : Album
Playtime : 27 Titres - 36 Mins
A l’heure où le stress de l’examen du permis de conduire commence doucement à me ronger l’intestin grêle, ce disque de JANTE ALU tombe à point nommé. Il s’agit en effet d’une excellente révision, sans trop de prise de tête puisque chacune des 27 créations qui composent Polish Partout Pastis Nulle Part sont nommées selon divers éléments qu’on retrouve à l’intérieur d’une voiture. Ainsi, tripper sur « Clé De Contact » ou pleurer sur « Bougie De Préchauffage » ne relève plus de la science-fiction. JANTE ALU fait donc partie de ces formations qui n’en ont pas grand-chose à faire de la renommée internationale, qui écrivent leurs partitions sous le haut patronage du père Houblon et qui le revendiquent. Un délire de cave, pour résumer l’affaire. Le pire, c’est qu’avec ce premier album signé sur le label français Rewolucja Records (DISASTER, CARMINA…), le trio suisse (personne n’est parfait) envoie le pâté de manière assez inattendue.
Avant son insertion dans le lecteur, les aprioris sur cette galette allaient bon train, principalement influencés par le dernier gros bide de GRONIBARD qui était maitre d’hôtel dans le Grand Restaurant du Metal-intellectuellement-limité. Un peu craintif devant ce genre de délire qui frôle souvent l’indigence, « Clé De Contact », appuyé par « Chambre A Air », vient chasser tous les vilains poncifs à grands renforts de Grind bourrin et de guitares saturées. Les musiciens offrent d’agréables moments de détente motivés par une écoute massive de grands bruitistes tels NAPALM DEATH, MUMAKIL, DEVOURMENT ou PIG DESTROYER. A propos de ces derniers, JANTE ALU se fait carrément flasher en délit de plagiat sur « Clé Dynamométrique ». Comme de coutume pour le genre Grind/Crust, les plages sont foisonnantes et courtes. Le mélange aléatoire qui conduit à des titres Punk façon THE EXPLOITED (« Soupape d’Echappement ») comme à des parodies de Black Metal nordique (« Sapin Senteur ») montre que rien n’a été calculé et que le feeling tient une grande importance dans la conception de cette rondelle. Les musiciens ont tout juste le niveau nécessaire pour prétendre figurer un disque digne de ce nom ; Moteur & Transmission (oui, c’est un nom de scène) possède une belle diversité rythmique à sa guitare pendant que les voix des trois compères s’accordent souvent dans la variété entre chant Grind, Punk, pig-squeals, growls, chœurs et compagnie. Beaucoup de samples (rots, dialogues…) étoffent également les compositions, sans qu’on n’éclate de rire à tous les coups… Bref, les suisses sont fidèles au but même de leur projet : produire quelque chose qui tient la route musicalement et qui divertit l’auditeur dans un esprit bon enfant. Alors soit, JANTE ALU n’a proprement aucun avenir dans le milieu mais est-ce réellement leur objectif que de percer sur une scène saturée ? Qu’ils continuent dans leur coin leurs pitreries de lycéens taquins et tout le monde sera heureux. Je vous conseille d’autant plus de profiter du spectacle jusqu’au bout puisque « Tecktonic Moshpit » dissimule une « Capote Rétractable » sympathique cachée dans ses ultimes secondes.
On a, bien évidement, beaucoup de mal à distinguer le talent des trois suisses (pas de marques) parmi celui de ses concurrents alcoolisés mais encore une fois, avaient-ils cette ambition à la base ? Au vu du trip total et du chaos musical que dégage Polish Partout Pastis Nulle Part, ce n’est pas forcément évident. Chacun à sa place : laissons le Grind bête et discipliné à ses chefs de file et le Grind de chiottes aux gros consommateurs de pruneaux tels JANTE ALU.
Ajouté : Mardi 20 Juillet 2010 Chroniqueur : Stef. Score :     Lien en relation: Jante Alu Website Hits: 13884
|