Communications OSC

Patch et codes : OSC-max-pg.zip

Pourquoi ?

Entre qui et qui ?

  • Pour communiquer entre deux environnements / logiciels / codes / applis différents dans un même ordinateur,
  • ou entre deux logiciels différents installés sur des ordinateurs différents,
  • ou encore entre deux sessions différentes d'un même logiciel installés sur des ordinateurs / tablettes / téléphones différents.

C'est une façon assez simple, stable et réactive d'envoyer des informations d'un logiciel à un autre.
La plupart des environnements temps réel comprennent le protocole OSC : Max MSP, Isadora, Processing, VVVV, Usine, Falcon, Unity, etc...

Quel intérêt ?

Utiliser au mieux des potentialités différentes entre des logiciels complémentaires.
Simplifier le développement d'un projet en optimisant l'emploi des divers outils.

Exemples

Gestion de graphismes 2D ou affichage de texte en Processing et gestion du scénario dans le temps et des sons en Max MSP.
Gestion des effets video en Isadora et réception et traitement des capteurs en Max MSP.

Transmission réseau

OSC = Open Sound Control = un protocole réseau de type UDP.

UDP

Deux grands types de transmissions réseau :

  • HTTP : fiable, demande un acquittement pour vérifier que tous les paquets envoyés sont arrivés, utilisé par exemple pour afficher correctement des pages web. Inconvénient : lent, non temps réel.
  • UDP : pas d'acquittement, envoi à la volée sans vérification. Avantage : rapide et compatible temps réel. Inconvénient : possible perte de données, surtout en sans fil (ce n'est pas un gros danger dans une transmission à l'intérieur d'un même ordinateur).

Emetteur - Récepteur

Dans toute communication, il y a envoi d'une information par un émetteur et réception de cette information par un récepteur capable de la comprendre. En OSC, le message émis contient une adresse spécifique du récepteur ciblé.

Adressage

Pour que le message transmis trouve son destinataire, il lui faut une addresse réseau comportant :

  • Adresse IP de la machine cible (127.0.0.1 pour le localhost pour communication dans un meme ordinateur)
  • Port réseau (dépendant du récepteur, fixe ou libre selon les environnements)
  • En-tête (permettant de distinguer différents messages adressés au même destinataire, arbitraire ou libre selon les environnements)
  • Valeur (l'information à transmettre)

Codes

Max

Réception de messages depuis un autre environnement

Objet udpreceive avec un numéro de port.
Ce numéro de port est arbitrairement choisi ici.
Tri des en-têtes avec route.
Inutile d'indiquer l'adresse IP dans la réception.
Exemples d'informations reçues : signal de fin de lecture d'un media, position d'une forme sur l'écran, état d'un dispositif...

Envoi de messages vers Processing

Objet udpsend avec un numéro de port correspondant à celui choisi dans le code Processing, et DIFFERENT du port de réception mentionné ci-dessus.
Message /en-tete valeur, avec un en-tête arbitraire correspondant à celui dans la fonction de réception dans Processing.

Envoi de messages vers Isadora

Objet udpsend avec le numéro de port configuré dans Isadora, 1234 par défaut, DIFFERENT du port de réception mentionné ci-dessus.
Message /en-tete valeur, avec un en-tête /isadora/nombre obligatoire, nombre à celui de l'actor OSC Listener.

Processing

pg_max2.zip
Library OSCP5
Fonction de réception oscEvent(OscMessage message_max)
Envoi oscP5.send(myMessage, vers_max);