Funktionselemente (DDF-Syntax) DMXC3

Aus Deutsches DMXC-Wiki
Zur Navigation springen Zur Suche springen
Books.png Funktionselemente (DDF-Syntax) DMXC3 Artikel beschreibt
DMXControl 3.2.3


Arrow back.png Grundaufbau der DDFs
Grundregeln der DDF-Erstellung Arrow forw.png
Inhaltsverzeichnis
Teil 1: Grundlagen
Teil 2: Funktionen
Teil 3: Procederes
Teil 4: Beispiele


Neben der allgemeinen Struktur in den DDFs für DMXControl 3 gibt es innerhalb des Funktionsteils verschiedene Elemente, die in (nahezu) allen Funktionen Anwendung finden (können). Diese finden sich an zwei Stellen:

  • Es existieren für alle Funktionen verschiedene zusätzliche Attribute, im folgenden als Funktionsattribute. Einige dieser Funktionsattribute sind dabei Pflichtangaben, um die verwendete Funktion vollständig zu definieren.
  • Viele Funktionen benötigen verschiedene untergeordnete Funktionselemente. Diese Funktionselemente definieren den Wertebereichs eines DMX-Kanals genauer oder es werden vorgegebene Abhängigkeiten hergestellt.


Funktionsattribute

Pflichtattribute

dmxchannel: DMX-Kanal

Das Attribut dmxchannel inklusive der Abwandlungen finedmxchannel, ultradmxchannel und ultrafinedmxchannel gibt den DMX-Kanal an, auf dem sich die entsprechende Funktion befindet. In den meisten Fällen besitzt eine Funktion nur eine 8-bit-Auflösung, weswegen vielerorts nur das Attribut dmxchannel benötigt wird.

Dass für die Angabe des DMX-Kanals bis zu vier Attribute benötigt werden, ist darin begründet, dass auf jedem DMX-Kanal nur insgesamt 256 verschiedene Werte übertragen werden können. Die Werte liegen im Bereich von DMX-Wert 0 bis DMX-Wert 255. Dies beschreibt die klassische Auflösung bzw. Genauigkeit eines DMX-Kanals von 8 bit. Um bei bestimmten Funktionen wie zum Beispiel bei Pan, Tilt oder beim Dimmer feine Auflösungen zu erzielen, werden weitere DMX-Kanäle hinzugezogen, um die Auflösung zu erhöhen. In diesem Fall spricht man dann von einer Auflösung mit 16 bit oder der zweite DMX-Kanal für die Pan-Funktion wird mit Pan fine bezeichnet.

DMXControl 3 unterstützt aktuell Auflösungen von für alle Funktionen bis 32 bit. Für hierfür werden dann vier DMX-Kanäle zusammengefasst, um die Funktion in dieser Auflösung darzustellen. In den DDFs kommen dabei folgende Bezeichnungen zum Einsatz:

  • dmxchannel für 8-bit-Auflösung
  • finedmxchannel für 16-bit-Auflösung
  • ultradmxchannel für 24-bit-Auflösung
  • ultrafinedmxchannel für 32-bit-Auflösung

Es ist dabei zu beachten, dass bei der 32-bit-Auflösung auch alle vier DMX-Kanäle anzugeben sind. Es ist mitunter nicht unüblich, dass die vier DMX-Kanäle in der Belegung nicht direkt hintereinander angeordnet sind. Die folgende Tabelle zeigt die Definition der aktuell möglichen Auflösungen für eine Gerätefunktion exemplarische anhand der Funktion "Dimmers".


Variante Code-Beispiel
Gerätefunktion mit 8-bit-Auflösung
<dimmer dmxchannel="0" />

Dimmer auf DMX-Kanal 1

Gerätefunktion mit 16-bit-Auflösung
<dimmer dmxchannel="0" finedmxchannel="1" />

Dimmer mit 16-bit-Auflösung auf DMX-Kanal 1 und 2

Gerätefunktion mit 24-bit-Auflösung
<dimmer dmxchannel="0" finedmxchannel="1" ultradmxchannel="2" />

