DDF DMXC3 |
|
Überblick
Ein Device Definition File ist eine XML-Datei, welche einen beliebigen Punkt in der Signalkette beschreibt, der die gesendeten DMX-Daten auswerten und verarbeiten kann. Das sind meistens Geräte wie Dimmer, Movinglights oder LED-PARs. Es gibt aber auch Software und Plugins, die DMX-Daten erwarten und demzufolge ein DDF benötigen. Jedes dieser Devices mit eigener DMX-Belegung benötigt eine eigene Beschreibung. Das bedeutet, 20 gleiche Dimmer werden auf dasselbe DDF referenziert, hingegen benötigt ein Movinghead mit verschiedenen Modi[1] meist mehrere DDFs.
Beschreibung
DMXControl muss irgendwoher die Information nehmen, welche Bedeutung den einzelnen DMX-Kanälen eines Devices zugerodnet ist, damit es intelligent die Steuerelement des Property Grid zuordnen kann. Diese Informationen stellt das DDF bereit. Dort heißt es vereinfacht: Der Dimmer liegt auf Kanal 12 und der Strobe-Effekt auf Kanal 7 zwischen den DMX-Werten 7 und 84. Wird ein Device in DMXC3 oder schriebt Lumos oder DMXControl 3? zu einem Projekt hinzugefügt, so wird dessen DDF geladen und die Steuerelemente bereitgestellt, welche den Funktionen des Devices entsprechen. Bei fehleraften DDFs gibt der Kernel zum Teil hilfreiche Fehlermeldungen aus. Wird das gleiche Gerät nochmal hinzugefügt, so wird dasselbe (schon eingelesene) DDF verwendet. Änderungen am DDF wirken sich ab dem nächsten Einlesen (z.B. Neustart von DMXC3) auf alle Devices desselben Typs aus. Insbesondere bei Movinglights muss bei der Device- (und damit DDF-) Auswahl auf den richtigen Modus geachtet werden, da verschiednee Modi meist verschiedene DMX-Belegungen habennund somit verschiedene DDFs benötigen. Das ist doppelt (siehe Fußnote), welche Beschreibun gefällt euch besser?
Zur Nachvollziehbarkeit ist es ratsam, das DDF "Lightmaxx DMX-Strobe 750" im Verzeichnis kernel/devices in einem Texteditor oder einem Browser zu öffnen. Ein DDF besteht aus einem Informationsteil in dem Gerätetyp, Hersteller, Autor der Datei und weitere Angaben enthalten sind. Darauf folgt normalerweise der Funktions-Block, der alle zu beschreibenden Funktionen/Parameter und deren Wertebereiche enthält. In DMXC wird nicht direkt der DMX-Wert geändert, sondern ein Parameter mit belibig festlegbaren Wertebereich. Anhand des DDFs wird der Parameter-Wert (Value) in einen DMX-Wert umgerechnet. Folgendes Beispiel soll die Zuweisung im DDF erklären:
<dimmer>
<range mindmx="127" maxdmx="0" minval="0" maxval="100" />
</dimmer>
Abbildung 1: Effekt auf selbst definierte Funktionen
für kontinuierliches Farbrad legen |
Es wird ein Dimmer-Property angelegt, welches in dem DMX-Bereich (range) von 127 (dunkel) bis 0 (hell) im Gerät implementiert ist. Der Parameterwertebereich erstreckt sich von minval bis maxval, also von 0 bis 100. Im Dimmer-Property? wird also die Intensität zwischen 0(%) und 100(%) eingestellt und DMXC rechnet diese dann proportional in die DMX-Werte um anhand der Zuordnung mindmx ≙ minval und maxdmx ≙ maxval. Schon allein die Reihenfolge der Begriffe, also erst die Funktion "Dimmer" und danach der dazugehörige DMX-Kanal, macht deutlich, dass die Devices vor allem über ihre Eigenschaften und weniger über ihre Kanäle definiert werden. Durch die neue HAL in DMXC3 ist es nicht mehr nötig (und möglich), eine graphische Beschreibung des DDFs anzulegen. Alle Steuerelemente werden von der GUI erkannt und an den entsprechenden stellen automatisch dargestellt.
Artikel zu Speierorten anlegen! ähnlich Mozilla-Wiki, dann kann man darauf im Forum verlinken und jeder weiß, wo er suchen muss nach Icons, Logs, DDFs etc.
Syntax
XML vermendet sogenannte Elemente mit öffnenden und schließenden Tags, die von spitzen Klammern begrenzt werden. Ein Element kann ein oder mehrere Attribute enthalten, deren Wert getrennt durch ein Gleichheitszeichen in Anführungszeichen stehen sollte.
<blockquote class="wissenschaftlich">Und sie bewegt sich doch!</blockquote>
| | | || | |
| | |--Attributwert--|| | |
| | || | |
| |-------Attribut-------|| | |
| | | |
|------------(Start-)Tag------------|------Elementinhalt------|-(End-)Tag-|
| |
|---------------------------------Element---------------------------------|
Inhaltsleere Elemente wreden in sich geschlossen: <element attribut="wert" />
Zur vertiefung der Syntax siehe XML (selfHTML). Die Datei beschreibt eine Baumstruktur und es gibt zwingende Eltern-Kind-Beziehungen. Das heißt vereinfacht, das ein dimmer
-Element nur innerhalb des Funktionselement vorkommen darf.
- Erkäre Bezugssystem (step handler, step for)
- Kommentare
Elemente
jeweils Tabelle mit
Property | Beschreibung | Codebeispiel | Attribute und erlaubte Kindelemente | Kommentar |
---|---|---|---|---|
cmy | Farbmischung über Cyan Magenta Yellow |
<cmy>
<cyan dmxchannel="0"/>
<magenta dmxchannel="1"/>
<yellow dmxchannel="2"/>
<!-- <step type="color" val="#eedefe" caption="1/2 Minus Green" mindmx="128" maxdmx="128" /> -->
</cmy>
|
Kindelemente:
Universalattribute, keine Kindelemnte |
Subtraktive Farbmischung |
ist das zu technisch/formalistisch?
information-Teil
functions
procedures
Attribute
Universalattribute
spezielle Attribute
Beispiele
Tipp(s)
Fehlersuche
aus Tutorial
Lektion 20: Neue Gerätedefinitionen erstellen
Eine Gerätedefinitionsdatei (kurz: DDF) wird verwendet, um DMXControl über die Eigenschaften eines Gerätes zu informieren. Ein DDF ist in XML-Sprache geschrieben und die Datei befindet sich im Ordner
<DMXControl program path>\kernel\devices
Wenn Du mit DDFs von DMXControl 2 vertraut bist, dann kannst Du einige wichtige Unterschiede feststellen:
- Es gibt keine grafische Oberfläche (GUI), da DMXControl 3 kein Gerätekontextmenü unterstützt
- Einige Syntaxelemente sind sehr ähnlich (speziell im Informations-Teil), d.h. Du kannst die bestehenden DDFs wiederverwenden
- Der Funktionsteil ist viel abstrakter: Du machst die Definition vor allem durch die Eigenschaften und nicht durch die DMX-Kanäle
Als erstes schauen wir uns ein sehr einfaches DDF an ("Generic RGB Par"):
01 <?xml version="1.0" encoding="utf-8" ?>
02 <device image="bild" type="DMXDevice">
03 <information>
04 <modell>Generic RGB PAR</modell>
05 <vendor>Generic</vendor>
06 <author>Arne Luedtke</author>
07 <comment>KLEINER TEXT</comment>
08 </information>
09 <functions>
10 <rgb>
11 <red dmxchannel="0" />
12 <green dmxchannel="1" />
13 <blue dmxchannel="2" />
14 </rgb>
15 </functions>
16 </device>
|
Zeile 01 ist zwingend notwendig für die Beschreibung der XML-Version. Zeile 02 ("bild" kann ersetzt werden durch z.B. "Light.gif" oder "Light.png") und 15 bilden den Rahmen für die Geräte-Definition, die aus zwei Teilen besteht:
- Informationsbereich (Zeile 03 bis 08), keine weitere Erklärung notwendig.
- Funktionsbereich (Zeile 09 to 14)
Das Gerät in unserm Beispiel hat eine Eigenschaft: RGB color Modus. Die Zuordnung der DMX Kanäle wird in den Zeilen 11 bis 13 beschrieben.
Das ist alles!
Folgende Tabelle zeigt die vorhandenen Eigenschaften
Property | Description | Comment | |||
---|---|---|---|---|---|
switch | Fixture hat einen Switch-Kanal |
<switch dmxchannel="0" />
| |||
dimmer | Fixture hat einen Dimmer-Kanal |
<dimmer dmxchannel="0" />
| |||
matrix | Fixture ist ein Matrix-Gerät |
<matrix rows="2" columns="3">
<rgb>
<red dmxchannel="2" />
<green dmxchannel="2" />
<blue dmxchannel="2" />
</rgb>
<rgb>
<red dmxchannel="2" />
<green dmxchannel="2" />
<blue dmxchannel="2" />
</rgb>
<rgb>
<red dmxchannel="2" />
<green dmxchannel="2" />
<blue dmxchannel="2" />
</rgb>
<rgb>
<red dmxchannel="2" />
<green dmxchannel="2" />
<blue dmxchannel="2" />
</rgb>
<rgb>
<red dmxchannel="2" />
<green dmxchannel="2" />
<blue dmxchannel="2" />
</rgb>
<rgb>
<red dmxchannel="2" />
<green dmxchannel="2" />
<blue dmxchannel="2" />
</rgb>
</matrix>
| |||
fog | Nebel-Kanal |
<fog dmxchannel="0" />
| |||
shutter | Fixture hat einen Shutter |
<shutter dmxchannel="0" />
| |||
strobe | Fixture hat einen Strobe-Kanal |
<strobe dmxchannel="0" />
| |||
iris |
Fixture hat einen Iris-Kanal |
<iris dmxchannel="0"/>
| |||
focus |
Fixture hat einen Fokus-Kanal |
<focus dmxchannel="0"/>
| |||
zoom |
Fixture hat einen Zoom-Kanal |
<zoom dmxchannel="0"/>
| |||
rgb | Fixture hat die RGB-Funktion | <rgb>
<red dmxchannel="0" />
<green dmxchannel="1" />
<blue dmxchannel="2" />
</rgb>
| |||
cmy |
Fixture hat die CMY-Funktion |
<cmy>
<cyan dmxchannel="0"/>
<magenta dmxchannel="1"/>
<yellow dmxchannel="2"/>
</cmy>
| |||
position | Fixture hat Pan und/ oder Tilt | <position>
<pan dmxchannel="0">
<range range="540" />
</pan>
<tilt dmxchannel="1">
<range range="246" />
</tilt>
</position>
| |||
color wheel | Fixture mit Farbrad | <colorwheel dmxchannel="0">
<step type="color" val="#ffffff" caption="Weiß" mindmx="0" maxdmx="0" />
<step type="color" val="#00bd52" caption="Grün 203" mindmx="32" maxdmx="32" />
<step type="color" val="#080094" caption="Blau 108" mindmx="64" maxdmx="64" />
<step type="color" val="#8e10bc" caption="UV" mindmx="96" maxdmx="96" />
<step type="color" val="#eedefe" caption="1/2 Minus Green" mindmx="128" maxdmx="128" />
<step type="color" val="#ffffff" caption="Weiß" mindmx="160" maxdmx="160" />
</colorwheel>
| |||
gobo wheel | Fixture mit Gobobrad |
Goborotation |
<gobowheel dmxchannel="0">
<goborotation dmxchannel="12" finedmxchannel="13">
<step type="stop" mindmx="0" maxdmx="2" />
<step type="stop" mindmx="253" maxdmx="255" />
<range type="cw" mindmx="3" maxdmx="127" minval="0,1" maxval="8" />
<range type="ccw" mindmx="252" maxdmx="128" minval="0,1" maxval="8" />
</goborotation>
<goboindex dmxchannel="8" finedmxchannel="9">
<range mindmx="0" maxdmx="255" range="395" />
</goboindex>
<goboshake dmxchannel="7" />
<step type="open" caption="Open" mindmx="0" maxdmx="11" />
<step type="gobo" caption="Gobo 1" mindmx="12" maxdmx="15" val="gobo1.png">
<step for="goborotation" mindmx="36" maxdmx="39" />
<range handler="shake" mindmx="60" maxdmx="71" minval="0,1" maxval="3" />
</step>
...
</gobowheel>
| ||
Gobopositi | |||||
Rotation Gobo 1 Shake Gobo 1 | |||||
rawstep |
Fixture hat undefinierte Funktionen |
<rawstep dmxchannel="0" name="Macros">
<step caption="MACRO 15" mindmx="0" maxdmx="1" />
...
</rawstep>
| |||
const |
Fixture hat nichtbenutzten Kanal |
<const dmxchannel="1" val="0" name="Macro"/>
|
Wenn das Fixture über ein Farb/Goborad verfügt, das sich kontinuierlich drehen kann, dann schreibt man das so:
<gobowheel dmxchannel="0">
<step type="open" caption="Open" mindmx="0" maxdmx="0" />
<step type="gobo" caption="Gobo 1" mindmx="11" maxdmx="11" />
...
<wheelrotation>
<range type="cw" mindmx="221" maxdmx="203" minval="0,1" maxval="2" />
<range type="ccw" mindmx="222" maxdmx="240" minval="0,1" maxval="2" />
</wheelrotation>
</gobowheel>
Wenn das Fixture über ein Farb/Goborad verfügt, das sich auf zufällige Positionen drehen kann, dann schreibt man das so:
<gobowheel dmxchannel="0">
<step type="open" caption="Open" mindmx="0" maxdmx="0" />
...
<random>
<step type="fast" mindmx="241" maxdmx="245" />
<step type="medium" mindmx="246" maxdmx="250" />
<step type="slow" mindmx="251" maxdmx="255" />
</random>
</gobowheel>
Wenn ein Gerät über feine Kanäle für z.B Zoom verfügt, dann schreibt man das so:
<zoom dmxchannel="0" finedmxchannel="1"/>
Das funktioniert bei jedem Property.
Die verschiedenen Intervalle in einem DMX-Kanal werden von der „Step“ Variablen definiert:
<step val="0" mindmx="0" maxdmx="127" />
<step val="100" mindmx="128" maxdmx="255" />
oder:
<step type="color" val="#FFFFFF" caption="Weiß" mindmx="0" maxdmx="31" />
<step type="color" val="#FF0000" caption="Rot" mindmx="32" maxdmx="63" />
Ein DDFCreator für DMXControl 3 ist bereits in Arbeit, siehe Forum. Ihr könnt mit diesem Prototype arbeiten oder die eigenen DDFs mit einem XML-Editor Eurer Wahl oder einfach mit einem Texteditor erstellen. Manchmal hilft es, ein bereits existierendes DDF zu kopieren und anzupassen.
Bitte sendet uns Eure neuen DDFs, damit wir sie in die Bibliothek aufnehmen können. |
Links und Referenzen
Links
- ↑ Modus bedeutet hier: unterschiedliche Anzahl und Belegung der DMX-Kanäle, einstellbar am Gerät selbst.
- ↑ http://selfhtml.apsel-mv.de/tag-element/tag-element-attribut.html
|