# 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
}
NORBERT KRIEF (FRA) - Nono (2011)

Label : XIII Bis Records
Sortie du Scud : 6 juin 2011
Pays : France
Genre : Hard Rock
Type : Album
Playtime : 13 Titres - 51 Mins
Pas besoin d’être un intime du milieu du Hard français pour connaître le nom de Norbert Krief. Comment ? Connais pas ? Hum… Et Nono de TRUST, ça va mieux ? Ok.
Le bonhomme à le CV aussi étoffé que le talent, et à l’écoute de cet album, on peut aisément se dire que ses débuts aux Club Med sont bien loin… Outre la saga TRUST qui fut bien sur celle qui marqua le plus les esprits (et au passage, saviez vous que NTM avait repris « Antisocial » ? Hum ?), Norbert fut le compagnon live de notre Johnny national, mais surtout, un musicien de cœur, qui n’a cure de la flatterie de bas étage.
Alors au moment d’écouter son premier album solo, les questions fusent. A quoi s’attendre ? Une énième démonstration de six cordes aussi rébarbative que futile ? Du Jazz Rock roboratif ? Du Blues 12 temps pénible et propice à des digressions interminables ?
Rien de tout ça, car Nono à choisi très finement l’option « Groupe » pour son retour au premier plan, et grand bien lui en prit ! Et attention, pas de piège avec des musiciens « fantômes » juste là pour alimenter un casting improbable, non, une réelle cohésion, un travail d’ensemble pour un résultat… détonant !
Foncièrement Rock, pas franchement Metal, un peu roublard, parfois très abordable mais toujours surprenant, Nono est un LP pensé, composé et interprété avec conviction, dans lequel la guitare de Norbert prend toute son ampleur, et sait rester au premier plan tout en servant les compos, et non l’inverse.
Après l’ouverture classique et discrète de « Blink Of An Eye », on tombe direct sur « A Dieu », et son groove peinard qui colle aux oreilles, la voix nonchalante à la CharlElie Couture pour un Rock limite ricain, et première grosse surprise de l’album. Un refrain percutant qui donne envie de bouger, et surtout un son parfait !
« Do It Right », bien compact, reste sur le même moule et continue l’opération séduction. Un up-tempo simple et parfaitement exécuté, qui fait oublier que l’on a affaire à des musiciens bien français !
Le phrasé très Mark Knopfler de « Borderline », souligné par un harmonica pertinent nous dépayse encore un peu plus, tandis que le quasi Pop « Here And Now » constitue la seconde grosse surprise de l’album, qui en déroutera sans doute plus d’un !
La douce Adeline vient poser son tissu vocal sur un « She’s Burning Up My Bed » torride, qui doit autant à John Cougar Mellencamp qu’à un Faster Pussycat suintant, avec son saxo s’époumonant, et au milieu de l’album vient alors l’heure d’un premier bilan.
Norbert, petit cachottier, tu devais vraiment attendre aussi longtemps pour nous proposer une telle musique ? Tu n’aurais pas pu faire l’effort de te manifester avant au lieu de participer à des réunions toujours plus foireuses de ton groupe phare ? Car en seulement six titres, tu développes plus d’idées que sur bon nombre d’albums de TRUST, et ce, même si l’inspiration n’est pas la même !
Et ça n’est pas le reste de ton album, partagé entre l’intimisme subtil (« Wavedream », « Channel 68 »), le boogie sulfureux (« Vagabondage »), le Rock up in your face (« How Does It Feel »), ou le plaisir rétro (« Come On Rock n’Roll ») qui viendra contredire ce constat !
Même ta reprise du déjà bien entamé « On The Road Again » est pleine de fraîcheur et de joie de jouer !
Que dire alors d’un album qui semble avoir été enregistré dans l’unique but de se faire plaisir, et qui, à l’arrivée, nous offre tant de plaisir musical ? Comment remercier un musicien qui nous a déjà tant donné, et qui continue à le faire en toute humilité, avec cet incroyable talent qu’on lui a toujours connu ?
C’est simple. Il suffit d’écouter Nono avec son cœur, en mettant de côté toutes nos attentes, et de l’apprécier pour sa musique honnête, mais jamais simpliste, pour sa bonne humeur contagieuse, et pour sa diversité incroyable. Il est certain que bon nombre d’entre vous ne comprendront pas mon enthousiasme, mais c’est aussi cela la musique.
Un bonheur simple.
Ajouté : Mercredi 01 Juin 2011 Chroniqueur : Mortne2001 Score :     Lien en relation: Norbert Krief Website Hits: 14208
|