OSC empfangen

Standardmäßig lauscht Sonic Pi wenn es gestartet wird an Port 4560 auf eingehende OSC-Signale von Programmen auf demselben Computer. Das bedeutet, dass du ohne weitere Konfiguration Sonic Pi ein OSC-Signal senden kannst und dieses im Cue-Protokoll, genauso wie eingehende MIDI-Signale, angezeigt wird. Das heißt auch, jedes eingehende OSC-Signal wird automatisch zum Time-State hinzugefügt, was bedeutet, dass du get und sync verwenden kannst, um mit den eingehenden Daten zu arbeiten - genauso wie bei MIDI und der Synchronisierung von live_loops - sieh in den Abschnitten 5.7 und 10.2 nach, um zu rekapitulieren, wie das funktioniert.

Ein einfacher OSC-Empfänger

Lass uns einen einfachen OSC-Empfänger bauen:

live_loop :foo do 
  use_real_time
  a, b, c = sync "/osc*/trigger/prophet"
  synth :prophet, note: a, cutoff: b, sustain: c
end

In diesem Beispiel geben wir einen OSC-Pfad an, mit dem wir uns synchronisieren, "/osc*/trigger/prophet". Dies kann ein beliebiger gültiger OSC-Pfad sein (alle Buchstaben und Zahlen sind erlaubt, das /wird wie in einer URL verwendet um Wörter zu trennen). Das Präfix /osc wird von Sonic Pi allen eingehenden OSC-Signalen vorangestellt, also müssen wir eine OSC-Signal mit dem Pfad /trigger/prophet senden, damit der sync-Befehl beendet und der prophet-Synth getriggert wird.

OSC an Sonic Pi senden

Wir können OSC von jeder beliebigen Programmsprache, die eine Bibliothek für OSC bietet, aus an Sonic Pi senden. Wenn wir zum Beispiel OSC von Python aus senden, machen wir vielleicht so etwas:

from pythonosc import osc_message_builder 
from pythonosc import udp_client
sender = udp_client.SimpleUDPClient('127.0.0.1', 4560)
sender.send_message('/trigger/prophet', [70, 100, 8])

Oder wenn wir OSC aus Clojure senden, machen wir vielleicht etwas wie dies aus dem REPL:

(use 'overtone.core) 
(def c (osc-client "127.0.0.1" 4560))
(osc-send c "/trigger/prophet" 70 100 8)

Von externen Computern empfangen

Aus Sicherheitsgründen empfängt Sonic Pi standardmäßig keine OSC Nachrichten von externen Computern. Du kannst jedoch Unterstützung für externe Geräte unter Einstellungen->I/O->Netzwerk->Empfange OSC von externen Computern einschalten. Du kannst anschließend OSC-Signale beliebigen Computern in deinem Netzwerk empfangen. Das sendende Gerät muss dafür deine IP-Adresse kennen (eine eindeutige Bezeichnung deines Computers in deinem Netzwerk - ganz so wie eine Telefonnummer oder Email-Adresse). Du kannst die IP-Adresse deines Computers herausfinden, indem du in Einstellungen im Abschnitt I/O nachsiehst. (Falls dein Computer mehrere IP-Adressen haben sollte, kannst du die alle bekannten Adressen anzeigen lassen, indem du den Mauszeiger über der angezeigten Adresse schweben lässt).

Beachte, dass manche Programme, wie z. B. TouchOSC für iPhone und Android, das Senden von OSC-Signalen von Haus aus unterstützen. Also kannst du, sobald du auf OSC-Signale von externen Geräten lauscht und du deine IP-Adresse kennst, anfangen OSC-Signale von Apps wie TouchOSC zu senden und deine eigenen Steuerungen mit Slidern, Schaltflächen, Drehknöpfen usw. zu bauen. Das kann dir eine enorme Bandbreite an Eingabemöglichkeiten erschließen.