# 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
}
MARMOZETS (uk) - The Weird and Wonderful Marmozets (2014)

Label : Roadrunner Records
Sortie du Scud : 20 septembre 2014
Pays : Angleterre
Genre : Alternative Rock
Type : Album
Playtime : 13 Titres - 46 Mins
On a beau nous les quadra/quinqua vénérer toujours les mêmes ténors du passé, il faut reconnaître que le Rock, c'est une affaire de jeunesse avant tout. Après tout, les BEATLES, les ZEP, le SAB, AC/DC, METALLICA ont commencé leur carrière comme de jeunes branleurs plein de foutre et avec une envie folle d'en découdre et de mettre au rebut les stars du passé. "Poussez vous que je m'y mette", tel est le slogan éternel de ces musiciens de moins de trente ans, moins de vingt parfois, qui brandissent l'étendard de leur adolescence juste finissante pour s'imposer dans ce monde de vieux businessmen en costard cintré, et de DA au style aussi ridicule que leur goûts sont lamentables.
Localisons un peu géographiquement la révolte Rock je vous prie. Si les USA ont depuis bien longtemps envahi les ondes et les bacs et qu'ils sont à l'origine même du mot "Rock", l'apport de l'Angleterre est tout simplement considérable. Jugez vous même, et cette liste est loin d'être exhaustive. BEATLES, STONES, KINKS, LED ZEP, SMITH, WHO, SEX PISTOLS, MUSE, IRON MAIDEN...C'est simple, il semblerait que toute forme moderne de musique ait émergé des côtes anglaises. Pop, Hard Rock, Heavy Metal, Punk, revival Ska, New Romantics, Gothique...Ai je besoin d'en rajouter ?
Et même si les Anglais sont certainement les fans les plus chauvins, voyant en leur production locale la meilleure du monde (les entrefilets du genre "OASIS, les nouveaux BEATLES" sont chose aussi commune là bas qu'une pinte descendue cul sec à l'heure du thé), il faut leur concéder qu'ils ont souvent sauvé le monde de la musique du marasme.
Alors, en ce moment, pas mal de noms sont sur toutes les lèvres. Et ils viennent d'Angleterre bien sur. On pourrait citer les TEMPLES, THE MIRROR TRAP, les DEAD SONS, PUPPET REBELLION, et beaucoup d'autres. Tous méritent d'être suivis, épiés, tant nous avons un besoin constant de sang frais, d'envie, de renouvellement pourquoi pas. Il nous faut de temps à autres un groupe qui ne réfléchit pas, qui avance bille en tête, et il faut le choper tant que c'est chaud, avant que le soufflé ne retombe. Alors suivons. Et pourquoi pas les MARMOZETS par exemple ?
Les MARMOZETS viennent du Yorkshire, de Bingley plus précisément. Ils ont entre dix sept et vingt et un ans, et pourraient bien représenter la quintessence de cette jeune scène anglaise pleine de vitalité. Menés d'une voix de papier de verre par la jolie Becca Macintyre, qui sait caresser dans le sens du poil avant de l'arracher d'un coup de dents rageur, le quintette pioche au gré de ses humeurs dans le patrimoine local et international pour arriver à ses fins. On les dit Hardcore, Punk, Pop Punk, Post Punk, et c'est vrai qu'il y a un peu de tout ça dans leur musique. Forts de deux EPs très remarqués, les excellents Vexed et surtout Passive Agressive, ils reviennent fin 2014 pas vraiment pour nous conter fleurette, mais plutôt pour mettre à l'épreuve notre circuit auditif avec leur musique qui sent bon la crise adolescente, la révolte, et l'exubérance Teen. Et ça fait du bien, vraiment !
Si votre besace d'hymnes instantanés Rock commençait à se vider, jetez vous de suite sur ce The Weird and Wonderful Marmozets, parce qu'en plus d'être bizarres et magnifiques, les MARMOZETS déversent des torrents de décibels savamment agencés, tantôt en tueries Rock/Post Punk, parfois clairement Pop, mais le plus souvent hybrides proto Néo Punk/Hard Rock qui doivent autant aux RUNAWAYS qu'à GARBAGE ou LINKIN PARK. Avec en plus, ce petit plus garage qui les rend si séduisants. Développons.
J'en étais resté à ROCK GODDESS pour le côté Young and Free. Mais avec un truc aussi simple, carré et efficace que "Born Young and Free" qui exhale la Pop sautillante, les riffs Punk catchy, et la rage Post Mathcore, je dois réviser mon jugement. Aussi séduisantes musicalement et physiquement que furent les soeurs Turner, leur version de la jeunesse énervée sent le rance par rapport à cette pinte servie moussue et sans précaution. Et comme le hurle Becca, "On fait ce qu'on veut, parce qu'on est né jeune et libre", avant de s'arracher le gosier sur un break que les KITTIE auraient sans doute adoré...
Puis, le côté fuzzy de "Why Do You Hate Me" sent bon la colère d'une jeune lycéenne effondrée de constater que le mec qu'elle convoite lui préfère une pouf au kit Maquillage de voiture volée/jupe ras la moule...Que voulez vous, la vie n'est pas juste. Mais ces guitares, lâchées quand il faut, ce chant acidulé qui part soudain en vrille, et ce refrain qui sonne comme le signal de la fin des cours, c'est juste... Adorable !
Pour vous imaginer le groupe on stage, il suffit de plaquer vos tympans sur l'infernal "Is It Horrible". Et d'imaginer le mosh pit rempli de jeunes branleurs en transe, dansant à en perdre la tête sur cette imbrication de couplets ludiques à la frontière de la Pop Dance, qui part en couille lors d'un refrain qui défriserait les RUNAWAYS. Hargne+mélodie+authenticité = poudre magique qui enivre et séduit. Point. Et une fois de plus, Becca donne tout ce qu'elle a, comme une jolie poupée de celluloïd qui en a marre d'être dans sa jolie maison de plastique. Parce qu'en plus d'avoir de la puissance (et c'est un euphémisme), la demoiselle à un sacré organe qui lui permet de tenir la note haute sans problème.
Et puis comme si les TALKING HEADS se frittaient avec les jeunes MUSE, "Cover Up" déboule avec sa rythmique décalée, pour mieux nous faire perdre le seul pied sur lequel on tenait encore. Ca remue intelligent en plus de courir comme des dératés !
Car depuis leurs deux EP's, plutôt largement influencés Hardcore, les cinq potes ont enrichi leur son, élargi leurs horizons, ce qui leur permet de balancer en toute discrétion une ballade lacrymale sans en avoir l'air, et "Cry" est belle, très belle.
Mais pour être convaincu de leur potentiel à dépoter sévère, et justifier leur présence dans ces colonnes, "Particle" fera amplement l'affaire, entre autres. Basse torturée, chant écorché, guitares tendues comme un premier string ficelle, tout est là pour l'exigeant fan de Hard Rock. Et ce, même si le refrain mélodique a de quoi se tailler une belle route sur les ondes indés.
Ajoutez à ça le riff introductif de "Move, Shake, Hide", qui pourrait être le "Twist and Shout" de cette génération décomplexée, tant il donne envie de danser, sauter et faire la fête avec tout ce qui bouge, et vous comprendrez assez vite tout le caractère indispensable de ce premier album.
Car les MARMOZETS n'en ont rien à foutre en fait. Rien à foutre des catégories, de la crédibilité si chère aux Rock critics, et ils empruntent, volent de tous les côtés, touchent à tout, mélangent les genres, collent un riff poisseux sur une rythmique dansante, et se permettent même de finir leur disque sur un truc un peu ambitieux et plus consensuel comme "Back To You".
Et c'est pour ça que je les aime, et aussi parce qu'ils ont signé sur Roadrunner, une maison de disques où ils n'ont pas grand chose à glander. Ils sont jeunes, et libres. Et le Rock à besoin de ça. Et si vous êtes réfractaire à leur musique parce qu'elle n'est pas assez "authentique" pour vous, allez vous faire foutre.
N'oubliez pas cette phrase du bon vieux Pete 'Big Nose" Townsend.
"Si c'est trop fort...."
Ajouté : Jeudi 29 Janvier 2015 Chroniqueur : Mortne2001 Score :      Lien en relation: Marmozets Website Hits: 7246
|