# 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
}
PRISON OF MIRRORS (usa) - Until We Find The Hive (2014)

Label : Auto-Production
Sortie du Scud : 10 mai 2014
Pays : Etats-Unis
Genre : Post Black Metal atmosphérique
Type : Album
Playtime : 6 Titres - 53 Mins
Nick Brandt : Everything
Décidemment, le Black Metal est depuis les origines une sorte d'Eldorado pour les incompris, les misanthropes, les âmes solitaires incapables de s'associer à autrui, ou dont la vision est si précise/personnelle qu'il leur est impossible de la faire comprendre sans perdre un temps précieux. On ne compte plus les one piece band sévissant dans le plus si petit monde du Metal noir, concept jusqu'à il n'y a pas si longtemps réservé à l'Electronica, ou au Dark Ambient. Mais qu'importe si la multiplicité de l'ivresse ne dépend que de l'unicité du flacon, car après tout, lorsque la rigueur individuelle produit de grandes oeuvres (après tout, Bach, Mozart, Schubert n'ont jamais eu besoin de personne), il devient inutile de souligner son caractère autarcique.
Ainsi nous vient des USA Nick Brandt, et son projet PRISON OF MIRRORS. Depuis 2011, Nick a produit trois longue durée, y compris ce Until We Find The Hive, et il faut admettre que la qualité de sa production ne se dément pas. Si son optique résolument Black Metal résonne d'un écho historique, l'homme à su altérer les sons et les ambiances pour faire sienne une philosophie ancienne, et adapter ses influences à ses exigences pour ne pas répéter les discours du passé déjà entendus un bon millier de fois.
D'aucuns parlent de Post Black pour décrire sa musique, et je ne saurai leur donner totalement tort. Mais il y a plus que ça dans Until We Find The Hive, comme dans ses deux sorties précédentes. Il y a, si j'ose aller un peu loin dans l'analyse, une fusion unique née de la rencontre entre un Black très cru, et un Post Black plus romantique que nihiliste, qui privilégie les harmonies sèches, le tout aboutissant à une entité unique, qui ne relève plus ni de l'un, ni de l'autre courant.
Comme tout album de ce style, Until développe les climats et leur laisse le temps de s'installer. La longueur moyenne des pistes étant de neuf minutes, vous aurez tout le temps d'apprécier (ou non, selon) les digressions étalées par Nick, qui utilisent nombre de stimuli sensoriels aussi complémentaires que parfois contradictoires. Car l'homme n'hésite pas à piocher dans le réservoir de styles à sa disposition pour arriver à ses fins. Ainsi, le morceau éponyme commence comme une thérapie Post Black, construire sur quelques notes éparses et répétées, avant de s'affaler sur une procession Doom "acidharmonique" et funèbre, soudain interrompue par une charge Black aussi impromptue que douloureuse. Les cycles se répètent sur plus de neuf minutes, créant ainsi une spirale sonore qui fascinera autant qu'elle rebutera.
L'intelligence de Nick est d'avoir gardé cette construction par couches, tout en préservant à chaque titre son emprunte intrinsèque. Si aucun morceau ne s'éloigne vraiment de ce schéma, chacun génère son propre écho, ce qui permet à l'album de garder une cohésion indéniable sans pour autant sentir le coup fourré roboratif.
Certes, le son global, très étouffé, avec un chant considérablement en retrait peut gêner à l'occasion, mais je trouve qu'il est parfaitement adapté à l'ensemble et permet même à tous les instruments de respirer, ce qui n'est pas toujours le cas dans le Black, genre propice à la théorie du "bloc incompressible". Car Nick, outre la guitare, basse et batterie d'usage ne crache pas sur l'utilisation d'un piano souvent bienvenu, et d'arrangements de claviers loin d'être déplacés.
Et si le pavé final de dix minutes "Spilled By Savages" n'est pas le parangon des choix de Nick (je citerai plus volontiers une fois encore le majestueux " Until We Find The Hive"), il nous offre une splendide montée en puissance, payant autant son tribu aux anciens de MY DYING BRIDE qu'aux petits nouveaux de HELL. Une fois de plus les mélodies se livrent à un combat sans merci avec les flammes de l'agression ininterrompue, bien loin des sempiternelles divagations inutiles de bon nombre de combos portés au pinacle qui confondent souvent harmonie et mièvrerie, ou sauvagerie et boucherie.
Alors bien sur, le discours est extrême, c'est un fait. Et parfois, il tombe - provisoirement - dans les balbutiements, mais si l'on considère que quatre vingt dix pour cent de l'album est une réussite inspirée et constructive, il convient de le célébrer comme il se doit, et d'essayer de l'apprécier, en tout cas de souligner le travail et les efforts accomplis.
Peut être que Nick continuera son voyage seul, mais je doute qu'il ait besoin de quiconque pour nous dire ce qu'il à a dire.
Car il le dit très bien.
Ajouté : Dimanche 27 Juillet 2014 Chroniqueur : Mortne2001 Score :     Lien en relation: Prison Of Mirrors Website Hits: 11142
|