# 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
}
LINDEMANN (de) - Skills In Pills (2015)
Label : Warner Music
Sortie du Scud : 19 juin 2015
Pays : Allemagne
Genre : Tanz Electro Metal
Type : Album
Playtime : 11 Titres - 45 Mins
"Die Wirtsleut und die Mädel, die rufen beid: O weh! Die Wirtsleut, wenn ich komme, die mädel, wenn ich geh"
Que le propriétaire se chagrine de l'arrivée et que la serveuse se peine du départ, l'affaire semble logique, mais un tant soit peu opaque... Heidi, Heido, on rentre du boulot, on va boire à la santé des camarades, on trousse éventuellement la serveuse, ou tout du moins on lui prodigue quelques claques lubriques sur les fesses... Et on boit, on boit en pensant que le lendemain sera un jour de travail comme les autres. Boulot, alcool, sexe. Que veut dire tout ceci ?
Ceci, résume parfaitement la démarche de Till Lindermann sur ce premier album solo, Skills In Pills.
Il a d'abord picolé, un soir de froid en Suède, en 2000. Dans un bar rempli de bikers qui en voulaient à son cul, puisqu'il avait encore fricoté avec la mauvaise fille. Alors qu'un sale échange de bourre pifs pointait le bout de son nez, Peter Tägtgren débarque, comme dans un western. Les affaires s'arrangent, on picole, on se retrouve plus tard, on picole encore, on vomit partout, et une belle amitié éthylique naît. Les deux compères deviennent inséparables, et que peut il bien se passer lorsque deux artistes reconnus et talentueux s'acoquinent ? Ils finissent immanquablement par jouer ensemble, pour le fun, entre deux compètes de brûlures à la bougie sur les bras. Et deux séances de vomissement urbain.
Inutile de vous présenter en détail les deux protagonistes de cette histoire. Till, c'est l'âme de RAMMSTEIN, son frontman, aussi timide qu'imposant, à l'humour souvent borderline. Peter, c'est le multi cartes génial, fondateur d'HYPOCRISY, de PAIN, et gourou des potards et consoles.
Tanz Metal vs Techno Death et Indus groovy. Un peu comme si vous mélangiez dans le même cocktail une grosse rasade de Jägermeister et une bonne lichette d'absinthe. Mais las, nous savons tous que les meilleurs souvenirs de cuite sont souvent les plus embrumés.
Que les amitiés de comptoir ne se transforment pas toujours en complicité qui perdure. On oublie souvent les promesses faites un soir de biture, et les blagues qui semblaient hilarantes à ce moment là tombent souvent à plat le lendemain, la tête dans les limbes.
Skills In Pills allait il être de ces private jokes qui n'amusent que leurs auteurs ? Pas du tout. Parce qu'avant d'être de joyeux lurons un peu pochtrons, Till et Peter sont avant tout des musiciens extraordinaires qui traitent la rigolade avec le plus grand sérieux.
On sait Peter T. très décidé et carré. On sait aussi que son emprunte musicale est très forte, mais qu'il sait aussi s'effacer pour ne pas dénaturer l'image des musiciens qu'il produit. C'est une fois de plus le cas, et il s'est contenté d'apporter à Till Lindermann sa science du studio et son génie de la production. Mis à part sur quelques arrangements, et sur un ou deux morceaux, son influence est mince. Car Skills In Pills porte définitivement la marque de son interprète/concepteur, et se rapproche la plupart du temps de RAMMSTEIN, toutes périodes confondues, avec toutefois une emphase plus prononcée sur la noirceur et l'humour paillard.
Toujours obsédé par le sexe, sous toutes ses déclinaisons possibles, Till reste fidèle à un style qu'il affectionne, en total décalage avec sa vraie personnalité introvertie.
Alors nous avons droit à des choses en opposition par exemple, et la juxtaposition de "Home Sweet Home", et "Cowboy", qui se suivent directement sur l'album illustre bien ce décalage. Le premier, sombre, lourd et emphatique rappelle "Seemann" ou "Klavier", voire même "Mutter", avec ses claviers fantomatiques et son chant lyrique. Le second, plus léger et primesautier révèle la facette la plus ludique de Till, avec un Cyber Boogie hilare et détendu. Riff saccadé, rythmique bondissante, refrain en clin d'oeil, c'est un morceau en parfaite symbiose de PAIN et RAMMSTEIN. Belle collaboration !
Mais le titre le plus "à mi chemin" entre les deux entités est sans conteste "Ladyboy", sur lequel Peter s'amuse beaucoup à introduire en chausse pied son amour de l'électro Métal dans les délires Indus de Lindemann.
Rayon petites surprises, "Yukon" tire son épingle du jeu en proposant un Pop Electro Métal assez calme, au mid tempo appuyé et au refrain bien senti.
"Fish On" présente la face la plus "Rock" de Till, sans oublier de citer son groupe d'origine en poussant les guitares sur les breaks, les amalgamant à des nappes de synthé aigues et planantes.
Niveau production, le boulot est évidemment immaculé, mais comment aurait il pu en être autrement avec Peter Tägtgren poussant les curseurs ? Le son se rapproche beaucoup du RAMMSTEIN de Mutter et Rosenrot, avec toutefois une grosse nuance sur la puissance Panzer qui caractérise le sextette allemand. Seule exception à cette règle, "Children Of The Sun", qu'on croirait issu des sessions de Liebe ist für Alle Da, ample, directif et massif. Les textes ne surprendront pas ceux qui sont familier de l'humour du géant allemand, et le chant en Anglais est fluide, tout en gardant ces inflexions germaniques que l'on apprécie tant.
Somme toute, cette récréation que l'on pressentait quand même anecdotique mais ludique, a fini par déboucher sur un bon album, qui s'il ne s'éloigne pas vraiment du rivage RAMMSTEIN pour se rapprocher de celui de PAIN ou HYPOCRISY, a su montrer le vrai visage d'un chanteur particulièrement attachant, à la voix grave si unique et "stimulante". Gros son, humour de zinc, sexe, guitares, et surtout beaucoup de fun et de complicité entre deux musiciens aux univers pas si éloignés que ça, Skills In Pills a largement de quoi vous faire patienter jusqu'au prochain RAMMSTEIN, prévu pour la fin de l'année.
Je pense qu'en lâchant une ou deux oreilles là dessus, le taulier et sa gironde serveuse auront de quoi faire vibrer leur juke-box. Et puis après tout, une main aux fesses, c'est un petit sacrifice si le pourboire est bon, et le sourire franc.
Skills In Pills, ou de quoi boire jusqu'au bout de la nuit.
Ajouté : Mercredi 01 Juillet 2015 Chroniqueur : Mortne2001 Score : Lien en relation: Lindemann Website Hits: 5916
|