# 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
}
RAMMSTEIN (de) - Herzeleid (1995)

Label : XIII Bis Records
Sortie du Scud : 24 septembre 1995
Pays : Allemagne
Genre : Metal Indus
Type : Album
Playtime : 11 Titres - 49 Mins
En ce temps-là (1995), je connaissais bien mon disquaire et il connaissait très bien mes goûts. Aussi, quand lors d’une de mes visites dans mon magasin fétiche il me dit « eh, j’ai un nouveau truc pour toi », je me suis dit « cool ». Et là, surprise, il me sort un disque avec des gars à moitié à poil et tout huilés sur la jaquette. Je le regarde et me demande s’il ne se fout pas de ma gueule. Ça arrive des fois. Mais, il avait l’air sérieux, le con. Alors, je lui fais un gros sourire et lui demande quand même d’arrêter de me prendre pour un gland. Est-ce que j’ai une tronche à écouter les 2 BE 3 ?! Et là, il a un sourire qui déchire son visage d’une oreille à l’autre lorsqu’il prend le disque et le met dans la platine du magasin. Bon, les minutes qui suivirent firent certainement fuir pas mal de clients. De mon côté, je venais de découvrir un grand groupe.
Passons sur l’imagerie irréelle et déplacée de la jaquette et son énorme fleur jaune toute moche et arrêtons-nous sur la musique. Déjà, un groupe qui chante en allemand, j’adore. Surtout quand on sait aussi bien utiliser les consonances gutturales que peut avoir cette langue quand on la pousse, comme sait le faire Till. Le roulement ou le crachage de « r » n’est pas donné à tout le monde. Si on ajoute une voix grave et qui prend aux tripes, c’est tout gagné.
Au niveau de la musique, c’est monotone, très monotone. Simple aussi. Et aucun instrument ne varie trop par rapport à l’autre. Cela donne un côté ultra puissant à l’ensemble, même si beaucoup de personnes trouveront ça justement trop répétitif (j’ai beau leur dire que c’est fait exprès, ils me croient pas !). Les guitares nous plaquent des riffs fort et bien sentis, parfois même accessibles à des débutants à la guitare. Par contre, ce qui est moins abordable, c’est cette justesse dans la répétition, cette faculté de ne pas se décaler un chouia. C’en est presque mécanique. Machine. Et c’est aussi une des caractéristiques fortes de RAMMSTEIN, cette capacité à être aussi insensible, malgré une teneur extrêmement humaine. Vous me suivez ? Et les machines alors dans tout ça ? Elles sont omniprésentes et donnent une nouvelle puissance aux guitares, puisqu’elles donnent des riffs souvent identiques, avec un son agressif, seule capable de soutenir la distance de la distorsion des guitares. C’est pour tous ces éléments que RAMMSTEIN a su se différencier. Par ce son si particulier, cette manière de composer, parfois à la limite de la simplicité, mais avec toujours autant de talent, cette façon de chanter ou de parler avec force, violence et poésie, et ces shows pyromaniaques dont on se souvient longtemps après les avoir vu.
Pour parler quand même un peu des titres, on notera une similitude entre le premier morceau, « Wollt Ihr Das Bett In Flammen Sehen? », et le dernier, « Rammstein ». Les deux sont les plus répétitifs de l’album, les plus longs aussi, ou presque. D’ailleurs, en plein milieu, on trouve « Das Alte Leid », qui leur donne la réplique. Ensuite, le morceau que l’on retient sans doute comme possédant le riff le plus entraînant, c’est « Du Riechst So Gut », véritable bijou d’inventivité. Je peux vous assurer que ce morceau est une tuerie en concert. Les différentes versions qu’en on fait le groupe montre bien aussi l’attachement qu’ils ont vis-à-vis de ce morceau. Et puis, entre tout ça, on retrouve des choses beaucoup plus violentes dans les riffs (« Der Meister ») ou alors très calmes, limite étonnant (« Seemann »). Sur ce dernier titre, à la première écoute, on se demande même si c’est bien Till qui chante. On voit quand même que ce n’est pas le domaine dans lequel il est le plus à l’aise. Chose qui ne sera plus aussi vraie sur le deuxième album.
Herzeleid est le premier album de RAMMSTEIN. C’est aussi certainement leur meilleur. Il bouillonne d’inventivité, de créativité, de violence, de frustration, d’hymnes qui font encore leur succès aujourd’hui. On connaît aujourd’hui la carrière du groupe. Mais à l’époque, personne ne pouvait penser qu’ils auraient ce parcours.
Discographie Complète de RAMMSTEIN :
Herzeleid (Album - 1995),
Sehnsucht (Album - 1997),
Live Aus Berlin (Album - 1999),
Live Aus Berlin (DVD - 1999),
Mutter (Album - 2001),
Lichtspielhaus (DVD - 2001),
Reise, Reise (Album - 2004),
Rosenrot (Album - 2005),
Völkerball (DVD - 2006),
Liebe Ist Fur Alle Da (Album - 2009),
Made In Germany (Best-Of - 2011)
Metal Impact Bonus :
RAMMSTEIN : Les Crasheurs De Feu (Book - 2006)
RAMMSTEIN (de) - Paul Landers (Interview - Dec-2009)
Ajouté : Mercredi 21 Mars 2007 Chroniqueur : Wong Li Score :      Lien en relation: Rammstein Website Hits: 66711
|