# 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
}
HEALTH (usa) - Death Magic (2015)

Label : Loma Vista
Sortie du Scud : 7 août 2015
Pays : Etats-Unis
Genre : Indie Noise Experimental
Type : Album
Playtime : 12 Titres - 39 Mins
Quand on aime on ne compte pas... Maxime parfois pleine de bon sens, lorsqu'il s'agit d'attention, d'affection, d'argent, mais qui devient vite à contre sens lorsqu'on parle d'attente...
Et Dieu sait si les fans de HEALTH ont attendu le retour de leurs héros. Car en dehors de participations aux BO de quelques jeux vidéos, et d'interventions diffuses et éparses, rien depuis 2009 et Get Color.
Pas franchement généreux, surtout de la part d'un groupe qui n'a que peu d'équivalents et de rivaux dans leur domaine.
Ok les gars, vous aimez les jeux, mais la musique pour les fans, sous un format plus conventionnel, c'est pas mal non plus.
Mais ne boudons pas le retour d'un des quatuor les plus énigmatiques qui soient, car leur univers si particulier n'a pas vraiment changé, et s'est tout au plus adapté à l'air du temps...
Pour les néophytes et bruts de chez brut, HEALTH, c'est un collectif à la croisée des chemins. Pas vraiment Metal dans le fond, voire pas du tout, plutôt électronique, expérimental, tribal, Indie, et même Trip Hop à l'occasion. Mais à l'instar des SKINNY PUPPY, FRONTLINE ASSEMBLY, ATARI TEENAGE RIOT ou PRODIGY, leur énergie foncièrement Rock à largement sa place dans ces colonnes, n'en déplaise aux plus intégristes... Oui, désolé, mais il n'y a pas que le True Metal ou le Metal symphonique dans la vie, encore moins que le Heavy Metal Allemand... Tolérance, quand tu nous tient...
Alors ici, pas de gros riff qui tue la mort, pas de rythmique échevelée, mais des sons, beaucoup, un chant éthéré, un peu traité à la CYNIC le plus contemplatif, du Beat bien sur, la plupart du temps lourd et oppressant, et surtout, beaucoup d'expérimentation, de traitements persos, et des ambiances développées dans des formats courts mais qui forment le fil conducteur de l'album.
Death Magic reprend les choses là où Get Color les avait laissées. On retrouve sur ce nouvel LP les délires tribaux si chers à HEALTH, quoique plus discrets, les patterns plombés et traînants, les montées en puissance au sein d'un même morceau mais aussi tout au long de l'oeuvre. "New Coke", le single illustré d'une vidéo avait annoncé la couleur, et ce splendide ralenti sur une régurgitation masculine ne cachait rien des aspirations du combo. Se démarquer coûte que coûte, provoquer, choquer, déranger. Alors OK, HEALTH n'est ni RAMMSTEIN (les guitares grasses sont aux abonnées absentes), ni MARILYN MANSON (le déhanchement rythmique vicieux et le chant possédé manquent à l'appel), mais se rapprocherait plus d'un accouplement louche dans les toilettes d'une boite SM entre l'EBM sexy et vénéneux des PUPPY et de la Pop/Hop distordue et de traviol d'ORGY. A la rigueur, et dans un souci de respect des racines, on pourrait évoquer pour situer ce Death Magic le séminal Pretty Hate Machine du pape Reznor, remis aux normes des standards 2015 au niveau production...
Mais c'est sans doute le malicieux Jake Duzsik, qui résume le mieux la situation dans une interview pour Pitchfork :
"C'est la culmination de tout ce que l'on a déjà fait, il y aura des trucs qu'on trouvait sur les albums de remixes, sur la BO de Max Payne... La musique sera toujours agressive et basée sur la rythmique, et on a essayé de gommer les influences du premier album qu'on trouvait encore sur Get Color, ce qui fait que ce nouvel album sera comme une conclusion logique. Nous sommes toujours le même groupe classique - guitares, basse, batterie, et tout le toutim - mais nous essayons d'expérimenter et trouver une façon de ne jamais nous ennuyer."
Néanmoins, pour certains d'entre vous, l'ennui sera inévitable. Si vous avez du mal à supporter les exactions de Skrillex, même lorsqu'il bosse pour KORN, alors fuyez cet album comme la peste. Certes, musicalement, les deux "artistes" sont à peu près aussi éloignés l'un de l'autre que KORN et les DEFTONES peuvent l'être, mais pour une oreille inexpérimentée, la différence sera difficile à trouver...
Néo-Electro donc, tribal par nécessité, provocateur et onirique par goût, Death Magic est un disque difficile d'approche pour un fan de Heavy Metal lambda, mais recèle des trésors de créativité et de puissance pour qui veut bien faire l'effort de s'y plonger.
Moins systématique que Get Color, mais plus homogène et disons le, plus "adulte", c'est un disque cohérent, qui unifie ses pistes dans un ciment synthétique, sans oublier pour autant d'y injecter une bonne dose de Rock, même si celle ci est tellement intégrée qu'elle ne devient qu'une sous couche parmi tant d'autres.
Je ne saurais que trop vous conseiller de profiter du premier "vrai" morceau "Stonefist", car c'est un des seuls qui garde une patine un tant soit peu Metal avec ses guitares toutes dents dehors par moments. L'intermède instrumental "Salvia" pourra aussi vous évoquer les albums de remixes de FEAR FACTORY, mais en dehors de ça, l'atmosphère est plutôt suintante, clinique parfois, mais rarement électrique. Un peu comme si le CYNIC de Re-Traced croisait le chemin moins zen d'ORGY, bien que parfois, la violence gronde en arrière plan, comme le démontrent les cyniques "New Coke", ou "Courtship II", presque Synth/Indus sur les bords.
L'ensemble fait même de temps à autres beaucoup de bruit, et "Men Today" déchire les enceintes de ses stridences rythmiques graves et bombastic.
Mais il va vous falloir une bonne dose d'ouverture d'esprit pour vous attaquer à HEALTH, et il serait dommage que votre esprit reste fermé à cette musique unique, certes utilisant un vocabulaire plus électronique que Rock, mais n'était ce pas aussi le cas du KILLING JOKE des 80's ? Ce qui ne les a pas empêché de nous sortir un premier album froid comme la mort et un Pandemonium plus brutal et précis qu'une charge Core...
Difficile en revanche de savoir sur quoi Death Magic aboutira, et surtout, quand... Mais profitons du moment présent, et savourons le retour des quatre iconoclastes de l'extrême, menant le groupe le plus et paradoxalement le moins Rock que Los Angeles aura connu...
Ajouté : Mardi 20 Octobre 2015 Chroniqueur : Mortne2001 Score :     Lien en relation: Health Website Hits: 7094
|