# 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
}
BLASPHEME (FRA) - Briser Le Silence (2010)

Label : XIII Bis Records / Sony Music
Sortie du Scud : 27 septembre 2010
Pays : France
Genre : Heavy Metal
Type : Album
Playtime : 9 Titres - 45 Mins
Digne représentant de la seconde vague du Heavy Metal français des années 80, au même titre que SATAN JOKERS, FISC, ATTENTAT ROCK ou SORTILEGE, BLASPHEME a couché sur vinyle deux albums témoignages d’une époque bien lointaine. Entre un premier effort éponyme et un Desir de Vampyr relativement bien troussé, ils ont participé à une épopée dont bon nombre d’entre nous se souviennent avec une certaine émotion. Bon musiciens, on pouvait néanmoins leur reprocher une imagerie un peu cheap, et un conformisme musical assez emblématique de l’esprit de démarquage soft des groupes nationaux en activité.
Sympathiques sans être indispensables, il leur manquait l’aura mystique d’un ADX, un showman comme Renaud Hantson, ou un vocaliste d’exception comme Christian Augustin.
Alors bien sur, devant la désaffection d’un public préférant toujours un combo de seconde zone anglais qu’un excellent groupe de son propre pays, devant le manque de promotion de labels préférant la quantité à la qualité, leur aventure arriva à son terme assez rapidement.
Après une reformation en 2007, et un concert très convaincant lors de la dernière édition du Hellfest (2010), BLASPHEME vient chercher sa revanche avec ce Briser Le Silence à la très belle pochette. Avec les deux tiers de son line up d’origine (Marc Fery (chanteur), Pierre Holzhaeuser (guitariste) et Philippe Guadagnino (bassiste)), BLASPHEME aligne crânement ses atouts, et avance vers l’avenir, qui, s’il ne sera pas forcément synonyme de succès à grande échelle, leur réservera sans doute encore de bien beaux moments de musique et de communions live.
Oscillant entre Heavy speedé (« The Crow », parfaite ouverture, « Carpe Diem » en forme de profession de foi, « Qui Suis-je » et ses breaks en contretemps bienvenus, « Homme Eternel » très Helloween), et Heavy plombé (« Briser Le Silence » lyrique, avec un chant somptueux, et des arrangements fouillés, « Cœur D’enfant », assez influencé Rapshody, « De L’ombre A La Lumière », et son rythme heurté sur fond de soli impeccables.), BLASPHEME adapte son style à son époque, et renouvelle sa recette avec un brio indéniable. Largement à la hauteur des standards du Heavy européen, le quintette savoure ses retrouvailles avec son public, et lui offre outre une performance de groupe très cohérente, des démonstrations en solitaire sans faille.
A ce titre, Marc, le vocaliste dispose d’un timbre chaud, et d’une vaste palette d’émotions, comme en témoigne la très jolie ballade « Ultime Errance », ou il fait montre de toute l’étendue de son talent. La rythmique reste au dessus de tout soupçon, et alterne avec bonheur les tempi tantôt lourds, tantôt aériens, mais reste toujours créative pour ne pas laisser les morceaux sombrer dans la routine.
A noter que Briser Le Silence s’achève sur un splendide instrumental que n’aurait sans doute pas renié le grand Satriani lui-même, teintant au final l’ensemble d’une petite note de nostalgie, qui nous ramène au temps béni ou les groupes hexagonaux sillonnaient le pays la rage au ventre et l’espoir en bandoulière.
Alors certes, je vous le concède, Briser Le Silence ne s’imposera pas comme la relève tardive d’un Heavy Metal français tué dans l’œuf. Il restera une anecdote plaisante pour les amateurs de Heavy, mais une anecdote vers laquelle on reviendra par plaisir. Et ce qui est anecdotique pour la majorité ne l’est pas forcément pour ses auteurs. Laissons les se faire plaisir une nouvelle fois, sans attendre rien d’autre que le bonheur de partager avec nous un plaisir non feint.
Mieux vaut un bonheur simple qu’une expectative grandiloquente hors sujet.
Ajouté : Mercredi 10 Novembre 2010 Chroniqueur : Mortne2001 Score :     Lien en relation: Blasphème Website Hits: 14815
|