# 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
}
ANDRE MATOS (br) - Mentalize (2010)

Label : SPV
Sortie du Scud : 1er février 2010
Pays : Brésil
Genre : Power Metal mélodique
Type : Album
Playtime : 12 Titres - 56 Mins
« It’s time to stand up », me dit Andre, quand j’écoute « A Lapse In Time ». Et puis surtout, surtout, quelques minutes auparavant, « you know I will return ». Et ça, c’est plutôt une bonne nouvelle. Un beau jour de cette année 1996, le Holy Land d’ANGRA m’avait vraiment mis sur le cul, transporté dans un autre monde, envoyé vers un Metal que je ne soupçonnais pas. Depuis, je l’avoue, Andre Matos ne quitte plus mes disques de chevet. Même si je me permets, sans aucun complexe, de mettre de côté certaines tentatives infructueuses, comme le deuxième album de SHAAMAN par exemple … Mais la carrière métallique d’Andre Matos mérite le respect, alors oui, on se lève pour Andre. S’il vous plaît.
Déjà, le premier témoignage du « Andre Matos Band », Time To Be Free, il y a deux ans quasiment jour pour jour, avait tout pour séduire. Enfin, jour pour jour … On va faire une petite parenthèse. Comme la fois précédente (pour Time To Be Free, donc), Mentalize est sorti au Japon et au Brésil depuis belle lurette. Ne me demandez pas pourquoi, c’est ainsi et c’est frustrant. Mais l’attente en vaut la peine.
La première chose qui saute aux oreilles, à l’écoute de Mentalize, c’est que Matos a enfin trouvé sa famille, a su s’entourer de musiciens fidèles, sincères et inspirés. Le bonhomme a beau revendiquer la composition des trames mélodiques, il ne serait rien sans son équipe qui gagne.
Un Sascha Paeth aux manettes, dont l’influence sur ce disque paraît évidente.
Un Eloy Casagrande, le minot de la bande à la batterie, qui s’éclate comme un fou, et balance ce côté tribal qui a toujours si bien coloré la musique d’Andre.
Un Fabio Ribeiro (claviers) et un Luis Mariutti (basse) tellement indispensables.
Un Andre « Zaza » Hernandez et un Hugo Mariutti (guitares) qui accompagnent le maestro avec classe.
Et au milieu, donc, le père Matos.
Plus encore que Time To Be Free, Mentalize illustre à merveille tout le background musical du chanteur brésilien. Il y a, en premier lieu, ce passage remarqué dans ANGRA qu’Andre aura bien du mal à dissimuler, que ce soit sur « I Will Return », « Shit The Night Away » ou encore « Powerstream ». Les amoureux de Angel’s Cry et Holy Land vont s’y retrouver, à n’en pas douter. Il y a ces petites touches classiques (« Someone Else ») qu’on reconnaît toujours sur un album avec Andre. Comme d’ailleurs le démontre si bien la ballade « Back To You », pas vraiment extraordinaire mais qui permet de goûter à ses origines musicales très variées. En fin de morceau surviennent comme par enchantement des chœurs qui me rappellent les dernières productions d’AVANTASIA (le projet de Tobias Sammet). Certes, Andre est présent dans le circuit depuis plus longtemps que son ami Tobi. Alors je ne peux m’empêcher de penser qu’il y a un je-ne-sais-quoi de Sascha Paeth derrière tout ça (si en plus on fait état de la présence d’Amanda Sommerville).
Cependant Andre Matos reste maître à bord. Pas seul, mais maître. Et il aime son piano. Il n’hésite pas à s’accompagner, seul, pour un « Lapse In Time » reposant. Il aime aussi le clavier de Fabio. Il lui demande mille et mille figures lors d’un « Violence » qui commence mieux qu’il ne finit. Il aime la symphonie, celle qui orchestre les premières mesures du Power « When The Sun Cries ». Il aime donner à « Mentalize » une facette plus sophistiquée, plus sauvage aussi. Les sonorités sud-américaines habitent chacun des musiciens qui l’entourent, alors pas besoin de se forcer …
Voilà, Andre Matos, c’est un peu tout ça à la fois, une gestuelle poétique qui fait du Power originel un Metal chantant, souvent positif, plein de surprises, et où la prise de risque constitue un facteur clé, à l’inverse d’un « Mirror Of Me » beaucoup trop convenu.
Mais ce serait là finasser.
Que voilà encore un bien bel album.
Oui, oui, « it’s time to stand up ». S’il vous plait.
Tracklisting :
1 – Leading On 2 – I Will Return 3 – Someone Else 4 – Shift The Night Away 5 – Back To You 6 – Mentalize 7 – The Myriad 8 – When The Sun Cried On 9 – Mirror Of Me 10 – Violence 11 – A Lapse In Time 12 – Powerstream
Ajouté : Mercredi 10 Mars 2010 Chroniqueur : NicoTheSpur Score :     Lien en relation: Andre Matos Website Hits: 12445
|