Programmation

Les codes et programmes d’Interface-Z

Accueil > Outils > Ponts OSC entre logiciels > Ponts OSC depuis Pure Data vers Isadora

Ponts OSC depuis Pure Data vers Isadora

Mis à jour le mercredi 5 juillet 2017, par zandrine

Pour télécharger un patch, clic droit sur l’image et choisir "Enregistrer la cible sous..." (sinon le fichier .pd s’affiche en texte dans le navigateur). Les patches Isadora ont été faits avec la version 0.9b7 d’Isadora Windows. Si vous ne pouvez l’ouvrir directement (dans une version précédente d’Isadora par exemple), il suffit de le recopier, les objets utilisés étant présents dans toutes les versions d’Isadora.

Télécharger les patches de cette page : clic.

Principe

cf page dédiée.

Peu d’objets sont nécessaires pour communiquer en OSC : un récepteur reçoit les données de l’extérieur du logiciel et un transmetteur en envoie d’autres. Chacun de ces objets prend en compte des paramètres de numéro de port, d’identification de machine sur le réseau et de tri des données. Si vous souhaitez plus de renseignements sur les paramètres OSC, vous pouvez vous reporter aux explications données dans le manuel d’Isadora et dans les docs respectives des objets PD. La librairie OSC doit être installée dans PD.


Transmission OSC entre puredata et isadora.
Pour voir l’image agrandie de ces fichiers : ici.

Paramètres OSC nécessaires

1 - Adresse de la machine

Dans cette page, nous utilisons deux logiciels installés sur une même machine. L’adresse réseau est donc "localhost" ou 127.0.0.1 . Quel que soit le logiciel, ce paramètre est utilisé dans l’envoi vers l’extérieur. Il est nécessaire pour préciser la destination du message. Le récepteur n’en a pas besoin, il écoute ce qui arrive de partout.

2 - Numéro de Port OSC

Le numéro de port est arbitrairement donné par l’utilisateur et permet d’identifier le logiciel cible. Plusieurs ports différents sont utilisables avec PD, un seul avec Isadora. Ce ne doit pas être le même.

Dans Isadora, le port est choisi dans le menu Edit / Preferences, onglet Midi/Net, ligne OSC port Number. Dans notre exemple, nous avons gardé le numéro par défaut 1234. Le numéro étant choisi dans les Préférences du logiciel, il n’est plus besoin de le mentionner dans les objets OSC lors de la construction du patch.

Dans PD, les numéros de port sont mentionnés à la fois dans l’objet OSC envoyeur et dans le récepteur. Il n’est pas nécessaire de les déclarer ailleurs dans un menu. L’adresse d’Isadora (1234) est donnée en paramètre de l’objet sendOSC de PD. Le port choisi pour PD (1235, par exemple) est utilisé dans l’objet dumpOSC de PD. Ces deux objets sont détaillés plus loin dans cette page.

3 - Adressage des données

Les données envoyées sont des nombres ou des signaux comme trigger. Il est possible d’envoyer en même temps des messages distincts, adressés à des récepteurs différents. Chaque flot de données est donc envoyé à une adresse OSC précise dans le logiciel cible. Cette adresse OSC est mentionnée (complète ou partielle) à la fois dans les objets envoyeurs et dans les objets récepteurs.

Dans Isadora, le transmetteur envoie ses données sur une adresse OSC identifiée par un "/" suivi d’un nom en toutes lettres (ex : /quelquechose). Le récepteur au contraire identifie un "channel" par un simple numéro a priori ; implicitement, en fait tous les messages OSC reconnus par Isadora utilisent en plus l’adresse /isadora. Il faut que le transmetteur en face commence chaque message par /isadora/numero_du_channel.

Dans Pure-Data, les adresses correspondantes sont utilisées par le récepteur OSC (/quelquechose) et par l’émetteur sendOSC (/isadora/numero). Les détails sont donnés ci-dessous.

Patch pure-data de réception et d'envoi de données en OSC.
Patch pure-data
de réception et d’envoi de données en OSC.

Transmission des données de Pure Data vers Isadora

1 - Connexion et envoi des informations depuis PD

L’objet crucial est sendOSC. Il doit recevoir successivement plusieurs informations (sous forme de messages) pour envoyer des données vers Isadora.

Il faut d’abord se connecter avant de pouvoir envoyer des informations. Un message établit la connexion (connect) et indique à sendOSC qu’on s’adresse à un logiciel sur la même machine que le patch (localhost) et que le logiciel cible est Isadora (identifié par l’adresse UDP 1234). Cliquer sur ce message une fois.

