# 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
}
CANCEROUS WOMB (uk) - Born Of A Cancerous Womb (2014)

Label : Grindscene Records
Sortie du Scud : 24 février 2014
Pays : Royaume-Uni
Genre : Death Metal / Grind
Type : Album
Playtime : 11 Titres - 44 Mins
Perchée sur une bute de rochers escarpés, animée de pierres et surveillée par son château, Edimbourg semble sereine, sûre de sa force. Sous les gravas, les entrailles, desquelles jaillissent les solides gaillards de CANCEROUS WOMB. Vous ne connaissez surement pas (encore) ce groupe, mais eux vous connaissent, et tout particulièrement Chris Lewis, ancien de chez CEREBRAL BORE et qui aura manié le micro pendant deux ans au sein de notre KRONOS national. L'idée n'était pas tant que ça de redonner ses lettres de noblesse au Death Metal dans un pays qui s'est déjà illustré en la matière. Simplement de propager la maladie infectieuse qui touche cette enclave britannique : l'extrémisme musical dans son habit le plus purulent. Prison flottante que la Manche sépare de notre fragile France, la Grande-Bretagne (qui n'aura donc pas généré que des poètes) nous laisse un bref répit. D'aucuns diront que c'est retarder l'échéance, car après un EP et un split avec MAGPYES, DYSCAPHIA et DIASCORIUM, l'inéluctable, c'est que CANCEROUS WOMB va passer aux choses un peu plus sérieuses.
Born Of A Cancerous Womb sera cette pomme pourrie que les vers décrocheront de l'arbre. Ce miasme fétide qui embaume le cadavre laissé à l'abandon dans la décharge. Les Ecossais n'effectuent strictement aucun tri dans leur musique, passant d'une influence à une autre sans réfléchir mais néanmoins soucieux de conserver la moiteur primitive du Death Metal, qu'il soit technique, brutal, classique ou barré (ANTIGAMA, es tu là ?). Avec cette pointe de Grind qui le rend vraiment furieux, cet album est une véritable séance de torture soumise aux humeurs changeantes d'un Chris Lewis dont l'alternance growls / screams fait froid dans le dos. Ce n'est pas un putain de cliché tiède à la Danny Worsnop d'ASKING ALEXANDRIA, c'est un vrai paroxysme, un chaud-froid vocal organique qui s'allonge sur un matelas de riffs dégoulinants et de patterns de batterie proto-punk. La couenne d'un CANNIBAL CORPSE fond comme neige au soleil sous la chaleur étouffante d'un "Hunted To Extinction", les larmes de sueur se glacent sur votre échine dès que se manifestent les hurlements suraigus de Lewis. Sauvage, marginal, alliéné, Born Of A Cancerous Womb est un animal à sang froid. En apparence, ces garçons sont inoffensifs, mais je soupçonne une composition comme "Austrian Basement" de symboliser l'hyperactivité qui bouillonne dans leurs carcasses. Aucune bouffée d'air n'est autorisée. Ce premier full-lenght fonce tête baissée et emporte dans son élan quelques stéréotypes. Parmi eux, on pourra se faire à l'idée que Born Of A Cancerous Womb laisse trop d'espace à un jusqu'au-boutisme technique (qu'il soit vocal ou intégré au jeu de guitare) induisant malgré lui l'idée d'un Death Metal peu maitrisé, trop bruitiste pour être vrai. Mais en vérité, en grattant sous la croûte de sang coagulé, on découvre une cohésion d'ensemble qui démontre que rien n'a été laissé sous le commandement de l'à-peu-près. La production est morbide, granuleuse, l'ambiance sépulcrale. Tout est lié : intensité, atmosphères, paroles, imagerie. Et sans qu'on s'en rende compte immédiatement, CANCEROUS WOMB vient de sortir un grand album, d'une barbarie singulière (et ma foi bandante).
Edimbourg l'auguste, Edimbourg la sévère, Edimbourg de pierre peut être fière de sa marmaille. Dans les décombres qui sont les vestiges de son aura millénaire, une bête est née, sous une étoile assurément mauvaise. Jouant avec le Death et le Grind comme un Dahmer avec le contenu de ses bocaux, CANCEROUS WOMB vient de frapper fort. Un truisme pour n'importe quel groupe, mais pas pour eux. A la frontière de ce qu'autorise l'âme humaine en musique, il y a Born Of A Cancerous Womb, dérangé et dérangeant.
Ajouté : Samedi 08 Août 2015 Chroniqueur : Stef. Score :     Lien en relation: Cancerous Womb Website Hits: 7096
|