Boussole et pd

bousole HMC6352 cf https://www.sparkfun.com/products/7915

Comme notre module de lecture de fichiers sonores OSC/PD, l'idée est de monter un petit serveur pour la boussole, écrit en python, causant OSC pour que puredata puisse en récupérer directement les valeurs, ainsi que de concevoir plus tard un arboresence de donnée OSC pour gérer des évennements multiples, méta-boussole, boussole de tel joueur, ensemble des boussoles d'un groupe de joueur etc.

La piste https://github.com/VincDep/JardinsNumeriques est une approche :http://faust.grame.fr/index.php/online-examples Mais nous utiliserons plutot un plugin ladspa directement dans alsa (.asoundrc) au lieu de pd

a verifier, si multiple lancement de lecteur aplay : dmix:ladspa (valeurs de depart ) est ce que les valeurs de depart sont attachées au lecteur ou au plugin? est ce que qu'on peu donc faire la lecture avec different param ?

piste faust un plugin ladspa/osc :

declare name        "spat";
declare version     "1.0";
declare author      "Grame";
declare license     "BSD";
declare copyright   "(c) GRAME 2006";

//==========================================================
//
//                      GMEM SPAT
//  Faust implementation of L. Pottier's spatializer
//
//==========================================================




//------------------------------------------------------
// Level of an output channel
//------------------------------------------------------
//  i = index of the channel (ranging from 0 to n-1)
//      n = total number of channels
//  a = source angle (ranging from 0 to 1)
//  d = source distance (ranging from 0 to 1)
//------------------------------------------------------

scaler(i,n,a,d) = sqrt(max(0.0, 1.0 - abs( fmod(a+0.5+float(n-i)/n, 1.0) - 0.5 ) * (n*d))) * (d/2.0+0.5);



//------------------------------------------------------
// n-output voices spatializer
//      n = number of output channels
//  a = source angle (ranging from 0 to 1)
//  d = source distance (ranging from 0 to 1)
//
// spat uses the parametric builder : par(i,n,E(i))
// which puts in parralle E(0), E(1), ...E(n-1)
//------------------------------------------------------
smooth(c)   = *(1-c) : +~*(c);
spat(n,a,d) = _ <: par(i, n, *( scaler(i, n, a, d) : smooth(0.9999) ));




//------------------------------------------------------
// Example : a mono input spatialized on 8 voices
//------------------------------------------------------

angle           = hslider("angle[osc:/compas/1 0 364]",    0.0, 0, 1, 0.01);
distance        = hslider("distance[osc:/compas/2 0 1]", 0.5, 0, 1, 0.01);

process         = vgroup("Spatializer 1x2", spat(2, angle, distance));


piste pd http://grh.mur.at/misc/PdSpatialization.tar.gz