# 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
}
WIG WAM (no) - Wall Street (2012)
Label : Frontiers Records
Sortie du Scud : 18 mai 2012
Pays : Norvège
Genre : Hard / Glam Rock
Type : Album
Playtime : 12 Titres - 44 Mins
Avant TERÄSBETONI, avant KEEP OF KALESSIN et avant même la victoire finale des finlandais de LORDI, il y a eu un autre groupe assez fou pour représenter son pays dans le kitchissime concours de l’Eurovision. C’était en 2005 et plus personne ne se souvient de WIG WAM ni de la chanson « In My Dreams » (qui pour l’anecdote, a propulsé la Norvège à la neuvième place). A l’époque, ce groupe scandinave qui voue depuis toujours un véritable culte pour le Glam Rock des années 80, au point de se peinturlurer les babines d’un délicat rouge à lèvres couleur griotte, sortait un premier disque plus que convaincant du nom de 667… The Neighbour Of The Beast et le coup de pub était idéal. A-t-il pour autant fonctionné ? Suffisamment en tout cas pour qu’une page Wikipedia, l’accomplissement ultime pour tout Homme, leur soit consacrée. 2012, l’année du retour. Wall Street, un quatrième album qui fait mal aux bourses. Les superlatifs me manquent.
Et quoi ? C’est ça le Glam moderne ? Triste, je suis. Je vous avouerais que je n’ai pas assez de courage pour revêtir la tenue type du glameur, mais je suis quand même capable de reconnaître des vestes en skaï rongées par les mites et des choucroutes qui pourraient héberger une colonie de lentes. WIG WAM n’est pas du genre négligé, oh non. Même s’ils pratiquent un Hard / Glam Rock directement inspiré des années eighties, la production ultra-boostée de ce Wall Street désavoue complètement ce penchant trompeur pour le old-school. Les Norvégiens font dans un Glam tout ce qu’il y a de plus contemporain. Et on a vraiment l’impression de passer d’un extrême à un autre. Lisse, sucrée, au goût synthétique de chewing-gum, leur musique est d’une niaiserie sans bornes. Pourtant, le coup de booster donné par l’éponyme est foutrement sexy. Un bon riff, un bon refrain, une voix loin d’être cruche, que voilà un démarrage intéressant. La suite sera une descente aux enfers digne d’un RC Lens ou d’un FC Metz. A tel point qu’en réécoutant cet opus, je me suis demandé si c’était bien le même groupe qui jouait ces quelques morceaux, tant tout est différent d’une piste à l’autre. Merci messieurs pour ce bel album de variétés. Mais j’étoffe un peu. « OMG ! (Wish I Had A Gun) » passe encore, grâce à son refrain pas dégueu. Mais le naturel Glam-cornichon des Scandinaves revient au galop dès « Victory Is Sweet » et ne nous lâchera plus d’une semelle. L’indigence est atteinte assez rapidement, treize minutes montre en main. Entre « The Bigger The Better » qui passe pour une reprise Sleazy-Rock-Electro d’Aaron Carter ou « One Million Enemies » dont le début ressemble étrangement au motif initial de « La Groupie Du Pianiste » de Michel Berger (si si !), on ne sait plus où donner de la tête. Aussi, WIG WAM a le désavantage d’avoir à sa tête un chanteur au phrasé rigolo, à l’accent surjoué et aux frasques vocales théâtrales (« Try My Body On »). On se fend bien la poire, c’est vrai. Les musiciens n’assurent pas davantage. Des rythmiques faciles, un Hard Rock fashion, bling-bling et easy-listening, il n’en faut pas beaucoup plus pour reléguer Wall Street au rang de disque lourdaud, aussi drôle que les blagues machistes de tonton Raymond au comptoir PMU du coin. Le pauvre a bu « seulement » deux bières. Reste à savoir si c’était dans des verres à galopins ou dans des seaux de cinq litres. A la fin, il ne sait plus ce qu’il raconte, et ça débouche sur une reprise platonique de « School’s Out » du grand Alice. Mais le clou du spectacle reste incontestablement « Tides Will Turn ». J’ai longtemps hésité à vous en parler, mais c’est trop tentant. Pour faire bref, à côté de cette compo pseudo-romantique et à pleurer de rire, le « (Everything I Do) I Do It For You » de Bryan Adams, référence ultime de la balade gnangnan, mérite une Victoire de la Musique.
Fini de rire les WIG WAM. Posez vos couilles sur table ! Parce que les petits comiques de votre espèce, on les entend brailler chaque jour sur les stations qui diffusent du Hit Music Only. Fallait-il que votre œuvre, d’une rare fadeur, vienne écorner l’image assez positive que j’avais du Glam Rock ? Vos refrains, vos morceaux d’une facilité insolente, vos hommages à TWISTER SISTER (eux ont composé un « Burn In Hell », juste pour dire), ce n’est que du vent. Et il emportera vos strass et vos paillettes loin, très loin. Aussi loin que possible.
Ajouté : Vendredi 19 Octobre 2012 Chroniqueur : Stef. Score : Lien en relation: Wig Wam Website Hits: 6734
|