# 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
}
PORN (FRA) - From The Void To The Infinite (2011)

Label : Freaksound Music
Sortie du Scud : 10 octobre 2011
Pays : France
Genre : Rock / Metal Industriel
Type : Album
Playtime : 10 Titres - 38 Mins
Depuis son retour sur la scène, en 2009, avec son groupe PORN, Philippe Deschemin n’a eu de cesse d’être en activité pour pouvoir enfin réaliser un second album, repartant des maquettes de la tentative avortée de 2006. C’est pourquoi, en parallèle de la sortie d’une compilation, en 2010, pour regagner un peu d’attention, le Lyonnais a, avec l’aide de Mehdi Desoeuvre, entrepris d’enregistrer le vrai successeur de l’EP Call Me Superfury. Non sans quelque évolution dans l’identité sonore, From The Void To The Infinite se présente comme une œuvre conceptuelle, inspirée du poème Les Hommes Creux de l’auteur T.S. Eliot.
Ainsi, au travers de ses dix compositions, Philippe retranscrit un voyage du sens, du sentiment, via un protagoniste à la recherche de son identité, expérimentant tour à tour l’amour, le fanatisme, le manque et la mort. Illustrée d’une pochette minimaliste et abstraite, la musique se révèle assez sombre - adéquate au récit - et aussi plus lourde que ce à quoi nous avait habitués PORN. L’on note également une meilleure production, tout comme une intégration plus marquée et avisée des éléments électroniques. Les samples ont été soigneusement choisis, répandant des climats industriels inquiétants ou bien tapissant les breaks de sonorités davantage angéliques. Bien que « I Died Twice » manque d’une véritable accroche, son caractère morne s’orne de bruitages variés, habillant justement l’ambiance futuriste, lisse et déshumanisée qui sert de point de départ à ce disque. Un ton noir et dépouillé qui ressurgit par la suite via « Nothing Like You » et « Same Old Story », deux plages aériennes qui sont digitalement altérées, puis finissent gouvernées par les effets saturées des machines, déstructurant l’espace sonore. Parmi les nappes synthétiques, le duo a programmé des beats qui demeurent généralement légers, posant juste le rythme des pistes pour un impact plus mesuré et efficient des guitares. Il est vrai que l’utilisation d’une vraie batterie aurait permis l’apport de sonorités percussives organiques. Néanmoins, la décision prise reste imbriquée dans le concept et la nature froide, et esthétique, de la musique associée, comme les impacts mécaniques bruts de « Not With A Bang ». Par ailleurs, les claviers ne sont pas qu’oppressifs et apportent également un certain contraste, en instaurant boucles accrocheuses et déversement de nappes colorées parmi quelques-unes des pistes, engendrant alors un esprit dansant plaisant. Alternant avec les sections industrielles chargées, les breaks servent souvent de point de chute enjoignant le vocaliste à retrouver un espace aérien plus introspectif.
Sous la houlette de Philippe, les vocaux purs et mélodiques évoluent tout au long des compositions, de pair avec les situations dépeintes. Son timbre Rock envolé s’associe donc aux dynamiques, modulant les justes nuances et sa portée, pour délivrer les paroles avec conviction et sincérité. Cette symbolique du parcours du personnage principal trouve son apogée avec « No Domininon » - piste finale de l’album - où les arpèges voilés constituent le fil directeur pour le chant plaintif et touchant qui navigue sur une cadence placide et légère. Mais avant la conclusion de cette odyssée vers l’au-delà, le frontman lyonnais invite parfois quelques pointes énervées de concert avec les riffs ronflants de la basse. « We Are Weapons (Shoot Your Leaders) » se présente d’ailleurs dans une optique plus Rock’n’Roll, où les accents burnés de rébellion sont efficacement desservis sur un rythme robuste. Toutefois, avec diverses sonorités comme des percussions typées musiques du monde, des boucles jungles, ou encore des beats Electro entêtants, certains titres comme « Love Like War » explorent un aspect plus libertin, aguichant l’auditeur de ses synthés et d’un chant Pop suave et harmonieux.
En plus de l’apanage des machines, les guitares suivent des plans énergiques et avenants. Si les riffs compacts sont relativement classiques, leur tournure directe et efficace profite sans conteste à asseoir les refrains, et durcir certaines facettes par l’appui infaillible de Mehdi (« Machineries Of Joy »). La basse fourmille sur les breaks nerveux et grossit sensiblement les cordes voisines - un peu trop retirées dans le mix - pour accompagner les convulsions industrielles sur les passages musclés. D’autre part, les jeux harmonisés se montrent davantage réfléchis, insérant des airs dynamiques et notables sur des tempos folâtres, comme « A Duty Dance With Death ». Ou bien, l’on peut aussi découvrir des leads lancinants, mélancoliques, au détour de « In The Wrong Lane », aiguisant le sentiment attristé qui domine.
Ce From The Void To The Infinite n’est pas un album aisé à présenter. Plus qu’une association de lignes instrumentales, il est davantage une expérience émotionnelle à laquelle participer. Philippe y use d’un savoir-faire méticuleux pour combiner des schémas tant oppressifs que libérateurs. Les mélodies fluctuent, parfois même disparaissent pour laisser place à des passages cathartiques au sein des distorsions, ou bien dessinent des paysages plus aguicheurs et festifs. Mais la trame phare demeure dans l’élaboration de sonorités douces et aériennes, qui propagent leurs souffles de vie dans l’infini inconscient de l’auditeur ayant pris part à cette errance intérieure.
Ajouté : Mercredi 01 Février 2012 Chroniqueur : CyberIF. Score :     Lien en relation: Porn Website Hits: 15094
|