# 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
}
ARCHAIOS (do) - The Distant (2011)

Label : Dark Canvas Records
Sortie du Scud : 11 novembre 2011
Pays : République Dominicaine
Genre : Death Metal Mélodique
Type : Album
Playtime : 8 Titres - 43 Mins
Ce n’est pas comme si on les attendait impatiemment les Dominicains de ARCHAIOS, mais leur premier album, sorti il y a cinq ans, avait laissé une bonne impression sur leur potentiel futur. Entre temps dénigrés et rendus responsables des maux de leur pays du fait de leur statut de fer de lance de la scène Metal en République Dominicaine, ils ont également eu à essuyer moult évènements perturbateurs lors de la création de ce nouvel album, de la fermeture de leur studio d’enregistrement, à la perte de leurs données. Ainsi, après deux ans d’enregistrement, signer sur le label Dark Canvas fut une bénédiction pour la formation, faisant d’eux le premier groupe dominicain à sortir un album internationalement.
L’honneur, pour eux, a également été de d’avoir pu travailler avec le producteur Kanky Lora, qui avait assisté CAVALERA CONSPIRACY, entre autres. Un tournant plus professionnel que l’on retrouve directement au travers de l’artwork, très travaillé. Néanmoins, contrairement à l’imagerie dépeinte, le son du groupe s’est éclairci et enrichi en samples de renfort. Des apports au synthé qui restent subtils, accompagnant légèrement les couplets, et orchestrant davantage les finales des pistes. « Legions (In Remembrance Of...) », par exemple, gagne en intérêt sur ses passages rythmiques plus classiques, grâce à ces boucles symphoniques, opératiques, qui lui confèrent un aspect impérieux, et offrent de belles harmonies avec le tapping, et les riffs mélodiques. Qui plus est, le groupe propose toujours des compositions conséquentes pour le genre, ce qui n’est pas pour déplaire. En outre, la production est évidemment meilleure, bien que l’album précédent n’ait pas à se plaindre.
Du coup Johandy heurte ses toms, caisses, et cymbales à pleine puissance, mettant son instrument au supplice d’accélérations ravageuses. De sa batterie, il tabasse, créant des explosions virulentes résolument Thrash. Les rafales de double pédale ne sont pas en reste, et les riffs déchiqueteurs trouvent toujours un appui débridé certain du côté des percussions. Sur des cadences soutenues, les plans percutants dévoilent une solide envergure (« Gathering The Silence »). Mais cette brutalité n’est pas assénée à l’aveugle, et bénéficie de structures travaillées et variées, à l’image de celle du très long « Until Lightning Strikes », où les démonstrations des guitares laissent leur place à un tandem batterie/basse sillonnant la piste sur un ton sévère. David Masalles, nouveau manipulateur de cette dernière, la laisse suffisamment ressortir pour gonfler les cordes et soutenir les plans aguicheurs énergiques, ou se montrer davantage plombant en fin de plage.
Pareillement, derrière le micro, Ramsey Delarge remplace Rubén et assure des vocaux intenses et maîtrisés. Mieux géré dans sa définition, le chant dense prend toute son ampleur, demeurant un tantinet esthétique, et s’aménage en hurlements rageurs sur les blast beats véloces, ou riffs fougueux, à l’instar des sections mitraillées de « Approaching Of My Demise », ou de ses refrains véhéments. A cette contrepartie rauque, Ramsey propose aussi quelques harmonies vocales, ou overdubs, renforçant son apparition. La production lui permet d’être pêchu et efficace, comme sur « Dreaming With The Dead », titre oldschool, ou bien profiter des nappes de claviers désolées pour y déposer des refrains entraînants au milieu de couplets abrupts. Toujours sans réellement s’imposer, le chant n’est qu’un élément de plus dans l’instrumentation des morceaux, et il est souvent absent durant des moitiés de plages. Mais un morceau tel que « My Mourning » confirme le potentiel seulement instrumental du combo, avec ses riffs accrocheurs, percussions effrénées, harmonies captivantes, et la légère touche de piano et d’acoustique.
Par ailleurs, la paire de guitariste (bienvenue à JC Castillo) uniformise le disque, en répétant consciemment certains schémas et mélodies. Les riffs sont autant ronflants et acerbes, qu’entraînants. Les guitares ravivent ainsi les quelques morceaux qui finissent par se montrer davantage classiques, ou répétitifs, avec des jeux rapides et assurés. Eric et son collègue jouent principalement de façon oldschool, maîtrisant les sections typiques du Death Mélo (« Nightshade »). Les solos ont, toutefois, été revus à la baisse et se révèlent moins exceptionnels qu’il y a cinq ans, clôturant les titres de sweeping, legato et autres manifestations virtuoses - soit dans un aspect plutôt froid, seulement motivé par la technique, ou parfois chaleureux, à l’image de l’outro magistrale de « The Distant », avec l’aide de samples.
ARCHAIOS accompli enfin ses idéaux avec The Distant. Néanmoins, la production a beau être de meilleur acabit, et les jeux plus soignés, l’on ne parvient pas à retrouver le charme que portait Out Of The Shadows…. Sur cet opus, tout semble trop calculé, millimétré ; ce qui est tant mieux pour le groupe en lui-même, mais n’accroche pas spécialement l’auditeur. De plus, en cinq ans, l’on espérait une évolution plus marquée de la part des Dominicains, qui semblent se reposer sur leurs acquis, sans même affirmer une réelle personnalité. Cependant, je me dois de préciser, qu’en dépit de leur faible popularité, le quintette reversera 15% des profits engendrés par les ventes de l’album aux victimes d’Haïti et du Japon. Une démarche à saluer.
Ajouté : Mercredi 01 Février 2012 Chroniqueur : CyberIF. Score :     Lien en relation: Archaios Website Hits: 11592
|