# 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
}
SODOM (de) - Persecution Mania (1987)
Label : Steamhammer / SPV Records
Sortie du Scud : 1er décembre 1987
Pays : Allemagne
Genre : Thrash Metal
Type : Album
Playtime : 9 Titres - 44 Mins
Sans jeu de mot ni d’esprit mal placé (quoique !), lorsqu’on reconsidère le fait de baptiser son groupe SODOM, on peut que constater la chose suivante : tout ca pue du cul tout de même. Mais en y regardant de plus près, encore que pas trop non plus, à cause de ces exhalaisons et fragrances fleuries qu’il vaut mieux éviter, le trio allemand de Gelsenkirchen fondé en 1982 a toujours été et reste à ce jour un Grand groupe de Thrash respecté et acclamé. S’ils sont aujourd’hui l’un des leaders du Thrash teuton, tout ne fut effectivement pas si facile pour eux à leurs débuts car, il faut le dire, ils avaient plutôt la tête dans le cul...
L’aventure de SODOM démarre réellement pour eux en 1987, lorsque le trio magique composé de brutes animales telles que Tom Angelripper au chant et à la basse, son acolyte Aggressor à la guitare et Chris Witchhunter à la batterie sort son second opus Persecution Mania qui révolutionnera le Thrash teuton et européen plus tard. Apôtre d’un Thrash Metal brutal aux relents putrides Punk, leur style rêche et brut a tout pour plaire, surtout sur ce second opus, qui reste pour beaucoup leur album le plus accompli, l’opus fer de lance du groupe. Fondée sur une production carrée, compacte, SODOM capte d’emblée l’attention de son auditorat grâce à des riffs ultra accrocheurs, des riffs de basse pachydermiques et des plans de batterie fort bien ajustés et énergiques. Les crachats vocaux d’Angelripper accompagnent ce magma sonore fort bien exécuté.
On ne compte plus les hits présents sur Persecution Mania. «Nuclear Winter» lance les hostilités avec son Thrash nerveux et rageur évoquant un thème qui marquera pour longtemps les textes de SODOM : la guerre et ses processus de massacre de dérivés biologiques et nucléaires. Toujours aussi électriques, les morceaux de SODOM sont carrément déments et jouissifs. «Electrocution» en est une illustration probante, avec un riff de folie comme le combo teuton sait les créer. Le trio allemand étant de férus admirateurs du Punk et de la bande de Lemmy, quoi de plus normal que de leur rendre hommage en proposant une cover du mémorable «Iron Fist» qui si elle est semblable à l’originale, a le mérite de correspondre et de rentrer dans l’esprit et dans l’univers sonore du groupe.
Les choses bien plus avisées arrivent avec «Persecution Mania», morceau pesant, crépusculaire et complexe montrant toute la dextérité du trio teuton le tout orchestré autour d’un solo de folie. SODOM continue de nous convaincre en nous administrant le légendaire et historique doublé avec «Procession to Golgotha» suivi de «Christ Passion». Le combo nous fait part ici de ses inquiétudes liées à la religion. D’un titre instrumental lourd, compressant et étouffant à un morceau à l’ambiance délibérément sulfureuse et diatribe anti-chrétienne dénonçant les égarements de nos compatriotes les Croyants. Un enchaînement prodigieux, remarquablement mené, asphyxiant et venimeux à souhait.
SODOM mène sa barque intelligemment et suit le cap d’un Thrash violent, grondant et terriblement efficace. Héritier de la mouvance punk et de groupes tels que VENOM ou MOTORHEAD, le groupe de Gelsenkirchen sait également composer des morceaux plus directs et coups de poings tels que «Conjuration» ou bien «Bombenhagel», un titre obus emblématique de SODOM. La formation s’offre également le luxe de proposer une nouvelle et bien meilleure version de son «Outbreak of Evil» déjà présente sur la première rondelle du groupe, In The Sign of Evil. SODOM n’en a pas fini de nous épater de son Thrash vindicatif et putride. Sur des pistes telles que «Sodomy & Lust», les sonorités rythmiques Death font déjà quelques apparitions. Modèle de puissance, de cohésion et bénéficiant déjà pour l ‘époque d’une production puissante et maligne, Persecution Mania est le type même de l’album culte des années 80. L’album qui me donna envie de faire de la basse. Culte. Le Thrash parfait à mes humbles yeux.
Discographie Complète de SODOM :
In The Sign Of Evil (Mini Album - 1984),
Obsessed By Cruelty (Album - 1987),
Persecution Mania (Album - 1987),
Agent Orange (Album - 1989),
Better Off Dead (Album - 1990),
Tapping The Vein (Album - 1992),
Get What You Deserve (Album - 1994),
Masquerade In Blood (Album - 1995),
'Til Death Do Us Unite (Album - 1997),
Code Red (Album - 1999),
M-16 (Album - 2001),
Sodom (Album - 2006),
The Final Sign Of Evil (Album - 2007),
In War And Pieces (Album - 2010),
Epitome Of Torture (2013)
Ajouté : Vendredi 24 Avril 2009 Chroniqueur : Loki Score : Lien en relation: Sodom Website Hits: 11699
|