DMX-Plugin:Custom-Gerät
Das DMX-Plugin für SkyConductor besteht aus mehreren Einzel-Plugins. Eines davon ist das sogenannte "Custom device"-DMX-Plugin. Dieses Plugin ermöglicht es, simple Geräte auf einfache Art und Weise zu definieren und anschließend in SkyConductor zu verwenden.
Inhaltsverzeichnis
Geräte-Definitionen
Das Custom Device-Plugin verwendet Standardmäßig alle Gerätedefinitionen die im Anwendungsdaten-Verzeichnis "SkyConductor\dmx" gefunden werden. Pro Gerät muss eine eigene Datei in diesem Verzeichnis angelegt werden, der Dateiname muss auf .dms enden. Die Liste der unterstützten DMX-Geräte wird von SkyConductor beim Start des Programms geladen. Bevor eine Show an das Zündsystem übertragen wird (z.B. Export in eine Datei, Programmieren der Module etc) werden die Informationen jeder Gerätedatei neu geladen. Bei Bedarf kann der genaue Pfad im Registry-Editor ("regedit.exe") im Pfad HKEY_CURRENT_USER\Software\VB and VBA Program Settings\SC DMX Custom Pattern\Path\PresetPath nachgesehen bzw. für den angemeldeten Nutzer verändert werden.
Aufbau einer .dms-Gerätedatei
In den folgenden Bereichen wird der Aufbau einer .dms-Gerätedefinition erklärt.
General-Sektion
[General] Identity=Test DMX Device Manufacturer=HSE Productions DeviceName=Test device ChannelCount=5 SetChannelFlag1=arming_lock,always_internal ClearChannelFlag1=copy_armed_value
In der General-Sektion werden generelle Eigenschaften der Gerätedefinition festgelegt:
- Identity
- Der Identity-Eintrag legt die Identität des Gerätes fest. Der hier angegebene Name muss global eindeutig sein.
- Manufacturer
- Der Hersteller des Geräts. Dieser Name wird zur Einsortierung im Geräteauswahl-Dialog benutzt. Alle Geräte eines Herstellers werden dabei zusammen ausklappbar gruppiert.
- DeviceName
- Der Name des Geräts. Der Name sollte so kurz wie möglich aber so aussagekräftig wie nötig angegeben werden. Abkürzungen sollten jedoch vermieden werden wenn sie nicht absolut eindeutig sind.
- ChannelCount
- Die Anzahl DMX-Kanäle die das Gerät benötigt.
- SetChannelFlag1 .. SetChannelFlag<n>
- Die Angabe der Kanaleigenschaften, welche für diesen DMX-Kanal des Geräts unbedingt gesetzt sein sollten.
- ClearChannelFlag1 .. ClearChannelFlag<n>
- Die Angabe der Kanaleigenschaften, welche für diesen DMX-Kanal des Geräts auf keinen Fall gesetzt sein sollten.
Je nachdem welche Kanaleigenschaft betroffen ist, hat entweder die Angabe von SetChannelFlag oder ClearChannelFlag Priorität. Folgende Eigenschaften sind zur Zeit möglich:
- arming_lock: Verhindert, dass ein Kanal auf gezogen werden kann während das DMX-Modul unscharf ist. "Set" hat Priorität über "Clear".
- always_internal: Verhindert, dass eine Zusamenmischung mit den Daten eines externen Lichtpults erfolgt. "Set" hat Priorität über "Clear".
- copy_armed_value: Behält den letzten Wert eines Kanals beim Unscharf schalten bei, fällt also nicht auf den Zustand vor der Scharfschaltung zurück. "Clear" hat Priorität über "Set".
DMX-Sequenzen
Für jede DMX-Sequenz welche einzeln ausgeführt wird, muss in der Gerätedefinition eine eigene, neue Sektion hinzugefügt werden. Innerhalb einer Sequenz können teilweise Parameter (Format Name=Wert) angegeben werden. Alle anderen Zeilen werden als Befehle einer Sequenz interpretiert und in der Reihenfolge wie sie aufgeführt werden abgearbeitet wenn die Sequenz gestartet wurde.
Folgende Befehle stehen dabei zur Verfügung:
- Set <x>, <y>: Setzt Gerätekanal x (1-512) auf den Wert y (0-255). Mischung von mehreren Kanalwerten erfolgt im LTP-Modus, d.H. alle vorherigen Werte werden überschrieben sofern der Kanal nicht von einem anderen Effekt gesperrt ist. Wenn der Kanal durch den gleichen Cue gesperrt wurde (Set_Lock), wird er durch diesen Befehl wieder freigegeben.
- Set_HTP <x>, <y>: Setzt Kanal x (1-512) auf den Wert y (0-255). Mischung von mehreren Kanalwerten erfolgt im HTP-Modus, d.H. der zu einer beliebigen Zeit höchste Wert hat Priorität. Wenn der Kanal durch den gleichen Cue gesperrt wurde (Set_Lock), wird er durch diesen Befehl wieder freigegeben.
- Set_Lock <x>, <y>: Setzt Kanal x (1-512) auf den Wert y (0-255). Der Kanal wird für andere Cues innerhalb der aktuellen Sequenz gesperrt, er muss im Laufe eines Sequenz wieder freigegeben werden (durch Set_LTP oder Set_HTP) damit andere Cues darauf wieder Zugriff haben. Während der Kanal gesperrt ist, werden weitere Zugriffe (LTP, HTP oder Lock) im Hintergrund beibehalten und werden erst angewendet wenn der Kanal freigegeben wurde.
- Anmerkung: Die genaue Funktion der Set_LTP, Set_HTP und Set_Lock-Befehle wird im Bereich der Effektsequenzen genauer erklärt.
- Wait <Zeit>: Pausiert die Sequenz für die angegebene Zeit (Angabe in Millisekunden)
- WaitUntil <Zeit>: Pausiert die Sequenz bis die angegebene absolute Zeit (in Millisekunden) erreicht ist. Absolute Zeit bedeutet, dass die Zeit ab dem Start der Sequenz gerechnet wird und nicht relativ zum letzten Wait oder WaitUntil-Befehl
Die Angabe der Kanalnummer in allen oben genannten Befehlen bezieht sich immer auf den Gerätekanal. Die Angabe von Kanal 1 bezieht sich also bei einem Gerät welches die DMX-Kanäle 10-12 belegt auf den DMX-Kanal 10, die Angabe 3 würde sich auf DMX-Kanal 12 beziehen. |
Die Ansteuerung von globalen Kanälen (welche unabhängig von der Adressierung eines Gerätes sind) ist nicht möglich und würde das Konzept "ein Gerät hat mehrere aufeinander folgende DMX-Kanäle" verwischen. Hierfür muss bei Bedarf ein Pseudo-Gerät definiert werden welches dann auf die entsprechende Adresse in SkyConductor programmiert wird.
Armed-Sequenz
Scharfschalte-Sequenz. Diese Sequenz wird ausgeführt, wenn das DMX-Modul scharf geschaltet wird. Die Befehle für alle definierten Geräte werden in dieser Sequenz zusammengefasst. Bei der Definition eines Geräts muss dies jedoch nicht weiter berücksichtigt werden.
[Armed] Set 2, 0 Wait 100 Set 1, 255
Paused-Sequenz
Die Paused-Sequenz wird ausgeführt, wenn eine Show pausiert wird. Einige Geräte müssen in einem solchen Fall abgeschaltet werden, zum Beispiel Flammenprojektoren. Es sollte darauf geachtet werden, dass es keine "Unpausiert"-Sequenz gibt, die erneute Auslösung muss also mit den normalen "Prepare"- und "TurnOn"-Sequenzen möglich sein. Vor allem sollte die Scharfschaltung (Armed-Sequenze) durch die Pause-Sequenz nicht aufgehoben werden. Wie auch die Armed-Sequenz werden die Befehle alle Paused-Sequenzen in einer einzigen Sequenz zusammengefasst.
[Paused] Set 2, 0
Effektsequenzen
Die Sequenzen Prepare, TurnOn und TurnOff dürfen nur gemeinsam betrachtet werden. Die in ihnen enthaltenen Steuerbefehle werden in einer einzelnen, nämlich der entsprechenden Effektsequenz, miteinander kombiniert. Hinzu kommt, dass mehrere Cues innerhalb einer Sequenz sich zeitlich überlagern können was entsprechend berücksichtigt werden muss. Insofern sind hier auch die Sequenzbefehle Set_LTP, Set_HTP und Set_Lock von besonderer Bedeutung, da sich hierdurch das Zusammenspielen mehrerer gleichzeitiger/nacheinander stattfindender Auslösungen miteinander kombinieren lässt. Beispiele für diese Techniken finden sich weiter unten.
Die Prepare-Sequenz wird ausgeführt, wenn ein Cue gezündet würde. Die entsprechenden Befehle werden also zeitlich so einsortiert, dass ihre Ausführung mit der Vorlaufzeit beginnt. Über den MinDuration=<Wert>-Parameter lässt sich festlegen dass die Vorlaufzeit mindestens die angegebene Zeit in Millisekunden betragen muss.
[Prepare] ;Noch nicht berücksichtigt! MinDuration=100 Set 3, 255
Die TurnOn-Sequenz wird zur Effektzeit des Cues gestartet:
[TurnOn] Set 2, 255
Wird immer im Moment der Effektzeit eines Cues ausgeführt. Dient z.B. dazu, die Flamme eines Flammenprojektors auszulösen.
Die TurnOff-Sequenz wird ausgeführt, wenn ein Effekt nicht mehr sichtbar sein soll - dieser Zeitpunkt entspricht dem Ende eines Cues.
[TurnOff] Set 2, 0 Wait 30 Set 3, 0
Verzahnung von Sequenzen
Dadurch, dass in der Planungsphase in einer Sequenz mehrere Auslösungen des gleichen Geräts hintereinander stattfinden können, besteht die Möglichkeit, dass sich die Prepare-, TurnOn- und TurnOff-Sequenzen mehrerer Auslösungen überschneiden können. Um in diesem Fall möglichst sinnvolle Effekt-Ergebnisse zu erzielen, gibt es die drei Kanalmodi Set_LTP, Set_HTP und Set_Lock.
Beispiel 1 - Set_HTP
Der Freischalt-Kanal eines Flammenprojektors muss nur direkt vor dem Auslösen des Effekts gesetzt werden - daher soll er nicht in der Scharfschaltung des Systems sondern unmittelbar vor Auslösung des Effekts - nämlich in der Prepare-Sektion gesetzt werden. Die Freischaltung erfolgt über Gerätekanal 1, die Auslösung der Flammen über Kanal 2. Die Flammen bleibt so lange an, wie beide Kanäle über dem Wert 250 sind. Durch die Benutzung des Befehls Set_HTP ist gewährleistet, dass für den Fall dass die Prepare-Sektion einer nachfolgenden Auslösung vor der TurnOff-Sektion der ersten Auslösung ausgeführt wird der Freigabe-Kanal nicht auf 0 steht (das wäre z.B. bei Set oder Set_LTP der Fall) sondern weiterhin auf 255 - da zu jedem Zeitpunkt der jeweils höchste Wert für den Kanal benutzt wird, der von einem Cue "angefordert" wurde:
[Prepare] Set_HTP 1, 255 [TurnOn] Set_HTP 2, 255 [TurnOff] Set_HTP 1, 0 Set_HTP 2, 0
Beispiel 2 - Set_Lock
Eine ähnliche wie die vorhergehende Situation wäre das Festlegen eines Effektwinkels (Gerätekanal 1) bei einem Flammenprojektor mit beweglichem Kopf: Über Set_Lock würde in der Prepare-Sektion der Schusswinkel angefahren so dass der Flammenprojektor genug Zeit hätte darauf zu reagieren. Dieser Winkel wird durch das Benutzen von Set_Lock für Zugriffe durch andere Cues gesperrt. Gleichzeitig erfolgt, wie in Beispiel 1, die Freischaltung des Effekts über Gerätekanal 2. In TurnOn erfolgt die Auslösung der Flamme (Gerätekanal 3) und in TurnOff wird sowohl die Flammen abgeschaltet als auch der Winkel-Kanal wieder für Fremdzugriffe freigegeben (hierzu wird Set_HTP oder Set_LTP verwendet - dieser Befehl gibt einen mittels Set_Lock gesperrten Kanal wieder für andere Cues frei).
[Prepare] Set_Lock 1, 120 Set_HTP 2, 255 [TurnOn] Set_HTP 3, 255 [TurnOff] Set_LTP 1, 120 Set_HTP 2, 0 Set_HTP 3, 0
Die Mechanismen Set_LTP, Set_HTP und Set_Lock werden in der Planungssoftware jeweils pro Sequenz umgesetzt bevor die Daten an das DMX-Modul gehen. Bei der gemischte Auslösung von manuellen Sequenzen, Reserven, Servicesequenzen oder einer automatischen Show finden diese Mechanismen prinzipbedingt keine Anwendung. Die Sperr-Mechanismen können also nur innerhalb einer Sequenz verhindern dass es zu Problemen bei einem verzahnten Ablauf kommt. |
Service-Sequenzen
Servicesequenzen werden im Menü des DMX-Moduls angezeigt und können von dort vom Benutzer aufgerufen werden. Es lassen sich (fast) beliebig viele Servicesequenzen definieren wobei beachtet werden sollte, dass die Übersichtlichkeit bei vielen Sequenzen natürlich leiden kann. Servicesequenzen werden pro Gerätedefinition genau einmal angelegt. Wenn also von einem Flammenprojektor 10 Stück in einer Show aufgebaut werden und in der Gerätedefinition für den Projektor 2 Servicesequenzen (z.B. zum Testen und Entlüften des Geräts) angelegt sind, so werden später im Gerät stattliche 20 Servicesequenzen angezeigt. Da dies in Form einer Liste erfolgt ist es wichtig, nur Servicesequenzen anzulegen die wirklich für den Betrieb benötigt werden. Innerhalb von Service-Sequenzen können mit dem Parameter SequenceFlags=<Werte> folgende Eigenschaften festgelegt werden:
- may_run_disarmed: Diese Sequenz darf auch ausgeführt werden, wenn das DMX-Modul nicht scharf geschaltet ist.
[PrivateSequence1] Name=%id%: Vent Set 3, 255 Wait 2500 Set 3, 0
Der angegebene Name sollte kurz und prägnant sein, da er insgesamt in eine Zeile mit max. 20 Zeichen passen muss (darüber hinaus gehende Zeichen werden abgeschnitten). Um hier verschiedene Geräte ansprechen zu können, sollte über das Kürzel %id% der Name unter welchem das Gerät läuft und welcher bei der Showplanung vergeben wird mit eingebaut werden, da sonst die Servicesequenz eventuell nicht von anderen Servicesequenzen unterscheidbar ist. Servicesequenzen können ebenfalls (wie im nächsten Abschnitt ersichtlich) mit Eigenschaften gekennzeichnet werden (ManualSequenceFlags=..). Die zur Zeit einzige Eigenschaft ist arm_to_run, welches dem DMX-Modul mitteilt dass diese Sequenz nur korrekt funktioniert wenn das DMX-Modul dafür scharf geschaltet ist und damit alle Kanäle freigegeben werden die nur im scharf geschalteten Zustand auf gezogen werden dürfen.
[PrivateSequence2] Name=%id%: Fire! ManualSequenceFlags=arm_to_run Set 2, 0 Wait 30 Set 1, 255 Wait 60 Set 4, 255 Wait 100 Set 3, 255 Wait 1000 Set 3, 0 Wait 30 Set 4, 0 Wait 30 Set 2, 0
Beispiel für eine Service-Sequenz welche die Scharfschaltung des DMX-Moduls erfordert.