# 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
}
DEAD CHANNELS (usa) - Phantom Pain (2015)

Label : Manic Progression Records
Sortie du Scud : 21 juillet 2015
Pays : Etats-Unis
Genre : Heavy Mathcore
Type : Album
Playtime : 11 Titres - 29 Mins
C'est toujours cool de trouver des trucs un peu underground sur la toile, mais lorsqu'il s'agit d'aller à la pêche aux infos, ça devient plus complexe...
Alors que parfois certains groupes mineurs disposent de multiples entrées sur des sites généralistes ou pas, d'autres ne bénéficient même pas d'une pauvre ligne, si ce n'est sur des blogs donnant le lien direct...
On se contente donc du minimum syndical pour faire son boulot, mais la tâche est plus ardue qu'il n'y parait...
Prenez par exemple les DEAD CHANNELS. Plusieurs 7'', des Splits, un album longue durée, cinq ans d'existence auraient pu justifier un peu plus d'intérêt de la part des webzines, mais non, rien. Alors que sait on au final ? Ce qu'on lit sur leur page Facebook, leur Bandcamp, c'est à dire pas grand chose. Ils sont trois (Angelo Mosca, basse et chant; Greg Farmer, batterie et Matt Pardillo, guitare), ils viennent de Greenwood Lake, New York, et jouent un genre de Hard/Mathcore assez lourd et venimeux.
C'est peu comme info, mais dans ce cas précis, il ne reste plus qu'à juger l'album sans éléments externes. Pas simple...
Mais il est relativement facile par contre d'affirmer que DEAD CHANNELS utilise à plein régime les possibilités rythmiques d'un power trio. Basse en avant, collée à une batterie volubile, guitare qui mouline des riffs saccadés et graves, on pense immédiatement à une version beaucoup plus lourde et violente du PRONG des débuts, avec cette basse qui brille et qui claque à la Mike Kirkland.
Le chant d'Angelo Mosca à cette patine aigue et rauque qui assèche les mélodies, relativement peu présentes cela dit, et "Get Clean" en ouverture met les choses au point sans attendre. A peine une minute trente d'empilage de parties cohérentes, une violence larvée, assez vicieuse, et une clarté de propos ambivalente.
DEAD CHANNELS ne cherche pas à faire du bruit. Il en fait indirectement en optant pour des directions véhémentes, mais c'est surtout cette rythmique guitare/basse/batterie qui reste le point fort du combo. Les trois musiciens semblent collés les uns aux autres, et avancent d'un pas décidé mais non linéaire. La plupart des titres sont courts, mais avancent de multiples et bonnes idées, sont parfois tendus et suffocants ("No Love", un peu HELMET vs UNSANE), parfois tronçonnés et heurtés à l'extrême ("Dark Matter", précis dans les décalages, avec toujours ce duo de base grondant en arrière plan), mais se permettent de temps à autres quelques accalmies mélodiques et Heavy ("Phantom Pain", plus conventionnel et qui rappelle les DEFTONES de Around The Fur).
De temps à autre, le chaos pointe le bout crochu de son nez ("Relentless", aux arrangements bidouillés et au chant qui force un peu plus, avec son break central équilibriste), et les brisures Heavy prennent le pas ("Emotional Vampire", lourd, lent, tendu). Mais c'est bien ce travail de cohésion qui frappe, et "Wound" d'écraser tout sur son passage, comme si le trio se fondait en une seule entité au pas lourd et puissant.
On parle de Mathcore un peu partout, mais loin de se contenter d'aligner les pirouettes d'usage, DEAD CHANNELS a bossé le fond, et instaure une ambiance inquiétante et ne laisse jamais la violence exploser comme on pourrait s'y attendre. Un peu comme si le HELMET de In The Meantime se frottait à un Core made in NYC, produit de loin par feu Peter Steele. C'est noir, on sent presque la vapeur s'échapper des amplis, c'est concentré au maximum, et surtout concentrique, comme une ligne qui serpente avant de rejoindre son point d'origine.
Le trio aspire le vide autour de lui, et le restitue en un bloc compact, mais au lieu de balancer à la volée des données complexes et démonstratives, transforme l'énergie en souffle brûlant qui irrite, mais qui n'embrase pas.
Un peu comme un feu éclair qui attend tapi derrière une porte, mais qui reste là, à attendre, sûr de son fait, mais peu décidé à tout cramer.
Alors peu d'infos comme je le disais en préambule, mais j'espère que mon propos vous aura quelque peu éclairé...En tout cas si la confrontation d'un Mathcore sobre et d'un Hardcore New Yorkais sale et abrasif vous tente, Phantom Pain vous satisfera sans aucun doute.
Il est à l'image de son titre d'ailleurs... Cette douleur fantôme qu'on identifie pas... Mais qui au final, laisse une sacrée cicatrice dans la mémoire.
Ajouté : Jeudi 29 Octobre 2015 Chroniqueur : Mortne2001 Score :     Lien en relation: Dead Channels Website Hits: 7224
|