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:
| Form | Bedeutung | Beschreibbar |
|---|---|---|
$name | Eigene Variable im Speicher des Geräts | ja |
$sys_name | Gerätewert — Modus, Cue, Timecode, IP … | nein, das Gerät füllt sie |
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:
| Weg | Womit |
|---|---|
| OSC | /fpress/var <name> <wert> |
| Macro-Schritt | Protokoll Variable im Step-Editor |
| Companion-Modul | Action Set device variable oder Feedback Sync variable to FrenschPress |
| HTTP-API | POST /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.
| Name | Inhalt |
|---|---|
$sys_mode | Control Mode: qlab, macro oder companion |
$sys_set | Aktives Button-Set: A, B oder C |
$sys_set_buttons | Set je Taste, acht Buchstaben in der Reihenfolge stop, go, pause, Encoder-Push, links, rechts, push+links, push+rechts |
$sys_name | Gerätename |
$sys_fw | Firmware-Version |
$sys_ip | IP-Adresse des aktiven Interface |
$sys_peers | Anzahl der FrenschPress-Peers im Netzwerk |
$sys_cue | Name des laufenden QLab-Cues. Leer, solange nichts läuft |
$sys_standby | Name des Cues, auf dem QLab steht — was GO als Nächstes auslöst |
$sys_remaining | Restzeit des laufenden Cues. Leer, solange nichts läuft |
$sys_running | Anzahl laufender QLab-Cues |
$sys_paused | Anzahl pausierter QLab-Cues |
$sys_tc | Eingehender MTC-Timecode, hh:mm:ss:ff. Leer ohne Timecode |
$sys_tc_hh | Timecode-Stunden, zweistellig |
$sys_tc_mm | Timecode-Minuten, zweistellig |
$sys_tc_ss | Timecode-Sekunden, zweistellig |
$sys_tc_ff | Timecode-Frames, zweistellig |
$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 $.
$öffnet die Liste aller Namen, die das Gerät gerade auflösen kann — eigene undsys_-Werte, jeweils mit ihrem aktuellen Wert daneben. Das Filterfeld sucht darin.- Ein Klick fügt
$namean der Cursorposition ein. - 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-9und_. - 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$ 5bleiben 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 $cueohnecueergibtCUE, eine Beschriftung aus nur$cuebleibt 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.
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/varnimmt Name und Wert. Der Wert darf ein String, ein Integer, ein Float oder ein Bool sein; Zahlen werden in Text umgewandelt./fpress/var/clearmit 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
| Aufruf | Wirkung |
|---|---|
GET /api/variables | Alle 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.