Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 157 additions & 0 deletions proposal/other_devices_support/proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# Support for non-lighting fixtures

## Linked Issue

https://github.com/mvrdevelopment/spec/issues/318

# Problem

DMX Modes - DMX Mode is currently required for all devices, including Trusses, Power distros, Audio, Cables.

## General information

Currently, the DMX Mode is the entry point into the GDTF fixture type. If a
Speaker needs to be selected via MVR, then it is would currently be selected
via "DMX Mode" (GDTF Mode in MVR).

# Proposals

1. Keep it as it is and define the specific MVR properties in the objects - for example length in Cable:

In GDTF, the cable definition provides information about possible cable lengths, in MVR, the length a field on the instance of the cable:

```xml
<FixtureType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>
<DMXModes>
<DMXMode Description="" Geometry="Power Cable Schuko to Schuko" Name="My Power Cable"/>
</DMXModes>
<Geometries>
<Cable Name="Power Cable Schuko to Schuko"
LengthMin="1.0"
LengthMax="25.0"
AvailableLengths="1.0,5.0,10.0,25.0"
LengthArbitrary="True"
...
/>
...
```

In MVR, define Length:

```xml
<Cable
uuid="7C6B12E5-0AC9-45B2-99EA-5C7C9D9F5A10"
name="Power cable"
length="25.0"
GDTFSpec="MyFixtureFamily.gdtf"
GDTFMode="My Power Cable">
</Cable>
```

Pros:
- full backwards compatibility
- easy addition to existing software
Cons:
- In GDTF, the DMX Mode must exist and link to the root geometry of the geometry tree.
- In MVR, the GDTFMode must be set, pointing to the DMX Mode

In MVR, Fixure, Truss, Support, Video screen, and Projector already exist, other specific objects like Cable, Speaker, Amplifier... can be added.


2. In GDTF, Define specific modes for each MVR object type. Keep only the Geometry link there:

```xml
<FixtureType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>
<CableModes>
<CableMode Description="" Geometry="Power Cable Schuko to Schuko" Name="1m Power Cable Schuko to Schuko" />
<CableMode Description="" Geometry="Power Cable Schuko to Schuko" Name="2m Power Cable Schuko to Schuko" />
<CableMode Description="" Geometry="Power Cable Schuko to Schuko" Name="3m Power Cable Schuko to Schuko" />
</CableModes>

<SpeakerModes>
<SpeakerMode Geometry="..." Name="Audio mode">
<SpeakerMode Geometry="..." Name="Audio mode">
<SpeakerMode Geometry="..." Name="Audio mode">
</SpeakerModes>


<DMXModes>
<DMXMode Description="" Name="My Power Cable"/>
<DMXMode Description="" Name="My Power Cable"/>
<DMXMode Description="" Name="My Power Cable"/>
<DMXMode Description="" Name="My Power Cable"/>
</DMXModes>

<Geometries>
...
/>
```

MVR:
```xml
<Cable
uuid="7C6B12E5-0AC9-45B2-99EA-5C7C9D9F5A10"
name="Low Voltage PSU Feed 25m Hybrid"
length="7"
GDTFSpec="MyFixtureFamily.gdtf"
GDTFMode="Select one of the modes available in the GDTF fixture">
</Cable>
```
Cable:
GDTF: for device types primarily cables: CableModes - CableMode, MVR: Cable: CableMode, Length

Speaker:
GDTF: for devices primarly Speaker - SpeakerModes - SpeakerMode
MVR: Speaker - SpeakerMode





3. as #2, but also define generic "DeviceModes - DeviceMode" for non specific devices.

4. Define attributes of the specific object types into "DMX Mode" (for example cable length).

```xml
<FixtureType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>
<DMXModes>
<DMXMode Description="" Geometry="Power Cable Schuko to Schuko" Name="Power Cable Schuko to Schuko"
LengthMin="1.0"
LengthMax="25.0"
AvailableLengths="1.0,5.0,10.0,25.0"
LengthArbitrary="True"
/>
</DMXModes>
<Geometries>
<Cable Name="Power Cable Schuko to Schuko"
LengthMin="1.0"
LengthMax="25.0"
AvailableLengths="1.0,5.0,10.0,25.0"
LengthArbitrary="True"
...
/>
...
```
In MVR, define Length:

```xml
<Cable
uuid="7C6B12E5-0AC9-45B2-99EA-5C7C9D9F5A10"
name="Low Voltage PSU Feed 25m Hybrid"
length="25.0"
GDTFSpec="MyFixtureFamily.gdtf"
GDTFMode="DMX cable">
</Cable>
```

5. Define new objects and specify properties/geometries that can be assigned:

For example:

<FixtureType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>
<AudioType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>
<TrussType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>
<CableType FixtureTypeID="755C3C57-609C-4F8F-8F69-80B96F090996" Name="My Cables" ...>

Cons:
- we would need to define "common" geometries and all other "shared" parts for combination devices