# 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
}
CRAZY LIXX (se) - New Religion (2010)
Label : Frontiers Records
Sortie du Scud : 13 Mars 2010
Pays : Suède
Genre : Heavy Metal Mélodique très contagieux
Type : Album
Playtime : 12 Titres - 45 Mins
On a trop tendance à associer les pays nordiques au froid, à l’hiver, à la rigueur des réglementations anti-tabac et alcool et à la liberté des mœurs. Ceci dans un contexte géopolitique bien sur.
En musique, on pense souvent au Black Metal et à la Norvège. Quant à la Suède, les premiers groupes qui viennent à l’esprit sont ABBA, EUROPE et consorts. En gros, du grand public pur et dur, pas grand-chose à se mettre sous la dent lors d’une fringale hautement métallique.
Occulter des groupes aussi essentiels en leur temps que 220 Volts, ou les plus contemporains BACKYARD BABIES relèverait de l’injustice flagrante. Et oui, les suédois, tout comme leurs homologues américains, ont un sens aigu de la mélodie combinée à la puissance, et je vous le dis bien haut, si c’est ce que vous cherchez en ce moment, j’ai le skeud qu’il vous faut !
Ne vous laissez pas rebuter par le look de débauchés cheap des musicos, car du Sleaze, ils n’ont retenu que la « grande gueule attitude » et l’apparence. Et comme les apparences sont très souvent trompeuses, il serait plus question ici de Heavy très mélodique que de Glam frénétique.
Prenez une pincée de POISON, une lichette de DANGER DANGER, et une bonne cuillerée de TYKETTO, et vous aurez la recette principale de ce New Religion qui frictionne le ramage autant qu’il fait briller le plumage.
Pas grand-chose à jeter sur ces douze titres mûrement réfléchis à la lueur d’une bougie qui a du éclairer le plafond de bon nombre de leurs nuits.
Ca commence classique, avec un titre d’ouverture de bonne facture, « Rock And A Hard Place », qui rappelle autant SLAUGHTER que SKID ROW, avant que les CRAZY LIXX ne décident de chourer le lipstick de Brett MICHAEL à l’occasion d’un « My Medicine » qui a méchamment piqué le riff de « Unskinny Bop » (là c’est même plus de l’inspiration les gars quand même…vilaines !), mais comme c’est groovy, on pardonne ! Surtout que le up tempo vénéneux de « 21 Til I Die » aurait rendu les BULLET BOYS verts de jalousie ! Quel refrain mes aïeux ! Le timbre de voix de Danny se rapproche par moments de celui de notre Alex ANDER national, celui qui agitait les petons des fans de TIPSYWIT il y a quelques années. Mais question efficacité, il est évident que les frenchies étaient à des millions de kilomètres d’un tel savoir faire !
Une pause ? En quelque sorte…Mais juste histoire de prouver qu’ils ne craignent personne lorsqu’ils se décident à placer les harmonies au même plan que la puissance, comme en témoigne cet autre hit potentiel qu’est « Blame It On Love ». « Road To Babylon » joue la carte du Heavy radiophonique, tandis que « Children Of The Cross » commence ballade pour finir plus WHITE LION que le roi de la savane US lui-même. Histoire d’enflammer un peu le dance floor, « The Witching Hour » appuie sur la distorsion, et balance un refrain comme on en avait plus depuis les beaux jours de VINNIE VINCENT.
I need more cowbell s’écria soudain Bruce Dickinson (les fans du Saturday Night Live avec Will Ferrell apprécieront la référence…) ! Qu’à cela ne tienne, le bien méchant « Lock Up Your Daughter » est là pour le satisfaire, avec une fois de plus des chœurs d’enfer sur un refrain bulldozer. Et un chanteur qui a du coffre, un !
« She’s Mine » égrène ses secondes, et là, on se dit que ça ne peut plus tenir du coup de bol ! Une vraie pépite Heavy-Pop comme la scène US savait en produire à la chaîne dans les années 80. On pense au KISS de Crazy Nights, ou même au BON JOVI de Slippery When Wet, en gros, les méga locomotives des eighties, rien de moins !
Il fallait bien qu’on s’envoie une ballade avant la fin, histoire d’emballer la Ginette qui commençait à transpirer de désir à côté, et l’acoustico-arpégieuse-distordue « What Of Our Love » remplit à merveille cet office, avec chœurs sucrés et emphase mélodique assurée. Pas la pire que j’ai entendue, mais assurément pas le point fort de l’album.
On s’éclate un peu moins d’une minute sur l’interlude Country « Desert Bloom », assez bien troussé, avant de se dire au revoir au doux son de « Voodoo Woman », dans le genre agitation de mouchoir en rythme avec le boogie ambiant.
Pas de nostalgie placée au niveau du cordon du porte monnaie, mais une véritable envie de jouer et de se faire plaisir chez CRAZY LIXX, qui du coup, nous fait énormément plaisir à nous aussi. Un album quasi parfait dans le style, si l’on excepte deux trois poncifs pas évités, et encore, en jouant vraiment les mauvaises langues. Mon médecin m’a dit un jour, alors que nous devisions sur la beauté de la femme à travers les nations, que les plus belles filles ne se trouvaient pas en Suède, mais en Ukraine.
Et bien, je m’en fous. Je préfère traîner avec une vilaine blonde écoutant du CRAZY LIXX qui me ravit les esgourdes, qu’avec une belle slave qui finira de toute façon par se comporter comme une gourde.
Ajouté : Vendredi 09 Juillet 2010 Chroniqueur : Mortne2001 Score : Lien en relation: Crazy Lixx Website Hits: 14132
|