# 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
}
PANZERBALLETT (de) - Breaking Brain (2015)
Label : Gentle Art Of Music
Sortie du Scud : 30 octobre 2015
Pays : Allemagne
Genre : Progressive Math Jazz
Type : Album
Playtime : 9 Titres - 51 Mins
Trick or Treat?
Allez, je suis bon prince, et sans même que vous n'ayez besoin de me faire peur, je vous donne les bonbons, comme ça. Par contre méfiez vous, la friandise en question est allemande, forte en bouche, très sucrée mais aussi très relevée, et son goût est parfois...étrange et indiscernable.
Bon, vous connaissez le principe du Verkrassung ? Si vous n'êtes pas germanophone, il est probable que non. Mais les membres de PANZERBALLETT le connaissent très bien, puisqu'ils l'appliquent dans leur vision musicale, et au travers des albums qu'ils sèment depuis 2005 et la sortie de leur initial et éponyme effort.
En gros, c'est simple. C'est un refus des idées préconçues, et un challenge perpétuel qui consiste à remettre en cause des idées, même si pour cela il faut partir dans les extrêmes.
Idéologiquement, appliqué aux relations humaines ou à la politique, c'est assez risqué. Musicalement par contre, c'est un concept que les PONTY, ZAPPA, KING CRIMSON, CYNIC, DILLINGER ESCAPE PLAN, NAPALM DEATH et autres BOULEZ ont mis en pratique, tout comme CALE, ENO, et des dizaines d'autres. Ca débouche la plupart du temps sur des résultats surprenants, parfois même géniaux, ou au contraire, à côté de la plaque. Et dans le cas des allemands, pile au milieu de l'assiette. Comme un gros bonbon d'Halloween.
Sept LP's, dont deux live en DVD et un hybride citant ABBA comme ZAPPA, il y a de quoi piocher, comme dans un bocal. Mais quelle est concrètement le produit de la mise en application de cette théorie par les allemands ? Posez la question à Jan Zehrfeld, petit génie de la guitare et principal compositeur de PANZERBALLETT, il vous répondra certainement de la même façon qu'il l'a fait sur Breaking Brain ; en musique. Absconse, diverse, hétéroclite, inventive, bouillonnante, mais aussi inclassable.
L'homme n'a pas étudié à l'Université de Musique et d'Art Dramatique de Grasse, à la Sibelius Academy de Helsinki, au Conservatoire Richard Strauss de Munich ou au prestigieux GIT de Californie pour se lâcher sur du gros douze mesures. Non, Jan est Jazz à la base, pas par hasard et ça s'entend. Il aurait pu devenir Al DiMeola, Allan Holdsworth, John McLaughlin ou Larry Carlton, mais voilà, il aime le Metal. Pour certains, dont ses anciens profs à n'en point douter, c'est une hérésie le condamnant de facto au bûcher des vanités chromatiques. Pour d'autres, lui et nous principalement, c'est un bonheur et une chance. Pourquoi ? Ecoutez Breaking Brain, vous comprendrez.
L'idée d'un combo pur Metal Jazz est bien sur venue de Jan, qui voulait associer la finesse du second style à la puissance du premier, pour pouvoir exprimer son talent sans brider sa colère interne. Au final, il a amalgamé tellement de genres différents que cette appellation même est devenue trop restrictive. Car on trouve chez PANZERBALLETT du Jazz et du Metal certes, mais aussi de la Fusion, du Jazz Rock, du progressif, en gros, une convergence entre DREAM TEHATER, DILLINGER ESCAPE PLAN, TRIBAL TECH, KING CRIMSON, avec une petite touche dadaïste et mélodique à la ZAPPA.
Et ce qui sur papier semble tremper sa plume dans l'encrier de l'improbable devient une gigantesque partition cohérente mais libre une fois animée par des notes.
Section rythmique, sax, guitare, beaucoup d'impro, des gammes, mais aussi une énergie incroyable, issue d'une osmose entre des techniques renvoyant les Portnoy, Malmsteen et autres Trujillo à leurs chères études, sans pour autant se la jouer pédagogue ou virtuose chiant et assommant.
En plus, l'humour est là, ce qui prouve que le quintette ne se prend résolument pas au sérieux, et cette reprise éclair et Math Jazz décalé du "Mahna Mahna" de Piero Umiliani rendrait encore plus dingue le batteur fou et Piggy la cochonne. Drôle et technique, oui c'est possible, mais quoiqu'il en soit, ceci n'est pas un cas isolé, puisque ce nouvel album est truffé de petites trouvailles géniales, comme ses prédécesseurs.
Si vous cherchez plutôt le versant Metal pour attaquer la montagne Breaking Brain, ça tombe bien, le groupe vous la présente en toute honnêteté dès le départ avec un tonitruant "Euroblast". Hallucinant de dextérité dès l'entame, le quintette ne se gêne pas pour fusionner le Jazz pur (pas le Jazz Rock, vous comprendrez dès l'intro) et le Metal le plus saignant, singeant dans l'absolu une rencontre au somment entre DT et DEP, sous la conduction de BOULEZ à la baguette et de ZAPPA pour l'esprit retord. Sax qui s'époumone et pique en vrille au dessus de la rythmique, basse qui pulse et revisite tout son manche, plans de batterie écoeurants de facilité, en sept minutes, la messe est dite, et les instruments d'amateur rangés.
Lorsque l'ensemble décide d'appuyer un peu sur la pédale de volume, les cinq acolytes nous sortent un "Smoochy Borg Funk" qui comme son nom l'indique, rend hommage à James Brown tout en taquinant un Free Jazz presque expérimental. Et lorsqu'ils décident d'appuyer encore plus, c'est limite Thrash aux entournures et "FrantiK Nervesaw Massacre" d'étaler de jolies parties de guitare en sextolets qui s'écroulent sur un sax smooth comme une caresse de velours.
Et comme si la démonstration n'était pas suffisante, PANZERBALLETT décide soudain d'écraser la concurrence en les reléguant dans les abîmes de la Pop populiste et grossière par un "Shunyai" schizophrénique au dernier degré. Tout le monde remise le peu d'humilité restant au placard, et chacun y va de son intervention sans écraser les autres, au rythme échevelé d'un Jazz Metal Fusion en... fusion.
Et pas la peine de singer Mancini pour amuser la galerie, ou d'utiliser des samples de machine à écrire sur "Typewriter II" pour faire comme KRAFTWERK, on a compris à qui on avait affaire.
Alors oui, Breaking Brain à largement de quoi vous cramer les neurones. Oui il est toujours à la hauteur des exigences du groupe, mais celles ci commencent à atteindre des hauteurs qu'on ne discerne plus à l'oeil nu. Oui, c'est toujours aussi Jazz Metal Fusion Funk progressif. De plus en plus même. Sauf que bientôt, il va bien falloir trouver un véritable nom pour coller au style.
Mais ça, je vous laisse chercher. On ne me mène pas à la baguette moi.
Ajouté : Lundi 24 Octobre 2016 Chroniqueur : Mortne2001 Score : Lien en relation: Panzerballett Website Hits: 6484
|