Ponts OSC entre logiciels
Entre Isadora et Max
|
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.
Principe
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 Max.
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 Max, 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 Max, les numéros de port sont mentionnés à la fois dans l’objet OSC envoyeur et dans le récepteur. Ils 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 udpsend. Le port choisi pour Max (1235, par exemple) est utilisé dans l’objet udpreceive. Ces deux objets sont détaillés plus loin.
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 Max, les adresses correspondantes sont utilisées par le récepteur OSC (/quelquechose) et par l’émetteur udpsend (/isadora/numero). Les détails sont donnés ci-dessous.
Transmission d’Isadora vers Max
1 - A partir d’Isadora
L’objet nécessaire pour envoyer des données en OSC est "OSC Transmit", qui se trouve dans le groupe 7 (Control Group).
Les données sont envoyées avec une adresse spécifique vers un patch Max fonctionnant sur la même machine qu’Isadora. Cette idée se traduit avec les paramètres OSC que nous avons présentés plus haut :
Traduction | Entrée de l’objet OSC Transmit | Paramètres |
---|---|---|
données | value | flot de données connecté |
adresse spécifique | address | /quelquechose |
Max | port | 1349 |
même machine | udp addr | localhost |
use type | on |
Dans l’exemple donné ici, nous utilisons un Envelope Generator pour créer des flots de données. Les paramètres de l’objet sont ceux qui apparaissent par défaut : les valeurs décrivent une courbe définie par un seul segment, qui part de 0 pour atteindre 100 en 1 seconde. Le Pulse Generator permet d’automatiser l’apparition de données à envoyer : toutes les deux secondes (fréquence 0,5 Hz), il envoie un trigger, qui connecté sur le Trigger du Pulse Generator, fait démarrer la rampe de valeurs. Ces deux objets se trouvent dans le groupe 4 (Generator Group).
Pour envoyer plusieurs données en parallèle, il est possible de poser plusieurs OSC Transmit. Cependant, dans les versions récentes, un actor Multitransmit permet d’envoyer plusieurs flots de données sur une même adresse, évitant cette duplication dans le cas de nombreuses informations à partager (cf plus loin).
2 - Vers Max
Du côté de Max, deux objets sont nécessaires pour la réception des données. Il n’est pas nécessaire de se connecter. L’objet udpreceive permet de recevoir tout message OSC. Le message qui vient d’Isadora est adressé au port UDP 1349. L’objet udpreceive prend en paramètre ce numero de port. Le message est marqué par l’adresse /ravn. L’objet suivant, route, permet de trier les messages arrivant à l’aide de cette adresse. Sur la sortie de gauche (sur laquelle est branché un nombre dans l’exemple) sortent les valeurs marquées par /ravn. Sur la sortie de droite passent d’éventuels autres messages marqués différemment.
Le Pulse Generator étant automatique, lorsque les deux fichiers sont ouverts en même temps, vous devriez observer l’arrivée régulière de données dans Max.
Transmission de Max vers Isadora
1 - Connexion et envoi des informations depuis Max
L’objet crucial est udpsend. Il doit recevoir successivement plusieurs informations pour envoyer des données vers Isadora.
Il n’est pas nécessaire de se connecter activement. L’argument localhost indique à udpsend qu’on s’adresse à un logiciel sur la même machine que le patch et que le logiciel cible est Isadora (identifié par l’adresse UDP 1234).
Le message branché sur udpsend 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, ici des données de capteurs analogiques.
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 car elle est déjà configurée dans les Préférences. 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 massage OSC et permettre de le séparer d’autre flux de données envoyés à Isadora. Ici c’est 1, correspondant au /1 de "/isadora/1" dans Max.
Lorsque les capteurs varient en Max, des données dans la sortie value des OSC Listeners.
Dans l’exemple suivant, 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 avec Multi Transmit
Dans les exemples précédents, nous avons montré comment envoyer, dans un sens ou dans l’autre, un seul flux de données depuis Isadora. 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.
Les adresses et ports UDP sont localhost, 1234 pour Isadora, 1349 pour Max.
D’Isadora vers Max, 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 Max 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 Max vers Isadora, le tri se fait par les "channels" 1 et 2, qui apparaissent dans le message send envoyé à l’objet udpsend. Comme auparavant, il est obligatoire d’employer /isadora avant ces /1 et /2.