# 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
}
DAWN PATROL (usa) - Democracy Delivered (2015)

Label : Auto-Production
Sortie du Scud : 3 juillet 2015
Pays : Etats-Unis
Genre : Thrash Metal
Type : Album
Playtime : 9 Titres - 30 Mins
"Marie is only six years old, information please
Try to put me through to her in Memphis Tennessee"
Je ne sais pas si depuis 1959, ce bon vieux Chuck B. a retrouvé sa petite Marie à Memphis, Tennessee, où s'il a arrêté de la chercher depuis que Francis Cabrel l'a retrouvé...
Après tout, certains adieux déchirants inspirent les artistes pour écrire leurs meilleures chansons.
Ce qui est certain, c'est que s'il traîne encore dans les rues de cette ville, il risque de rencontrer des individus suscitant une inspiration beaucoup moins poétique. Et si Chuck se retrouve face à face avec les frères Gonzales, il va falloir qu'il leur chante une autre ritournelle plus... virile.
Ok donc, le décor est planté, le Tennessee, notre Johnny national l'a aussi chanté, mais ce que je peux vous garantir, c'est qu'on ne trouve pas trace d'une quelconque nostalgie de cet état dans la musique de DAWN PATROL. Formé en 2012, le trio mené par les frères Tommy et Kyle Gonzales (guitare/chant et batterie) est déjà responsable de deux Ep's, Undead Horde en 2013, et Police State l'année suivante. En 2015, ils se décident enfin à passer au long format, et enregistrent ce Democracy Delivered aux Ardent Studios sous la direction artistique d'Alan Burcham qu'on trouvait déjà à la console sur Police State.
L'idée de base de ce premier LP nous est expliquée par le leader lui même :
"J'ai vu quelqu'un porter un T-shirt sur lequel était inscrit "Democracy Delivered", c'était une image d'un avion larguant des bombes du ciel. Cette image m'a frappé, alors lorsque je suis rentré chez moi, j'ai écrit une chanson basée la dessus. Comme il n'y avait aucun groupe appelé Democracy Delivered, on l'a gardé."
Le trio aime à se définir selon les pourcentages 85 pourcent Metal et 15 pourcent Expérimental. De ce côté là, impossible de les contredire, même si le partage 90/10 semble plus fiable. Car l'essence même de DAWN PATROL, bien loin des idées mélodiques de l'album éponyme de NIGHT RANGER, c'est le Thrash, le vrai, le pur, le costaud, celui qui garde les muscles du cou au chaud. Le trio ne s'embarrasse pas de principes, fonce bille en tête, et largue ses bombes sans crier gare en moins d'une demie heure, gardant ainsi une concision dans la puissance.
Puissante, sa musique l'est. Elle fait référence aux meilleures heures du Thrash des 80's, laisse les rythmiques se développer le long de riffs francs et massifs, le tout survolé d'un chant hargneux aux harangues acerbes. DAWN PATROL se revendique de MEGADETH et HAVOK, mais mis à part le fait de partager son nom avec un morceau de la bande à Megadave, les points communs ne sont pas frappants. Les natifs de Memphis sont beaucoup plus virulents que ne l'a jamais été le teigneux rouquins, et on retrouve plutôt dans leur musique l'approche Européenne du style, ACCUSER en tête de ligne, voire la vague Thrashcore US de 88/90.
Niveau expérimentation, mis à part quelques incursions louches dans le Reggae/Ska, on ne peut pas dire que la fusion soit le maître mot de Democracy Delivered. Si "Dahmer" commence comme une jam impromptue du côté de Kingston, le morceau évolue vite vers un Thrash sans concessions, très rapide, constellé de up tempo à la double grosse caisse, qui ne fait pas la fine bouche et va à l'essentiel. Un concentré de ce que le style peut proposer de plus sauvage, joué carré et avec une belle énergie. Parfois, ça louche même sévère vers le Thrash Death moderne et hyper violent, limite Speedcore ("Lyndon Johnson"), voire le Metalcore d'il y a trente ans, à cheval entre les ruades Core et les riffs Metal ("Another Useless War", cinquante neuf secondes et pas plus), avant que le Reggae ne reviennent faire une brève apparition sur l'hommage cinématographique "Plan 9", hyper efficace et au chant encore plus éructé que sur le reste de l'album.
Le groupe ne se prive pas, et continue les private jokes, comme le démontre le final "Toxic Avenger", qui débute salement Mosh, avant de se reposer sur des lauriers plus modérés. Thrash attack, refrain Core, belle façon de clôturer un disque ma foi...
Ce qui est certain, c'est que le trio n'aime pas se perdre en route. Ils ont une ligne de conduite, et agressent l'auditeur sans relâche, même si quelques passages plus médium viennent calmer les ardeurs de la machine ("The Axeman's Jazz" qui ne rechigne pas à emprunter à AGNOSTIC FRONT quelques unes de ses harangues). Mais malgré ces quelques incursions sur les terres arides du Hardcore, le Metal de DAWN PATROL reste en acier pur et dur, et aiguise ses riffs, laisse à sa rythmique la place suffisante pour cavaler plein pot, le tout chapeauté par un frontman qui connaît son boulot, à la voix certes quelque peu monocorde, mais d'une belle efficacité, quelles que soient les circonstances.
Je ne sais pas si la petite Marie, âgée maintenant de soixante deux ans, retrouvera un jour Chuck dans les rues de Memphis. Ce qui est certain, c'est qu'elle a plus de chance de se retrouver face à une bande de chevelus hirsutes, très gentils au demeurant, mais un peu bruyants.
Oui Marie, le Rock N'Roll a évolué depuis 1959... Il va falloir t'y faire.
Alors un conseil, si tu optes pour sa version Thrash, tu peux faire confiance à ces hurluberlus. Ils savent de quoi ils parlent.
Ajouté : Vendredi 09 Octobre 2015 Chroniqueur : Mortne2001 Score :     Lien en relation: Dawn Patrol Website Hits: 8552
|