# 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
}
HEVISAURUS (fi) - Soittakaa Juranoid! (2015)

Label : Sony Music
Sortie du Scud : 9 octobre 2015
Pays : Finlande
Genre : Metal
Type : Album
Playtime : 16 Titres - 56 Mins
On a eu KISS au départ, c'était somme toute raisonnable. Et puis ça a dégénéré. Et aujourd'hui, entre le Death à perroquet, le Grind à miaulements félins, les mecs déguisés en monstres ou en momies (DEATH SS?), je pense qu'on a presque fait le tour de la question.
Finalement, les RESIDENTS et DEVO étaient plutôt sages par rapport à nos amis metalleux... Ca laisse songeur tout ça quand même.
Vous vous souvenez de la tronche des spectateurs et du discours lénifiant de Drucker quand LORDI a gagné l'Eurovision ?
Bon, et bien gageons que rien n'aurait été différent si les barges sauriens de HEVISAURUS avaient remporté le concours à leur place.
Mais les mecs dites moi, ça va la Finlande ? Entre les démons de LORDI et vous, y'a pas que des patates dans la purée chez vous, si ? C'est le froid, ça donne des idées débiles ou vous êtes vraiment des joyeux drilles qui pensent que chaque jour se fête comme Halloween ?
On se perd en conjectures... Des gus qui s'accoutrent comme des dinosaures pour jouer du HEAVYSAURUS, ça ne peut venir que de Finlande ? Probablement, mais malgré ces atours pour le moins troublants et légèrement infantiles/teletubbies style, les marlins ont quand même écoulé presque deux cents mille albums dans leur pays natal. Ca fait rêver hein ?
Faut voir.
Mais mine de rien, les dinosaures factices en sont déjà à leur neuvième album, et ce après avoir lâché une pelletée de singles, de vidéos et même quatre comédies musicales ! Alors niveau productivité, ils n'ont de leçon à recevoir de personne, même pas d'un Spielberg en mousse.
Leur musique est simple, c'est vrai. Du bon gros Hard n'Heavy à la THE DARKNESS/LORDI, construit sur de gros riffs pas trop violents, qui soutiennent la plupart du temps des refrains hautement mémorisables. Et si le Wikipedia US se plaît à voir en eux une sorte de cartoon band pour les enfants et ceux qui ont su le rester, je prends ça comme un compliment. Parce que réussir à manier le Hard à un niveau si populaire en composant de bonnes chansons est un art délicat qui n'est pas à la portée de tout le monde. Et puis après tout, même KISS voulait plaire aux bambins non ?
"Appelez Juranoid" (si j'ai bien tout compris...) ? Why not, mais que va il nous faire ? Nous dévorer façon T-Rex ou nous brouter à la Diplodocus diplomate ? Un peu des deux à vrai dire, HEAVYSAURUS n'a en rien perdu de son mordant, mais n'a pas non plus renoncé aux verts pâturages, ce qui donne depuis des années à sa musique cet équilibre... bon enfant. Mais quoiqu'il en soit, si la musique des finlandais vous est familière, ce neuvième album ne devrait ni vous décevoir ni vous surprendre, puisqu'il reste collé à l'éthique fun et aux exigences de qualité habituelles, en développant un Power Heavy aux multiples facettes.
Un peu de STRATOVARIUS ("Professori Tiukkasen yolliset seikkailut", poilant mais décoiffant), un peu de sentimentalisme à la JOURNEY/WHITESNAKE ("Rupuliina"), un peu de fusion à la lisière de l'extinction du Funkosaurus ("Juranoid"), du gros Heavy qui charge comme un Brontosaure affamé ("Harri Hylje), du Hard limite FM pour ne pas effrayer les femelles ("Lentolisko"), en gros, en onze (version officielle) ou en seize (en version collector avec bonus, dont un os de Rahan) titres, les rigolos prouvent une nouvelle fois qu'ils sont éclectiques, et surtout, qu'ils sont toujours capables de nous faire dodeliner de la tête et des pattes grâce à leur musique magique, qui sait réveiller notre âme d'enfant tout en stimulant notre cortex de hardos adulte.
Alors après, vous pouvez ne pas goûter à leur humour, trouver ça débilitant, mais il suffit d'occulter un instant les déguisements pour déguster un Hard Rock de première qualité, joué par des instrumentistes capables. De surcroît, certains morceaux conjuguant le finnois natal guttural et les mélodies Heavy accrocheuses ont ce je ne sais quoi de J-Metal qui rend gai et sautillant ("Laser-Ninja", irrésistible), sans compter sur les influences extérieures qui enrichissent les morceaux (le pseudo tempo Reggae d'intro et le banjo de "Teksasin Jattilainen", le gros beat discoïde sur fond de guitares griffues pendant "Jurahevarit"), sans rien les dénaturer en termes de puissance.
Certes, et j'en conviens, les aventures des dinosaures se ressemblent avec les années qui passent, mais lorsque l'alchimie fonctionne et que les cris du public résonnent, quelle importance ? Surtout lorsque ces neuf albums sont variés, riches, bien dosés et remplis ras la mâchoire d'hymnes à reprendre en coeur, quel reproche pourrait on formuler ?
Aucun j'en conviens, sinon, passez votre chemin, et attendez l'ère glacière.
Nonobstant ces quelques arguments, Soittakaa Juranoid! n'est rien de plus qu'un très bon album de Heavy baroque, flamboyant et qui croque la vie à pleines dents. Du Hard, du Speed, un peu de Fusion et beaucoup de passion, à l'instar de ces aînés cet album va encore faire un carton, et pas seulement auprès de la génération biberon.
Alors n'ayez pas honte et savourez le. Comme on regarde un bon Godzilla sans ses vieux. Ou un gros Casimir en étant un peu envieux...
Ajouté : Dimanche 12 Juin 2016 Chroniqueur : Mortne2001 Score :     Lien en relation: Hevisaurus Website Hits: 6812
|