Salut à tous,
J'essaye de récupérer des valeurs provenant de Processing vers Sc via Osc avec le code que voici:
( {var txt; thisProcess.recvOSCfunc = { |time, addr, msg| if(msg[0] != 'status.reply') { txt = msg; txt.postln; } }; SinOsc.ar(SinOsc.ar(txt[1],0,txt[2], 440),0,0.25)}.play; );
Dans la console de Sc je vois les valeurs récupérée mais je n'ai aucun son.
Pourtant avec des valeurs en dur l'oscillateur marche.
Thank you for any help
Hors ligne
Salut Matthieu,
essaye ça (juste un manque de parenthèse ?...):
( {var txt; thisProcess.recvOSCfunc = { |time, addr, msg| if(msg[0] != 'status.reply') { txt = msg; txt.postln; } }; {SinOsc.ar(SinOsc.ar(txt[1],0,txt[2], 440),0,0.25)}.play; } )
+++
Hors ligne
Merci pour ton aide
Avec le code que tu proposes la console indique :
a Function
et ne reçoit aucun messages.
Le mystère s'épaissit !
Hors ligne
Salut,
Non, tu viens de créer une fonction. Dans supercollider lorsque tu pose des {}, tu définis une fonction.
plus de précisions ici http://danielnouri.org/docs/SuperCollid … tions.html .
Pour l'efficacité de ta fonction c'est une autre histoire...
J'aurais plutôt fait ça :
j'ai testé avec P5, ça marche. mais penses à faire un SynthDef quand tu auras avancé dans ton code
bonne suite
+++
Hors ligne
J'ai essayé le code que tu m'as dis et je n'obtient aucune réponse.
Voici comment j'ai remplacé test dans Sc
t.ecouteur = OSCresponder(nil, '57120',
et le code Processing
import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; void setup(){ size(1024/2, 768/2); oscP5 = new OscP5(this, 12000); myRemoteLocation = new NetAddress("127.0.0.1", 57120); } void draw(){ OscMessage myMessage = new OscMessage("wii"); myMessage.add(mouseX*2); myMessage.add(mouseY*2); oscP5.send(myMessage, myRemoteLocation); }
Bizarre n'est-ce pas ?
Hors ligne
Salut Matthieu,
ta partie de code modifiée n'est pas correcte :
citation :
t.ecouteur = OSCresponder(nil, '57120',
l'adresse osc de réception (57120) est le premier argument, en second tu doit placer ta cmdName, c'est à dire l'entrée de ton message osc, ce que tu précise dans processing lorsque tu écris:
citation :
OscMessage myMessage = new OscMessage("wii");
On aura plutôt quelque chose comme ça :
t.ecouteur = OSCresponder(nil, '/wii',
(par défaut SC prend tout les messages osc qui circule lorsque tu mets nil en address, mais tu peux mettre 57120.
et dans ta partie P5, je rajouterai un / devant "wii" de cette façon :
OscMessage myMessage = new OscMessage("/wii");
à cette localisation osc (57120 ... /wii) tu devrais recevoir tes 2 valeurs de souris dans SC.
amuses toi bien !
+++
Dernière modification par oyster_twiter (2010-05-12 10:35:25)
Hors ligne
Salut,
et encore merci pour ton aide.
J'essaye maintenant de créer un SyntDef avec le code que voici :
( SynthDef("ONE", {arg x = 250, y = 1200; a = SinOsc.ar(SinOsc.ar(x, y, 440),0,0.25); }).play; )
Il a l'air bon mais ensuite j'essaye de remettre l'écouteur Osc et j'ai un problème de point-virgule ou d'indentation.
Je n'arrive pas à compiler le code suivant :
( ( t =(); t.ecouteur = OSCresponder(nil, '/wii', {arg time, addr, msg ;var txt; if(msg[0] != 'status.reply') { txt = msg; txt.postln; a.set([\x, txt[1], \y, txt[2]); } }); )
Any ideas ?
@+
Hors ligne
euh là à vue de nez, je dirais que tu as une parenthèse ouvrante en trop sur ta partie OSCresponder ... au début.
Il te manque un crochet fermant dans ton a.set, toujours dans ta partie OSCresponder...
Il faut également que tu rajoutes une sortie à ton synthdef .
de cette façon là:
a =Out.ar(0, SinOsc.ar(SinOsc.ar(x, y, 440),0,0.25));
Là en principe, tu devrais avoir du son.
+++
Hors ligne
Super, ça marche !
Voici le code final pour ceux qui suivaient la discussion :
( SynthDef("ONE", {arg x , y; Out.ar(0, SinOsc.ar(SinOsc.ar(x, y, 440),0,0.25)); }).play; a = Synth("ONE", [\x, 2000, \y, 4000]); ) ( t =(); t.ecouteur = OSCresponder(nil, '/wii', {arg time, addr, msg ;var txt; if(msg[0] != 'status.reply') { txt = msg; txt.postln; a.set(\x, txt[1], \y, txt[2]); }}).add; )
Merci pour tout, quand j'aurais une version montrable de mon projet, je posterai un lien.
Ciao a tutti
Hors ligne