Zum Inhalt springen

OSC ​

Die Ansicht OSC ist der Ort, an dem Sie Open Sound Control (OSC 1.0) von Hand über UDP sprechen. Sie hat drei Teile:

  • Sender: eine Nachricht mit typisierten Argumenten, gesendet mit Enter.
  • Monitor: empfängt auf einem Port und dekodiert jedes Paket, das eintrifft.
  • Signalgenerator: sendet einen Wert, der einer Wellenform folgt, viele Male pro Sekunde, und zeichnet ihn.

Signal Lab kodiert und dekodiert OSC selbst. Was es sendet, ist genau das, was der Inspektor zeigt, Byte für Byte.

Eine Nachricht senden ​

  1. Öffnen Sie OSC.
  2. Geben Sie unter Ziel Host:Port die IP-Adresse oder den Hostnamen des Geräts und seinen Port ein, zum Beispiel 127.0.0.1:9000 oder stage-mixer.local:9000.
  3. Geben Sie unter OSC-Adresse die Adresse ein, auf die das Gerät hört, zum Beispiel /mixer/fader/1.
  4. Setzen Sie unter Argumente Typ und Wert jedes Arguments. Drücken Sie + Argument für ein weiteres; ✕ entfernt eines.
  5. Drücken Sie Senden, oder Enter in einem beliebigen Feld des Senders.

Die Zeile unter den Schaltflächen sagt, was hinausging: die Adresse, ihre Größe in Bytes und das Ziel. Wird dieselbe Nachricht erneut gesendet, zählt sie hoch (×2, ×3…), sodass Sie sehen, dass ein wiederholtes Senden etwas bewirkt hat. Ein Fehler wird stattdessen dort gezeigt, und in der Konsole.

Ziel, Adresse und Argumente bleiben erhalten, wenn Sie die Ansicht wechseln und wenn Sie die App neu starten.

Felder ​

FeldWasStandard
Ziel Host:PortIP:port oder host:port des Empfängers. Eine IPv6-Adresse steht in eckigen Klammern: [::1]:9000. Ein Hostname wird bei jedem Senden nachgeschlagen; hat er eine IPv4-Adresse, wird diese verwendet (so erreicht localhost einen Empfänger, der auf 127.0.0.1 empfängt), sonst seine IPv6-Adresse. Ein Ziel ohne Port wird abgelehnt.127.0.0.1:9000
OSC-AdresseDie OSC-Adresse, beginnend mit /, Teile durch / getrennt. Eine ohne führendes / wird abgelehnt, bevor etwas gesendet wird./hello/avatar/1
ArgumenteTypisierte Werte nach der Adresse, in ihrer Reihenfolge. Eine Nachricht darf keine haben.ein float, 1.0

Argumenttypen ​

Der Typ jedes Arguments ist Teil der Nachricht (sein Typ-Tag), daher kann ein Gerät, das einen float erwartet, ein int mit demselben Wert ignorieren.

Typ in der ListeOSC-TagWertWie Sie ihn eingeben
inti32-Bit-Ganzzahl mit Vorzeicheneine ganze Zahl
floatf32-Bit-Gleitkommazahleine Zahl, 0.75
strsTextbeliebiger Text, als UTF-8 gesendet
boolT / Fwahr oder falschtrue oder false aus einer Liste; trägt keine Bytes, nur das Tag
longh64-Bit-Ganzzahl mit Vorzeicheneine ganze Zahl
doubled64-Bit-Gleitkommazahleine Zahl
nilNnichtskein Wert
blobbByteshier nicht typisiert: Es erscheint, schreibgeschützt und in Hex, wenn Sie ein Signal öffnen, das eines enthält

Ein Zahlenfeld, das keine Zahl enthält, sendet 0.

TIP

Ein OSC-true ist das Tag T, nicht der Text "true". Ein Gerät, das auf einen bool wartet, ignoriert einen String stillschweigend.

Bundles ​