Dimmer mit 24-bit-Auflösung auf DMX-Kanal 1, 2 und 3

Gerätefunktion mit 32-bit-Auflösung
<dimmer dmxchannel="0" finedmxchannel="1" ultradmxchannel="2" ultrafinedmxchannel="3" />

Dimmer mit 32-bit-Auflösung auf DMX-Kanal 1, 2, 3 und 4

Optionale Attribute

defaultval: Initialwert bzw. Standardwert

Auf Wunsch kann man bei einer Auswahl von Funktionen vorgeben, welchen Wert diese abweichend von der Standarddefinition in DMXControl 3 annehmen soll. Dies erfolgt über das Attribut defaultval. Bei folgenden Funktionen kann dieses Attribut eingesetzt werden:

  • Intensity
  • Switch
  • Colortemp
  • Focus
  • Iris
  • Zoom
  • Index
  • Rotation
  • Raw
  • Rawrange
  • Rawstep

Der Wert für das Attribut defaultval muss dabei immer innerhalb der range liegen, die in der Regel nachfolgend angegeben wird. Greift man bei einer Funktion auf die Standarddefinition für den Wertebereich zurück, muss der Wert für defaultval entsprechend zwischen 0 und 1 bzw. zwischen 0 und 100 liegen.


Variante Code-Beispiel
Vorgabewert für die Helligkeit
<dimmer dmxchannel="0" defaultval="25"/>

Spricht man den Dimmer (Intensity) nicht an, setzt der Hardware Abstraction Layer (HAL) den Wert für den Dimmer nun entgegen der Standarddefinition auf 25%.

Eigener Wert für die Farbtemperatur
<colortemp dmxchannel="0" defaultval="5500">
  <range mindmx="255" maxdmx="0" minval="2500" maxval="9500"/>
</colortemp>

Farbtemperatur kann auf DMX-Kanal 1 von 9.500 K bei DMX-Wert 0 abnehmend bis 2.5000 K bei DMX-Wert 255 eingestellt werden. Nutzt man die Funktion nicht und hat keinen spezifischen Wert in einer Szene etc. hinterlegt, wird statt des Standardwerts von 6.500 K eine Farbtemoperatur von 5.500 K gesetzt.

Frei definierter Regler
<raw dmxchannel="0" name="Auto / music speed" defaultval="25">
  <range type="linear" mindmx="0" maxdmx="255" minval="0" maxval="100" />
</raw>

Die standardmäßige Geschwindigkeit der Automatik-Programme soll 25% betragen. Bei der Angabe des Wertebereich von 0% bei DMX-Wert 0 und 100% bei DMX-Wert 255 wird durch defaultval ein DMX-Wert von 63 ausgegeben.

Funktionselemente

Die zur Verfügung stehenden Funktionselemente kommen in der Regel immer dann zum Einsatz, wenn auf einem DMX-Kanal mehrere Funktionen untergebracht sind. Dies können zum Beispiel verschiedene Strobe-Modi sein wie linear, zufällig. Bei einem Farbrad bzw. einem Goborad müssen die verschiedenen Farben und Gobos angegeben werden. Aber bereits bei einem Shutter liegen direkt zwei Funktionen vor, nämlich geschlossen und offen.

Um all dies im DDF zu hinterlegen, stehen verschiedene Funktionselemente zur Verfügung. Sie definieren, dass

  • zwischen verschiedenen Funktionen auf einem DMX-Kanal nur umgeschaltet wird (step).
  • sich eine Funktion verändern lässt, wenn man einen Reglers in einem bestimmten Bereich bewegt (range).
  • zum Nutzen einer bestimmten Funktion ein anderer DMX-Kanal auf einen vorgegeben DMX-Wert gesetzt werden muss (supporthandler).

Ob die genannten Funktionselemente benötigt werden, hängt von der jeweiligen Funktion ab. Existiert bereits eine Standardimplementierung direkt in DMXControl 3, wie es zum Beispiel beim dimmer der Fall ist, können die Funktionselemente komplett entfallen. Besitzt eine Funktion entweder keine Standardimplementierung oder man muss davon abweichen, kommen die Funktionselemente step oder range mehr oder minder verpflichtend zum Einsatz.

