# 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
}
DEVIN TOWNSEND (ca) - Ki (2009)

Label : InsideOut Music / Wagram
Sortie du Scud : 25 mai 2009
Pays : Canada
Genre : Introspection Ultime d’un homme en phase de transition
Type : Album
Playtime : 13 Titres - 67 Mins
Les carrefours de la vie sont parfois faits d’une forêt d’embranchements inextricable dont il est très difficile de sortir. Nous n’avons pas toujours les bons réflexes ni le matériel adéquat pour nous orienter à travers cette jungle de sentiments, d’émotions, de gestes…Si la boussole du destin était disponible à chacun, les surprises et autres déconvenues quotidiennes ne seraient plus qu’un vestige du passé, comme ces regrets que l’on éprouve parfois en regardant le film de son existence dont nous n’avons pas forcément écrit nous-mêmes tous les chapitres.
Nous ne sommes que des êtres humains après tout. Et même si Dieu est censé nous avoir créés à son image, il faut alors admettre le postulat que la perfection et l’omnipotence permanentes n’existent pas. Le surhomme tel que le décrivait Nietzsche ne devient alors qu’un concept usé et rance tout juste digne d’illustrer les manuels scolaires qui renvoient à la gloire antique des adeptes du Reich. Admettons nos faiblesses, reconnaissons nos peurs et nous pourrons enfin recréer un univers stable et confortable, ou les erreurs ne seront que des anecdotes destinés à dessiner un futur plus clément, plus paisible, où les démons d’hier deviendront les anges de demain.
Il serait trop facile de stigmatiser la souffrance sur l’autel de la facilité et de la compassion. Nous avons tous notre Némésis, nous refusons juste de l’affronter, en nous cachant derrière un mur de pilules, de poudres et de bonheurs factices qui peinent de plus en plus à cicatriser nos plaies.
Ce vent chaud et étouffant qui nous empêche d’avancer plus vite, cédera la place à une brise légère et agréable, et nous pourrons enfin arrêter la chronologie des siècles qui effacent de plus en plus vite les sourires que nous contemplons de loin, de peur de les faire disparaître dans le néant de notre mémoire.
En plaçant sur un piédestal de fausses icônes, en louant ce Veau D’or qui nous attire vers un consumérisme effréné, nous avons oublié l’essentiel. Nous recentrer non pas sur nous même, mais sur le monde. Elargir notre champ de vision jusqu’à en perdre le sens commun. S’enivrer de liqueurs aux couleurs d’arc-en-ciel qui coloreront nos veines d’un rouge sang reflétant la matrice originelle.
Il en est des hommes comme des particules de nature qui nous entourent sans jamais nous frôler. Nous en touchons certaines, mais d’autres nous échappent irrémédiablement, et prennent un malin plaisir à nous donner le vertige, pour que nous réalisions enfin que la quintessence de notre présence est justement d’en trouver le sens.
Et la musique…Rien que la musique.
Evacuer enfin ce trop plein de larmes pour que notre personnalité prenne toute sa dimension, pour que les autres nous voient tels que nous sommes.
Devin. Je te regarde depuis tellement d’années maintenant, et je croyais te connaître. Je cherchais derrière ces notes, ces cris une image que tu souhaitais tellement dévoiler sans jamais y arriver. Et si maintenant tu es arrivé au bout d’un chemin, c’est pour mieux emprunter une nouvelle route, et nous t’emboîterons le pas, il le faut. Tu n’es pas un messie, tu n’es pas une idole, tu n’es pas un prophète. Tu ne dissimules plus ton visage derrière un épais voile de pudeur ou d’impudeur, tu ne renies plus la violence, tu la gères comme on range des jouets dans ce vieux coffre que plus personne n’ouvrira, à part toi.
Tu as laissé de coté les dissonances, mais pas la violence. Car elle est là, tapie aux confins d’une grotte silencieuse, enfouie sous ces arbres de délicatesse que tu as arrosés avec tendresse. Prête à ressurgir à tout moment, prête à sortir ses griffes sur le premier pèlerin venu troubler la tranquillité ambiante.
Tu n’as jamais paru aussi serein. Tu as laissé ce poids qui te brisait les reins tomber quelque part ou quelqu’un d’autre en fera son fardeau.
Et tu nous reviens, apportant avec toi cette lumière indispensable à notre éveil. Tes sons n’ont jamais été aussi magnifiques, ta voix n’a jamais paru aussi belle. Que chantes tu Devin ? Ta rédemption ?
Il en va des descriptions comme des actes d’amour. Certains doivent se faire en plein jour et de la façon la plus démonstrative qui soit, d’autres ont lieu en secret, dans l’alcôve de l’âme, bien loin de toute ce qui reste…
Embrassez cet album comme on embrasse un enfant. Les yeux rivés sur lui, sans attendre en retour rien d’autre que de l’amour.
Vous le pensiez génie.
Vous le pensiez malade.
Vous le pensiez fini.
Devin, bienvenu ici.
Bienvenue chez toi.
Bienvenu aux pays des hommes…
Ajouté : Samedi 25 Avril 2009 Chroniqueur : Mortne2001 Score :      Lien en relation: Devin Townsend Website Hits: 13935
|