communication entre ChucK et Processing par OSC
6/09/07 à 16:58 chuck
Pour utiliser OSC avec Processing, il faut installer la librairie oscP5 (à télécharger : oscP5). Ensuite 2 lignes au début du script permettent de l'utiliser.
Comment lancer les scripts ?
- ouvrir une première fenêtre de commande, lancer chuck avec "chuck --loop"
- ouvrir une seconde fenêtre, et ajouter le script avec "chuck + chuckosc.ck"
- puis démarrer l'applet dans processing
le script processing
Une valeur de fréquence est tirée au hasard 3 fois par secondes et envoyée sous forme de message OSC, sur le port 6449, en UDP
// 6 sept. 2007 / processing 0125 / chuck 1.2.1.0 / oscP5 0.9.0
import oscP5.*;
import netP5.*;
float zefreq = 440;
String oscP5event = "oscEvent";
OscP5 canalOsc;
void setup() {
size(200,200);
canalOsc = new OscP5(this, "localhost", 6449, 6543, oscP5event);
frameRate(3);
}
void draw() {
OscMessage message = new OscMessage("/processing" + "/");
zefreq = 440 + random(0, 200);
message.add(zefreq);
canalOsc.send(message);
}
le script chuck
Le script est en attente permanente, en écoute sur le port 6449, chaque fois qu'un évènement est reçu, la fréquence du son est modifiée.
// 6 sept. 2007 / processing 0125 / chuck 1.2.1.0 / oscP5 0.9.0 // nom de l'hote et port par défaut "localhost" => string hostName; 6449 => int receiverPort; <<< "port de reception pour les messages OSC:", receiverPort >>>; // objet OSC pour la réception OscRecv receiver; receiverPort => receiver.port; // commencer l'écoute sur le port receiver.listen(); // créer une adresse réceptrice des messages, y stocker la valeur de fréquence reçue receiver.event( "/processing" + "/" + ", f" ) @=> OscEvent oeFreq; SinOsc s => dac; while ( true ) { // en attente de l'arrivée d'un message OSC oeFreq => now; // capturer le nouveau message while ( oeFreq.nextMsg() != 0 ) { oeFreq.getFloat() => s.freq; } <<<"nouvelle frequence : ", s.freq() >>>; }
Télécharger un zip contenant les deux scripts : chuck-processing-osc.zip
Un sniffeur de trafic réseau peut-être utile pour résoudre les problèmes d'échange réseau. Comme Ethereal ne peut pas superviser le trafic local, on peut utiliser AW Ports Traffic Analyzer disponible en version d'essai (limitation à 3Mo de l'enregistrement des logs) mise à jour : bien que ce ne soit pas annoncé sur leur site, la version d'essai a une autre limitation : elle cesse de fonctionner au bout de 15 jours!



Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire