DDF DMXC3

Aus Deutsches DMXC-Wiki
Zur Navigation springen Zur Suche springen
Books.png DDF DMXC3 Artikel beschreibt
DMXControl 3.0.0
VLC icon.png Dieser Artikel oder Abschnitt wird gerade durch den User Mheinemann bearbeitet. Um Bearbeitungskonflikte zu vermeiden, warte bitte mit Änderungen, bis diese Markierung entfernt ist, oder wende dich an den Bearbeiter.
Inhaltsverzeichnis
Teil 1: Allgemein
Teil 2: Programmeinstieg
Teil 3: Programmumstieg
Teil 4: Ausführliches Handbuch

 

Hinweis:
18.10.2013: JKuehn: Artikel wurde erstellt
14.04.2015: JKuehn: Übertragung des Artikels muss durchgeführt werden

Ü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 zugeordnet 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 scheibt 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 fehlerhaften 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 des selben Typs aus. Insbesondere bei Movinglights muss bei der Device- (und damit DDF-) Auswahl auf den richtigen Modus geachtet werden, da verschiedene Modi meist verschiedene DMX-Belegungen haben und somit verschiedene DDFs benötigen. Das ist doppelt (siehe Fußnote), welche Beschreibung 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 beliebig 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 X.1:Effekt auf selbst definierte Funktionen für kontinuierliches Farbrad legen
Abbildung X.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 verwendet 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---------------------------------|

[2]

Inhaltsleere Elemente werden 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, dass ein dimmer-Element nur innerhalb des Funktionselement vorkommen darf.


  • Erklä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:
  • cyan
  • magenta
  • yellow

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>


DeviceManegerInfoBox.jpg


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 unserem 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" />


 Wichtiger Hinweis 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.

Gerne könnt ihr eure neuen DDFs auch im Forum teilen: DDF Sammlung.


Links und Referenzen

Links

  1. Modus bedeutet hier: unterschiedliche Anzahl und Belegung der DMX-Kanäle, einstellbar am Gerät selbst.
  2. http://selfhtml.apsel-mv.de/tag-element/tag-element-attribut.html

 

Inhaltsverzeichnis
Teil 1: Allgemein
Teil 2: Programmeinstieg
Teil 3: Programmumstieg
Teil 4: Ausführliches Handbuch