# 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
}
PITBULLS IN THE NURSERY (FRA) - Equanimity (2015)

Label : Klonosphere
Sortie du Scud : 4 mai 2015
Pays : France
Genre : Death Metal progressif
Type : Album
Playtime : 9 Titres - 57 Mins
"Disons les choses clairement, écrire un disque pendant quatre ans n'a aucun sens. C'est encore pire quand tu fais comme Axl Rose qui a passé 14 ans à bosser sur Chinese Democracy. Je veux dire par là qu'en 14 ans, tu dois changer au moins cinq fois le climat général musical, sans parler des changements personnels qui t'affectent." (Zakk Wilkd interviewé par Rock Hard en septembre 2010).
Il aura fallu 9 ans aux PITBULLS IN THE NURSERY pour donner une suite à leur debut album, Lunatic. Et en 9 ans, comme en 14, il se passe beaucoup de choses dans la vie d'un homme. Et cela se ressent forcément sur sa musique. Si les parisiens n'ont pas donné de succession à Lunatic, c'est parce que plusieurs catastrophes se sont abattues sur leur gang. Cela commence en 2007 avec la faillite de leur label, Black Lotus. Cela continue la même année avec le départ de leur fondateur, parolier et frontman, Panda. Il est remplacé par Ced (ex SUPERTANKER) mais la collaboration est interrompue en 2010 car le chanteur ne correspond pas au son que cherche à développer le groupe. Après divers essais infructueux c'est finalement Tersim Backle (ex SMALL / WURM) qui prend le poste de chanteur en 2011. Le combo réécrit ses chansons pour les adapter à l'organe de son nouveau vocaliste. Le nouvel album est enregistré fin 2014 et masterisé, début 2015. Ce qu'il faut retenir de cette biographie pour le moins chaotique c'est que malgré ses déboires, la formation a tenu bon. PITN a continué à jammer, composer des chansons, faire des concerts... Et c'est le résultat de ce travail que livrent les parisiens en mai 2015 avec leur nouveau label, Klonosphère. Il faut toutefois souligner que même si ces déboires ont eu une incidence sur la création du dernier méfait, PITN est un groupe qui prend son temps. Il s'était déjà écoulé six ans entre la fondation du gang et Impact, le premier EP et six autres années entre Impact et Lunatic.
Il y a des artistes qui sortent des albums à un rythme soutenu, d'autres qui prennent leur temps. Ce qui compte, c'est le produit fini. Equanimity est un album composé sur plusieurs années et cela se sent. De prime abord, on pourrait croire que rien n'a changé, la piste d'ouverture "Crawling" faisant la liaison avec le Brutal Death de Lunatic. Le son explose avec un énorme riff, une batterie épileptique et un chant alternant growl brutal et screaming enragé. Un morceau long (8 minutes) sur lequel ça joue super vite sur la première partie. Ensuite la rythmique se calme et la voix se pose en chant clair le temps d'un couplet plus posé. Malgré quelques sursauts de brutalité, la chanson a progressivement glissé vers une ambiance très mélodique, avec une surexposition de la caisse claire et des nappes de clavier qui soulignent un chant clair qui susurre jusqu'à l'épilogue.
Plus l'on avance dans l'opus et plus les ambiances se posent, prenant toujours leur temps pour déployer d'infinis motifs. Il y a comme une rupture progressive de la musique, une évolution marquée de l'intention. Les chansons successives laissent entrevoir les évolutions dans le concept du groupe, qui délaisse peu à peu son Brutal Death pour un Metal plus technique, travaillé, avec toujours plus d'arrangements, de sons discordants, d'ajouts. La tracklist alterne des morceaux purement Death ("Insiders", "Conspiracy), d'autres mixtes ("Rule the Pight", "The Oath", "Your Dream is not mine") et quelques pistes qui explorent d'autres formes musicales comme "Soul Bones", ses arrangements Jazzy et son tempo un peu Reggae et la transition instrumentale "interlude" qui ne sert pas à grand chose et qui ressemble comme une jumelle aux pistes instrumentales transitoires qu'on trouve désormais sur tout album de Metal moderne. Et c'est finalement cela qui est gênant dans ce projet. L'impression d'assister à cette fameuse Klonisation des groupes propulsés par le label poitevin qui deviennent peu à peu un clone de KLONE en développant des atmosphères, une musique de plus en plus Progressive, expérimentale, construite sur un schéma similaire, quasi standardisé.
La colonne vertébrale des pitbulls est toujours un gros Death bien agressif et violent mis en avant par une magnifique technique et un groove omniprésents. A l'instar de Lunatic, Equanimity est une rondelle qui nécessite plusieurs écoutes pour se dévoiler, car les compos sont riches, denses et complexes. Mais on a affaire à un disque de transition, un changement s'annonce dans l'intention du groupe et il y a fort à parier que leur prochain méfait sera plus affirmé dans un genre ou dans l'autre. A moins bien sûr que PITN ne choisisse la voie du milieu...
Ajouté : Mercredi 11 Novembre 2015 Chroniqueur : Rivax Score :     Lien en relation: Pitbulls In The Nursery Website Hits: 4982
|