voila un "canevas" pour faire communiquer processing et pure-data par OSC, rien d'exceptionnel, mais les bases y sont! C'est une adaptation des exemples fournis dans pd et avec la librairie OscP5 + du code maison pour la gestion de la surface XY
Je découvre l'OSC dans pure-data, si j'ai bien compris il y a 2 bibliothèques oscx et mrpeach, je n'ai pas eu de succès avec la 2e qui fermait brutalement pd, donc le patch utilise oscx. Sur windows il faut démarrer pure data depuis le répertoire bin de l'application avec le support de la bibliothèque oscx, ça se fait avec la commande suivante :
pd.exe -lib oscx
Voila à quoi ressemble le patch, à gauche la partie qui s'occupe de la réception OSC, du traitement des valeurs numériques, à droite la partie sonore. Le patch reçoit 2 valeurs (étalonnées entre 0 et 100), une pour la hauteur de note et l'autre pour l'amplitude, elles sont adaptées et transformées en son. Les valeurs sont définies dans processing en déplacant des curseurs sur une surface X Y (x pour la hauteur, y pour l'amplitude) Une copie d'écran de l'applet en dessous (pas de fioritures!) et le code...
En pièce jointe, un zip avec tout ça + l'application multiplateforme générée automatiquement par p5 (trop fort)
Hors ligne
très bien très bien, je vais tester ça ce weekend.
minimalisme impeccable ! j'approuve:P
Hors ligne
J'ai essayé et le seul moyen que j'ai trouvé pour communiquer par OSC entre p5 et pd a été de déclarer un port différent pour recevoir et envoyer dans le code p5.
En utilisant le code ci-dessus, soit pd n'arrive pas à ouvrir le port pour recevoir de p5 soit p5 dit que le port est déjà utilisé (ça dépend quel programme je lance en premier).
En tout cas merci pour le code, ça m'a bien aidé !
Hors ligne
zeni a écrit:
J'ai essayé et le seul moyen que j'ai trouvé pour communiquer par OSC entre p5 et pd a été de déclarer un port différent pour recevoir et envoyer dans le code p5.
C'est le code ci-dessus qui ne marche pas pour toi? Ou c'est une version modifiée ? Dans la version ci-dessus, processing est juste émetteur de messages OSC (défini ligne 19) et pd, récepteur, donc ça devrait fonctionner tel quel. D'ailleurs, en changeant une de ces 2 valeurs, ça ne doit plus marcher : ils ne sont plus en communication...
Si tu as besoin d'une communication dans les 2 sens (pd <-> p5) il faut effectivement définir 2 ports
un pour p5 -> pd, et l'autre pour pd -> p5
Hors ligne
Le code ci-dessus ne marchait pas. Je ne sais pas trop pourquoi en fait car effectivement c'est une communication dans un seul sens(p5->pd). Néanmoins il y avait toujours un problème soit sur p5 soit sur pd en fonction du premier programme lancé.
J'ai changé le code p5 en ajoutant une NetAddress:
NetAddress myRemoteLocation;
oscP5 = new OscP5(this,12000);
myRemoteLocation = new NetAddress("127.0.0.1",9997);
Après cela ça marchait impec.
Hors ligne
Salut,
il ne peut y avoir plus d'un programme qui écoute sur un port udp donné sur une machine, par contre il peut y en avoir plusieurs qui envoientsur ce même port.
Emoc, c'est dommage que la bibliothèque mrpeach ne marche pas sur ton install, parce qu'elle est maintenue acitvement par Martin Peach , implémente bien mieux la norme OSC et est bien moins bugguée.
++
O.
Hors ligne
Pages: 1