# 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
}
NINE SKIES (FRA) - Dark Void (2013)
Label : Auto-Production
Sortie du Scud : 2013
Pays : France
Genre : Metal Pop Atmosphérique
Type : EP
Playtime : 3 Titres - 13 Mins
Il faut que je vous parle du Petit Chaperon Rouge en pays niçois. En dehors d’aller porter régulièrement des petits pots de confiture à mère-grand, dans l’arrière-pays d’Ugolin, la petite Anne-Claire prenait des cours d’alto, et de solfège au Conservatoire. Après le rituel des maladies infantiles, elle a attrapé des virus médicalement diagnostiqués LED ZEP, PINK FLOYD. La contamination venait de son grand frère tombé dans un bouillon de culture underground. Les années passant, et la peur du loup surmontée, on approchait du septième ciel, en l’occurrence de NINE SKIES, pour donner vie, et mettre en musique les compositions de la studieuse, et non moins prolifique Anne-Claire.
Eric, en comparse idéal, fort de son expérience au sein de RDSK, qui a splitté suite à l’affaire du Sofitel de New-York, et de son implication actuelle dans le combo Metal MILDGARDR, apporte les ingrédients chant, guitare, batterie, arrangements sur les partitions, et écriture proposées par Anne-Claire.
A l’image politico-socialo-économique de notre période, les textes véhiculent beaucoup de mélancolies, et de rage réfrénée sur les ressorts actuels de notre société. Des compositions plus intimistes ont également leur place, des drames et des combats personnels avec des addictions de diverses natures. Le constat est tel, que l’espoir ne pointe pas encore son nez à travers les compositions d’Anne-Claire, ce qui explique en partie le côté sombre de la jaquette du digipack proposé aujourd’hui par NINE SKIES, mais l’espoir est au bout de l’échelle, le bonheur se conçoit dans l’élévation des aspirations de chacun, et une dématérialisation des valeurs de référence, ça m’arrange aussi de dire cela car à plus de cinquante ans, je n’ai toujours pas de rollex au poignet.
L’EP transmis me conforte dans l’idée d’aborder un nouveau combo par un support physique qui, à travers son art-work, ses photos, illustrations, donnent une première impression sur le professionnalisme ou l’amateurisme du groupe. Là, le travail est soigné, le format digipack valorise l’offrande musicale de NINE SKIES, j’use à volonté le terme d’offrande car il est cohérent, et en phase avec le côté mythologique des projets parallèles d’Eric, le dieu Odin, par exemple, étant omniprésent chez MILDGARDR.
Notre duo ne se livre pas seul à l’exercice, car nous trouvons dans les crédits, la présence d’Aliénor, chanteuse de MILDGARDR, qui place sa voix dans le morceau « Last Winter », et P. Sovieri pour les parties de basse. Les notes du sax de Laurent Benhamou viendront apaiser le mal-être et douleurs enfantés par le titre « She’s Gone ».
Tourne la galette….avec le titre « Dark Void » on découvre la musique éthérée de NINE SKIES qui contraste avec la noirceur du texte, constat sociétal désespéré. Le texte et la musique s’opposent, se disputent la place, comme un couple au lit qui veut tirer la couverture à soi. Le son est bon, et chaque ligne d’instrument à sa place, pas de cannibalisme à l’horizon dans la production et le mixage.
« Last Winter » se dévoile sous un aspect plus gothique, la polyphonie d’Aliénor et d’Eric donne de la profondeur au chant. On note avec ce titre, et au travers de cet EP, la volonté de NINE SKIES de présenter un éventail de leur possibilité musicale avec une orientation qui reste à confirmer.
Anne-Claire confesse une influence de groupes comme OPETH, PORCUPINE TREE, y trouvant une inspiration musicale et d’atmosphère, on lui donne l’absolution sans autre contrition.
« She’s Gone », le titre qui suit, est du domaine de l’intime souligné par la complainte du saxo, encore une facette de NINE SKIES, une musicalité plaintive, atmosphérique.
Les dernières notes se dissipent dans le crépuscule du soir, logo que l’on peut lire sur la pochette. On est certes éloigné des groupes habituellement chroniqués dans Metal-Impact, mais je vous préviens, on se retrouve aussi désoeuvré qu’après l’écoute d’un Doom bien plombé, car NINE SKIES vous entraîne dans une ambiance dépressive, noire, comme rendu comateux par une overdose de valium. Nous souhaitons à NINE SKIES de trouver la lumière avec de l’inspiration et des compositions imprégnées d’un peu plus d’espoirs, d’optimisme afin de ne pas les suspecter d’être une entreprise de démoralisation. On leur donne rendez-vous, demain, à « l’aurore du matin », car avec cet EP, le duo a su nous montrer son savoir-faire, tout en apposant sa propre signature.
Ajouté : Dimanche 15 Septembre 2013 Chroniqueur : Le Patriarche Score : Lien en relation: Nine Skies Website Hits: 7972
|