# 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
}
SPACE PROBE TAURUS (se) - Space Probe Taurus (2008)
Label : Buzzville Records
Sortie du Scud : 4 juillet 2008
Pays : Suède
Genre : Acid Fuzz Rock
Type : Album
Playtime : 11 Titres - 44 Mins
How much fuzz can you take in your rock ?
Avec son nom de franchise NFL, SPACE PROBE TAURUS pourrait presque prétendre à participer au Super Bowl l'an prochain. Ou pourquoi pas performer son Rock acide et hystérique à la mi-temps de cette finale mondialement regardée ? Ce serait finalement une promotion particulièrement avantageuse pour ce groupe suédois ô combien capable de remuer les foules. Formé en 1992 sous le nom de SNAKE MACHINE, les SPACE PROBE TAURUS de Karlstad (ça fait tout de suite moins rêver) commencent par l'EP Insect City avant d'embrayer diverses apparitions sur quelques bandes-originales obscures, comme celle du nanar "Actress Apocalyspe" ou celle du non moins ridicule "I Am Vengeance", deux films d'horreur de série B. Décidément très influencé par le cinéma, SNAKE MACHINE change alors de blaze et adopte celui de SPACE PROBE TAURUS, du nom d'un vieux film de science-fiction datant de 1965. Tout un programme pour ce quatuor qui se décide enfin, en 2008, à faire paraître un concentré de son univers via ce premier full-lenght éponyme (enregistré entre septembre et novembre 2004).
Dire qu'on a connu pire pour un seizième anniversaire est un formidable lieu commun. Très vite, cet album va faire étalage de son inspiration délicieusement rétrograde et de ses influences plus-old-school-que-ça-tu-meurs ! A la croisée d'un Rock de biker couillu, d'un Rock psyché sous LSD (d'où le terme "Acid Rock") et d'un Rock bourré de distorsions (d'où le terme "Fuzz Rock"), Space Probe Taurus crashe sa soucoupe dans un champ peuplé de junkies qui passent leur journée à se tartiner les oreilles de MUDHONEY, de MELVINS, de STOOGES et de BLUE CHEER. Une bénédiction ! Pourtant, la musique des suédois est beaucoup plus rugueuse et explosive que celle qui jalonnait la révolution des seventies, grâce notamment à une production propre, digne des évolutions techniques qui ont vu le jour au cours de ces quarante dernières années. Leur mentalité, quant à elle, est restée scotchée au siècle passé, que ce soit dans l'écriture de morceaux abrasifs, de solos endiablés, de rythmes catchys ou dans le port de vestes en laine de cul de mouton. Entre authenticité et innovation, SPACE PROBE TAURUS cavale avec justesse, les épaules droites, le menton levé. Et comment leur en tenir rigueur, puisqu'avec cet album, c'est toute une génération de fringues et de tempos qui est susceptible de ressusciter ? Parmi les meilleurs titres de l'opus, évidement, "Dig The Lizard" mettra tout le monde d'accord, talonné par la tumultueuse "Molten Lava", l'hypnotique "Psi-Burn" et la terrible "She-Wolf, Baby" (composée pour le film "Hollywood She-Wolf"). On a tendance à trouver que chaque compo se ressemble un peu, sauf que sous cette couche épaisse de Rock gras et illicite branché sur courant continu, il y a un éventail de rythmes, de refrains mémorables, de tubes au groove inébranlable. Les SPACE PROBE TAURUS ont une griffe bien à eux, coupante comme la voix "bourbonnée" de Sjöberg ou percutante comme le jeu de batterie de Sundler, dont l'explosivité et les frappes sourdes sur les toms sont en partie responsables de la singularité de cette galette. Evoluant en tant que groupe soudé et complice sur 45 minutes, SPT était bien parti pour rappeler qu'entre buzz et fuzz, il n'y a qu'une lettre qui change.
Que du fuzz, pas de buzz, et c'est tant mieux ! Loin des projecteurs, les suédois se sont éclatés. Nous avec. Space Probe Taurus est un opus unique, magnétique, bourré d'optimisme et de Rock au sens le plus anticonformiste du terme. Celui qui remue, qui assume son côté libertin, has-been et provoc, sans se départir d'un académisme de rigueur. De bonnes vibes en rafale, mais surtout, que ça reste entre nous.
Ajouté : Jeudi 06 Août 2015 Chroniqueur : Stef. Score : Lien en relation: Space Probe Taurus Website Hits: 4978
|