# 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
}
THE KORDZ (lb) - Beauty & The East (2012)

Label : EarMusic
Sortie du Scud : mars 2012
Pays : Liban
Genre : Metal Progressif Oriental
Type : Album
Playtime : 16 Titres - 63 Mins
Les hasards de la distribution font que cet album ne touche nos côtes que maintenant, et je me dois en premier lieu de remercier EarMusic pour cette heureuse initiative.
Archétype de CD en trompe l’œil qui commence léger pour finir en apothéose, Beauty & The East est assurément un bijou auquel il convient d’offrir l’écrin qu’il mérite.
On connaissait déjà le métissage entre le Metal le plus dru et les influences de l’Orient, mais je dois avouer que loin de jouer les suiveurs, THE KORDZ possède maintenant un bon train d’avance sur ses contemporains. Seize titres qui vous emmènent loin, très loin, pour un voyage exotique des plus délicieux, dont on ne ressort pas complètement indemne. Mais on en revient des rêves plein la tête, parfois sombres et étranges, souvent lumineux et porteurs d’espoir.
Allez, faites moi confiance et glissez la galette dans le tiroir. Fermez les yeux, ouvrez votre esprit, et c’est parti…
On connaissait les inclinaisons de TEA PARTY pour les influences orientales. Leur crossover avait d’ailleurs atteint son apogée sur le splendide Triptych, qui brassait allègrement l’alternatif, le Rock, la Pop, et les musiques venues du soleil.
On était bien sur aux côtés des impeccables MYRATH, pour leurs sonorités chaudes teintées d’une nervosité Metal de fort bon aloi.
Alors maintenant, l’équation est simple. Vous mélangez les deux groupes pré cités, vous assaisonnez le tout d’une touche unique et indéfinissable, et vous obtenez THE KORDZ. Sorte de DREAM THEATER fantasmagorique, à la croisée des chemins entre les structures progressives des années 70 et l’esprit aventureux du 21ème siècle, le quintette vient d’accoucher d’une œuvre qu’il faut absolument promouvoir à grande échelle sous peine de passer à côté d’un petit chef d’œuvre moderne.
Composé en alternance de morceaux à influences Américano européennes, de titres à l’atmosphère étrange et délétère, et d’hybridation entre Rock et parfums du Proche-Orient, Beauty & The East ne lasse à aucun moment (et j’emploie cette expression à dessein), rebondit sans cesse sur ses propres racines, et finit par nous envoûter irrémédiablement.
Mais jugez par vous-même. Essayez le morceau éponyme par exemple, qui vous conduit au cœur de Beyrouth, avec ses arabesques de cordes et son rythme tribal qui vous prend par les tripes pour mieux vous rapprocher du soleil. Rien qu’à l’écoute de cette chanson, je me suis senti transporté loin, très loin, et je pouvais sentir le sable sous mes pieds. Et puis, mes guides m’ont enfin rejoint à l’occasion de « Last Call », reprenant le même thème, avec cette fois ci une ossature plus traditionnellement Rock. De la magie à l’état pur, une odeur d’encens qui vous chatouille les narines avant de vous faire chavirer le cœur. Sublime, juste sublime, et je pèse mes mots !
Mais loin de se limiter à servir de carte postale exotique à l’intention d’Européens en mal de sensations orientales, THE KORDS ne se contente pas de recycler ses racines, et reste à l’aise dans absolument tous les domaines.
Et « The Garden » en est une illustration parfaite. C’est le prototype même de ballade réussie haut la main qui donne la chair de poule, et ce, simplement grâce à une guitare acoustique délicate, une voix magique, et un piano discret. Saluons d’ailleurs le travail fantastique effectué par Moe Hamzeh, qui module ses cordes vocales avec talent, et se pose en conteur fabuleux. Ne négligeons pas non plus le flair de Nadim à la guitare, qui propose d’ailleurs sur ce morceau un solo fabuleux, dans la plus pure tradition de John Petrucci, dans ses moments les plus éthérés.
Mais comme je le disais, THE KORDZ, ce sont aussi des morceaux mi figue mi raisin, comme « Again », aux couleurs très 90’s, un peu ALICE IN CHAINS, un peu OUR LADY PEACE, le tout à la sauce contemporaine.
Même constat pour « Insomnia Kid » et ses lignes de guitare superposées à des claviers en tonalités mineures.
Côté sensations fortes, jetez vous sur « Get Behind » et sa basse menaçante, « Nothing Or Everything » et son rythme échevelé sur fond de fumet du Proche Orient, voire le presque déplacé « Nic-o-Teen » final, qui aurait pu sans problème figurer sur la BO d’un Teen Movie. Quand je vous disais que ce groupe est unique…Clôturer un album aussi décalé par un morceau aussi conventionnel, il fallait oser…
C’est certainement la seule critique que j’oserais formuler envers ce fabuleux conte en seize tableaux qu’est Beauty & The East… Car bien loin de passer pour une attraction de foire comme pouvaient l’être les groupes asiatiques dans les années 80, THE KORDZ est une entité à part entière, et peu importe qu’ils viennent du Liban ou d’ailleurs, là n’est pas la question. Un bon groupe est un bon groupe, peu importe les passeports des musiciens, car la musique ne tolère aucune frontière.
Ne pas écouter cet album ne serait pas une preuve d’ostracisme ou de xénophobie, mais de bêtise. Car la musique qu’il contient est si riche, qu’elle ne peut que vous rendre meilleurs, en tout cas, plus sereins, et vous apportera plus d’une heure de bonheur, ce qui, à notre époque, est loin d’être négligeable.
Mais je vous laisse, la musique m’appelle. On ne peut pas refuser d’être heureux, ne serait ce que pour le temps d’un disque.
A noter que le CD est proposé avec un DVD sur lequel figure un documentaire et deux clips. Alors vous savez quel support privilégier !
Ajouté : Jeudi 12 Juillet 2012 Chroniqueur : Mortne2001 Score :      Lien en relation: The Kordz Website Hits: 13024
|