Zum Hauptinhalt springen

Variablen

Eine Stream-Deck-Beschriftung ist normalerweise fest: Was im Editor eingetragen wurde, steht auf der Taste, bis es jemand ändert. Variablen machen aus der Beschriftung eine Vorlage. Enthält der Text ein $name, zeichnet die Taste den aktuellen Wert dieser Variablen — und zeichnet neu, sobald sich der Wert ändert.

Beschriftung im Editor auf der Taste
CUE $sys_cue → CUE Blackout
KANAL $ch → KANAL 12
$sys_tc → 01:12:44:07

Zwei Sorten gibt es:

FormBedeutungBeschreibbar
$nameEigene Variable im Speicher des Gerätsja
$sys_nameGerätewert — Modus, Cue, Timecode, IP …nein, das Gerät füllt sie
Nur Anzeigetext

Variablen wirken in Beschriftungen: Stream-Deck-Tasten sowie Push-, Links- und Rechts-Beschriftungen der Encoder des Stream Deck +. Macro-Parameter, Preset-Namen, Timeline-Bezeichnungen und Network Targets werden nicht ersetzt.


Wo die Werte herkommen​

Eigene Variablen werden von außen gesetzt — das Gerät erfindet sie nicht. Vier Wege führen in denselben Speicher:

WegWomit
OSC/fpress/var <name> <wert>
Macro-SchrittProtokoll Variable im Step-Editor
Companion-ModulAction Set device variable oder Feedback Sync variable to FrenschPress
HTTP-APIPOST /api/variables mit {name, value} (Login nötig)

Macro-Schritt „Variable"​

Im Step-Editor als Protokoll Variable wählen. Der Schritt schreibt einen Namen und einen Wert.

Der Wert darf selbst ein $name oder $sys_name enthalten. Diese Referenz wird beim Auslösen des Macros aufgelöst — ein Schritt mit dem Wert $sys_cue friert also den Cue-Namen des Moments ein, statt ihm weiter zu folgen. Genau so entsteht eine „Was lief zuletzt"-Anzeige.

Aus Companion​

Das Companion-Modul kennt zwei Wege, die auf der Seite Companion-Modul beschrieben sind: eine Action, die einen Wert beim Drücken schreibt, und ein Feedback, das eine Companion-Variable dauerhaft spiegelt. Die FrenschPress bekommt in beiden Fällen nur den fertigen Text — sie weiß nichts von Companion.


Gerätewerte ($sys_…)​

Diese Namen sind reserviert. Sie stehen immer zur Verfügung, ohne dass jemand etwas schreibt, und ein Schreibversuch darauf wird abgewiesen.

NameInhalt
$sys_modeControl Mode: qlab, macro oder companion
$sys_setAktives Button-Set: A, B oder C
$sys_set_buttonsSet je Taste, acht Buchstaben in der Reihenfolge stop, go, pause, Encoder-Push, links, rechts, push+links, push+rechts
$sys_nameGerätename
$sys_fwFirmware-Version
$sys_ipIP-Adresse des aktiven Interface
$sys_peersAnzahl der FrenschPress-Peers im Netzwerk
$sys_cueName des laufenden QLab-Cues. Leer, solange nichts läuft
$sys_standbyName des Cues, auf dem QLab steht — was GO als Nächstes auslöst
$sys_remainingRestzeit des laufenden Cues. Leer, solange nichts läuft
$sys_runningAnzahl laufender QLab-Cues
$sys_pausedAnzahl pausierter QLab-Cues
$sys_tcEingehender MTC-Timecode, hh:mm:ss:ff. Leer ohne Timecode
$sys_tc_hhTimecode-Stunden, zweistellig
$sys_tc_mmTimecode-Minuten, zweistellig
$sys_tc_ssTimecode-Sekunden, zweistellig
$sys_tc_ffTimecode-Frames, zweistellig
Timecode auf vier Tasten

$sys_tc_hh bis $sys_tc_ff sind für den Fall gedacht, dass der Timecode nicht als Anzeige-Reihe laufen soll, sondern auf selbst gewählten Tasten — etwa nur Minuten und Sekunden.

