DMX-Plugin:Custom-Gerät

Aus PyroNeo Wiki
Zur Navigation springenZur Suche springen

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.


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 .scd 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 .scd-Gerätedatei

In den folgenden Bereichen wird der Aufbau einer .scd-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
SwitchMode=0

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".
SwitchMode (0/1)
Wenn der SwitchMode aktiv ist, schaltet eine permanente Zündung (Lampensymbol) das Gerät ein und jeder andere Cue schaltet das Gerät aus

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 Gerätekanal 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 Gerätekanal 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.

Zusätzliche Parameter

Zusätzlich zu den Befehlen können die folgenden Parameter innerhalb einer Sequenz angegeben werden (Liste wird bei Updates ergänzt, Format Name=Wert):

  • TimeOffset
Über diesen Parameter kann der Beginn der Sequenz zusätzlich verschoben werden. Der Wert ist eine Ganzzahl (negativ = nach vorne verschieben, positiv = nach hinten verschieben) in Millisekunden.
Beispiel: TimeOffset=-150 (Bewirkt, dass die Sequenz 150ms früher startet)
  • PreventNegativeTime
Ist der Parameter auf 1 gesetzt, werden negative Startzeiten der einzelnen Sequenzen automatisch auf 0 gesetzt
Beispiel: PreventNegativeTime=1

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.