# 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
}
SIMO (usa) - Let Love Show The Way (2016)

Label : Mascot Label Group
Sortie du Scud : 29 janvier 2016
Pays : Etats-Unis
Genre : Blues Rock
Type : Album
Playtime : 13 Titres - 67 Mins
SIMO est un power trio de Blues Rock qui envoie du bois. Leur dernier album est la preuve par 13 qu'il y a un nouveau shérif en ville et qu'il va faire parler la poudre. Surtout ne pas se laisser leurrer par la pochette un poil trop 70's revival qui pourrait laisser croire qu'on a affaire à une énième resucée du trip nostalgique dans la lignée de BLUES PILLS, CROBOT ou encore WITCHCRAFT. Non, ce n'est pas de cela qu'il est ici question. Si SIMO puise son inspiration à la même source, c'est vers de toutes autres contrées que nous emmène le combo. C'est un Rock à l'état pur, intemporel, qui ne cherche pas à copier les gloires du passé mais trace son propre chemin, développe son propre style chargé d'émotion et de feeling.
La trentaine radieuse, JD Simo est un jeune guitariste qui a pourtant plus d'heures au compteur que bien des musiciens plus âgés. Car chez JD, l'appel de la six cordes a commencé tôt. A cinq ans, après avoir découvert Elvis à la télé, il supplie ses parents de lui offrir une guitare. Quatre ans plus tard, on retrouve le toujours jeune JD participant à des concerts dans des bars et des clubs de sa région accompagnant des musiciens plus vieux car, dit-il, il n'avait pas de musiciens dans les amis de son âge. A quinze ans, JD plaque l'école et prend la route pour jouer là où il y a une scène. Vivant dans son van, il fait le tour du pays et finit par se poser à Nashville. Entre ses nombreux clubs accueillant des groupes résidents et ses studios d'enregistrement prestigieux, la ville offre de bons débouchés pour un guitariste. Durant cinq autres années, JD Simo partage ses journées entre des sessions studio le jour et des live le soir. Pendant cette période, il participe à environ 500 projets studio et 1200 à 1500 sets live. Puis vient un jour l'envie de voler de ses propres ailes, ne plus être le sideman jouant la musique des autres. Il est alors contacté par Adam Abrashoff (batterie) et Frank Swart (basse) pour aller jammer en studio et plus si affinités. De fil en aiguille, le trio se retrouve bien vite sur scène et donne un premier concert de 2 heures d'improvisation. Passé ce cap, JD Simo décide de tourner le dos à la confortable carrière de musicien de session pour voler de ses propres ailes accompagné par Adam et Franck (qui quitte le groupe quelques années plus tard, remplacé par l'actuel bassiste, Elad Shapiro).
Un album éponyme est publié en 2011 suivi, en 2015, par Love vol.1, un EP live reprenant un set donné au Mercy Lounge de Nashville. Let Love Show The Way, enregistré en 2014, devait paraître courant 2015, mais la sortie a été retardée quand le combo a décidé une refonte totale de la setlist. L'histoire est cocasse : le label Mascot propose d'ajouter deux chansons bonus inédites pour une édition collector. JD Simo décide de les enregistrer depuis la Macon's Big House en Géorgie. Il s'agit de l'ancienne maison communautaire où ont habité les ALLMAN BROTHERS à leurs débuts. C'est aujourd'hui un musée. Le groupe décroche l'autorisation d'enregistrer pendant deux jours, il pose un studio mobile et commence à jammer. Une partie des morceaux est exécutée avec l'une des Les Paul de Duane Allman. Le lieu, la guitare, le feelling... Après deux journées, SIMO a enregistré suffisamment de matériel pour deux albums et le son est tellement bon, chargé d'émotion, que le guitariste décide que ces sessions doivent constituer le nouvel album, prenant la place de l'enregistrement initial dont sont conservées seulement trois chansons ("Becky's Last Occupation", Long May You Sail" et "I'll Always Be Yours").
Enregistré en une seule prise sur laquelle ils ont juste ajouté un peu d'overdub ici et là, Let Love Show The Way a une sonorité live et authentique, une ambiance ample et vivante.
13 pistes et plus de 60 minutes de musique, c'est généreux mais c'est peut-être un poil trop long pour une première découverte me direz-vous. C'est qu'il faut parfois du temps au groupe pour développer ses ambiances. Mais c'est surtout parce que les sessions d'impros s'arrêtent... quand elles doivent s'arrêter. Heureusement, ces années passées en studio à bosser pour les autres ont appris à JD Simo comment faire les bons disques et comment on dose les émotions. Ce premier album commence donc pas nous servir une dizaine de morceaux au format Rock bien ramassé où tout est dit en 3 à 5 minutes. C'est la première partie de l'effort et elle donne déjà le LA avec des chansons qu'on s'approprie rapidement. Outre un matériel essentiellement inédit, l'album propose deux reprises, "Stranger Blues" un standard d'Elmore James (1962) et surtout "Please Be With Me", une reprise de COWBOY coécrite par Duane Allman, l'un des héros de JD Simo qui a d'autant plus sa place sur le disque que ce dernier a été en grande partie enregistré dans sa maison et sur sa Les Paul 1957 Goldtop. Trois grosses sessions d'impro pure viennent compléter la setlist et si on appréciera les indéniables qualités du groupe dans cet exercice sans filet, il faut bien reconnaître que certains passages un peu étirés perdent beaucoup de leur intérêt (et peuvent donc sembler un peu longs) quand ils ne sont pas vécus en concert avec le groupe devant les yeux. Heureusement que JD Simo n'est pas du genre à étaler sa technicité. Le gars en a pas mal sous le pied mais il nous épargne le shred et les soli techniques qui n'excitent que les guitaristes professionnels. Sa musique est au contraire viscérale, profondément ancrée dans l'humain, généreuse, inspirée et organique.
Let Love Show The Way est l'album qui plaira à tous les amoureux de Blues Rock et plus généralement à tous ceux qu'une guitare électrique ne laisse pas indifférents.
Ajouté : Samedi 23 Avril 2016 Chroniqueur : Rivax Score :      Lien en relation: Simo Website Hits: 6162
|