Die QLab-Werte setzen eine OSC-Verbindung zu QLab voraus (siehe QLab Mode); über MIDI/MSC gibt es keinen Rückkanal.


Variablen in eine Beschriftung einsetzen​

Im Tasten-Editor der Streamdeck-Seite liegt rechts neben Button text die Schaltfläche $.

  1. $ öffnet die Liste aller Namen, die das Gerät gerade auflösen kann — eigene und sys_-Werte, jeweils mit ihrem aktuellen Wert daneben. Das Filterfeld sucht darin.
  2. Ein Klick fügt $name an der Cursorposition ein.
  3. Unter dem Eingabefeld steht die Vorschau: der Text so, wie ihn das Deck in diesem Moment zeichnen würde.

Die Liste aktualisiert sich, solange sie offen ist — man wählt also die Variable, die gerade 12 anzeigt, und muss sich nicht erinnern, dass sie ch heißt.


Regeln​

  • Ein Name ist 1–24 Zeichen aus A-Z, a-z, 0-9 und _.
  • Ein Wert ist höchstens 48 Zeichen — dieselbe Grenze, die eine Tastenbeschriftung ohnehin hat. Längeres wird ohne Warnung abgeschnitten.
  • Es passen 64 eigene Variablen ins Gerät.
  • Ein $ beginnt einen Namen nur, wenn ein Namenszeichen folgt. 100$, US$ und $ 5 bleiben also unverändert stehen — es gibt kein Escape-Zeichen und keine alte Beschriftung, die plötzlich anders aussieht.
  • Ein unbekannter Name wird zu nichts. CUE $cue ohne cue ergibt CUE , eine Beschriftung aus nur $cue bleibt leer.
  • Keine Rekursion: Enthält ein Wert selbst ein $, wird er wörtlich gezeichnet.
  • $$ ist für später reservierte, peer-übergreifende Variablen vorgesehen und wird beim Speichern abgewiesen — mit Meldung im Editor, nicht als stumme Merkwürdigkeit auf der Taste.
Variablen überleben keinen Neustart

Der Speicher liegt im Arbeitsspeicher und wird nicht gesichert. Nach einem Neustart sind alle eigenen Variablen leer, bis sie wieder geschrieben werden. Das ist Absicht: ein Wert von gestern Abend auf einer Taste ist schlimmer als eine leere Taste.

Das Companion-Feedback Sync variable to FrenschPress schreibt seine Zuordnungen von selbst langsam nach, sodass ein Neustart des Geräts dort nach kurzer Zeit wieder aufgeholt ist.


Wie oft das Deck neu zeichnet​

Eine Taste mit Variable wird höchstens alle 200 ms neu geschrieben, und nur wenn sich ihr ausgewerteter Text tatsächlich geändert hat. Ändert sich nichts, entsteht kein Datenverkehr zum Deck.

Im Companion-Satellite-Betrieb zeichnet die FrenschPress keine Beschriftungen: Dort gehört das Deck Companion, und Companion schickt seinen eigenen Text.


Über OSC setzen und löschen​

/fpress/var "cue" "Blackout"
/fpress/var "ch" 12
/fpress/var/clear "cue"
/fpress/var/clear
  • /fpress/var nimmt Name und Wert. Der Wert darf ein String, ein Integer, ein Float oder ein Bool sein; Zahlen werden in Text umgewandelt.
  • /fpress/var/clear mit Namen löscht eine Variable, ohne Argument alle.
  • Namen mit sys_ werden abgewiesen, ebenso ungültige Namen — beides mit Meldung im Log, nie stillschweigend.

Details und die übrigen Befehle stehen unter OSC-Fernsteuerung.


Über die HTTP-API​

AufrufWirkung
GET /api/variablesAlle Variablen inklusive der sys_-Werte als JSON
POST /api/variables {"name":"ch","value":"12"}Setzen
POST /api/variables {"name":"ch"}Löschen — der fehlende value-Schlüssel ist das Löschsignal

Beide Aufrufe verlangen eine angemeldete Sitzung. Ein leerer String als value ist ein gültiger Wert und wird gespeichert; gelöscht wird nur ohne den Schlüssel.