Funktionselemente wie zum Beispiel der supporthandler sind aber per se optional und kommend entsprechend nur in bestimmten Anwendungsfällen zum Einsatz. Entsprechende typische Beispiele sind bei den betreffenden Funktionen aufgeführt.

Benötigte Funktionselemente

step: Angabe von einzelen Schritten

Das Funktionselemente step besteht immer aus dem eigentlichen Tag step, dem Attribut type, sowie den Attributen für den minimalen DMX-Wert mindmx und den maximalen DMX-Wert maxdmx für den step. Der Wert für das Attribut type ist immer abhängig von der Eigenschaft des DMX-Kanals, die abgebildet werden soll. Welche Werte zulässig sind, wird bei der Beschreibung der jeweiligen Funktion angegeben. Wichtig ist hier zu wissen, dass die HAL immer den Mittelwert zwischen mindmx und maxdmx. Bezogen auf das folgende Beispiel wäre dies der DMX-Wert 227.

<step type="open" mindmx="200" maxdmx="255" />

range: Angabe eines regelbaren Bereichs

Das Funktionselement range ist ähnlich aufgebaut, wie das Funktionselement step. Der wesentlichste Unterschied ist die Ergänzung der Attribute minval und maxval. Hier werden beispielsweise angegeben:

  • die minimale und maximale Strobefrequenz
  • die minimale und maximale Drehzahl für die Goborotation
  • der minimale und maximale Abstrahlwinkel des Zooms

Die Besonderheit ist an dieser Stelle, dass die DMX-Werte den Geschwindigkeiten zugeordnet werden. Das heißt, zur minimalen Drehzahl wird der DMX-Wert eingetragen, wo sich zum Beispiel das Gobo am langsamsten dreht. Genauso verhält es sich mit der maximalen Drehzahl des Gobos. Daher kann es vorkommen, dass die minimale Drehzahl nicht immer automatisch auch der niedrige DMX-Wert und die maximale Drehzahl beim größten DMX-Wert anliegt. Ein Code-Beispiel ist im Artikel Goborad zu finden. Eine übersichtlichere Konstellation zeigt dagegen das folgende Beispiel für die Strobefrequenz, wo beim niedrigsten DMX-Wert 0 auch die geringste Strobefrequenz von 0,5 Hz ausgegeben wird.

<range type="linear" mindmx="0" maxdmx="255" minval="0.5" maxval="15" />

Optionale Funktionselemente

supporthandler: Werteabhängige Steuerung von DMX-Kanälen

Einige Geräte besitzen eine oder auch mehrere Funktionen, die nach dem Prinzip arbeiten: "Man wähle auch einem DMX-Kanal die Funktion aus und über einen zweiten DMX-Kanal steuert man die Geschwindigkeit". Ein anschauliches Beispiel kann hier ein Goborad mit rotierenden Gobos sein, welche sich zusätzlich auch noch indizieren lassen. Hier hat man bereits drei verschiedene Funktionen:

  • Indizierung der Gobos
  • Rotation im Uhrzeigersinn
  • Rotation entgegen des Uhrzeigersinns

Über einen ersten DMX-Kanal wählt man dann eine der drei Funktionen aus, während der zweite DMX-Kanal immer über seinen gesamten Wertebereich von 0 bis 255 arbeitet und die Funktion wie

  • Angabe des Indizierungswinkels
  • Rotationsgeschwindigkeit, von langsam bis schnell im Uhrzeigersinn
  • Rotationsgeschwindigkeit, von langsam bis schnell entgegen des Uhrzeigersinns

bestimmt.

Um dieses Szenario in einem DDF für DMXControl 3 umzusetzen gibt es den so genannten supporthandler. Dieser besteht immer aus zwei Teilen:

  • der Angabe, welcher DMX-Kanal die Funktion umschaltet
  • der Zusatz an der Definition, bei der eigentliche Wert festgelegt wird

