# 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
}
LITTLE WOMEN (usa) - Throat (2010)

Label : Aum Fidelity
Sortie du Scud : 13 avril 2010
Pays : Etats-Unis
Genre : Extrême Free Jazz Core
Type : Album
Playtime : 7 Titres - 40 Mins
Lorsqu'on est fan de musique, et de courants opposés, pas forcément assimilables, on se prend à rêver d'une rencontre improbable entre deux artistes, aux univers différents, mais peut être complémentaires... On sait déjà que certains se plaisent à mixer des influences disparates, dans le seul but d'expérimentation, ou tout simplement parce qu'ils le sentent ainsi...
Après tout, beaucoup de rivières découlent de la même source... On peut s'amuser, Funk, Disco, FM, Pop, Punk, Reggae, Blues, Folk... Certains sont spécialistes de la chose, mais le résultat est toujours viable, du moins modéré.
D'autres à l'opposé, se délectent des extrêmes, et on connaît des noms...
Perso, je me suis toujours demandé ce que donneraient les digressions libres d'Ornette Coleman et l'agression déstructurée de DILLINGER ESCAPE PLAN...
Mathcore vs Freejazz ?
Le bordel assuré. L'indignation, l'étendard du "n'importe quoi" porté à bout de bras de honte et de chagrin. En quelque sorte, une telle déflagration a presque déjà existé. Sous les cerveaux féconds et profondément mesquins de John Zorn et Mick Harris, dans le caleçon à la propreté douteuse de Mike Patton et Dave Lombardo. Ou dans d'autres filiations, plus directes, ORIGINAL SILENCE, ou Peter Brötzmann.
D'essence, on se doute que la confrontation de l'énergie du Hard/Mathcore et la liberté rythmique et vitale du Free Jazz vont produire une gerbe impressionnante d'étincelles, c'est admis.
Mais je tiens à préciser ici qu'il s'agit plus d'un emprunt Core de la catégorie Free Jazz qui anime les intentions de LITTLE WOMEN. Car - et il me faut ici effectuer une mise en garde - le quatuor de Brooklyn est beaucoup plus enraciné dans la tradition de Coleman que celle de CONVERGE ou DEP. Alors disons le, Throat n'est PAS un album Metal à tendance Jazz, mais bien un disque de Jazz à l'énergie Hardcore. Et la différence est énorme.
Vous voila prévenus.
J'aurais pu vous parler de leur effort plus récent, Lung, sorti il y a deux ans. Mais ses caractéristiques propres l'éloignent trop du propos légitime de ce webzine, et une unique piste de quarante deux minutes vous aurait dérouté, dégoûté, et vous auriez abandonné tout effort de découverte. Throat est plus "facile" à apprivoiser, et plus simple si l'on veut découvrir le génie des quatre instrumentistes du projet. LITTLE WOMEN, ce sont Travis Laplante (sax tenor), Darius Jones (sax alto), Andrew Smiley (guitare), et Jazon Nazary (batterie), qui après un premier mini album, Teeth, se sont intéressés à une autre partie du corps, la gorge en l'occurrence. Et pour illustrer ses possibilités, ils se sont lâché dans un Free Jazz à la limite du Mathcore le plus abscons parfois, plus spécialement sur deux pistes. Car Throat est découpé en sept mouvements, de durée variées, et de thématiques diverses.
Et les deux segments en question, sont "Throat I" et "Throat III", sur lesquels la guitare d'Andrew Smiley aligne plus de plans que Ben Weinman sur toute sa discographie. Il rivalise d'audace avec les deux saxophonistes, qui appliquent à la lettre les commandements de Coleman, qui affirmait à l'époque que la seule façon de jouer correctement d'un sax était de l'étrangler.
Dont acte.
Evidemment, Jazon Nazary se met au diapason. Ses plans rythmiques sont d'une sauvagerie inouïe, heurtés, expulsés de ses baguettes comme subissant un exorcisme, et lorsque le quatuor se retrouve dans un unisson chaotique, les séquelles sont sévères...
Bien sur, pour nombre d'entre vous, ceci prendra des airs de bordel sans nom, sans structure, d'improvisation masturbatoire sans queue ni tête. Je respecte cette opinion, mais je ne la partage pas.
Le groupe résume ainsi sa démarche risquée :
"Nous créons de la musique dont le but est la transcendance à travers la brutalité d'un assaut sonique et de mélodies ascendantes"
Et ils le prouvent en toute modestie le long des douze minutes de la pièce centrale "Throat IV", qui débute sous des auspices harmonieux et typiques du Jazz de tradition, avant que tout ne parte en totale folie, lorsque les premières notes hystériques de guitare résonnent avec force stridences. Dès lors, soit le Free Jazz vous est familier, et vous ne cracherez pas en sus sur un regain de puissance typiquement Metal et abrasive et vous serez aux anges.
Sinon, l'ennui et les céphalées vous guetteront... Mais la dextérité des musiciens, leur liberté de ton ne doit pas occulter le fait qu'ils "incarnent" leur instrument, et que la musique qu'il produisent semble exhaler de leur être propre, devenu instrument à part entière.
Ils habitent leurs structures, les incarnent, et c'est ce qui fait la force de Throat, au premier comme à n'importe quel degré. Les deux saxos respirent, halètent, crachent, vitupèrent, la rythmique fait vibrer les cordes vocales, et la musique devient expression primale, parfois cri, parfois feulement, parfois souffle... Loin de se contenter d'un "assaut sonique" pur et brut, le quartette propose des pauses, des respirations mélodiques et précieuses ("Throat V"), avant de terminer leur entreprise "corporelle" par quelques minutes de relâchement ludique, "Throat VII", sur lequel ils s'amusent à tester leur propre voix, et à imiter leur instruments vocalement...
Les plus barrés des metalleux penseront parfois à NAKED CITY ou PAINKILLER, pour cette façon de faire souffrir un sax au bord de la suffocation, pour cette batterie en roue libre. Mais la basse de Bill Laswell n'est pas là pour aplanir les déviances Jazz de Zorn, et si Mitch Harris sait se montrer indomptable, sa folie n'est rien comparé à la démence des patterns de Jazon Nazary...
Mais je le répète, Throat est un disque de Jazz, destinés aux plus aventureux, aux amateurs d'avant-garde, et aux curieux en tout genre.
Il prouve simplement, et c'est la raison de sa présence dans ces colonnes, que cette musique libre peut être encore plus puissante, plus furieuse, incontrôlée, incontrôlable que n'importe quel ensemble de Grind, de Death, ou de Mathcore.
A condition d'avoir l'esprit ouvert, et de savoir ressentir des émotions étrangères. Mais qui a dit que la liberté était un concept facile à comprendre ?
Ajouté : Vendredi 30 Octobre 2015 Chroniqueur : Mortne2001 Score :      Hits: 6636
|