Il faut ensuite envoyer un message typetags 1, nécessaire pour communiquer avec Isadora.

Enfin, les informations peuvent être envoyées par sendOSC et comprise par Isadora. Le message send branché sur sendOSC précise à quel logiciel et à quelle adresse OSC le message doit être envoyé, grâce au paramètre /isadora/1. Il est obligatoire d’employer "/isadora" avant de préciser l’adresse OSC par "/nombre". Le $1 de notre exemple est remplacé par tout ce qui est envoyé sur ce message.

Envoi d'informations vers Isadora en OSC.

2 - Réception des données dans Isadora

L’objet à utiliser est OSC Listener, qui se trouve dans le groupe 7 (Control Group). Il est inutile de préciser l’adresse UDP 1234 (contrairement au dumpOSC de Pure-Data) car elle est déjà configurée dans les Preferences. Il n’est pas non plus nécessaire de rappeler le /isadora qui marque tout message OSC destiné à ce logiciel. Il faut en revanche entrer dans le channel le numéro choisi pour identifier le message OSC et permettre de le séparer d’autre flux de données envoyés à Isadora. Ici c’est 1, correspondant au /1 de "send /isadora/1" dans PD.

Réception des données OSC en Isadora.


Lorsque vous faites varier le slider dans PD, vous devriez voir arriver des données dans la sortie value de l’OSC Listener.

Dans cet exemple, les données sont branchées sur un Limit-Scale Value puis sur un Colorizer pour jouer sur la teneur en rouge d’une couleur.

Echange de plusieurs flots de données d’un logiciel à l’autre - 1 - Version avec Multi Transmit

Dans les exemples précédents, nous avons indiqué comment envoyer, dans un sens ou dans l’autre, un seul flux de données. L’exemple suivant montre l’envoi de trois flux d’informations en parallèle, dans les deux sens.

Attention, cet exemple a été fait dans une version d’Isadora récente qui intègre l’actor OSC Multi Transmit.

Transmission de plusieurs flots d'informations
Patch Isadora - Patch PD

Les adresses et ports UDP sont localhost, 1234 pour Isadora, 1349 pour PD.

D’Isadora vers PD, les messages sont différenciés par un nom donné en toutes lettres : /frost, puis par des compléments d’adresse en nombres 1, 2, 3. Cette identification apparaît dans l’objet route dans PD qui sert à trier ces messages et à ôter l’indication /frost de la liste reçue. L’objet unpack permet ensuite de séparer les trois nombres sur trois sorties différentes.

Il est possible d’utiliser plusieurs Multi Transmit avec des adresses /quelquechose différentes. Cet objet envoie toutes les données des inputs dans une seule liste. Le nombre de données différentes est paramétré dans inputs. Il faut actionner l’entrée Transmit chaque fois que l’on veut expédier le message, par exemple quand une donnée arrive, ou bien régulièrement au cours du temps.

De Pure Data vers Isadora, le tri se fait par les "channels" 1, 2 et 3, qui apparaissent dans le message send envoyé à l’objet sendOSC. Comme auparavant, il est obligatoire d’employer /isadora avant ces /1, /2 et /3.

Echange de plusieurs flots de données d’un logiciel à l’autre - 2 - Version sans Multi Transmit

Dans les exemples précédents, nous avons comment envoyer, dans un sens ou dans l’autre, un seul flux de données. L’exemple suivant montre l’envoi de trois flux d’informations, dans les deux sens.

Attention, cet exemple a été fait dans une version d’Isadora qui n’intégrait pas encore l’actor OSC Multi Transmit.

Transmission de plusieurs flots d'informations
Patch Isadora - Patch PD

Les adresses et ports UDP sont les mêmes que dans l’exemple précédent (localhost, 1234 pour Isadora, 1235 pour PD).

D’Isadora vers PD, les messages sont différenciés par des noms donnés en toutes lettres : /quelquechose, /autrechose, /machin. Ces identifications apparaissent dans l’objet OSCroute (ou route simple). L’ordre des trois premières sorties du route correspond à l’ordre dans lequel les messages sont nommés dans cet objet.

Dans une version plus récente d’Isadora, l’actor OSC Multi Transmit permet d’envoyer plusieurs flux sur une adresse /quelquechose, selon le même principe de numérotation /1, /2 etc.

De Pure Data vers Isadora, le tri se fait par les "channels" 1, 2 et 3, qui apparaissent dans le message send envoyé à l’objet sendOSC. Comme auparavant, il est obligatoire d’employer /isadora avant ces /1, /2 et /3.