# 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
}
THE RADIO SUN (au) - Heaven Or Heartbreak (2015)
Label : Melodic Rock Records
Sortie du Scud : 25 septembre 2015
Pays : Australie
Genre : Hard Rock mélodique
Type : Album
Playtime : 11 Titres - 44 Mins
Il fallait que je nettoie mes oreilles de tout le bruit qu'elles avaient du supporter ces derniers jours... Post machin, Expérimental truc, Avant-Garde bidule, c'en était trop, et elles menaçaient de me lâcher. Il leur fallait une cure de douceur, non dénuée d'énergie pour ne pas choper le diabète du tympan (redoutable en automne), et il la fallait maintenant.
Dont acte, et puisque le traitement a eu en sus le mérite de me satisfaire, j'en partage le résultat et les composantes avec vous.
Posologie :
Une grosse dose de mélodie, des harmonies vocales travaillées, des guitares mordantes mais saines, des refrains chaleureux et entêtants, et des morceaux simples, efficaces, basés sur le principe du Hard Rock FM de grande classe, abordable pour le grand public, mais pas sirupeux pour deux sous.
Administrable en CD, par tranche de trois quarts d'heure, via le second album des australiens de THE RADIO SUN, Heaven Or Heartbreak. La radio du soleil, quel nom parfait pour cette musique lumineuse aux arrangements radieux, qui inonde de chaleur vos conduits auditifs, sans pour autant être soporifique. Alors, le choix est simple : le paradis ou la peine de cœur ? Que choisissez-vous ? J'ai opté pour les deux, puisque le disque aborde les deux versants de l'histoire, et de façon brillante.
Plus prosaïquement, THE RADIO SUN est un quatuor qui nous vient de Melbourne, fondé en 2012 sur les cendres encore fumantes de SQUARE ONE, autre combo local de réputation. Produits par l'ex vocaliste de DANGER DANGER, Paul Laine, qui en profite pour co-composer quatre morceaux et assurer une moitié de la partie vocale du titre "Science Fiction Make Believe", le groupe se présente sous un bon jour, et propose sur ce second effort onze chansons classiques, mais très bien ficelées.
La méthode est éprouvée, mais elle fonctionne toujours. En revendiquant comme influences HAREM SCAREM, Rick Springfield, WINGER, FIREHOUSE, LOVERBOY, Nelson, NIGHT RANGER, DEF LEPPARD et Bon Jovi, THE RADIO SUN ne souhaite tromper personne et ne pas faire de cachotteries sur son orientation hautement mélodique. Ainsi, Jason Old (chant), Stevie Janevski (guitare, choeurs), Robbie Erdmanis (basse, choeurs) et Ben Wignall (batterie, choeurs) se lancent à corps et coeur perdu dans la conquête des faveurs du public Hard Fm/AOR/Heavy radiophonique, et le résultat est plutôt probant. Bien sur, rien de nouveau sous leur soleil austral, juste une bonne bande son de radio FM idéale pour passer un bon après midi, ou une belle soirée romantique.
Romantiques, ils le sont, mais ils n'en oublient pas pour autant qu'ils sont des musiciens de Hard Rock. D'ailleurs, les individualités sont assez notables. Le chant de Jason est velouté et caresse l'oreille sans oublier de pousser un peu sur les cordes pendant les intermèdes les plus Rock, et Stevie, outre les riffs qu'il assemble avec brio, sait tricoter des soli tout à fait valables qui n'en font jamais trop. Avec une paire rythmique sobre mais efficace, les deux solistes peuvent se laisser aller, au gré de compositions qui font mouche, et qui oscillent tendrement entre Hard mordant et AOR vitaminé.
Comme tout album d'AOR/Hard mélodique qui se respecte, chaque détail à été soigné, et deux influences notables se dégagent. On pense bien sur à HAREM SCAREM en premier lieu, et notamment sur les excellents "Do You Remember Me?" ou "Walk Away", qui empruntent tous les tics des Canadiens, dont les fameuses cascades de choeurs qui doivent d'ailleurs beaucoup à QUEEN.
On peut prononcer le nom de NELSON pas vraiment au hasard non plus, pour cette propension à tirer la Pop vers le Hard Rock, et pour ces refrains immédiatement mémorisables, en témoignent les perles "Maybe", "Science Fiction Make Believe", morceau sur lequel intervient Paul Laine, ou même la ballade "Dying Without Your Love" que les fils de Ricky n'auraient pas boudée.
C'est d'ailleurs la seule dont il faudra vous satisfaire, car le quatuor n'a pas l'intention de s'aliéner le public Rock & Hard. Même si certaines compositions laissent filtrer des arrangements doucereux, comme le final "One In a Million", les guitares ne sont jamais loin, et le Hard FM reprend vite ses droits, de la même façon qu'avait BON JOVI d'aborder la chose en début de carrière. Les Australiens manient le mid tempo comme une science exacte, qu'il soit modéré comme sur "You're The One" ou plus appuyé sur "Tell Me What You Want", exercice de mise à niveau JOURNEY réussi haut la main.
Je n'ai, vous l'aurez compris, pas grand chose à reprocher à ce deuxième album. De la production parfaitement adaptée au style, en passant par l'interprétation des musiciens, tout est impeccable, brille de mille feux, et provoque une bouffée d'euphorie à chaque écoute.
Le genre ne s'en trouvera pas chamboulé, mais qu'y a il de neuf à dire ? Le Hard mélodique à ses codes, ses virages et ses figures imposées, et THE SUN RADIO les connaît sur le bout des doigts, des lèvres et des bras.
A défaut de provoquer un séisme, Heaven Or Heartbreak fera déjà trembler votre stéréo, et vibrer votre petit coeur de rockeur romantique. Et le mieux, c'est que vous n'aurez ni à visiter le paradis, ni a souffrir d'une peine de coeur pour ça.
Ajouté : Samedi 16 Avril 2016 Chroniqueur : Mortne2001 Score : Lien en relation: The Radio Sun Website Hits: 4734
|