# 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
}
ALCEST (FRA) - Shelter (2014)
Label : Prophecy Productions
Sortie du Scud : 17 janvier 2014
Pays : France
Genre : Shoegaze / Post-Rock
Type : Album
Playtime : 8 Titres - 45 Mins
Pour les fans d'ALCEST, cet album est sûrement l'un des albums les plus attendus depuis la sortie de Les Voyages De l'Âme (2012). En même temps, comment oublier ce magnifique titre qu'est "Autre Temps" ? Après la claque de son prédécesseur, Shelter avait intérêt à viser haut, très, mais alors très haut. Évidemment que Neige et Winterhalter ont relevé ce défi, mais l'ont-ils réussi ?
A l'aube de la sortie d'un album qui allait sûrement marquer la discographie des Français, les questions étaient assez nombreuses : est-ce qu'ils vont revenir à leurs racines, et nous refaire du Black ? Où alors est ce qu'ils vont rester sur la lignée de leur précédent opus, Les Voyages De L'Âme ? Comme pour beaucoup d'autres groupes, la "fanbase" d'ALCEST est malheureusement divisée en deux. D'un côté, les fans de la première période du groupe, avec l'EP Tristesse Hivernale, puis de l'autre côté, ceux qui se disent que le changement est bien, et qu'ALCEST, quoi qu'ils fassent, ne les ont jamais déçus.
Et bien non, messieurs les blackeux, ALCEST s'est encore adouci. C'est d'ailleurs Stéphane qui déclara dans une interview qu'il "n'avait jamais fait, et n'avait jamais voulu faire de Black Metal". Je partirai donc dans l'éternel débat qui a déjà eu lieu des millions de fois : " ALCEST depuis que ça s'est adouci, c'est pourri, t'es pas d'accord ?" Voici ma réponse : NON, je ne suis absolument pas d'accord. Évidemment que le groupe a changé, mais si vous passez l'étape de ce changement qui n'est pas aussi grave qu'il en a l'air, vous verrez qu'ALCEST est toujours lui même. Dans Shelter, on retrouve énormément d'influences, comme le groupe SLOWDIVE, entre autres, marqué par la présence du chanteur sur un des titres ("Away"). D'ailleurs, dans l'interview qu'il livrera à Metallian, Neige émettra clairement le souhait de revenir vers des tons plus calmes, ainsi qu'a des groupes qui ont marqué sont enfance.
Tout est parfaitement fait dans cet album. Du chant de Neige jusqu'à la batterie, tout est parfait. Tiens, d'ailleurs, ce chant... Stéphane est connu pour son chant Black éraillé, puissant et triste à la fois (je pense notamment à Ruines Humaines d'AMESOEURS et du titre "Bonheur Amputé"), il en avait d'ailleurs parsemé un peu tous ses précédents albums. Sur Shelter, pas une trace de ce type de chant. Ici, Neige se livrera davantage à un chant clair et à des chœurs me rappelant des prières. Ces chœurs, on les retrouves un peu partout, et tout particulièrement sur "Delivrance", dernier titre de cet opus, mais également sur "Voix Sereines". Les guitares se font étonnamment assez discrètes par rapport à Ecailles De Lune ou tout simplement Les Voyages De l'Âme, sans aucun doute dans le but d'être plus mélodique et pour créer un fond sonore. Winterhalter prendra également en considération ce changement de style radical. La batterie se fera bien moins violente, bien moins puissant. La caisse claire et les cymbales seront beaucoup moins présentes (rappelez vous sur "Percées De Lumière", à quel point les cymbales étaient sollicitées), pour s'adapter à une technique de jeu Post-Rock / Shoegaze beaucoup plus douce. Sur ce fond sonore viennent se greffer des pianos mélancoliques comme sur le titre éponyme, mais également des violons et autres instruments qui auraient pu sembler étranges à la sortie des précédents opus.
ALCEST à souvent fait primer l'atmosphère ainsi que les sentiments à travers sa musique. Je pense notamment à la mélancolie de Souvenirs d'Un Autre Monde, mais également au caractère sombre d'Écailles De Lune. Changement de style oblige, les lyrics de Shelter se voient être bien différentes des précédents opus, et il en va évidemment de même pour l'ambiance que le groupe met dans sa musique. En passant d'un Post-Black Metal à du Dream Shoegaze / Post-Rock, l'atmosphère sentimentale des musiques s'est orientée vers quelque chose de beaucoup plus évasif, rêveur, voir même éthéré. Shelter fait également partie de ces albums idéaux pour bien s'endormir : l'ambiance très calme qui y règne apaise immédiatement l'auditeur. Ici, vous ne serez pris d'aucune transe comme vous pourriez l'être avec un album de WATAIN. En revanche, très rapidement, vous serez envahi par un sentiment de plénitude et de "zénitude" absolue. A mes yeux, c'est un point positif majeur de Shelter : le calme qui règne dans cet album n'en est qu'accentué par la beauté des paroles et des mélodies, créant un mix exclusif mais parfait.
Malgré tous ces points positifs, il faut bien avouer qu'il manque quelque chose à cet galette. Un peu de tristesse par exemple, un côté sombre, qui avait entièrement pris sa place dans les précédentes sorties. Également, il faut avouer qu'un album d'ALCEST sans un chant hurlé de Neige, c'est difficilement envisageable. Sur la forme, ce ne sont que de petits détails, mais sur le fond, ça prendra rapidement une place considérable dans l'écoute.
Ok, il faut le dire, avec cet album, nous sommes à des années-lumières des anciens opus. Mais après tout, pourquoi ne pas adorer ce changement ? Lancez Shelter, laissez-vous porter par la musique divine des Français, et là vous serez capables d'apprécier pleinement ce nouvel opus d'ALCEST.
Ajouté : Mardi 20 Mai 2014 Chroniqueur : HopelessLife Score : Lien en relation: Alcest Website Hits: 11512
|