# 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
}
ZOE (FRA) - Raise The Veil (2014)

Label : Brennus Music
Sortie du Scud : septembre 2014
Pays : France
Genre : Power Rock'n'roll
Type : Album
Playtime : 11 Titres - 42 Mins
L'illustration de la pochette de Raise The Veil nous fait penser à "la mort vous va si bien", un squelette en tenue de cérémonie avec chapeau haut de forme, enterrement de première classe ! Et pour ZOE, sa façon de nous dire que ça va saigner, pas de répit, et pour personne. Les décibels, les riffs assassins, les uppercuts du batteur, les décharges électriques auront raison de vous à la mode MOTÖRHEAD, FU MANCHU, HERMANO, THE HELLACOPTERS.
Avec leur gros son graisseux qui sent l'huile de vidange frelatée, bourré d'énergie, on s'attend à voir nos gaillards débarquer de l'ouest américain, tirer plus vite que leur ombre, tout de poussières couverts, la sueur se mêlant à la bière, sentant la poudre. Que nenni ! les petits gars débarquent du Pas-de-Calais, troublions connus au carnaval de Dunkerque et champions du lancer de hareng, discipline que ZOE voudrait voir aux prochains Jeux Olympiques, ou à défaut la voir inscrire en option aux épreuves sportives du Baccalauréat.
Raise The Veil est le troisième opus de ZOE et il aura fallu attendre cinq ans depuis Dirty Little Sister, qui avait fait fort belle impression à sa sortie. Alors cinq ans, de quoi bien faire vieillir en fût de chêne le jus qu'il nous sert maintenant fortement alcoolisé et burné. Faut dire qu'avec des bouilleurs de cru comme Olivier T'Servrancx (BLACK BOMB A,...) et Göran Finnberg (IN FLAMES, THE HAUNTED,...) on allait booster les degrés enivrants pour aller danser la bourrée courguinoise sur les planches du saloon. Pour la gigue sur le pont de la Péniche Spits à Douai qui était prévue au début du mois de juin, il faudra attendre un peu car Aldo, guitare, s'est pété un doigt, en mettant une cheville dans un glory hole.
Fred et Aldo écrivent, composent pour la scène, rien que pour la scène, c'est une évidence et l'album restitue sans fausse note cette ambiance live, à consommer sur place, sans attendre. Vivons le moment présent, intensément, doit être le leitmotiv de ZOE.
La courte intro "Kellar's Song" n'est là que pour vous permettre de tester votre parafoudre triphasé avant d'envoyer la sauce fuzz entêtante avec "Don't Hold My Gaze".
Des invités également sur ce disque comme Sam Dufoor (DRUMS & GUNS) qui vient ajouter son grain de voix sans faire gripper la machine bien au contraire sur "Slam Dance Union". Vincent Hernault (LOFOFORA, LE BAL DES ENRAGES) vient quant à lui tenir les baguettes sur 3 morceaux.
Avec "Dusty Trick" on se prend une belle claque avec un Punk Rock efficace qui prend du relief avec les choeurs qui scandent un refrain assassin, guitare en folie qui finit par vous mettre à genoux. De l'énergie à vous faire exploser les neurones.
Un jeu de guitare plus torturé, syncopé sur "Raise The Veil" avec la frappe de Vincent, et nous, ces coups là, on se les prend en pleine figure, incapables de les éviter, et encore moins de les parer.
Un mid tempo hypnotisant, groovy à souhait vous cueille sur des morceaux comme "Astral Projection", "Roller Coast Blues" persistant à vous engluer dans le gros son de ZOE avec aussi parfois ses côtés planants. Il en est de même avec "Time Is Not On My Side" avec des clins d'oeil Stoner bien appuyés, et servie avec une sauce un peu plus relevée.
De l'énergie à revendre aussi sur un morceau comme "The Wolf"avec une frappe qui vous laisse aucun répit, implacable, et un refrain qui vous invite à danser avec les loups.
Des morceaux de partition sonnent old school comme dans "Workie Of The Despair", réminiscence de la période 70's, riffs originels de cette période Hard Rock si familière aux pionniers, aux orpailleurs découvrant des tubes à la pelle pour les plus burinés d'entre nous.
Avec "Eternal Boy", et Jex Spector (SPERMICIDE) en invité, ce titre apporte une coloration originale à l'album, une allure de chevauchée fantastique. Cela démontre que ZOE sait varier les rythmes, les ambiances, glisser quelques arrangements avec toujours la même énergie pour éviter tout ennui ou toute monotonie et faire que le "high energy stoner rock" de ZOE garantisse la fête à chaque coup d'essai.
ZOE, un groupe qui ne fait pas de scène pour promouvoir un album, mais plutôt un album pour promouvoir ses prestations scéniques.
Raise The Veil est sorti il y a un peu plus d'un an, il n'est pas trop tard pour vous rattraper aujourd'hui en glissant cet album dans votre lecteur en prenant la Route 66 ou l'A6... Avec votre dusty truck dopé au kérosène à la sauce ZOE, et gare aux radars !
Ajouté : Mercredi 01 Juillet 2015 Chroniqueur : Le Patriarche Score :     Lien en relation: Zoe Website Hits: 7834
|