# 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
}
BACKYARD BABIES (se) - Four By Four (2015)
Label : Gain Music Entertainment
Sortie du Scud : 28 août 2015
Pays : Suède
Genre : Sleazy Hard Rock
Type : Album
Playtime : 9 Titres - 34 Mins
Un album éponyme en 2008, une grosse compilation quelques temps plus tard, et le stand by. Rien. On se demandait même si les joyeux trublions suédois allaient un jour rejouer ensemble. Avec Nicke parti s'amuser avec son projet HOMELAND, et Dregen qui arpentait les scènes sous l'oeil admiratif de Michael Monroe, ça semblait mal parti, ou plutôt, chacun de son côté.
C'était sympa, ça offrait un peu de fraîcheur, de nouveautés, mais on les aimait tant nos BB qu'ils nous manquaient un peu... Leurs albums immédiats et instinctifs, leurs prestations live en dents de scie, leur look chargé... Enfin moi ils me manquaient un peu quand même, d'autant plus que Backyard Babies, l'album, m'avait vraiment laissé sur le cul, avec sa dose de Rock Sleazy juvénile, et puis, j'avais vraiment envie de savoir si Zoe était si bizarre que ça...
"Nous espérons que le public partagera le même enthousiasme que nous avons de reprendre l’histoire là où nous l’avons laissée en 2010. Nous sommes conscients de nous attaquer à un monstre, mais le Rock’n’Roll n’est pas mort"
Nicke et Dregen ont peut être raison après tout, le Rock n'est pas encore mort, enfin sous certaines formes. Et ils s'ingénient tous les deux à le faire vivre, sous perfusion teen, mais après tout, n'est ce pas une musique qui nous fera nous sentir jeunes jusqu'au bout ?
Abordons le cas 4x4. 16 ? L'adolescence? Je ne sais pas, mais ce que je sais par contre, c'est qu'après sept ans d'absence discographique officielle, à peine plus de trente minutes de musique, c'est peu. Mais peut être est ce mieux ainsi, de réduire au maximum et de ne garder que l'essentiel, le plus fort.
Est ce le cas ?
Oui, en profondeur, pas forcément en surface.
Ce qui faisait la force des BABIES, c'était cette capacité à pondre des hymnes immédiats, le genre de légèreté Sleaze Punk Rock qu'on fredonnait à peine entendus. Sur Four By Four, sans changer leur lipstick de sac à main, les suédois ont joué la carte de la durée, et il faut multiplier les écoutes pour s'imprégner totalement des morceaux. On ne retrouve pas forcément de "Nomadic" ou de "Where Were You" ici, mais ça n'empêche pas les chansons d'être de très grande qualité. Disons - toutes proportions gardées - que le groupe fait preuve de plus de modération et de maturité, pour employer une expression convenue. Les guitares sont souvent plus calmes, moins "chien fou", et même le chant de Nicke est plus posé, toujours aussi nasillard bien sûr, mais moins narquois, et c'est patent sur des interventions comme "Mirrors (Should be Broken)", semi ballade un peu amère et presque "progressive". Peut être que l'expérience acquise en dehors du groupe les a changé, peut être que de côtoyer la légende Monroe a poussé Dregen à calmer ses ardeurs et à poser son flightcase plus délicatement... Non que l'album soit particulièrement posé et réfléchi, mais moins direct, moins épidermique, même si certaines pistes ont conservé ce sens de l'urgence Rock qu'on aime tant chez eux...
En premier lieu, le single, "Th1rt3en Or Nothing", qu'on pige immédiatement, et qui ne minaude pas. Nicke en dit :
"Nous avons jeté un regard en arrière, et essayé de comprendre ce que les fans aimaient tant chez nous, et ce que nous mêmes aimions aussi. Nous avons essayé de concentrer tout ça dans "Th1rt3en Or Nothing", qui n'est qu'une autre chanson Rock avec peut être un groove un peu différent de d'habitude... Il y a en effet pas mal de cloche dedans, mais c'est juste du Rock après tout".
Du Rock oui, mais plus maîtrisé, moins "chien fou", et plus Glam que Punky en fin de compte. Mais ça n'est pas pour autant que les enfants du Rock ont trop grandi et oublié d'où ils venaient. Exemple, "Wasted Years", qui se pose en constat de toutes ces années passées sur la route, et qui retrouve les tics de Backyard Babies, mais avec un recul plus adulte. Mélodie nostalgique, tempo travaillé et moins basique, breaks plus précis, le tout emballé en moins de trois minutes. Mon préféré ? Je ne sais pas, mais un des meilleurs en tout cas.
Ils n'ont toutefois pas complètement perdu la main pour rallier les foules, comme le démontre le très sobre et direct "I'm On My Way To Save Your Rock 'N' Roll", aux paroles aussi naïves que sa musique. Mais même leur ballade est beaucoup plus amère qu'à l'habitude, moins évidente dans les harmonies, un peu comme les dernières que POISON pouvait proposer, mâtinées d'un petit feeling Country de fin d'après midi. "Bloody Tears" est vraiment bien troussée, et sans faire couler les larmes, évoque la jeunesse, le temps qui passe, et brode une trame serrée...
Ils referment même la porte avec un truc strange, un peu bancal, assez bluesy dans le traitement et qui surtout s'étire sur sept minutes, avec quelques petites choses surprenantes, comme ce pont lourd et tendu, aux riffs sombres, qui se souviennent de loin des messes noires de Iommi. Choeurs à la BEATLES sur "I Want You", coda hypnotique dans le style du Lennon de 69, c'est vraiment "choquant" quelque part, comme les notes graves de cette contrebasse qui résonne dans un décalage passé/présent, mais c'est somme toute très agréable...
Oui c'est clair, on s'attendait à un constat un peu définitif, un genre de station assise sur le trône du Rock Punk n'Sleazy, pour bien montrer qu'ils n'avaient pas changé, mais les gens changent...C'est une bonne chose après tout, les albums spontanés ont déjà fait leur temps, et si on souhaite s'y replonger, il suffit de se passer Backyard Babies ou People Like People Like People Like Us...
Et puis, ils n'ont pas tant changé que ça, juste vieilli. Mais Four By Four est un sacré boulot, sans devenir une prise de conscience, il vous suffira juste de faire un petit effort pour reconnaître les mecs, et laisser le temps faire son affaire pour imposer des chansons qui sont réellement bonnes.
On est tous des branleurs, mais on accepte aussi les responsabilités. Rock, Punk, ou autres. Touchant, voilà le mot, Four By Four est un album touchant, qui sait rester efficace, sans être aussi futile que par le passé. A vous de voir si vous assumez le temps qui vous marque ou pas.
Eux le font.
Ajouté : Samedi 09 Janvier 2016 Chroniqueur : Mortne2001 Score : Lien en relation: Backyard Babies Website Hits: 5420
|