Im Falle des Goborads baut sich die Implementierung für die Funktion "Indizierung der Gobos" wie folgt auf. Der erste Teil des supporthandler ist eine weitere Zeile innerhalb des Elements goboindex, nachdem in gleichen Zusammenhang vermerkt wurde, dass sich diese Funktion aus dem DMX-Kanal 3 befindet, also der DMX-Kanal 3 den eigentlichen Wert bestimmt.

<goboindex dmxchannel="2">

Diese Implementierung entspricht dabei der normalen Implementierung ohne die Ergänzung durch den supporthandler. Durch die Angabe der direkt nachfolgenden Zeile

<support dmxchannel="1" name="goboindex" />

wird definiert, dass die Umschaltung der Funktion auf DMX-Kanal 2 erfolgt. Das zugehörige Schlüsselwort lautet hier ebenfalls goboindex, wobei hier auch jeder andere Wert zulässig ist. Im weiteren gibt man wieder den Wertebereich für die Funktion an, so als ob man auch ohne den supporthandler arbeitet. Die Zeile unterscheidet sich nur dahingehend, dass für mindmx und maxdmx der angegebene Wertebereich des DMX-Kanals erfolgt, welcher den Wert festlegt. Des weiteren schließt man die Zeile durch />nicht ab, sondern lässt diese offen.

<range range="360" mindmx="0" maxdmx="255" minval="0" maxval="360" >

In der nachfolgenden Zeile, die ein untergeordnetes Element zum range-Element ist, gibt man erst an, auf welchen DMX-Wert der DMX-Kanal zur Auswahl der Funktion gesetzt werden muss, sobald man wie in diesem Beispiel die Funktion Goboindizierung nutzt. Neben dem entsprechenden Wertebereich via der Attribute mindmx und maxdmx, erhält diese Zeile den zweiten Teil des supporthandler. Dieser besteht aus dem Attribut handler und als Wert dem Schlüsselwort, welches man zuvor gewählt hat. Hier ist es das Schlüsselwort goboindex, welches man mit dem Präfix support- als Wert hinterlegt. Damit sind alle Definitionen innerhalb dieser Zeile abgeschlossen.

<step handler="support-goboindex" mindmx="0" maxdmx="15" />


Wichtiger Hinweis Die Zeile mit der Angabe des DMX-Werts für die Auswahl der entsprechenden Funktion muss jeder Definition hinzugefügt werden, die einen bestimmten DMX-Wert auf dem Auswahlkanal benötigt. Im Falle beispielsweise der Goborotation bedeutet dies, dass dieser Zusatz möglicherweise dreimal einzufügen ist: Rotation im Uhrzeigersinn, Stop, Rotation entgegen des Uhrzeigersinns.


Nachfolgende erfolgt der restliche Teil für die Implementierung der Goboindizierung. In der Summe sieht das Code-Stück dann wie folgt aus.


Variante Code-Beispiel
Goboindizierung
<gobowheel dmxchannel="0">
  <goboindex dmxchannel="2">
    <support dmxchannel="1" name="goboindex" />
    <range range="360" mindmx="0" maxdmx="255" minval="0" maxval="360" >
      <step handler="support-goboindex" mindmx="0" maxdmx="15" />
    </range>
  </goboindex>
  <step type="open" mindmx="0" maxdmx="15" caption="Open" />
  <step type="gobo" mindmx="16" maxdmx="31" val="congostar.png" caption="Gobo 1" />
  <step type="gobo" mindmx="32" maxdmx="47" val="sunburst.png" caption="Gobo 2" />

Goborad auf DMX-Kanal 1, Goboindizierung auf DMX-Kanal 3, Auswahl des Modus "Goboindizierung" über DMX-Kanal 2:

  • Aktivierung der Goboindizierung bei einem DMX-Wert auf DMX-Kanal 2 zwischen 0 und 15. Positionierung / Ausrichtung des Gobos über DMX-Kanal 3 in einem Winkel zwischen bei DMX-Wert 0 und 360° bei DMX-Wert 255.

Weitere Beispiele für die Nutzung des supporthandler sind in den Artikeln zum Farbrad und zum Goborad zu finden.