# 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
}
KING PARROT (au) - Dead Set (2015)
Label : Agonia Records
Sortie du Scud : 15 mai 2015
Pays : Australie
Genre : Thrash Metal / Grind
Type : Album
Playtime : 10 Titres - 35 Mins
Connaissez vous la mini série TV Dead Set ? Le pitch, simple et ingénieux nous laisse découvrir une équipe de candidats de télé réalité coincés dans une maison, alors qu'un épidémie de zombies fait rage à l'extérieur. Ils ne sont bien évidemment au courant de rien puisque coupés du monde, et se demandent ce qui peut bien se passer. Pas de techniciens, plus de directives, jusqu'au moment où ils découvrent l'horrible vérité et doivent y faire face, avec toute l'horreur que ce genre de situation peut impliquer.
Certes, c'est farfelu, mais sacrément efficace.
Ca vous plairait de recréer cette ambiance pour piéger vos meilleurs amis ? A moindre frais, puisque je suppose que vous n'avez pas les moyens de mettre un tel canular en place...
Alors réjouissez vous, j'ai la solution pour un effet choc optimum.
Et en plus, cette blague ne nécessitera que peu d'investissement de votre part. Gardez votre appartement, invitez quelques convives, mettez une musique soft, genre smooth jazz, coupez tout à coup le jus, et glissez la dernière galette des australiens de KING PARROT dans le lecteur.
Rallumez, et appréciez le spectacle de panique. Drôle non ? Et le tout, sans avoir besoin de vous maquiller la tronche façon Walking Dead walkers...
Maintenant, laissez moi vous présenter les héros du jour. Depuis 2010, Matthew Young, Ari White, Slatts Everyday, ainsi que Andrew Livinstone (depuis 2012) et Todd Hansen (depuis 2014) agitent Melbourne et les scènes du monde entier de leur subtil mélange de Thrash old school et de Grind furieux. Les australiens sont adeptes du DIY, et se sont toujours débrouillé pour sortir leurs albums et tourner par leurs propres moyens. Ce qui a eu pour effet de leur faire gagner un capital sympathie énorme, résultat obtenu à la force du poignet, et grâce à une musique incroyablement puissante, drôle, et out of time. Les bouchers ont tourné avec CARCASS, OBITUARY, ont tenu la scène sur d'énormes festivals, et se sont même vu interviewés par Phil "NOLA" ANSELMO himself, sur sa chaîne Housecore Records de Youtube. D'ailleurs, leur musique n'est pas sans rappeler les sorties de ce bon vieux Phil sur son propre label, lui si friand d'authenticité et de délires bruitistes en tous genres.
Et admettons le, avec KING PARROT, il est salement servi.
Jusqu'ici, KING PARROT se contentait de faire pulser son Thrash old school de soubresauts Grind torrides, sans chercher midi à quatorze heures. Les fans ont encore en mémoire la tuerie intégrale que fut Bite Your Head Off il y a trois ans, délire spontané et joyeux foutoir qui les avait laissés sur le cul. L'affaire se complique aujourd'hui avec Dead Set, qui sans sacrifier à la spontanéité qui reste la marque de fabrique des australiens, semble plus "mature" et préparé que ses prédécesseurs.
Bien sur, le quintette n'a pas laissé son humour et son naturel sur le bord de la route. Dead Set sonne aussi frais que le reste de leur discographie, même si certains titres plus techniques qu'à l'accoutumée viennent lui donner une apparence disons plus... présentable.
Cette volonté de mieux préparer le terrain avant de le brûler est manifeste sur un morceau comme "Punisher". Tout y passe niveau courants extrêmes de ces trente dernière années, et l'effet est garanti. Thrash bien sur, bourrasques Grind évidemment, mais effluves Hardcore et senteurs putrides presque Sludge s'y rajoutent pour aboutir à un concentré de fureur d'à peine trois minutes. Même genre de constat pour le fourbe "Reject" qui commence la marche d'un pas lourd, avant de se laisser aller à un mid tempo Core du plus bel effet, en privilégiant la lourdeur et les inflexions bien méchantes.
Le final "Dead Set", le plus long du lot, ajoute aussi sa pierre à l'édifice, en empilant les couches d'influences diverses tout au long de ses presque sept minutes travaillées, sans pour autant y sacrifier la puissance, qui reste soufflante. Et quelle bonne idée d'avoir laissé la seconde partie du titre sombrer dans un marais Sludge parsemé de stridences, uniquement animé par des guitares acides et un chant scandant son titre comme un leitmotiv.
Nonobstant le soin apporté aux nouvelles compositions, ce nouvel album n'a rien perdu des traits de caractère du combo. L'humour est toujours présent, et le délire n'est pas prêt de s'arrêter. Pour le prouver, KING PARROT vous sert sur un plateau des délires instantanés, n'hésitant pas à insuffler une bonne dose de Rock n'Roll dans son Thrash overboosté ("Like A Rat", presque Hardcore 80's dans la démarche), de cavaler comme des dératés ("Anthem Of The Advanced Sinner" qui fait très bien le lien avec le passé), de bien se marrer en pensant à une énième blague bien grasse ("Hell Comes Your Way", avec une voix encore plus juvénile et un texte hilarant porté par un refrain collégial). Et si vous n'êtes toujours pas convaincu que ces cancres ont triplé leur deuxième année de maternelle, ils vous avouent eux mêmes que l'école ne les intéressait pas plus que ça ("Sick In The Head", aveu au groove imparable).
Certes, Dead Set à la première écoute semble un peu moins spontané que les premiers efforts du groupe. Mais les tournées incessantes, les grandes scènes et les années qui passent ont permis à KING PARROT de poser les bases d'un style personnel qu'ils peaufinent d'album en album, en insufflant un poil de professionnalisme dans leur délire d'ensemble.
Alors ça sonne plus carré, moins bordel à peine organisé, mais c'est toujours aussi ludique et énergique. Alors de quoi se plaint on ?
De rien, sauf qu'on aimerait bien les voir sur scène, puisque c'est là qu'ils s'expriment le mieux.
Alors surveillez le calendrier, mais n'oubliez pas de jeter un coup d'oeil à l'extérieur. Ils sont peut être déjà dans votre jardin, prêts à vous bouffer.
Ajouté : Mardi 22 Septembre 2015 Chroniqueur : Mortne2001 Score : Lien en relation: King Parrot Website Hits: 4988
|