Der Sender sendet einzelne Nachrichten, keine Bundles. Trifft ein Bundle (#bundle) ein, packen es der Monitor, die Warteknoten des Experiments und die Emulatoren aus: Jede Nachricht darin wird für sich behandelt, und ihr Zeit-Tag wird ignoriert.

Einen Port überwachen ​

Um zu sehen, was ein Gerät oder ein Show-Controller sendet:

  1. Geben Sie unter Empfangsadresse die Adresse und den Port zum Empfangen ein. 0.0.0.0:9000 (die Voreinstellung) empfängt auf jeder Netzwerkkarte; 127.0.0.1:9000 nur auf diesem Computer.
  2. Drücken Sie Empfangen. Das Feld ist gesperrt, solange der Monitor läuft.
  3. Richten Sie den Sender auf die IP-Adresse dieses Computers und diesen Port.

Jedes Paket wird zu einer Zeile, das Neueste oben:

SpalteWas
ZeitWann es eingetroffen ist, auf die Millisekunde
VonIP:port des Absenders
AdresseDie OSC-Adresse, oder (Dekodierfehler), wenn das Paket kein gültiges OSC ist
ArgumenteDie Argumentwerte; ein Blob erscheint als blob[n], nil als nil. Bei einem Paket, das nicht dekodiert werden konnte, der Grund.

Ein Bundle ergibt eine Zeile pro Nachricht. Die Liste behält die neuesten 300 Zeilen; Leeren leert sie. Drücken Sie Stoppen, um den Port zu schließen. Der Monitor ist außerdem ein Job in der Leiste der Konsole, sodass er auch von dort gestoppt werden kann.

Der Monitor liest Pakete bis 64 KiB. Er dekodiert die Tags i f s S b h d T F N I (S liest sich als Text, I als nil); ein Paket mit einem anderen Tag oder ein abgeschnittenes wird als Dekodierfehler gezeigt statt verworfen.

Eine Nachricht in einen Warteknoten verwandeln ​

Jede Zeile hat eine Schaltfläche ⇠, Darauf warten. Sie fügt dem geöffneten Experiment einen Auf OSC warten-Schritt hinzu, der auf dem Empfangsadresse des Monitors auf diese Adresse wartet, mit einer Regel „ist gleich" für jedes Text-, Ganzzahl- und Wahr/Falsch-Argument — Floats, Blobs und nil bekommen keine — bis zu 16 Regeln. Sein Timeout beträgt 2000 ms. Der Editor öffnet sich mit dem neuen Schritt ausgewählt.

WARNING

Stoppen Sie den Monitor, bevor Sie dieses Experiment ausführen. Der Durchlauf öffnet denselben Port selbst, und zwei Empfänger können ihn sich nicht teilen.

Eine Wellenform ausgeben ​

Der Signalgenerator sendet eine Nachricht nach der anderen an eine Adresse, mit einem einzigen Argument, dessen Wert einer Wellenform folgt — ein Fader, ein Lichtpegel, eine Position. Nutzen Sie ihn, um zu sehen, wie ein Gerät einem bewegten Wert folgt, oder um einen Empfänger mit einem gleichmäßigen Strom zu belasten.

  1. Setzen Sie Ziel Host:Port und Adresse. Beide werden beim Drücken von Generator starten geprüft, wie der Sender sie prüft.
  2. Wählen Sie eine Wellenform, ihre Freq. (Hz) und die Rate (pps).
  3. Setzen Sie Min und Max, den Bereich des Werts.
  4. Drücken Sie Generator starten. Er läuft, bis Sie Generator stoppen drücken oder seinen Job in der Leiste der Konsole stoppen.
FeldWasStandard
Ziel Host:PortIP:port oder host:port des Empfängers; ein Name wird einmal nachgeschlagen, beim Start des Generators127.0.0.1:9000
AdresseDie Adresse, an die jede Nachricht gesendet wird; sie beginnt mit //hello/lfo
WellenformDie Form des Werts über die Zeit (unten)Sinus
Freq. (Hz)Zyklen der Wellenform pro Sekunde1
Rate (pps)Nachrichten pro Sekunde, von 0,1 bis 5000; ein Wert außerhalb wird auf diesen Bereich begrenzt60
Min, MaxDer niedrigste und der höchste Wert. Liegt Max unter Min, bewegt sich der Wert nicht.0, 1
als int sendenAuf die nächste ganze Zahl runden und ein int statt eines float sendenaus
WellenformWas der Wert in jedem Zyklus tut
SinusSchwingt weich zwischen Min und Max, beginnt in der Mitte und steigt
DreieckSteigt von Min auf Max, fällt dann zurück auf Min, beginnt bei Min
SägezahnEin fallendes Sägezahn: beginnt bei Max, fällt auf Min, springt dann zurück auf Max
RampeEin steigendes Sägezahn: beginnt bei Min, steigt auf Max, springt dann zurück auf Min
RechteckMax in der ersten Hälfte, Min in der zweiten
ZufallEin neuer Zufallswert zwischen Min und Max mit jeder Nachricht; die Frequenz wird nicht verwendet
KonstantJedes Mal Max; die Frequenz wird nicht verwendet

Der Scope ​

Neben den Feldern zeichnet der Scope den Wert, wie er gesendet wird: die neuesten 300 Punkte, so skaliert, dass sie hineinpassen. Darunter stehen die Wellenform, die Frequenz und die Rate sowie der zuletzt gesendete Wert. Der Scope wird etwa 30-mal pro Sekunde aktualisiert, so schnell der Generator auch sendet; bei hohen Raten zeigt er daher eine Stichprobe der Nachrichten, nicht jede einzelne.

Scheitert ein Senden, stoppt der Generator, und die Konsole sagt, warum.

Im Inspektor ​

Läuft der Mitschnitt (Mitschnitt starten in der Inspektor), erscheint OSC-Verkehr mit dem Protokoll osc:

QuelleWasHinweise
osc-sendJede Nachricht, die der Sender, ein Bibliothekssignal, ein Schritt OSC-Nachricht oder signallab send osc sendetEin Schritt, der auf eine Antwort wartet, erscheint als experiment
osc-monitorJedes Paket, das der Monitor empfängtEin Bundle wird durch seine erste Nachricht und +n more in bundle zusammengefasst; ein fehlerhaftes Paket hat das Urteil decode error: …
osc-genDie Nachrichten des GeneratorsHöchstens eine alle 100 ms wird mitgeschnitten, mit dem Urteil sampled; die nächste nach übersprungenen Nachrichten ergänzt, wie viele nicht gezeichnet wurden, als sampled · +5 not shown

Jeder Frame behält die Bytes, aus denen er gebaut wurde. Siehe Inspektor.

Speichern und wiederverwenden ​

  • Als Signal speichern. Speichern… unter den Schaltflächen behält die Nachricht — Ziel, Adresse und Argumente — in der Signalbibliothek, in einem Ordner Ihrer Wahl. Von da an ist der Sender an dieses Signal gebunden: Speichern (oder Ctrl+S im Sender) aktualisiert es, Speichern unter… legt eine Kopie an, und der Chip daneben öffnet es in Signale. Senden Sie es später aus Signale oder mit Ctrl+K von jeder Ansicht aus. Siehe Signale.
  • Zu einem Experiment hinzufügen. Zum Experiment hinzufügen fügt dem geöffneten Experiment einen Schritt OSC-Nachricht mit demselben Ziel, derselben Adresse und denselben Argumenten hinzu — direkt vor Ende oder nach dem ausgewählten Schritt — und öffnet es. Während das Experiment läuft, kann nichts hinzugefügt werden; die Konsole sagt es.

In Experimenten ​

SchrittWas er tut
OSC-NachrichtSendet eine Nachricht. Sein Ziel, seine Adresse und seine Textargumente nehmen {{templates}}. Mit auf eine Antwort warten sendet er von einem eigenen Port und wartet dort im selben Schritt auf die Antwort. Details
Auf OSC wartenWartet auf eine Nachricht, deren Adresse auf ein Muster passt und deren Argumente die Regeln erfüllen. Details
EmulatorEin OSC-Gerät, das für den ganzen Durchlauf nach Regeln antwortet. Siehe Emulatoren.

Der OSC-Schritt nimmt IP:port oder host:port wie die Ansicht, und seine Adresse muss mit / beginnen. Ein Hostname wird bei jedem Senden des Schritts nachgeschlagen.

Adressmuster ​

Auf OSC warten, die Antwort von OSC-Nachricht und die Regeln eines OSC-Emulators gleichen Adressen mit Mustern nach OSC 1.0 ab:

MusterPasst auf
*eine beliebige Folge von Zeichen, auch keine
?genau ein Zeichen
[0-9], [a-c]ein Zeichen aus der Menge oder dem Bereich
[!0-9]ein Zeichen, das nicht in der Menge ist
{ping,pong}eines der Wörter

Platzhalter bleiben innerhalb eines Teils zwischen Schrägstrichen: /cue/* passt auf /cue/7, aber nicht auf /cue/7/go, und ein Muster passt nur auf eine Adresse mit derselben Anzahl von Teilen. Die Übereinstimmung ist groß- und kleinschreibungssensitiv. Ein Muster beginnt mit /, hat keinen leeren Teil (//), keine Leerzeichen, kein # und keine Zeichen außerhalb von ASCII, und ist höchstens 512 Zeichen lang.

Argumentregeln vergleichen Argument Nummer 0–63 mit einem Wert (ist gleich, kleiner als, enthält, passt auf einen regulären Ausdruck und so weiter); ein Warteknoten hat höchstens 16. Trifft ein Bundle ein, nimmt der Warteknoten es an, wenn irgendeine Nachricht darin passt. Was eine passende Nachricht den Schritten danach gibt, steht unter Daten und Vorlagen.

Von der Kommandozeile ​

signallab send osc sendet eine Nachricht, wie es der Sender tut:

bash
signallab send osc 127.0.0.1:9000 /cue/go f:0.75 s:main
text
✔ sent /cue/go (24 bytes) → 127.0.0.1:9000

Jedes Argument ist tag:value: i:3, f:0.5, d:1.5, h:64, s:text, b:de ad be ef (Hex-Bytes) oder T, F, N für sich allein. Ohne Tag ist eine ganze Zahl i, eine Zahl mit Dezimalpunkt f und alles andere s; schreiben Sie s:7, um den Text 7 zu senden. Das Ziel ist IP:port oder host:port. Es endet mit 0, wenn die Nachricht hinausging, mit 1, wenn das Senden fehlschlug (ein Hostname, der sich nicht auflösen lässt, eingeschlossen), und mit 2, wenn ein Argument, die Adresse oder das Ziel ungültig ist. signallab fire sendet ein gespeichertes Signal. Siehe Kommandozeile.

TIP

In Git Bash unter Windows wird ein Argument, das mit / beginnt, in einen Dateipfad umgewandelt, bevor signallab es sieht. Führen Sie den Befehl mit MSYS_NO_PATHCONV=1 davor aus, oder verwenden Sie PowerShell oder cmd.

Probleme ​

Was Sie sehenÜbliche Ursache
… is not a valid address beim SendenDas Ziel hat keinen Port oder ist weder IP:port noch host:port.
Cannot resolve … beim SendenDer Hostname lässt sich auf diesem Computer nicht auflösen. Prüfen Sie ihn, oder verwenden Sie die IP-Adresse.
OSC addresses start with / (…)Der Adresse fehlt das führende /.
Die Nachricht wird gesendet, aber das Gerät tut nichtsFalscher Port oder falsche Adresse; ein anderer Typ, als es erwartet (int statt float, ein Text "true" statt eines bool). Beobachten Sie es im Inspektor, oder richten Sie das Ziel auf den Monitor auf diesem Computer, um zu sehen, was hinausgeht.
… is already in use by another program bei EmpfangenEin anderes Programm — oder ein laufendes Experiment, ein Emulator oder ein zweiter Monitor — hat den Port.
… is not an address of this computerDie IP unter Empfangsadresse gehört zu einem anderen Rechner. Verwenden Sie 0.0.0.0 oder eine der Adressen dieses Computers.
Pakete von anderen Rechnern kommen nie anUnter Windows kann die Firewall sie abhalten: Lassen Sie Signal Lab zu, wenn die App es anbietet. Lokaler Verkehr (127.0.0.1) ist nicht betroffen. Siehe Problemlösung.
Zeilen mit (Dekodierfehler)Der Sender spricht auf diesem Port kein OSC 1.0 oder verwendet ein Typ-Tag, das Signal Lab nicht dekodiert.

Auf einem Server arbeitet die Ansicht im Netzwerk des Servers: 127.0.0.1 ist der Server selbst, und der Monitor empfängt auf den Ports des Servers. Siehe Server.

Jede Fehlermeldung steht unter Fehlermeldungen.