Interaction Design WikiSystems Engineering

OSC

Das "Open Sound Control" Protokoll würde speziell für die Kontrolle von Multimedia Installationen in einem lokalen Netzwerk entwickelt.

Tools

Processing Beispiel

Wenn Werte von Processing aus an weitere Applikationen (z.B. Max MSP) übergeben werden sollen, oder wenn in Processing Werte aus diesen Programmen empfangen werden sollen, verwenden wir die Processing Library oscP5 (http://www.sojamo.de/libraries/oscP5/). Diese muss ebenfalls heruntergeladen werden und dann im library Ordner von Processing platziert werden.

Um Werte nun per OSC an einen anderen Computer zu versenden müssen wir zunächst die Library initialisieren:

import oscP5.*; // oscP5 Library importieren
import netP5.*; // netP5 Library importieren
 
OscP5 oscP5; // Kontrollobjekt anlegen
NetAddress remoteLocation; // Zieladresse anlegen

Im nächsten Schritt initialisieren wir die Library und setzen die Zieladresse:

void setup() {
  oscP5 = new OscP5(this, 12000); // Library starten und auf Port 12000 auf eingehende Nachrichten warten
  remoteLocation = new NetAddress("172.31.224.73", 12000); // Die IP Adresse sowie der Port des Empfänger
}

Nun müssen wir nur noch Nachrichten erstellen und diese and die Zieladresse schicken:

void mousePressed() {
  OscMessage msg = new OscMessage("/test"); // Neue Nachricht mit "/test" als Adress-Muster
  msg.add(123); // Einfache Zahl anhängen
  oscP5.send(msg, remoteLocation);  // Senden der Nachricht
}

Um Nachrichten zu empfangen können wir folgenden Code hinzufügen:

void oscEvent(OscMessage msg) {
  println("### Neue Nachricht");
  println("AddrPattern: " + msg.addrPattern()); // Ausgeben des Adress-Muster
  println("TypeTag: " + msg.typetag()); // Ausgeben des Type-Tag
 
  // Adress-Muster überprüfen
  if(msg.addrPattern().equals("/test")) {
	// Mitgesendete Zahl ausgeben
    println(msg.get(0).intValue());
  }
}