Table des matières
Histoires à suivre
C'est un cadre d'expérimentation, une des composantes des 5eme dimensions, autour du projet des balades sonores, balades numériques, etc.
Il nous permet de penser les balades, l'idée de géolocalisation et la spacialisation sonore avec un GPS et une boussole.
Matériel
- Asus EEEPC 4Go
- GPS USB XBU-353 chez lextronic.fr
- Boussole numérique P1773 Philips
- Arduino
- casque
- micro
- un point d'accès WIFI
- …
Logiciels
ubuntu 8.04 adaptée au eeepc
De fait, c'est pour le moment une eeexubuntu mise à jour.
je cherche si une minibuntu peut être adaptée sans trop de problèmes. Avantages que j'y trouve :
- elle suit - pour autant que le crealab le fait - la distrib de base
- elle est vide :) et ne demande que 138 Mo en iso
- on peut se limiter à fluxbox et cairo-doc
Je pense faire une sd card de 1Go pour l'ensemble de l'environnement des 5emedim, on peut penser ainsi changer de perso, de prototype, en changeant la sd. D'un coup, l'eeepc boot dessus .
Pure-data
-
- Si cela ne marche pas du premier coup, installer les dépendances manquantes à partir de la gutsy, notamment :
- librairie pdjimmies-0.1.tar.gz de nSLAM de http://tot.sat.qc.ca/logiciels_nslam.html
- abstraction pdmtl.tar gz de http://wiki.dataflow.ws/PdMtlAbstractions
Si vous avez cette erreur :
/usr/local/lib/pd/extra/pidip.pd_linux: libjasper-1.701.so.1: cannot open shared object file: No such file or directory
ajoutez un lien symbolique de la librairie que vous avez (ici libjasper.so.1.0.0, adaptez en fonction de ce que vous avez) en tapant ceci :
sudo ln -s /usr/lib/libjasper.so.1.0.0 /usr/lib/libjasper-1.701.so.1
d'autre trucs épars :
- et autres…
un truc sur le driver son de l'eeepc j'ai mis le fichier a jour par asoundconfig sur intel puis ajouter :
pcm.dsp0 { type plug slave.pcm "dmix" }
a la fin ce qui donne pour le fichier .asoundrc.asoundconf
:::::::::::::: # ALSA library configuration file managed by asoundconf(1). # # MANUAL CHANGES TO THIS FILE WILL BE OVERWRITTEN! # # Manual changes to the ALSA library configuration should be implemented # by editing the ~/.asoundrc file, not by editing this file. !defaults.pcm.card Intel defaults.ctl.card Intel defaults.pcm.device 0 defaults.pcm.subdevice -1 defaults.pcm.nonblock 1 defaults.pcm.ipc_key 5678293 defaults.pcm.ipc_gid audio defaults.pcm.ipc_perm 0660 defaults.pcm.dmix.max_periods 0 defaults.pcm.dmix.rate 48000 defaults.pcm.dmix.format S16_LE defaults.pcm.dmix.card defaults.pcm.card defaults.pcm.dmix.device defaults.pcm.device defaults.pcm.dsnoop.card defaults.pcm.card defaults.pcm.dsnoop.device defaults.pcm.device defaults.pcm.front.card defaults.pcm.card defaults.pcm.front.device defaults.pcm.device defaults.pcm.rear.card defaults.pcm.card defaults.pcm.rear.device defaults.pcm.device defaults.pcm.center_lfe.card defaults.pcm.card defaults.pcm.center_lfe.device defaults.pcm.device defaults.pcm.side.card defaults.pcm.card defaults.pcm.side.device defaults.pcm.device defaults.pcm.surround40.card defaults.pcm.card defaults.pcm.surround40.device defaults.pcm.device defaults.pcm.surround41.card defaults.pcm.card defaults.pcm.surround41.device defaults.pcm.device defaults.pcm.surround50.card defaults.pcm.card defaults.pcm.surround50.device defaults.pcm.device defaults.pcm.surround51.card defaults.pcm.card defaults.pcm.surround51.device defaults.pcm.device defaults.pcm.surround71.card defaults.pcm.card defaults.pcm.surround71.device defaults.pcm.device defaults.pcm.iec958.card defaults.pcm.card defaults.pcm.iec958.device defaults.pcm.device defaults.pcm.modem.card defaults.pcm.card defaults.pcm.modem.device defaults.pcm.device defaults.rawmidi.card 0 defaults.rawmidi.device 0 defaults.rawmidi.subdevice -1 defaults.hwdep.card 0 defaults.hwdep.device 0 defaults.timer.class 2 defaults.timer.sclass 0 defaults.timer.card 0 defaults.timer.device 0 defaults.timer.subdevice 0 defaults.namehint.showall off defaults.namehint.basic on defaults.namehint.extended off pcm.dsp0 { type plug slave.pcm "dmix" }
du coup xfce4-mixer fonctionne bien :)
Arduino
- la base arduino.tgz
- La librairie Wire supplémentaire librairie Wire.tgz
Principes de fonctionnement
- Le eeepc se localise grâce au gps, une boucle cherche si la position est proche de celle enregistrée dans un fichier plat, (base de données des actions).
- S'il y a correspondance : la boucle déclenche un évènement lu dans le fichier.
Cet évènement contient : une direction (liée a la boussole), une prioritée, une commande et ses paramètres
- Les commandes peuvent être :
- lire un fichier son, une playlist, en l'orientant par defaut sur la direction avec un volume moyen
- arrêter la lecture du (des) fichier(s) son
- pause de lecture du dernier fichier
- suivant dans la liste
- précédent dans la liste
- appliquer un filtre xxx , un patch sur l'écoute
Différentes approches pour le chemin
La première sous forme de point (way point) à positionner sur un fond, une carte en coordonnées absolue, l'autre en trace (track) ou déplacement par rapport au point précedent avec de temps en temps des marqueurs de coordonnées absolus
Première approche
format du fichier pour le moment : en csv, ';' comme séparateur
1234.000;1234,000;MMM;0;DDD;Action blabla
- Latitude : 1234.000 en °
- Longitude : 1234.000 en °
- Marge d'action : MMM en m , elle définie le champs autour du point localisé.
- Priorité : de 0=max a 9=min dans le cas d'évennement multiple
- Direction : de 001 a 365 :fixe une direction d'écoute par rapport au nord magnétique ( très pertubable )
- action : 1000 caracteres maxi : texte de la commande et de ses paramètres à éxécuter .
- fin de ligne
Deuxième approche
On peut rendre ce fichier de point relatif plutot que de coordonnees absolues.
1234.000;1234.000;MMM;0;DDD;AP
l'action AP fixe le point 0 de départ.
toutes les lignes sont placées relativement à la précédente ! On indexe aussi les lignes pour avoir un suivi plus simple.
Le fichier ressemble à ça : 0;1234.000;1234.000;MMM;0;DDD;AP 1;5;-1.000;MMM;0;DDD;Action blabla par rapport au point AP (point 0) 2;1.000;-2.000;MMM;0;DDD;Action blibli par rapport au point 1 (blabla) 3;1.000;0.000;MMM;0;DDD;Action blublu par rapport au point 2 (blibli)
Cela permet de décrire comme dans le cas d'une balade, un tracé en fonction de la précédente position, avec de temps en temps des marqueurs fixes répertoriés (AP). Dans l'avenir, les AP peuvent être des points d'action : bouton, puce RFID, évènement exterieur, évènement de paramétrage, etc.
Troisième approche
Adoption du format standard GPX pour faciliter l'usage : http://www.topografix.com/GPX/1/1 http://www.gpsbabel.org/readme.html
- avantage : translation directe vers des outils connus ou non
- dsavantage : pas lisible .. et 10 fois plus gros
on peut prévoir un traducteur par la suite, genre gpsbabel, et garder un fichier modifiable à la main et par un tableur (format csv)
format découte du GPS : NMEA
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A RMC Recommended Minimum sentence C 123519 Fix taken at 12:35:19 UTC A Status A=active or V=Void. 4807.038,N Latitude 48 deg 07.038' N 01131.000,E Longitude 11 deg 31.000' E 022.4 Speed over the ground in knots 084.4 Track angle in degrees True 230394 Date - 23rd of March 1994 003.1,W Magnetic Variation *6A The checksum data, always begins with *
Wifi : possibilité 1
L'ensemble est synchonisé par une connexion wifi sur le point d'accès, le wifi est fermé ensuite pour économiser la batterie.
Wifi : possibilité 2
La connexion wifi reste ouverte.
- une boucle est à l'écoute d'évènements wifi répertoriés, ces évènements comme ceux du GPS peuvent activer des processus. Il sont aussi repertoriés dans un fichier.
- wifi, découverte d'un réseau connu par son ssid
- wifi, découverte d'un autre marcheur par la connexion à un serveur de position
- échange d'informations, d'actions par le wifi, par exemple chargement et application de patch sur l'écoute.
Avancement technique
Déclenchement d'un fichier son au moment d'entrer dans une zone
Si la zone est définie par son centre (X1, Y1) et son rayon Z, et la position par (X2, Y2), alors on est dans la zone si
racine de [(Y2-Y1)²+(X2-X1)²] < Z
Les patchs de PureData
- Lecture d'un fichier texte sous la forme
x1 y1 fichier_son1.ogg x2 y2 fichier_son2.ogg etc.
et extraction des variables position et fichier son
- Vérification si un point (x,y) est dans une zone
- Lecture des données d'un GPS
- Lecture d'un fichier ogg
- Paramètres de lecture en fonction de l'orientation (boussole)