| Capability type | Property | Possible values | Notes |
|---|---|---|---|
|
|
No type-specific properties. |
|
shutterEffect 🌟 required 👣 must be stepped |
Open, Closed, Strobe, Pulse, RampUp, RampDown, RampUpDown, Lightning, Spikes, Burst |
| soundControlled ❔ optional 👣 must be stepped |
Entity Boolean | Defaults to false |
|
| speed ❔ optional |
Entity Speed | ||
| duration ❔ optional |
Entity Time | ||
| randomTiming ❔ optional 👣 must be stepped |
Entity Boolean | Defaults to false |
|
|
|
speed 🌟 required |
Entity Speed | global, doesn't activate strobe directly |
|
|
duration 🌟 required |
Entity Time | |
|
|
brightness ❔ optional |
Entity Brightness | Defaults to brightnessStart: "off", brightnessEnd: "bright" |
|
|
color 🌟 required 👣 must be stepped |
one of our predefined Single Colors:
Red, Green, Blue, Cyan, Magenta, Yellow, Amber, White, Warm White, Cold White, UV, Lime, Indigo
|
|
| brightness ❔ optional |
Entity Brightness | Defaults to brightnessStart: "off", brightnessEnd: "bright" |
|
|
|
colors ❔ optional |
array of individual color beams as hex code | see footnote colors |
| colorTemperature ❔ optional |
Entity ColorTemperature | ||
|
|
colorTemperature 🌟 required |
Entity ColorTemperature | |
|
|
angle 🌟 required |
Entity RotationAngle | |
|
|
speed 🌟 required |
Entity RotationSpeed | |
|
|
angle 🌟 required |
Entity RotationAngle | |
|
|
speed 🌟 required |
Entity RotationSpeed | |
|
|
speed 🆚 required |
Entity Speed | either speed or duration is allowed |
| duration 🆚 required |
Entity Time | ||
|
|
wheel ❔ optional 👣 must be stepped |
Wheel name | Defaults to channel name |
| slotNumber 🌟 required |
Entity SlotNumber | see footnote slotNumber | |
|
|
isShaking ❔ optional 👣 must be stepped |
wheel or slot |
Defaults to wheel. |
| wheel ❔ optional 👣 must be stepped |
Wheel name or array of wheel names | Defaults to channel name. Array not allowed when slotNumber is set. | |
| slotNumber ❔ optional |
Entity SlotNumber | see footnote slotNumber | |
| shakeSpeed ❔ optional |
Entity Speed | ||
| shakeAngle ❔ optional |
Entity SwingAngle | ||
|
|
wheel ❔ optional 👣 must be stepped |
Wheel name or array of wheel names | Defaults to channel name. Array not allowed when slotNumber is set. |
| slotNumber ❔ optional |
Entity SlotNumber | see footnote slotNumber | |
| speed 🆚 required |
Entity RotationSpeed | either speed or angle is allowed | |
| angle 🆚 required |
Entity RotationAngle | ||
|
|
wheel ❔ optional 👣 must be stepped |
Wheel name or array of wheel names | Defaults to channel name. |
| speed 🆚 required |
Entity RotationSpeed | either speed or angle is allowed | |
| angle 🆚 required |
Entity RotationAngle | ||
|
|
effectName 🆚 required 👣 must be stepped |
Free text describing the effect | either effectName or effectPreset is allowed |
| effectPreset 🆚 required 👣 must be stepped |
ColorJump or ColorFade |
||
| speed ❔ optional |
Entity Speed | ||
| duration ❔ optional |
Entity Time | ||
| parameter ❔ optional |
Entity Parameter | ||
| soundControlled ❔ optional 👣 must be stepped |
Entity Boolean | Defaults to false |
|
| soundSensitivity ❔ optional |
Entity Percent | ||
|
|
angle 🌟 required |
Entity BeamAngle | |
|
|
horizontalAngle 🌟 required |
Entity HorizontalAngle | at least one of horizontalAngle or verticalAngle is required |
| verticalAngle 🌟 required |
Entity VerticalAngle | ||
|
|
speed 🌟 required |
Entity Speed | |
|
|
duration 🌟 required |
Entity Time | |
|
|
parameter 🌟 required |
Entity Parameter | |
|
|
soundSensitivity 🌟 required |
Entity Percent | |
|
|
distance 🌟 required |
Entity Distance | |
|
|
angle 🌟 required |
Entity BeamAngle | |
|
|
openPercent 🌟 required |
Entity IrisPercent | |
|
|
effectName 🌟 required 👣 must be stepped |
Free text describing the effect | |
| speed ❔ optional |
Entity Speed | ||
|
|
frostIntensity 🌟 required |
Entity Percent | |
|
|
effectName 🌟 required 👣 must be stepped |
Free text describing the effect | |
| speed ❔ optional |
Entity Speed | ||
|
|
speed ❔ optional |
Entity RotationSpeed | activates fixture's prism; either speed or angle is allowed |
| angle ❔ optional |
Entity RotationAngle | ||
|
|
speed 🆚 required |
Entity RotationSpeed | doesn't activate prism directly; either speed or angle is allowed |
| angle 🆚 required |
Entity RotationAngle | ||
|
|
blade 🌟 required 👣 must be stepped |
Top, Right, Bottom, Left or a number if the position is unknown |
|
| insertion 🌟 required |
Entity Insertion | ||
|
|
blade 🌟 required 👣 must be stepped |
Top, Right, Bottom, Left or a number if the position is unknown |
|
| angle 🌟 required |
Entity RotationAngle | ||
|
|
angle 🌟 required |
Entity RotationAngle | |
|
|
fogType ❔ optional 👣 must be stepped |
Fog or Haze |
|
| fogOutput ❔ optional |
Entity FogOutput | ||
|
|
fogOutput 🌟 required |
Entity FogOutput | |
|
|
fogType 🌟 required 👣 must be stepped |
Fog or Haze |
|
|
|
speed 🆚 required |
Entity RotationSpeed | either speed or angle is allowed |
| angle 🆚 required |
Entity RotationAngle | ||
|
|
speed 🌟 required |
Entity Speed | |
|
|
time 🌟 required |
Entity Time | |
|
|
parameter ❔ optional |
Entity Parameter | |
| hold ❔ optional 👣 must be stepped |
Entity Time | ||
|
|
No type-specific properties. | ||
Base class for channels.
A capability represents a range of a channel.
AbstractChannelA single DMX channel, either created as availableChannel or resolved templateChannel. Only the MSB (most significant byte) channel if it's a multi-byte channel.
A physical entity with numerical value and unit information.
AbstractChannelRepresents a finer channel of a 16+ bit channel. Also called LSB (least significant byte) channel.
A physical DMX device.
A company or brand that produces fixtures. A fixture is associated to exactly one manufacturer.
Contains information of how the pixels in a 1-, 2- or 3-dimensional space are arranged and named.
Information about a fixture's author and history.
A fixture's configuration that enables a fixed set of channels and channel order.
CoarseChannelDummy channel used to represent null in a mode's channel list.
A fixture's technical data, belonging to the hardware and not the DMX protocol.
Represents a range from one integer to a higher or equal integer. Primarily used for DMX ranges of capabilities.
Information about a resource.
AbstractChannelRepresents a channel that switches its behavior depending on trigger channel's value. The different behaviors are implemented as different CoarseChannels or FineChannels.
Represents a blueprint channel of which several similar channels can be generated. Currently used to create matrix channels.
Information about a fixture's wheel.
Information about a single wheel slot (or a split slot).
number1 for 8bit, 2 for 16bit, ...
object'keyOnly' | 'defaultOnly' | 'switchedOnly' | 'all'Fixture](#Fixture)**
* *[.key](#AbstractChannel+key) ⇒ string*
* *[.name](#AbstractChannel+name) ⇒ string*
* *[.uniqueName](#AbstractChannel+uniqueName) ⇒ string*
* *[.pixelKey](#AbstractChannel+pixelKey) ⇒ string \| null*
* *[.pixelKey](#AbstractChannel+pixelKey)*
### *new AbstractChannel(key)*
Create a new AbstractChannel instance. Call this from child classes as `super(key)`.
**Throws**:
- TypeError If the AbstractChannel is instantiated directly.
| Param | Type | Description |
| --- | --- | --- |
| key | string | The channel's identifier, must be unique in the fixture. |
### **abstractChannel.fixture ⇒ [Fixture](#Fixture)**
**Kind**: instance abstract property of [AbstractChannel](#AbstractChannel)
**Returns**: [Fixture](#Fixture) - The fixture instance this channel is associated to.
**Throws**:
- TypeError If this property is not overridden in child classes.
### *abstractChannel.key ⇒ string*
**Kind**: instance property of [AbstractChannel](#AbstractChannel)
**Returns**: string - The channel key.
### *abstractChannel.name ⇒ string*
Override this method for more sensible implementation.
**Kind**: instance property of [AbstractChannel](#AbstractChannel)
**Returns**: string - The channel key (as name).
### *abstractChannel.uniqueName ⇒ string*
**Kind**: instance property of [AbstractChannel](#AbstractChannel)
**Returns**: string - Unique version of this channel's name.
**See**: [uniqueChannelNames](#Fixture+uniqueChannelNames)
### *abstractChannel.pixelKey ⇒ string \| null*
**Kind**: instance property of [AbstractChannel](#AbstractChannel)
**Returns**: string \| null - The key of the pixel (group) that this channel is associated to. Defaults to null.
### *abstractChannel.pixelKey*
**Kind**: instance property of [AbstractChannel](#AbstractChannel)
| Param | Type | Description |
| --- | --- | --- |
| pixelKey | string \| null | The key of the pixel (group) that this channel is associated to. Set to null to dereference a channel from a pixel (group). |
## Capability
A capability represents a range of a channel.
**Kind**: global class
* [Capability](#Capability)
* [new Capability(jsonObject, resolution, channel)](#new_Capability_new)
* _instance_
* [.jsonObject](#Capability+jsonObject) ⇒ object
* [.dmxRange](#Capability+dmxRange) ⇒ [Range](#Range)
* [.rawDmxRange](#Capability+rawDmxRange) ⇒ [Range](#Range)
* [.type](#Capability+type) ⇒ string
* [.name](#Capability+name) ⇒ string
* [.hasComment](#Capability+hasComment) ⇒ boolean
* [.comment](#Capability+comment) ⇒ string
* [.isStep](#Capability+isStep) ⇒ boolean
* [.isInverted](#Capability+isInverted) ⇒ boolean
* [.usedStartEndEntities](#Capability+usedStartEndEntities) ⇒ Array.<string>
* [.helpWanted](#Capability+helpWanted) ⇒ string \| null
* [.menuClick](#Capability+menuClick) ⇒ 'start' \| 'center' \| 'end' \| 'hidden'
* [.menuClickDmxValue](#Capability+menuClickDmxValue) ⇒ number
* [.switchChannels](#Capability+switchChannels) ⇒ Record.<string, string>
* [.shutterEffect](#Capability+shutterEffect) ⇒ string \| null
* [.color](#Capability+color) ⇒ 'Red' \| 'Green' \| 'Blue' \| 'Cyan' \| 'Magenta' \| 'Yellow' \| 'Amber' \| 'White' \| 'Warm White' \| 'Cold White' \| 'UV' \| 'Lime' \| 'Indigo' \| null
* [.colors](#Capability+colors) ⇒ object \| null
* [.wheels](#Capability+wheels) ⇒ [Array.<Wheel>](#Wheel)
* [.isShaking](#Capability+isShaking) ⇒ 'slot' \| 'wheel'
* [.effectName](#Capability+effectName) ⇒ string \| null
* [.effectPreset](#Capability+effectPreset) ⇒ string \| null
* [.isSoundControlled](#Capability+isSoundControlled) ⇒ boolean
* [.randomTiming](#Capability+randomTiming) ⇒ boolean
* [.blade](#Capability+blade) ⇒ 'Top' \| 'Right' \| 'Bottom' \| 'Left' \| number \| null
* [.fogType](#Capability+fogType) ⇒ 'Fog' \| 'Haze' \| null
* [.hold](#Capability+hold) ⇒ [Entity](#Entity) \| null
* [.speed](#Capability+speed) ⇒ [Array.<Entity>](#Entity) \| null
* [.duration](#Capability+duration) ⇒ [Array.<Entity>](#Entity) \| null
* [.time](#Capability+time) ⇒ [Array.<Entity>](#Entity) \| null
* [.brightness](#Capability+brightness) ⇒ [Array.<Entity>](#Entity) \| null
* [.slotNumber](#Capability+slotNumber) ⇒ [Array.<Entity>](#Entity) \| null
* [.wheelSlot](#Capability+wheelSlot) ⇒ [Array.<WheelSlot>](#WheelSlot) \| null
* [.angle](#Capability+angle) ⇒ [Array.<Entity>](#Entity) \| null
* [.horizontalAngle](#Capability+horizontalAngle) ⇒ [Array.<Entity>](#Entity) \| null
* [.verticalAngle](#Capability+verticalAngle) ⇒ [Array.<Entity>](#Entity) \| null
* [.colorTemperature](#Capability+colorTemperature) ⇒ [Array.<Entity>](#Entity) \| null
* [.soundSensitivity](#Capability+soundSensitivity) ⇒ [Array.<Entity>](#Entity) \| null
* [.shakeAngle](#Capability+shakeAngle) ⇒ [Array.<Entity>](#Entity) \| null
* [.shakeSpeed](#Capability+shakeSpeed) ⇒ [Array.<Entity>](#Entity) \| null
* [.distance](#Capability+distance) ⇒ [Array.<Entity>](#Entity) \| null
* [.openPercent](#Capability+openPercent) ⇒ [Array.<Entity>](#Entity) \| null
* [.frostIntensity](#Capability+frostIntensity) ⇒ [Array.<Entity>](#Entity) \| null
* [.insertion](#Capability+insertion) ⇒ [Array.<Entity>](#Entity) \| null
* [.fogOutput](#Capability+fogOutput) ⇒ [Array.<Entity>](#Entity) \| null
* [.parameter](#Capability+parameter) ⇒ [Array.<Entity>](#Entity) \| null
* [.getDmxRangeWithResolution(desiredResolution)](#Capability+getDmxRangeWithResolution) ⇒ [Range](#Range)
* [.canCrossfadeTo(nextCapability)](#Capability+canCrossfadeTo) ⇒ boolean
* [.getMenuClickDmxValueWithResolution(desiredResolution)](#Capability+getMenuClickDmxValueWithResolution) ⇒ number
* [.isSlotType(slotType)](#Capability+isSlotType) ⇒ boolean
* [._getStartEndArray(property)](#Capability+_getStartEndArray) ⇒ [Array.<Entity>](#Entity) \| null ℗
* _static_
* [.START_END_ENTITIES](#Capability.START_END_ENTITIES) ⇒ Array.<string>
### new Capability(jsonObject, resolution, channel)
Create a new Capability instance.
| Param | Type | Description |
| --- | --- | --- |
| jsonObject | object | The capability data from the channel's JSON. |
| resolution | [Resolution](#Resolution) | How fine this capability is declared. |
| channel | [CoarseChannel](#CoarseChannel) | The channel instance this channel is associated to. |
### capability.jsonObject ⇒ object
**Kind**: instance property of [Capability](#Capability)
**Returns**: object - The capability data from the channel's JSON.
### capability.dmxRange ⇒ [Range](#Range)
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Range](#Range) - The capability's DMX bounds in the channel's highest resolution.
### capability.rawDmxRange ⇒ [Range](#Range)
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Range](#Range) - The capability's DMX bounds from the JSON data.
### capability.type ⇒ string
**Kind**: instance property of [Capability](#Capability)
**Returns**: string - Describes which feature is controlled by this capability.
### capability.name ⇒ string
**Kind**: instance property of [Capability](#Capability)
**Returns**: string - Short one-line description of the capability, generated from the capability's type and type-specific properties.
### capability.hasComment ⇒ boolean
**Kind**: instance property of [Capability](#Capability)
**Returns**: boolean - Whether this capability has a comment set.
### capability.comment ⇒ string
**Kind**: instance property of [Capability](#Capability)
**Returns**: string - Short additional information on this capability
### capability.isStep ⇒ boolean
**Kind**: instance property of [Capability](#Capability)
**Returns**: boolean - Whether this capability has the same effect from the start to the end.
### capability.isInverted ⇒ boolean
**Kind**: instance property of [Capability](#Capability)
**Returns**: boolean - Whether this capability ranges from a high to a low value (e.g. speed fast…slow).
### capability.usedStartEndEntities ⇒ Array.<string>
**Kind**: instance property of [Capability](#Capability)
**Returns**: Array.<string> - Names of non-null properties with (maybe equal) start/end value.
### capability.helpWanted ⇒ string \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: string \| null - A string describing the help that is needed for this capability, or null if no help is needed.
### capability.menuClick ⇒ 'start' \| 'center' \| 'end' \| 'hidden'
**Kind**: instance property of [Capability](#Capability)
**Returns**: 'start' \| 'center' \| 'end' \| 'hidden' - The method which DMX value to set when this capability is chosen in a lighting software's auto menu.
### capability.menuClickDmxValue ⇒ number
**Kind**: instance property of [Capability](#Capability)
**Returns**: number - The DMX value to set when this capability is chosen in a lighting software's auto menu.
### capability.switchChannels ⇒ Record.<string, string>
**Kind**: instance property of [Capability](#Capability)
**Returns**: Record.<string, string> - Switching channel aliases mapped to the channel key to which the switching channel should be set to when this capability is activated.
### capability.shutterEffect ⇒ string \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: string \| null - Behavior for the shutter, for example 'Closed', 'Strobe' or 'Pulse'. Defaults to null.
### capability.color ⇒ 'Red' \| 'Green' \| 'Blue' \| 'Cyan' \| 'Magenta' \| 'Yellow' \| 'Amber' \| 'White' \| 'Warm White' \| 'Cold White' \| 'UV' \| 'Lime' \| 'Indigo' \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: 'Red' \| 'Green' \| 'Blue' \| 'Cyan' \| 'Magenta' \| 'Yellow' \| 'Amber' \| 'White' \| 'Warm White' \| 'Cold White' \| 'UV' \| 'Lime' \| 'Indigo' \| null - The color of the lamp that is controlled by this ColorIntensity capability. Defaults to null.
### capability.colors ⇒ object \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: object \| null - The color hex codes for each visually distinguishable light beam. Defaults to null.
### capability.wheels ⇒ [Array.<Wheel>](#Wheel)
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Wheel>](#Wheel) - The wheels this capability refers to. The array has one or more elements in wheel-related capabilities, zero otherwise.
### capability.isShaking ⇒ 'slot' \| 'wheel'
Use only in `WheelShake` capabilities!
**Kind**: instance property of [Capability](#Capability)
**Returns**: 'slot' \| 'wheel' - The fixture component that is shaking.
### capability.effectName ⇒ string \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: string \| null - Describes the effect that this capability activates. May be a pretty name for an effect preset. Defaults to null.
### capability.effectPreset ⇒ string \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: string \| null - Describes the effect that this capability activates by using a predefined, standard name. Defaults to null.
### capability.isSoundControlled ⇒ boolean
**Kind**: instance property of [Capability](#Capability)
**Returns**: boolean - Whether this effect is controlled by sound perceived by a microphone. Defaults to false.
### capability.randomTiming ⇒ boolean
**Kind**: instance property of [Capability](#Capability)
**Returns**: boolean - Whether this capability's speed / duration varies by a random offset. Defaults to false.
### capability.blade ⇒ 'Top' \| 'Right' \| 'Bottom' \| 'Left' \| number \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: 'Top' \| 'Right' \| 'Bottom' \| 'Left' \| number \| null - At which position the blade is attached. Defaults to null.
### capability.fogType ⇒ 'Fog' \| 'Haze' \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: 'Fog' \| 'Haze' \| null - The kind of fog that should be emitted. Defaults to null.
### capability.hold ⇒ [Entity](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Entity](#Entity) \| null - How long this capability should be selected to take effect. Defaults to null.
### capability.speed ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end speed values. Defaults to null.
### capability.duration ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end duration values. Defaults to null.
### capability.time ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end time values. Defaults to null.
### capability.brightness ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end brightness values. Defaults to null.
### capability.slotNumber ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end slot numbers. Defaults to null.
### capability.wheelSlot ⇒ [Array.<WheelSlot>](#WheelSlot) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<WheelSlot>](#WheelSlot) \| null - Start and end wheel slot objects this capability is referencing. Defaults to null.
### capability.angle ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end angle values. Defaults to null.
### capability.horizontalAngle ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end horizontal angle values. Defaults to null.
### capability.verticalAngle ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end vertical angle values. Defaults to null.
### capability.colorTemperature ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end colorTemperature values. Defaults to null.
### capability.soundSensitivity ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end sound sensitivity values. Defaults to null.
### capability.shakeAngle ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end shake angle values. Defaults to null.
### capability.shakeSpeed ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end shake speed values. Defaults to null.
### capability.distance ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end distance values. Defaults to null.
### capability.openPercent ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end openPercent values. Defaults to null.
### capability.frostIntensity ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end frostIntensity values. Defaults to null.
### capability.insertion ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end insertion values. Defaults to null.
### capability.fogOutput ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end fogOutput values. Defaults to null.
### capability.parameter ⇒ [Array.<Entity>](#Entity) \| null
**Kind**: instance property of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end parameter values. Defaults to null.
### capability.getDmxRangeWithResolution(desiredResolution) ⇒ [Range](#Range)
**Kind**: instance method of [Capability](#Capability)
**Returns**: [Range](#Range) - The capability's DMX bounds scaled (down) to the given resolution.
| Param | Type | Description |
| --- | --- | --- |
| desiredResolution | number | The grade of resolution the dmxRange should be scaled to. |
### capability.canCrossfadeTo(nextCapability) ⇒ boolean
**Kind**: instance method of [Capability](#Capability)
**Returns**: boolean - Whether this capability's end value equals the given capability's start value, i. e. one can fade from this capability to the given one.
| Param | Type | Description |
| --- | --- | --- |
| nextCapability | [Capability](#Capability) | The next capability after this one. |
### capability.getMenuClickDmxValueWithResolution(desiredResolution) ⇒ number
**Kind**: instance method of [Capability](#Capability)
**Returns**: number - The DMX value (scaled to the given resolution) to set when this capability is chosen in a lighting software's auto menu, or -1 if the capability should be hidden in the auto menu.
| Param | Type | Description |
| --- | --- | --- |
| desiredResolution | number | The grade of resolution the dmxRange should be scaled to. |
### capability.isSlotType(slotType) ⇒ boolean
**Kind**: instance method of [Capability](#Capability)
**Returns**: boolean - True if the capability references a slot (or range of slots) of the given type, false otherwise.
| Param | Type | Description |
| --- | --- | --- |
| slotType | string \| RegExp | The type of the slot to check. Can be a regular expression to be checked against the type. |
### capability.\_getStartEndArray(property) ⇒ [Array.<Entity>](#Entity) \| null ℗
Parses a property that has start and end variants by generating an array with start and end value.
**Kind**: instance method of [Capability](#Capability)
**Returns**: [Array.<Entity>](#Entity) \| null - Start and end value of the property (may be equal), parsed to Entity instances. null if it isn't defined in JSON.
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| property | string | The base property name. 'Start' and 'End' will be appended to get the start/end variants. |
### Capability.START\_END\_ENTITIES ⇒ Array.<string>
**Kind**: static property of [Capability](#Capability)
**Returns**: Array.<string> - Type-specific properties that may have a start and an end value.
## CoarseChannel ⇐ [AbstractChannel](#AbstractChannel)
A single DMX channel, either created as availableChannel or resolved templateChannel.
Only the MSB (most significant byte) channel if it's a multi-byte channel.
**Kind**: global class
**Extends**: [AbstractChannel](#AbstractChannel)
* [CoarseChannel](#CoarseChannel) ⇐ [AbstractChannel](#AbstractChannel)
* [new CoarseChannel(key, jsonObject, fixture)](#new_CoarseChannel_new)
* _instance_
* [.jsonObject](#CoarseChannel+jsonObject) ⇒ object
* [.fixture](#CoarseChannel+fixture) ⇒ [Fixture](#Fixture)
* [.name](#CoarseChannel+name) ⇒ string
* [.type](#CoarseChannel+type) ⇒ string
* [.color](#CoarseChannel+color) ⇒ string \| null
* [.fineChannelAliases](#CoarseChannel+fineChannelAliases) ⇒ Array.<string>
* [.fineChannels](#CoarseChannel+fineChannels) ⇒ [Array.<FineChannel>](#FineChannel)
* [.maxResolution](#CoarseChannel+maxResolution) ⇒ [Resolution](#Resolution)
* [.dmxValueResolution](#CoarseChannel+dmxValueResolution) ⇒ [Resolution](#Resolution)
* [.maxDmxBound](#CoarseChannel+maxDmxBound) ⇒ number
* [.hasDefaultValue](#CoarseChannel+hasDefaultValue) ⇒ boolean
* [.defaultValue](#CoarseChannel+defaultValue) ⇒ number
* [._defaultValuePerResolution](#CoarseChannel+_defaultValuePerResolution) ⇒ Record.<Resolution, number> ℗
* [.hasHighlightValue](#CoarseChannel+hasHighlightValue) ⇒ boolean
* [.highlightValue](#CoarseChannel+highlightValue) ⇒ number
* [._highlightValuePerResolution](#CoarseChannel+_highlightValuePerResolution) ⇒ Record.<Resolution, number> ℗
* [.isInverted](#CoarseChannel+isInverted) ⇒ boolean
* [.isConstant](#CoarseChannel+isConstant) ⇒ boolean
* [.canCrossfade](#CoarseChannel+canCrossfade) ⇒ boolean
* [.precedence](#CoarseChannel+precedence) ⇒ 'HTP' \| 'LTP'
* [.switchingChannelAliases](#CoarseChannel+switchingChannelAliases) ⇒ Array.<string>
* [.switchingChannels](#CoarseChannel+switchingChannels) ⇒ [Array.<SwitchingChannel>](#SwitchingChannel)
* [.switchToChannelKeys](#CoarseChannel+switchToChannelKeys) ⇒ Array.<string>
* [.capabilities](#CoarseChannel+capabilities) ⇒ [Array.<Capability>](#Capability)
* [.isHelpWanted](#CoarseChannel+isHelpWanted) ⇒ boolean
* [.key](#AbstractChannel+key) ⇒ string
* [.uniqueName](#AbstractChannel+uniqueName) ⇒ string
* [.pixelKey](#AbstractChannel+pixelKey) ⇒ string \| null
* [.ensureProperResolution(uncheckedResolution)](#CoarseChannel+ensureProperResolution)
* [.getResolutionInMode(mode, switchingChannelBehavior)](#CoarseChannel+getResolutionInMode) ⇒ [Resolution](#Resolution)
* [.getDefaultValueWithResolution(desiredResolution)](#CoarseChannel+getDefaultValueWithResolution) ⇒ number
* [.getHighlightValueWithResolution(desiredResolution)](#CoarseChannel+getHighlightValueWithResolution) ⇒ number
* _static_
* [.RESOLUTION_8BIT](#CoarseChannel.RESOLUTION_8BIT) ⇒ [Resolution](#Resolution)
* [.RESOLUTION_16BIT](#CoarseChannel.RESOLUTION_16BIT) ⇒ [Resolution](#Resolution)
* [.RESOLUTION_24BIT](#CoarseChannel.RESOLUTION_24BIT) ⇒ [Resolution](#Resolution)
* [.RESOLUTION_32BIT](#CoarseChannel.RESOLUTION_32BIT) ⇒ [Resolution](#Resolution)
### new CoarseChannel(key, jsonObject, fixture)
Create a new CoarseChannel instance.
| Param | Type | Description |
| --- | --- | --- |
| key | string | The channel's identifier, must be unique in the fixture. |
| jsonObject | object | The channel data from the fixture's JSON. |
| fixture | [Fixture](#Fixture) | The fixture instance this channel is associated to. |
### coarseChannel.jsonObject ⇒ object
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: object - The channel data from the fixture's JSON.
### coarseChannel.fixture ⇒ [Fixture](#Fixture)
Overrides [`AbstractChannel.fixture`](#AbstractChannel+fixture).
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Overrides**: [fixture](#AbstractChannel+fixture)
**Returns**: [Fixture](#Fixture) - The fixture instance this channel is associated to.
### coarseChannel.name ⇒ string
Overrides [`AbstractChannel.name`](#AbstractChannel+name).
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Overrides**: [name](#AbstractChannel+name)
**Returns**: string - The channel name if present or else the channel key.
### coarseChannel.type ⇒ string
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: string - The channel type, derived from the channel's capability types.
### coarseChannel.color ⇒ string \| null
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: string \| null - The color of an included ColorIntensity capability, null if there's no such capability.
### coarseChannel.fineChannelAliases ⇒ Array.<string>
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: Array.<string> - This channel's fine channel aliases, ordered by resolution (coarsest first).
### coarseChannel.fineChannels ⇒ [Array.<FineChannel>](#FineChannel)
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: [Array.<FineChannel>](#FineChannel) - This channel's fine channels, ordered by resolution (coarsest first).
### coarseChannel.maxResolution ⇒ [Resolution](#Resolution)
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - How fine this channel can be used at its maximum. Equals the amount of coarse and fine channels.
### coarseChannel.dmxValueResolution ⇒ [Resolution](#Resolution)
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - How fine this channel is declared in the JSON data. Defaults to [maxResolution](#CoarseChannel+maxResolution).
### coarseChannel.maxDmxBound ⇒ number
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: number - The maximum DMX value in the highest possible resolution. E.g. 65535 for a 16bit channel.
### coarseChannel.hasDefaultValue ⇒ boolean
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: boolean - Whether this channel has a defaultValue.
### coarseChannel.defaultValue ⇒ number
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: number - The DMX value this channel initially should be set to. Specified in the finest possible resolution. Defaults to 0.
### coarseChannel.\_defaultValuePerResolution ⇒ Record.<Resolution, number> ℗
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: Record.<Resolution, number> - The default DMX value of this channel in the given resolution, for all resolutions up to the channel's maximum resolution.
**Access**: private
### coarseChannel.hasHighlightValue ⇒ boolean
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: boolean - Whether this channel has a highlightValue.
### coarseChannel.highlightValue ⇒ number
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: number - A DMX value that "highlights" the function of this channel. Specified in the finest possible resolution. Defaults to the highest possible DMX value.
### coarseChannel.\_highlightValuePerResolution ⇒ Record.<Resolution, number> ℗
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: Record.<Resolution, number> - The highlight DMX value of this channel in the given resolution, for all resolutions up to the channel's maximum resolution.
**Access**: private
### coarseChannel.isInverted ⇒ boolean
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: boolean - Whether a fader for this channel should be displayed upside down.
### coarseChannel.isConstant ⇒ boolean
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: boolean - Whether this channel should constantly stay at the same value.
### coarseChannel.canCrossfade ⇒ boolean
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: boolean - Whether switching from one DMX value to another in this channel can be faded smoothly.
### coarseChannel.precedence ⇒ 'HTP' \| 'LTP'
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: 'HTP' \| 'LTP' - The channel's behavior when being affected by multiple faders: HTP (Highest Takes Precedent) or LTP (Latest Takes Precedent).
### coarseChannel.switchingChannelAliases ⇒ Array.<string>
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: Array.<string> - Aliases of the switching channels defined by this channel, ordered by appearance in the JSON.
### coarseChannel.switchingChannels ⇒ [Array.<SwitchingChannel>](#SwitchingChannel)
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: [Array.<SwitchingChannel>](#SwitchingChannel) - Switching channels defined by this channel, ordered by appearance in the JSON.
### coarseChannel.switchToChannelKeys ⇒ Array.<string>
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: Array.<string> - The keys of the channels to which the switching channels defined by this channel can be switched to.
### coarseChannel.capabilities ⇒ [Array.<Capability>](#Capability)
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: [Array.<Capability>](#Capability) - All capabilities of this channel, ordered by DMX range.
### coarseChannel.isHelpWanted ⇒ boolean
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Returns**: boolean - True if help is needed in a capability of this channel, false otherwise.
### coarseChannel.key ⇒ string
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Overrides**: [key](#AbstractChannel+key)
**Returns**: string - The channel key.
### coarseChannel.uniqueName ⇒ string
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Overrides**: [uniqueName](#AbstractChannel+uniqueName)
**Returns**: string - Unique version of this channel's name.
**See**: [uniqueChannelNames](#Fixture+uniqueChannelNames)
### coarseChannel.pixelKey ⇒ string \| null
**Kind**: instance property of [CoarseChannel](#CoarseChannel)
**Overrides**: [pixelKey](#AbstractChannel+pixelKey)
**Returns**: string \| null - The key of the pixel (group) that this channel is associated to. Defaults to null.
### coarseChannel.ensureProperResolution(uncheckedResolution)
Checks the given resolution if it can safely be used in this channel.
**Kind**: instance method of [CoarseChannel](#CoarseChannel)
**Throws**:
- RangeError If the given resolution is invalid in this channel.
| Param | Type | Description |
| --- | --- | --- |
| uncheckedResolution | [Resolution](#Resolution) | The resolution to be checked. |
### coarseChannel.getResolutionInMode(mode, switchingChannelBehavior) ⇒ [Resolution](#Resolution)
**Kind**: instance method of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - How fine this channel is used in the given mode. 0 if the channel isn't used at all.
| Param | Type | Description |
| --- | --- | --- |
| mode | [Mode](#Mode) | The mode in which this channel is used. |
| switchingChannelBehavior | [SwitchingChannelBehavior](#SwitchingChannelBehavior) | How switching channels are treated, see [getChannelIndex](#Mode+getChannelIndex). |
### coarseChannel.getDefaultValueWithResolution(desiredResolution) ⇒ number
**Kind**: instance method of [CoarseChannel](#CoarseChannel)
**Returns**: number - The DMX value this channel initially should be set to, scaled to match the given resolution.
| Param | Type | Description |
| --- | --- | --- |
| desiredResolution | [Resolution](#Resolution) | The grade of resolution the defaultValue should be scaled to. |
### coarseChannel.getHighlightValueWithResolution(desiredResolution) ⇒ number
**Kind**: instance method of [CoarseChannel](#CoarseChannel)
**Returns**: number - A DMX value that "highlights" the function of this channel, scaled to match the given resolution.
| Param | Type | Description |
| --- | --- | --- |
| desiredResolution | [Resolution](#Resolution) | The grade of resolution the highlightValue should be scaled to. |
### CoarseChannel.RESOLUTION\_8BIT ⇒ [Resolution](#Resolution)
**Kind**: static property of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - Resolution of an 8bit channel.
### CoarseChannel.RESOLUTION\_16BIT ⇒ [Resolution](#Resolution)
**Kind**: static property of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - Resolution of a 16bit channel.
### CoarseChannel.RESOLUTION\_24BIT ⇒ [Resolution](#Resolution)
**Kind**: static property of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - Resolution of a 24bit channel.
### CoarseChannel.RESOLUTION\_32BIT ⇒ [Resolution](#Resolution)
**Kind**: static property of [CoarseChannel](#CoarseChannel)
**Returns**: [Resolution](#Resolution) - Resolution of a 32bit channel.
## Entity
A physical entity with numerical value and unit information.
**Kind**: global class
* [Entity](#Entity)
* [new Entity(number, unit, keyword)](#new_Entity_new)
* _instance_
* [.number](#Entity+number) ⇒ number
* [.unit](#Entity+unit) ⇒ string
* [.keyword](#Entity+keyword) ⇒ string \| null
* [.baseUnitEntity](#Entity+baseUnitEntity) ⇒ [Entity](#Entity)
* [.valueOf()](#Entity+valueOf) ⇒ number
* [.toString()](#Entity+toString) ⇒ string
* [.equals(anotherEntity)](#Entity+equals) ⇒ boolean
* _static_
* [.createFromEntityString(entityString)](#Entity.createFromEntityString) ⇒ [Entity](#Entity)
### new Entity(number, unit, keyword)
Creates a new Entity instance.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| number | number | | The numerical value. |
| unit | string | | The unit symbol, e.g. 'Hz'. Must be the same as in the schema. |
| keyword | string \| null | null | The keyword if defined using a keyword. Optional. |
### entity.number ⇒ number
**Kind**: instance property of [Entity](#Entity)
**Returns**: number - The numerical value of this entity.
### entity.unit ⇒ string
**Kind**: instance property of [Entity](#Entity)
**Returns**: string - The unit symbol, like "Hz" or "%".
### entity.keyword ⇒ string \| null
**Kind**: instance property of [Entity](#Entity)
**Returns**: string \| null - The used keyword, or null if no keyword was used.
### entity.baseUnitEntity ⇒ [Entity](#Entity)
**Kind**: instance property of [Entity](#Entity)
**Returns**: [Entity](#Entity) - An entity of the same value, but scaled to the base unit. Returns the entity itself if it is already in the base unit.
### entity.valueOf() ⇒ number
Used to allow comparing like `entity1 < entity2`
**Kind**: instance method of [Entity](#Entity)
**Returns**: number - The numerical value of this entity.
### entity.toString() ⇒ string
**Kind**: instance method of [Entity](#Entity)
**Returns**: string - The entity string that could be used in the fixture's JSON data.
### entity.equals(anotherEntity) ⇒ boolean
**Kind**: instance method of [Entity](#Entity)
**Returns**: boolean - Whether this entity exactly equals the given one.
| Param | Type | Description |
| --- | --- | --- |
| anotherEntity | [Entity](#Entity) | Another Entity instance to compare with. |
### Entity.createFromEntityString(entityString) ⇒ [Entity](#Entity)
**Kind**: static method of [Entity](#Entity)
**Returns**: [Entity](#Entity) - A new entity from the given string.
**Throws**:
- Error If the entity string is invalid.
| Param | Type | Description |
| --- | --- | --- |
| entityString | string | The string for a single entity value from the JSON data. May also be a keyword. |
## FineChannel ⇐ [AbstractChannel](#AbstractChannel)
Represents a finer channel of a 16+ bit channel.
Also called LSB (least significant byte) channel.
**Kind**: global class
**Extends**: [AbstractChannel](#AbstractChannel)
* [FineChannel](#FineChannel) ⇐ [AbstractChannel](#AbstractChannel)
* [new FineChannel(key, coarseChannel)](#new_FineChannel_new)
* [.coarseChannel](#FineChannel+coarseChannel) ⇒ [CoarseChannel](#CoarseChannel)
* [.coarserChannel](#FineChannel+coarserChannel) ⇒ [CoarseChannel](#CoarseChannel) \| [FineChannel](#FineChannel)
* [.name](#FineChannel+name) ⇒ string
* [.fixture](#FineChannel+fixture) ⇒ [Fixture](#Fixture)
* [.resolution](#FineChannel+resolution) ⇒ [Resolution](#Resolution)
* [.defaultValue](#FineChannel+defaultValue) ⇒ number
* [.key](#AbstractChannel+key) ⇒ string
* [.uniqueName](#AbstractChannel+uniqueName) ⇒ string
* [.pixelKey](#AbstractChannel+pixelKey) ⇒ string \| null
### new FineChannel(key, coarseChannel)
Creates a new FineChannel instance.
| Param | Type | Description |
| --- | --- | --- |
| key | string | The fine channel alias as defined in the coarse channel. |
| coarseChannel | [CoarseChannel](#CoarseChannel) | The coarse (MSB) channel. |
### fineChannel.coarseChannel ⇒ [CoarseChannel](#CoarseChannel)
**Kind**: instance property of [FineChannel](#FineChannel)
**Returns**: [CoarseChannel](#CoarseChannel) - The coarse (MSB) channel.
### fineChannel.coarserChannel ⇒ [CoarseChannel](#CoarseChannel) \| [FineChannel](#FineChannel)
**Kind**: instance property of [FineChannel](#FineChannel)
**Returns**: [CoarseChannel](#CoarseChannel) \| [FineChannel](#FineChannel) - The next coarser channel. May also be a fine channel, if this fine channel's resolution is 24bit or higher.
### fineChannel.name ⇒ string
Overrides [`AbstractChannel.name`](#AbstractChannel+name).
**Kind**: instance property of [FineChannel](#FineChannel)
**Overrides**: [name](#AbstractChannel+name)
**Returns**: string - A generated channel name, based upon the coarse channel's name.
### fineChannel.fixture ⇒ [Fixture](#Fixture)
Overrides [`AbstractChannel.fixture`](#AbstractChannel+fixture).
**Kind**: instance property of [FineChannel](#FineChannel)
**Overrides**: [fixture](#AbstractChannel+fixture)
**Returns**: [Fixture](#Fixture) - The fixture this channel belongs to.
### fineChannel.resolution ⇒ [Resolution](#Resolution)
**Kind**: instance property of [FineChannel](#FineChannel)
**Returns**: [Resolution](#Resolution) - The resolution of this fine channel. E.g. 2 (16bit) for the first fine channel, 3 (24bit) for the second fine channel, etc.
### fineChannel.defaultValue ⇒ number
**Kind**: instance property of [FineChannel](#FineChannel)
**Returns**: number - The DMX value (from 0 to 255) this channel should be set to by default.
### fineChannel.key ⇒ string
**Kind**: instance property of [FineChannel](#FineChannel)
**Overrides**: [key](#AbstractChannel+key)
**Returns**: string - The channel key.
### fineChannel.uniqueName ⇒ string
**Kind**: instance property of [FineChannel](#FineChannel)
**Overrides**: [uniqueName](#AbstractChannel+uniqueName)
**Returns**: string - Unique version of this channel's name.
**See**: [uniqueChannelNames](#Fixture+uniqueChannelNames)
### fineChannel.pixelKey ⇒ string \| null
**Kind**: instance property of [FineChannel](#FineChannel)
**Overrides**: [pixelKey](#AbstractChannel+pixelKey)
**Returns**: string \| null - The key of the pixel (group) that this channel is associated to. Defaults to null.
## Fixture
A physical DMX device.
**Kind**: global class
* [Fixture](#Fixture)
* [new Fixture(manufacturer, key, jsonObject)](#new_Fixture_new)
* [.manufacturer](#Fixture+manufacturer) ⇒ [Manufacturer](#Manufacturer)
* [.key](#Fixture+key) ⇒ string
* [.jsonObject](#Fixture+jsonObject) ⇒ object
* [.url](#Fixture+url) ⇒ string
* [.name](#Fixture+name) ⇒ string
* [.hasShortName](#Fixture+hasShortName) ⇒ boolean
* [.shortName](#Fixture+shortName) ⇒ string
* [.categories](#Fixture+categories) ⇒ Array.<string>
* [.mainCategory](#Fixture+mainCategory) ⇒ string
* [.meta](#Fixture+meta) ⇒ [Meta](#Meta)
* [.hasComment](#Fixture+hasComment) ⇒ boolean
* [.comment](#Fixture+comment) ⇒ string
* [.helpWanted](#Fixture+helpWanted) ⇒ string \| null
* [.isHelpWanted](#Fixture+isHelpWanted) ⇒ boolean
* [.isCapabilityHelpWanted](#Fixture+isCapabilityHelpWanted) ⇒ boolean
* [.links](#Fixture+links) ⇒ Record.<string, Array.<string>> \| null
* [.rdm](#Fixture+rdm) ⇒ object \| null
* [.physical](#Fixture+physical) ⇒ [Physical](#Physical) \| null
* [.matrix](#Fixture+matrix) ⇒ [Matrix](#Matrix) \| null
* [.wheels](#Fixture+wheels) ⇒ [Array.<Wheel>](#Wheel)
* [._wheelByName](#Fixture+_wheelByName) ⇒ Record.<string, Wheel> ℗
* [.uniqueChannelNames](#Fixture+uniqueChannelNames) ⇒ Record.<string, string>
* [.availableChannelKeys](#Fixture+availableChannelKeys) ⇒ Array.<string>
* [.availableChannels](#Fixture+availableChannels) ⇒ [Array.<CoarseChannel>](#CoarseChannel)
* [.coarseChannelKeys](#Fixture+coarseChannelKeys) ⇒ Array.<string>
* [.coarseChannels](#Fixture+coarseChannels) ⇒ [Array.<CoarseChannel>](#CoarseChannel)
* [.fineChannelAliases](#Fixture+fineChannelAliases) ⇒ Array.<string>
* [.fineChannels](#Fixture+fineChannels) ⇒ [Array.<FineChannel>](#FineChannel)
* [.switchingChannelAliases](#Fixture+switchingChannelAliases) ⇒ Array.<string>
* [.switchingChannels](#Fixture+switchingChannels) ⇒ [Array.<SwitchingChannel>](#SwitchingChannel)
* [.templateChannelKeys](#Fixture+templateChannelKeys) ⇒ Array.<string>
* [.templateChannels](#Fixture+templateChannels) ⇒ [Array.<TemplateChannel>](#TemplateChannel)
* [._templateChannelByKey](#Fixture+_templateChannelByKey) ⇒ Record.<string, TemplateChannel> ℗
* [.matrixChannelKeys](#Fixture+matrixChannelKeys) ⇒ Array.<string>
* [.matrixChannels](#Fixture+matrixChannels) ⇒ [Array.<AbstractChannel>](#AbstractChannel)
* [.nullChannelKeys](#Fixture+nullChannelKeys) ⇒ Array.<string>
* [.nullChannels](#Fixture+nullChannels) ⇒ [Array.<NullChannel>](#NullChannel)
* [.allChannelKeys](#Fixture+allChannelKeys) ⇒ Array.<string>
* [.allChannels](#Fixture+allChannels) ⇒ [Array.<AbstractChannel>](#AbstractChannel)
* [.allChannelsByKey](#Fixture+allChannelsByKey) ⇒ Record.<string, AbstractChannel>
* [.capabilities](#Fixture+capabilities) ⇒ [Array.<Capability>](#Capability)
* [.modes](#Fixture+modes) ⇒ [Array.<Mode>](#Mode)
* [.getLinksOfType(type)](#Fixture+getLinksOfType) ⇒ Array.<string>
* [.getWheelByName(wheelName)](#Fixture+getWheelByName) ⇒ [Wheel](#Wheel) \| null
* [.getTemplateChannelByKey(channelKey)](#Fixture+getTemplateChannelByKey) ⇒ [TemplateChannel](#TemplateChannel) \| null
* [.getChannelByKey(key)](#Fixture+getChannelByKey) ⇒ [AbstractChannel](#AbstractChannel) \| null
### new Fixture(manufacturer, key, jsonObject)
Create a new Fixture instance.
| Param | Type | Description |
| --- | --- | --- |
| manufacturer | [Manufacturer](#Manufacturer) | A Manufacturer instance. |
| key | string | The fixture's unique key. Equals to filename without '.json'. |
| jsonObject | object | The fixture's parsed JSON data. |
### fixture.manufacturer ⇒ [Manufacturer](#Manufacturer)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Manufacturer](#Manufacturer) - The fixture's manufacturer.
### fixture.key ⇒ string
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string - The fixture's unique key. Equals to filename without '.json'.
### fixture.jsonObject ⇒ object
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: object - The fixture's parsed JSON data.
### fixture.url ⇒ string
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string - An URL pointing to the fixture's page on the Open Fixture Library website.
### fixture.name ⇒ string
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string - The fixture's product name.
### fixture.hasShortName ⇒ boolean
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: boolean - Whether a short name is defined for this fixture.
### fixture.shortName ⇒ string
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string - A globally unique and as short as possible product name, defaults to name.
### fixture.categories ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - The fixture's categories with the most applicable one first.
### fixture.mainCategory ⇒ string
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string - The fixture's most applicable category. Equals to first item of categories.
### fixture.meta ⇒ [Meta](#Meta)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Meta](#Meta) - A Meta instance providing information like author or create date.
### fixture.hasComment ⇒ boolean
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: boolean - Whether a comment is defined for this fixture.
### fixture.comment ⇒ string
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string - A comment about the fixture (often a note about an incorrectness in the manual). Defaults to an empty string.
### fixture.helpWanted ⇒ string \| null
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: string \| null - A string describing the help that is needed for this fixture, or null if no help is needed.
### fixture.isHelpWanted ⇒ boolean
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: boolean - True if help is needed in this fixture (maybe in a capability), false otherwise.
### fixture.isCapabilityHelpWanted ⇒ boolean
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: boolean - True if help is needed in a capability, false otherwise.
### fixture.links ⇒ Record.<string, Array.<string>> \| null
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Record.<string, Array.<string>> \| null - An object with URL arrays, organized by link type, or null if no links are available for this fixture.
### fixture.rdm ⇒ object \| null
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: object \| null - Information about the RDM functionality of this fixture. Defaults to null.
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| modelId | number | The RDM model/product id of the fixture, given in decimal format. |
| softwareVersion | string \| null | The software version used as reference in this fixture definition. |
### fixture.physical ⇒ [Physical](#Physical) \| null
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Physical](#Physical) \| null - The general physical information for the fixture, may be overridden by modes.
### fixture.matrix ⇒ [Matrix](#Matrix) \| null
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Matrix](#Matrix) \| null - The matrix information for this fixture.
### fixture.wheels ⇒ [Array.<Wheel>](#Wheel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<Wheel>](#Wheel) - The fixture's wheels as [Wheel](#Wheel) instances.
### fixture.\_wheelByName ⇒ Record.<string, Wheel> ℗
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Record.<string, Wheel> - This fixture's wheel names pointing to the respective Wheel instance.
**Access**: private
### fixture.uniqueChannelNames ⇒ Record.<string, string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Record.<string, string> - Channel keys from [allChannelKeys](#Fixture+allChannelKeys) pointing to unique versions of their channel names.
### fixture.availableChannelKeys ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - Coarse channels from the fixture definition's `availableChannels` section. Ordered by appearance.
### fixture.availableChannels ⇒ [Array.<CoarseChannel>](#CoarseChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<CoarseChannel>](#CoarseChannel) - Coarse channels from the fixture definition's `availableChannels` section. Ordered by appearance.
### fixture.coarseChannelKeys ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - Coarse channels' keys, including matrix channels' keys. If possible, ordered by appearance.
### fixture.coarseChannels ⇒ [Array.<CoarseChannel>](#CoarseChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<CoarseChannel>](#CoarseChannel) - Coarse channels, including matrix channels. If possible, ordered by appearance.
### fixture.fineChannelAliases ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - All fine channels' aliases, including matrix fine channels' aliases. If possible, ordered by appearance.
### fixture.fineChannels ⇒ [Array.<FineChannel>](#FineChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<FineChannel>](#FineChannel) - All fine channels, including matrix fine channels. If possible, ordered by appearance.
### fixture.switchingChannelAliases ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - All switching channels' aliases, including matrix switching channels' aliases. If possible, ordered by appearance.
### fixture.switchingChannels ⇒ [Array.<SwitchingChannel>](#SwitchingChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<SwitchingChannel>](#SwitchingChannel) - All switching channels, including matrix switching channels. If possible, ordered by appearance.
### fixture.templateChannelKeys ⇒ Array.<string>
Template channels are used to automatically generate channels.
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - All template channel keys from the fixture definition's `templateChannels` section. Ordered by appearance.
### fixture.templateChannels ⇒ [Array.<TemplateChannel>](#TemplateChannel)
Template channels are used to automatically generate channels.
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<TemplateChannel>](#TemplateChannel) - TemplateChannel instances for all template channels from the fixture definition's `templateChannels` section. Ordered by appearance.
### fixture.\_templateChannelByKey ⇒ Record.<string, TemplateChannel> ℗
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Record.<string, TemplateChannel> - This fixture's template channel keys pointing to the respective template channel.
**Access**: private
### fixture.matrixChannelKeys ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - Keys of all resolved matrix channels.
### fixture.matrixChannels ⇒ [Array.<AbstractChannel>](#AbstractChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<AbstractChannel>](#AbstractChannel) - All (resolved) channels with `pixelKey` information (including fine and switching channels).
### fixture.nullChannelKeys ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - All null channels' keys.
### fixture.nullChannels ⇒ [Array.<NullChannel>](#NullChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<NullChannel>](#NullChannel) - Automatically generated null channels.
### fixture.allChannelKeys ⇒ Array.<string>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Array.<string> - All channel keys used in this fixture, including resolved matrix channels' keys. If possible, ordered by appearance.
### fixture.allChannels ⇒ [Array.<AbstractChannel>](#AbstractChannel)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<AbstractChannel>](#AbstractChannel) - All channels used in this fixture, including resolved matrix channels. If possible, ordered by appearance.
### fixture.allChannelsByKey ⇒ Record.<string, AbstractChannel>
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: Record.<string, AbstractChannel> - All channel keys used in this fixture pointing to the respective channel, including matrix channels. If possible, ordered by appearance.
### fixture.capabilities ⇒ [Array.<Capability>](#Capability)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<Capability>](#Capability) - All available channels' and template channels' capabilities.
### fixture.modes ⇒ [Array.<Mode>](#Mode)
**Kind**: instance property of [Fixture](#Fixture)
**Returns**: [Array.<Mode>](#Mode) - The fixture's modes.
### fixture.getLinksOfType(type) ⇒ Array.<string>
**Kind**: instance method of [Fixture](#Fixture)
**Returns**: Array.<string> - An array of URLs of the specified type (may be empty).
| Param | Type | Description |
| --- | --- | --- |
| type | string | The type of the links that should be returned. |
### fixture.getWheelByName(wheelName) ⇒ [Wheel](#Wheel) \| null
**Kind**: instance method of [Fixture](#Fixture)
**Returns**: [Wheel](#Wheel) \| null - The wheel with the given name, or null if no wheel with the given name exists.
| Param | Type | Description |
| --- | --- | --- |
| wheelName | string | The name of the wheel. |
### fixture.getTemplateChannelByKey(channelKey) ⇒ [TemplateChannel](#TemplateChannel) \| null
Searches the template channel with the given key. Fine and switching template channel aliases *can't* be found.
**Kind**: instance method of [Fixture](#Fixture)
**Returns**: [TemplateChannel](#TemplateChannel) \| null - The corresponding template channel.
| Param | Type | Description |
| --- | --- | --- |
| channelKey | string | The template channel's key |
### fixture.getChannelByKey(key) ⇒ [AbstractChannel](#AbstractChannel) \| null
**Kind**: instance method of [Fixture](#Fixture)
**Returns**: [AbstractChannel](#AbstractChannel) \| null - The found channel, null if not found.
| Param | Type | Description |
| --- | --- | --- |
| key | string | The channel's key. |
## Manufacturer
A company or brand that produces fixtures. A fixture is associated to exactly one manufacturer.
**Kind**: global class
* [Manufacturer](#Manufacturer)
* [new Manufacturer(key, jsonObject)](#new_Manufacturer_new)
* [.name](#Manufacturer+name) ⇒ string
* [.comment](#Manufacturer+comment) ⇒ string
* [.hasComment](#Manufacturer+hasComment) ⇒ boolean
* [.website](#Manufacturer+website) ⇒ string \| null
* [.rdmId](#Manufacturer+rdmId) ⇒ number \| null
### new Manufacturer(key, jsonObject)
Creates a new Manufacturer instance.
| Param | Type | Description |
| --- | --- | --- |
| key | string | The manufacturer key. Equals to directory name in the fixtures directory. |
| jsonObject | object | The manufacturer's JSON object. |
### manufacturer.name ⇒ string
**Kind**: instance property of [Manufacturer](#Manufacturer)
**Returns**: string - The manufacturer's display name. Often used as prefix of fixture names, e.g. "cameo" + "Hydrabeam 100".
### manufacturer.comment ⇒ string
**Kind**: instance property of [Manufacturer](#Manufacturer)
**Returns**: string - An additional description or explanation, if the name doesn't give enough information. Defaults to an empty string.
### manufacturer.hasComment ⇒ boolean
**Kind**: instance property of [Manufacturer](#Manufacturer)
**Returns**: boolean - Whether this manufacturer has a comment.
### manufacturer.website ⇒ string \| null
**Kind**: instance property of [Manufacturer](#Manufacturer)
**Returns**: string \| null - An URL pointing to the manufacturer's website (with fixture product pages).
### manufacturer.rdmId ⇒ number \| null
**Kind**: instance property of [Manufacturer](#Manufacturer)
**Returns**: number \| null - The id associated to this manufacturer in the RDM protocol.
## Matrix
Contains information of how the pixels in a 1-, 2- or 3-dimensional space are arranged and named.
**Kind**: global class
* [Matrix](#Matrix)
* [new Matrix(jsonObject)](#new_Matrix_new)
* [.jsonObject](#Matrix+jsonObject) ⇒ object
* [.pixelCount](#Matrix+pixelCount) ⇒ Array.<number>
* [.pixelCountX](#Matrix+pixelCountX) ⇒ number
* [.pixelCountY](#Matrix+pixelCountY) ⇒ number
* [.pixelCountZ](#Matrix+pixelCountZ) ⇒ number
* [.definedAxes](#Matrix+definedAxes) ⇒ Array.<string>
* [.pixelKeyStructure](#Matrix+pixelKeyStructure) ⇒ Array.<Array.<Array.<string>>>
* [.pixelKeys](#Matrix+pixelKeys) ⇒ Array.<string>
* [.pixelKeyPositions](#Matrix+pixelKeyPositions) ⇒ Record.<string, Array.<number>>
* [.pixelGroupKeys](#Matrix+pixelGroupKeys) ⇒ Array.<string>
* [.pixelGroups](#Matrix+pixelGroups) ⇒ Record.<string, Array.<string>>
* [._getPixelDefaultKeys()](#Matrix+_getPixelDefaultKeys) ⇒ Array.<Array.<Array.<string>>> ℗
* [._getPixelDefaultKey(x, y, z)](#Matrix+_getPixelDefaultKey) ⇒ string ℗
* [.getPixelKeysByOrder(firstAxis, secondAxis, thirdAxis)](#Matrix+getPixelKeysByOrder) ⇒ Array.<string>
* [._pixelKeyFulfillsConstraints(pixelKey, constraints)](#Matrix+_pixelKeyFulfillsConstraints) ⇒ boolean
### new Matrix(jsonObject)
| Param | Type | Description |
| --- | --- | --- |
| jsonObject | object | The fixture's JSON object containing the matrix information. |
### matrix.jsonObject ⇒ object
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: object - The fixture's JSON object containing the matrix information.
### matrix.pixelCount ⇒ Array.<number>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Array.<number> - Amount of pixels in X, Y and Z direction. A horizontal bar with 4 LEDs would be `[4, 1, 1]`, a 5x5 pixel head would be `[5, 5, 1]`.
**Throws**:
- ReferenceError If neither `pixelCount` nor `pixelKeys` are defined in the matrix JSON object.
### matrix.pixelCountX ⇒ number
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: number - Amount of pixels in X direction.
### matrix.pixelCountY ⇒ number
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: number - Amount of pixels in Y direction.
### matrix.pixelCountZ ⇒ number
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: number - Amount of pixels in Z direction.
### matrix.definedAxes ⇒ Array.<string>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Array.<string> - Contains each of 'X', 'Y', 'Z' if its respective axis is defined (= if its `pixelCount` is > 1).
### matrix.pixelKeyStructure ⇒ Array.<Array.<Array.<string>>>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Array.<Array.<Array.<string>>> - Pixel keys by Z, Y and X position.
**Throws**:
- ReferenceError if neither `pixelCount` nor `pixelKeys` are defined in the matrix JSON object.
### matrix.pixelKeys ⇒ Array.<string>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Array.<string> - All pixelKeys, ordered alphanumerically (1 < 2 < 10 < alice < bob < carol)
### matrix.pixelKeyPositions ⇒ Record.<string, Array.<number>>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Record.<string, Array.<number>> - Each pixelKey pointing to an array of its X/Y/Z position
### matrix.pixelGroupKeys ⇒ Array.<string>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Array.<string> - All available pixel group keys, ordered by appearance.
### matrix.pixelGroups ⇒ Record.<string, Array.<string>>
**Kind**: instance property of [Matrix](#Matrix)
**Returns**: Record.<string, Array.<string>> - Key is the group key, value is an array of pixel keys.
### matrix.\_getPixelDefaultKeys() ⇒ Array.<Array.<Array.<string>>> ℗
Generate default keys for all pixels.
**Kind**: instance method of [Matrix](#Matrix)
**Returns**: Array.<Array.<Array.<string>>> - Default pixel keys by Z, Y and X position.
**Access**: private
### matrix.\_getPixelDefaultKey(x, y, z) ⇒ string ℗
Generate default name based on defined axes and given position if no custom names are set via `pixelKeys`.
| Dimension | Default pixelKey |
| --------- | ---------------- |
| 1D | `"$number"` |
| 2D | `"($x, $y)"` |
| 3D | `"($x, $y, $z)"` |
**Kind**: instance method of [Matrix](#Matrix)
**Returns**: string - The pixel's default key.
**Throws**:
- RangeError If [definedAxes](#Matrix+definedAxes).length is not 1, 2 or 3.
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| x | number | Position of pixel in X direction. |
| y | number | Position of pixel in Y direction. |
| z | number | Position of pixel in Z direction. |
### matrix.getPixelKeysByOrder(firstAxis, secondAxis, thirdAxis) ⇒ Array.<string>
Sorts the pixelKeys by given X/Y/Z order. Order of the parameters equals the order in a `repeatFor`'s "eachPixelXYZ".
**Kind**: instance method of [Matrix](#Matrix)
**Returns**: Array.<string> - All pixelKeys ordered by given axis order.
| Param | Type | Description |
| --- | --- | --- |
| firstAxis | 'X' \| 'Y' \| 'Z' | Axis with highest ordering. |
| secondAxis | 'X' \| 'Y' \| 'Z' | Axis with middle ordering. |
| thirdAxis | 'X' \| 'Y' \| 'Z' | Axis with lowest ordering. |
### matrix.\_pixelKeyFulfillsConstraints(pixelKey, constraints) ⇒ boolean
**Kind**: instance method of [Matrix](#Matrix)
**Returns**: boolean - True if the pixel key fulfills all constraints, false otherwise.
| Param | Type | Description |
| --- | --- | --- |
| pixelKey | string | The pixel key to check against the constraints. |
| constraints | object | The constraints to apply. |
## Meta
Information about a fixture's author and history.
**Kind**: global class
* [Meta](#Meta)
* [new Meta(jsonObject)](#new_Meta_new)
* [.authors](#Meta+authors) ⇒ Array.<string>
* [.createDate](#Meta+createDate) ⇒ Date
* [.lastModifyDate](#Meta+lastModifyDate) ⇒ Date
* [.importPlugin](#Meta+importPlugin) ⇒ string \| null
* [.importDate](#Meta+importDate) ⇒ Date \| null
* [.importComment](#Meta+importComment) ⇒ string \| null
* [.hasImportComment](#Meta+hasImportComment) ⇒ boolean
### new Meta(jsonObject)
Creates a new Meta instance.
| Param | Type | Description |
| --- | --- | --- |
| jsonObject | object | A meta object from the fixture's JSON data. |
### meta.authors ⇒ Array.<string>
**Kind**: instance property of [Meta](#Meta)
**Returns**: Array.<string> - Names of people who contributed to this fixture.
### meta.createDate ⇒ Date
**Kind**: instance property of [Meta](#Meta)
**Returns**: Date - When this fixture was created. Might not refer to the creation in OFL, but in the lighting software from which this fixture was imported.
### meta.lastModifyDate ⇒ Date
**Kind**: instance property of [Meta](#Meta)
**Returns**: Date - When this fixture was changed the last time. Might not refer to a modification in OFL, but in the lighting software from which this fixture was imported.
### meta.importPlugin ⇒ string \| null
**Kind**: instance property of [Meta](#Meta)
**Returns**: string \| null - The key of the plugin with which this fixture was imported. Null if it's not imported.
### meta.importDate ⇒ Date \| null
**Kind**: instance property of [Meta](#Meta)
**Returns**: Date \| null - When this fixture was imported. Null if it's not imported.
### meta.importComment ⇒ string \| null
**Kind**: instance property of [Meta](#Meta)
**Returns**: string \| null - A comment further describing the import process. Null if it's not imported.
### meta.hasImportComment ⇒ boolean
**Kind**: instance property of [Meta](#Meta)
**Returns**: boolean - Whether there is an import comment. Always false if it's not imported.
## Mode
A fixture's configuration that enables a fixed set of channels and channel order.
**Kind**: global class
* [Mode](#Mode)
* [new Mode(jsonObject, fixture)](#new_Mode_new)
* [.jsonObject](#Mode+jsonObject) ⇒ object
* [.fixture](#Mode+fixture) ⇒ [Fixture](#Fixture)
* [.name](#Mode+name) ⇒ string
* [.shortName](#Mode+shortName) ⇒ string
* [.hasShortName](#Mode+hasShortName) ⇒ boolean
* [.rdmPersonalityIndex](#Mode+rdmPersonalityIndex) ⇒ number \| null
* [.physicalOverride](#Mode+physicalOverride) ⇒ [Physical](#Physical) \| null
* [.physical](#Mode+physical) ⇒ [Physical](#Physical) \| null
* [.channelKeys](#Mode+channelKeys) ⇒ Array.<string>
* [.nullChannelCount](#Mode+nullChannelCount) ⇒ number
* [.channels](#Mode+channels) ⇒ [Array.<AbstractChannel>](#AbstractChannel)
* [._getMatrixChannelKeysFromInsertBlock(channelInsert)](#Mode+_getMatrixChannelKeysFromInsertBlock) ⇒ Array.<string> ℗
* [._getRepeatForPixelKeys(repeatFor)](#Mode+_getRepeatForPixelKeys) ⇒ Array.<string> ℗
* [.getChannelIndex(channelKey, [switchingChannelBehavior])](#Mode+getChannelIndex) ⇒ number
### new Mode(jsonObject, fixture)
Creates a new Mode instance
| Param | Type | Description |
| --- | --- | --- |
| jsonObject | object | The mode object from the fixture's JSON data. |
| fixture | [Fixture](#Fixture) | The fixture this mode is associated to. |
### mode.jsonObject ⇒ object
**Kind**: instance property of [Mode](#Mode)
**Returns**: object - The JSON data representing this mode. It's a fragment of a fixture's JSON data.
### mode.fixture ⇒ [Fixture](#Fixture)
**Kind**: instance property of [Mode](#Mode)
**Returns**: [Fixture](#Fixture) - The fixture this mode belongs to.
### mode.name ⇒ string
**Kind**: instance property of [Mode](#Mode)
**Returns**: string - The mode's name from the JSON data.
### mode.shortName ⇒ string
**Kind**: instance property of [Mode](#Mode)
**Returns**: string - A shorter mode name from the JSON data. Defaults to the normal name.
### mode.hasShortName ⇒ boolean
**Kind**: instance property of [Mode](#Mode)
**Returns**: boolean - Whether this mode has a short name set in the JSON data.
### mode.rdmPersonalityIndex ⇒ number \| null
**Kind**: instance property of [Mode](#Mode)
**Returns**: number \| null - The index used in the RDM protocol to reference this mode. Defaults to null.
### mode.physicalOverride ⇒ [Physical](#Physical) \| null
**Kind**: instance property of [Mode](#Mode)
**Returns**: [Physical](#Physical) \| null - Extend the fixture's physical data with this physical data object when this mode is activated. Defaults to null.
### mode.physical ⇒ [Physical](#Physical) \| null
**Kind**: instance property of [Mode](#Mode)
**Returns**: [Physical](#Physical) \| null - Fixture's physical with mode's physical override (if present) applied on. Null if neither fixture nor mode define physical data.
### mode.channelKeys ⇒ Array.<string>
**Kind**: instance property of [Mode](#Mode)
**Returns**: Array.<string> - The mode's channel keys. The count and position equals to actual DMX channel count and position.
### mode.nullChannelCount ⇒ number
**Kind**: instance property of [Mode](#Mode)
**Returns**: number - The number of null channels used in this mode.
### mode.channels ⇒ [Array.<AbstractChannel>](#AbstractChannel)
**Kind**: instance property of [Mode](#Mode)
**Returns**: [Array.<AbstractChannel>](#AbstractChannel) - The mode's channels. The count and position equals to actual DMX channel count and position.
### mode.\_getMatrixChannelKeysFromInsertBlock(channelInsert) ⇒ Array.<string> ℗
Resolves the matrix channel insert block into a list of channel keys
**Kind**: instance method of [Mode](#Mode)
**Returns**: Array.<string> - The resolved channel keys
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| channelInsert | object | The JSON channel insert block |
### mode.\_getRepeatForPixelKeys(repeatFor) ⇒ Array.<string> ℗
Resolves `repeatFor` keywords into a list of pixel (group) keys or just returns the given pixel (group) key array.
**Kind**: instance method of [Mode](#Mode)
**Returns**: Array.<string> - The properly ordered list of pixel (group) keys.
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| repeatFor | string \| Array.<string> | A matrix channel insert's repeatFor property. |
### mode.getChannelIndex(channelKey, [switchingChannelBehavior]) ⇒ number
**Kind**: instance method of [Mode](#Mode)
**Returns**: number - The index of the given channel in this mode or -1 if not found.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| channelKey | string | | The key of the channel to get the index for. |
| [switchingChannelBehavior] | [SwitchingChannelBehavior](#SwitchingChannelBehavior) | 'all' | Controls how switching channels are counted, see [usesChannelKey](#SwitchingChannel+usesChannelKey) for possible values. |
## NullChannel ⇐ [CoarseChannel](#CoarseChannel)
Dummy channel used to represent `null` in a mode's channel list.
**Kind**: global class
**Extends**: [CoarseChannel](#CoarseChannel)
* [NullChannel](#NullChannel) ⇐ [CoarseChannel](#CoarseChannel)
* [new NullChannel(fixture)](#new_NullChannel_new)
* [.jsonObject](#CoarseChannel+jsonObject) ⇒ object
* [.fixture](#CoarseChannel+fixture) ⇒ [Fixture](#Fixture)
* [.name](#CoarseChannel+name) ⇒ string
* [.type](#CoarseChannel+type) ⇒ string
* [.color](#CoarseChannel+color) ⇒ string \| null
* [.fineChannelAliases](#CoarseChannel+fineChannelAliases) ⇒ Array.<string>
* [.fineChannels](#CoarseChannel+fineChannels) ⇒ [Array.<FineChannel>](#FineChannel)
* [.maxResolution](#CoarseChannel+maxResolution) ⇒ [Resolution](#Resolution)
* [.dmxValueResolution](#CoarseChannel+dmxValueResolution) ⇒ [Resolution](#Resolution)
* [.maxDmxBound](#CoarseChannel+maxDmxBound) ⇒ number
* [.hasDefaultValue](#CoarseChannel+hasDefaultValue) ⇒ boolean
* [.defaultValue](#CoarseChannel+defaultValue) ⇒ number
* [._defaultValuePerResolution](#CoarseChannel+_defaultValuePerResolution) ⇒ Record.<Resolution, number> ℗
* [.hasHighlightValue](#CoarseChannel+hasHighlightValue) ⇒ boolean
* [.highlightValue](#CoarseChannel+highlightValue) ⇒ number
* [._highlightValuePerResolution](#CoarseChannel+_highlightValuePerResolution) ⇒ Record.<Resolution, number> ℗
* [.isInverted](#CoarseChannel+isInverted) ⇒ boolean
* [.isConstant](#CoarseChannel+isConstant) ⇒ boolean
* [.canCrossfade](#CoarseChannel+canCrossfade) ⇒ boolean
* [.precedence](#CoarseChannel+precedence) ⇒ 'HTP' \| 'LTP'
* [.switchingChannelAliases](#CoarseChannel+switchingChannelAliases) ⇒ Array.<string>
* [.switchingChannels](#CoarseChannel+switchingChannels) ⇒ [Array.<SwitchingChannel>](#SwitchingChannel)
* [.switchToChannelKeys](#CoarseChannel+switchToChannelKeys) ⇒ Array.<string>
* [.capabilities](#CoarseChannel+capabilities) ⇒ [Array.<Capability>](#Capability)
* [.isHelpWanted](#CoarseChannel+isHelpWanted) ⇒ boolean
* [.key](#AbstractChannel+key) ⇒ string
* [.uniqueName](#AbstractChannel+uniqueName) ⇒ string
* [.pixelKey](#AbstractChannel+pixelKey) ⇒ string \| null
* [.ensureProperResolution(uncheckedResolution)](#CoarseChannel+ensureProperResolution)
* [.getResolutionInMode(mode, switchingChannelBehavior)](#CoarseChannel+getResolutionInMode) ⇒ [Resolution](#Resolution)
* [.getDefaultValueWithResolution(desiredResolution)](#CoarseChannel+getDefaultValueWithResolution) ⇒ number
* [.getHighlightValueWithResolution(desiredResolution)](#CoarseChannel+getHighlightValueWithResolution) ⇒ number
### new NullChannel(fixture)
Creates a new NullChannel instance by creating a Channel object with NoFunction channel data.
Uses a unique uuid as channel key.
| Param | Type | Description |
| --- | --- | --- |
| fixture | [Fixture](#Fixture) | The fixture this channel is associated to. |
### nullChannel.jsonObject ⇒ object
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [jsonObject](#CoarseChannel+jsonObject)
**Returns**: object - The channel data from the fixture's JSON.
### nullChannel.fixture ⇒ [Fixture](#Fixture)
Overrides [`AbstractChannel.fixture`](#AbstractChannel+fixture).
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [fixture](#CoarseChannel+fixture)
**Returns**: [Fixture](#Fixture) - The fixture instance this channel is associated to.
### nullChannel.name ⇒ string
Overrides [`AbstractChannel.name`](#AbstractChannel+name).
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [name](#CoarseChannel+name)
**Returns**: string - The channel name if present or else the channel key.
### nullChannel.type ⇒ string
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [type](#CoarseChannel+type)
**Returns**: string - The channel type, derived from the channel's capability types.
### nullChannel.color ⇒ string \| null
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [color](#CoarseChannel+color)
**Returns**: string \| null - The color of an included ColorIntensity capability, null if there's no such capability.
### nullChannel.fineChannelAliases ⇒ Array.<string>
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [fineChannelAliases](#CoarseChannel+fineChannelAliases)
**Returns**: Array.<string> - This channel's fine channel aliases, ordered by resolution (coarsest first).
### nullChannel.fineChannels ⇒ [Array.<FineChannel>](#FineChannel)
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [fineChannels](#CoarseChannel+fineChannels)
**Returns**: [Array.<FineChannel>](#FineChannel) - This channel's fine channels, ordered by resolution (coarsest first).
### nullChannel.maxResolution ⇒ [Resolution](#Resolution)
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [maxResolution](#CoarseChannel+maxResolution)
**Returns**: [Resolution](#Resolution) - How fine this channel can be used at its maximum. Equals the amount of coarse and fine channels.
### nullChannel.dmxValueResolution ⇒ [Resolution](#Resolution)
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [dmxValueResolution](#CoarseChannel+dmxValueResolution)
**Returns**: [Resolution](#Resolution) - How fine this channel is declared in the JSON data. Defaults to [maxResolution](#CoarseChannel+maxResolution).
### nullChannel.maxDmxBound ⇒ number
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [maxDmxBound](#CoarseChannel+maxDmxBound)
**Returns**: number - The maximum DMX value in the highest possible resolution. E.g. 65535 for a 16bit channel.
### nullChannel.hasDefaultValue ⇒ boolean
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [hasDefaultValue](#CoarseChannel+hasDefaultValue)
**Returns**: boolean - Whether this channel has a defaultValue.
### nullChannel.defaultValue ⇒ number
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [defaultValue](#CoarseChannel+defaultValue)
**Returns**: number - The DMX value this channel initially should be set to. Specified in the finest possible resolution. Defaults to 0.
### nullChannel.\_defaultValuePerResolution ⇒ Record.<Resolution, number> ℗
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [\_defaultValuePerResolution](#CoarseChannel+_defaultValuePerResolution)
**Returns**: Record.<Resolution, number> - The default DMX value of this channel in the given resolution, for all resolutions up to the channel's maximum resolution.
**Access**: private
### nullChannel.hasHighlightValue ⇒ boolean
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [hasHighlightValue](#CoarseChannel+hasHighlightValue)
**Returns**: boolean - Whether this channel has a highlightValue.
### nullChannel.highlightValue ⇒ number
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [highlightValue](#CoarseChannel+highlightValue)
**Returns**: number - A DMX value that "highlights" the function of this channel. Specified in the finest possible resolution. Defaults to the highest possible DMX value.
### nullChannel.\_highlightValuePerResolution ⇒ Record.<Resolution, number> ℗
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [\_highlightValuePerResolution](#CoarseChannel+_highlightValuePerResolution)
**Returns**: Record.<Resolution, number> - The highlight DMX value of this channel in the given resolution, for all resolutions up to the channel's maximum resolution.
**Access**: private
### nullChannel.isInverted ⇒ boolean
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [isInverted](#CoarseChannel+isInverted)
**Returns**: boolean - Whether a fader for this channel should be displayed upside down.
### nullChannel.isConstant ⇒ boolean
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [isConstant](#CoarseChannel+isConstant)
**Returns**: boolean - Whether this channel should constantly stay at the same value.
### nullChannel.canCrossfade ⇒ boolean
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [canCrossfade](#CoarseChannel+canCrossfade)
**Returns**: boolean - Whether switching from one DMX value to another in this channel can be faded smoothly.
### nullChannel.precedence ⇒ 'HTP' \| 'LTP'
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [precedence](#CoarseChannel+precedence)
**Returns**: 'HTP' \| 'LTP' - The channel's behavior when being affected by multiple faders: HTP (Highest Takes Precedent) or LTP (Latest Takes Precedent).
### nullChannel.switchingChannelAliases ⇒ Array.<string>
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [switchingChannelAliases](#CoarseChannel+switchingChannelAliases)
**Returns**: Array.<string> - Aliases of the switching channels defined by this channel, ordered by appearance in the JSON.
### nullChannel.switchingChannels ⇒ [Array.<SwitchingChannel>](#SwitchingChannel)
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [switchingChannels](#CoarseChannel+switchingChannels)
**Returns**: [Array.<SwitchingChannel>](#SwitchingChannel) - Switching channels defined by this channel, ordered by appearance in the JSON.
### nullChannel.switchToChannelKeys ⇒ Array.<string>
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [switchToChannelKeys](#CoarseChannel+switchToChannelKeys)
**Returns**: Array.<string> - The keys of the channels to which the switching channels defined by this channel can be switched to.
### nullChannel.capabilities ⇒ [Array.<Capability>](#Capability)
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [capabilities](#CoarseChannel+capabilities)
**Returns**: [Array.<Capability>](#Capability) - All capabilities of this channel, ordered by DMX range.
### nullChannel.isHelpWanted ⇒ boolean
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [isHelpWanted](#CoarseChannel+isHelpWanted)
**Returns**: boolean - True if help is needed in a capability of this channel, false otherwise.
### nullChannel.key ⇒ string
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [key](#AbstractChannel+key)
**Returns**: string - The channel key.
### nullChannel.uniqueName ⇒ string
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [uniqueName](#AbstractChannel+uniqueName)
**Returns**: string - Unique version of this channel's name.
**See**: [uniqueChannelNames](#Fixture+uniqueChannelNames)
### nullChannel.pixelKey ⇒ string \| null
**Kind**: instance property of [NullChannel](#NullChannel)
**Overrides**: [pixelKey](#AbstractChannel+pixelKey)
**Returns**: string \| null - The key of the pixel (group) that this channel is associated to. Defaults to null.
### nullChannel.ensureProperResolution(uncheckedResolution)
Checks the given resolution if it can safely be used in this channel.
**Kind**: instance method of [NullChannel](#NullChannel)
**Overrides**: [ensureProperResolution](#CoarseChannel+ensureProperResolution)
**Throws**:
- RangeError If the given resolution is invalid in this channel.
| Param | Type | Description |
| --- | --- | --- |
| uncheckedResolution | [Resolution](#Resolution) | The resolution to be checked. |
### nullChannel.getResolutionInMode(mode, switchingChannelBehavior) ⇒ [Resolution](#Resolution)
**Kind**: instance method of [NullChannel](#NullChannel)
**Overrides**: [getResolutionInMode](#CoarseChannel+getResolutionInMode)
**Returns**: [Resolution](#Resolution) - How fine this channel is used in the given mode. 0 if the channel isn't used at all.
| Param | Type | Description |
| --- | --- | --- |
| mode | [Mode](#Mode) | The mode in which this channel is used. |
| switchingChannelBehavior | [SwitchingChannelBehavior](#SwitchingChannelBehavior) | How switching channels are treated, see [getChannelIndex](#Mode+getChannelIndex). |
### nullChannel.getDefaultValueWithResolution(desiredResolution) ⇒ number
**Kind**: instance method of [NullChannel](#NullChannel)
**Overrides**: [getDefaultValueWithResolution](#CoarseChannel+getDefaultValueWithResolution)
**Returns**: number - The DMX value this channel initially should be set to, scaled to match the given resolution.
| Param | Type | Description |
| --- | --- | --- |
| desiredResolution | [Resolution](#Resolution) | The grade of resolution the defaultValue should be scaled to. |
### nullChannel.getHighlightValueWithResolution(desiredResolution) ⇒ number
**Kind**: instance method of [NullChannel](#NullChannel)
**Overrides**: [getHighlightValueWithResolution](#CoarseChannel+getHighlightValueWithResolution)
**Returns**: number - A DMX value that "highlights" the function of this channel, scaled to match the given resolution.
| Param | Type | Description |
| --- | --- | --- |
| desiredResolution | [Resolution](#Resolution) | The grade of resolution the highlightValue should be scaled to. |
## Physical
A fixture's technical data, belonging to the hardware and not the DMX protocol.
**Kind**: global class
* [Physical](#Physical)
* [new Physical(jsonObject)](#new_Physical_new)
* [.jsonObject](#Physical+jsonObject) ⇒ object
* [.dimensions](#Physical+dimensions) ⇒ Array.<number> \| null
* [.width](#Physical+width) ⇒ number \| null
* [.height](#Physical+height) ⇒ number \| null
* [.depth](#Physical+depth) ⇒ number \| null
* [.weight](#Physical+weight) ⇒ number \| null
* [.power](#Physical+power) ⇒ number \| null
* [.powerConnectors](#Physical+powerConnectors) ⇒ Record.<string, string>
* [.DMXconnector](#Physical+DMXconnector) ⇒ string \| null
* [.hasBulb](#Physical+hasBulb) ⇒ boolean
* [.bulbType](#Physical+bulbType) ⇒ string \| null
* [.bulbColorTemperature](#Physical+bulbColorTemperature) ⇒ number \| null
* [.bulbLumens](#Physical+bulbLumens) ⇒ number \| null
* [.hasLens](#Physical+hasLens) ⇒ boolean
* [.lensName](#Physical+lensName) ⇒ string \| null
* [.lensDegreesMin](#Physical+lensDegreesMin) ⇒ number \| null
* [.lensDegreesMax](#Physical+lensDegreesMax) ⇒ number \| null
* [.hasMatrixPixels](#Physical+hasMatrixPixels) ⇒ boolean
* [.matrixPixelsDimensions](#Physical+matrixPixelsDimensions) ⇒ Array.<number> \| null
* [.matrixPixelsSpacing](#Physical+matrixPixelsSpacing) ⇒ Array.<number> \| null
### new Physical(jsonObject)
Creates a new Physical instance.
| Param | Type | Description |
| --- | --- | --- |
| jsonObject | object | A fixture's or mode's physical JSON data. |
### physical.jsonObject ⇒ object
**Kind**: instance property of [Physical](#Physical)
**Returns**: object - The object from the JSON data that is represented by this Physical object.
### physical.dimensions ⇒ Array.<number> \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: Array.<number> \| null - Width, height and depth of the fixture in millimeters. Defaults to null.
### physical.width ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - Width of the fixture in millimeters. Defaults to null.
### physical.height ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - Height of the fixture in millimeters. Defaults to null.
### physical.depth ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - Depth of the fixture in millimeters. Defaults to null.
### physical.weight ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - Weight of the fixture in kilograms. Defaults to null.
### physical.power ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - Power consumption of the fixture in watts. Defaults to null.
### physical.powerConnectors ⇒ Record.<string, string>
**Kind**: instance property of [Physical](#Physical)
**Returns**: Record.<string, string> - Power connector information.
### physical.DMXconnector ⇒ string \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: string \| null - The DMX plug to be used to control the fixture, e.g. "3-pin" (XLR). Defaults to null.
### physical.hasBulb ⇒ boolean
**Kind**: instance property of [Physical](#Physical)
**Returns**: boolean - Whether physical data about the light source is available.
### physical.bulbType ⇒ string \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: string \| null - The kind of lamp that is used in the fixture, e.g. "LED". Defaults to null.
### physical.bulbColorTemperature ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - The color temperature of the bulb in kelvins. Defaults to null.
### physical.bulbLumens ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - The luminous flux of the bulb in lumens. Defaults to null.
### physical.hasLens ⇒ boolean
**Kind**: instance property of [Physical](#Physical)
**Returns**: boolean - Whether physical data about the lens is available.
### physical.lensName ⇒ string \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: string \| null - The kind of lens that is used in the fixture, e.g. "Fresnel". Defaults to null.
### physical.lensDegreesMin ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - The minimum possible beam angle in degrees. Defaults to null.
### physical.lensDegreesMax ⇒ number \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: number \| null - The maximum possible beam angle in degrees. Defaults to null.
### physical.hasMatrixPixels ⇒ boolean
**Kind**: instance property of [Physical](#Physical)
**Returns**: boolean - Whether physical data about the matrix is available.
### physical.matrixPixelsDimensions ⇒ Array.<number> \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: Array.<number> \| null - Width, height, depth of a matrix pixel in millimeters.
### physical.matrixPixelsSpacing ⇒ Array.<number> \| null
**Kind**: instance property of [Physical](#Physical)
**Returns**: Array.<number> \| null - XYZ-Spacing between matrix pixels in millimeters.
## Range
Represents a range from one integer to a higher or equal integer. Primarily used for DMX ranges of capabilities.
**Kind**: global class
* [Range](#Range)
* [new Range(rangeArray)](#new_Range_new)
* _instance_
* [.start](#Range+start) ⇒ number
* [.end](#Range+end) ⇒ number
* [.center](#Range+center) ⇒ number
* [.contains(value)](#Range+contains) ⇒ boolean
* [.overlapsWith(range)](#Range+overlapsWith) ⇒ boolean
* [.overlapsWithOneOf(ranges)](#Range+overlapsWithOneOf) ⇒ boolean
* [.isAdjacentTo(range)](#Range+isAdjacentTo) ⇒ boolean
* [.getRangeMergedWith(range)](#Range+getRangeMergedWith) ⇒ [Range](#Range)
* [.toString()](#Range+toString) ⇒ string
* _static_
* [.getMergedRanges(ranges)](#Range.getMergedRanges) ⇒ [Array.<Range>](#Range)
### new Range(rangeArray)
Creates a new Range instance.
| Param | Type | Description |
| --- | --- | --- |
| rangeArray | Array.<number> | Array of start and end value. Start value may not be greater than end value. |
### range.start ⇒ number
**Kind**: instance property of [Range](#Range)
**Returns**: number - The start number of the range. Lower or equal to end.
### range.end ⇒ number
**Kind**: instance property of [Range](#Range)
**Returns**: number - The end number of the range. Higher or equal to start.
### range.center ⇒ number
**Kind**: instance property of [Range](#Range)
**Returns**: number - The arithmetic mean of start and end value. Can be a fraction.
### range.contains(value) ⇒ boolean
**Kind**: instance method of [Range](#Range)
**Returns**: boolean - Whether the given number is inside this range, i.e. if it's not lower than the start value and not higher than the end value.
| Param | Type | Description |
| --- | --- | --- |
| value | number | The number to check whether it's in the range. |
### range.overlapsWith(range) ⇒ boolean
**Kind**: instance method of [Range](#Range)
**Returns**: boolean - Whether this range overlaps with the given one.
| Param | Type | Description |
| --- | --- | --- |
| range | [Range](#Range) | Another Range object. |
### range.overlapsWithOneOf(ranges) ⇒ boolean
**Kind**: instance method of [Range](#Range)
**Returns**: boolean - Whether this range overlaps with any of the given ones.
| Param | Type | Description |
| --- | --- | --- |
| ranges | [Array.<Range>](#Range) | An array of Range objects. |
### range.isAdjacentTo(range) ⇒ boolean
**Kind**: instance method of [Range](#Range)
**Returns**: boolean - Whether this range is exactly next to the given one, i.e. the lower range's end value is by 1 lower than the higher range's start value.
| Param | Type | Description |
| --- | --- | --- |
| range | [Range](#Range) | Another Range object. |
### range.getRangeMergedWith(range) ⇒ [Range](#Range)
**Kind**: instance method of [Range](#Range)
**Returns**: [Range](#Range) - A new range that covers both the initial and the other range.
| Param | Type | Description |
| --- | --- | --- |
| range | [Range](#Range) | Another range to merge with. |
### range.toString() ⇒ string
**Kind**: instance method of [Range](#Range)
**Returns**: string - Textual representation of this range.
### Range.getMergedRanges(ranges) ⇒ [Array.<Range>](#Range)
Merge specified Range objects. Asserts that ranges don't overlap and that all ranges are valid (start<=end).
**Kind**: static method of [Range](#Range)
**Returns**: [Array.<Range>](#Range) - Merged ranges.
| Param | Type | Description |
| --- | --- | --- |
| ranges | [Array.<Range>](#Range) | Range objects to merge into as few ranges as possible. |
## Resource
Information about a resource.
**Kind**: global class
* [Resource](#Resource)
* [new Resource(jsonObject)](#new_Resource_new)
* [.name](#Resource+name) ⇒ string
* [.keywords](#Resource+keywords) ⇒ Array.<string>
* [.source](#Resource+source) ⇒ string \| null
* [.key](#Resource+key) ⇒ string
* [.type](#Resource+type) ⇒ string
* [.alias](#Resource+alias) ⇒ string \| null
* [.hasImage](#Resource+hasImage) ⇒ boolean
* [.imageExtension](#Resource+imageExtension) ⇒ string \| null
* [.imageMimeType](#Resource+imageMimeType) ⇒ string \| null
* [.imageData](#Resource+imageData) ⇒ string \| null
* [.imageEncoding](#Resource+imageEncoding) ⇒ 'base64' \| 'utf-8' \| null
* [.imageDataUrl](#Resource+imageDataUrl) ⇒ string \| null
### new Resource(jsonObject)
Creates a new Resource instance.
| Param | Type | Description |
| --- | --- | --- |
| jsonObject | object | An embedded resource object from the fixture's JSON data. |
### resource.name ⇒ string
**Kind**: instance property of [Resource](#Resource)
**Returns**: string - The resource's name.
### resource.keywords ⇒ Array.<string>
**Kind**: instance property of [Resource](#Resource)
**Returns**: Array.<string> - An array of keywords belonging to this resource.
### resource.source ⇒ string \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: string \| null - The source this resource was taken from, or null if it's not specified.
### resource.key ⇒ string
**Kind**: instance property of [Resource](#Resource)
**Returns**: string - The resource key.
### resource.type ⇒ string
**Kind**: instance property of [Resource](#Resource)
**Returns**: string - The resource name, i.e. its directory.
### resource.alias ⇒ string \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: string \| null - The resource alias, as specified in the fixture, or null if the resource was referenced directly.
### resource.hasImage ⇒ boolean
**Kind**: instance property of [Resource](#Resource)
**Returns**: boolean - True if this resource has an associated image, false otherwise.
### resource.imageExtension ⇒ string \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: string \| null - The resource image's file extension, or null if there is no image.
### resource.imageMimeType ⇒ string \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: string \| null - The resource image's MIME type, or null if there is no image.
### resource.imageData ⇒ string \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: string \| null - The resource image data (base64 or utf-8 encoded), or null if there is no image.
### resource.imageEncoding ⇒ 'base64' \| 'utf-8' \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: 'base64' \| 'utf-8' \| null - The resource image's data encoding, or null if there is no image.
### resource.imageDataUrl ⇒ string \| null
**Kind**: instance property of [Resource](#Resource)
**Returns**: string \| null - A data URL containing the resource image, or null if there is no image.
## SwitchingChannel ⇐ [AbstractChannel](#AbstractChannel)
Represents a channel that switches its behavior depending on trigger channel's value.
The different behaviors are implemented as different [CoarseChannel](#CoarseChannel)s or [FineChannel](#FineChannel)s.
**Kind**: global class
**Extends**: [AbstractChannel](#AbstractChannel)
* [SwitchingChannel](#SwitchingChannel) ⇐ [AbstractChannel](#AbstractChannel)
* [new SwitchingChannel(alias, triggerChannel)](#new_SwitchingChannel_new)
* [.triggerChannel](#SwitchingChannel+triggerChannel) ⇒ [AbstractChannel](#AbstractChannel)
* [.fixture](#SwitchingChannel+fixture) ⇒ [Fixture](#Fixture)
* [.triggerCapabilities](#SwitchingChannel+triggerCapabilities) ⇒ [Array.<TriggerCapability>](#TriggerCapability)
* [.triggerRanges](#SwitchingChannel+triggerRanges) ⇒ Record.<string, Array.<Range>>
* [.defaultChannelKey](#SwitchingChannel+defaultChannelKey) ⇒ string
* [.defaultChannel](#SwitchingChannel+defaultChannel) ⇒ [AbstractChannel](#AbstractChannel)
* [.switchToChannelKeys](#SwitchingChannel+switchToChannelKeys) ⇒ Array.<string>
* [.switchToChannels](#SwitchingChannel+switchToChannels) ⇒ [Array.<AbstractChannel>](#AbstractChannel)
* [.isHelpWanted](#SwitchingChannel+isHelpWanted) ⇒ boolean
* [.key](#AbstractChannel+key) ⇒ string
* [.name](#AbstractChannel+name) ⇒ string
* [.uniqueName](#AbstractChannel+uniqueName) ⇒ string
* [.pixelKey](#AbstractChannel+pixelKey) ⇒ string \| null
* [.usesChannelKey(channelKey, [switchingChannelBehavior])](#SwitchingChannel+usesChannelKey) ⇒ boolean
### new SwitchingChannel(alias, triggerChannel)
Creates a new SwitchingChannel instance.
| Param | Type | Description |
| --- | --- | --- |
| alias | string | The unique switching channel alias as defined in the trigger channel's `switchChannels` properties. |
| triggerChannel | [AbstractChannel](#AbstractChannel) | The channel whose DMX value this channel depends on. |
### switchingChannel.triggerChannel ⇒ [AbstractChannel](#AbstractChannel)
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: [AbstractChannel](#AbstractChannel) - The channel whose DMX value this switching channel depends on.
### switchingChannel.fixture ⇒ [Fixture](#Fixture)
Overrides [`AbstractChannel.fixture`](#AbstractChannel+fixture).
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Overrides**: [fixture](#AbstractChannel+fixture)
**Returns**: [Fixture](#Fixture) - The fixture in which this channel is used.
### switchingChannel.triggerCapabilities ⇒ [Array.<TriggerCapability>](#TriggerCapability)
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: [Array.<TriggerCapability>](#TriggerCapability) - The trigger channel's capabilities in a compact form to only include the DMX range and which channel should be switched to. DMX values are given in the trigger channel's highest possible resolution.
### switchingChannel.triggerRanges ⇒ Record.<string, Array.<Range>>
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: Record.<string, Array.<Range>> - Keys of channels that can be switched to pointing to an array of DMX values the trigger channel must be set to to active the channel. DMX values are given in the trigger channel's highest possible resolution.
### switchingChannel.defaultChannelKey ⇒ string
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: string - The key of the channel that is activated when the trigger channel is set to its default value.
### switchingChannel.defaultChannel ⇒ [AbstractChannel](#AbstractChannel)
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: [AbstractChannel](#AbstractChannel) - The channel that is activated when the trigger channel is set to its default value.
### switchingChannel.switchToChannelKeys ⇒ Array.<string>
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: Array.<string> - All channel keys this channel can be switched to.
### switchingChannel.switchToChannels ⇒ [Array.<AbstractChannel>](#AbstractChannel)
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: [Array.<AbstractChannel>](#AbstractChannel) - All channels this channel can be switched to.
### switchingChannel.isHelpWanted ⇒ boolean
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Returns**: boolean - True if help is needed in one of the switched channels, false otherwise.
### switchingChannel.key ⇒ string
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Overrides**: [key](#AbstractChannel+key)
**Returns**: string - The channel key.
### switchingChannel.name ⇒ string
Override this method for more sensible implementation.
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Overrides**: [name](#AbstractChannel+name)
**Returns**: string - The channel key (as name).
### switchingChannel.uniqueName ⇒ string
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Overrides**: [uniqueName](#AbstractChannel+uniqueName)
**Returns**: string - Unique version of this channel's name.
**See**: [uniqueChannelNames](#Fixture+uniqueChannelNames)
### switchingChannel.pixelKey ⇒ string \| null
**Kind**: instance property of [SwitchingChannel](#SwitchingChannel)
**Overrides**: [pixelKey](#AbstractChannel+pixelKey)
**Returns**: string \| null - The key of the pixel (group) that this channel is associated to. Defaults to null.
### switchingChannel.usesChannelKey(channelKey, [switchingChannelBehavior]) ⇒ boolean
**Kind**: instance method of [SwitchingChannel](#SwitchingChannel)
**Returns**: boolean - Whether this SwitchingChannel contains the given channel key.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| channelKey | string | | The channel key to search for. |
| [switchingChannelBehavior] | [SwitchingChannelBehavior](#SwitchingChannelBehavior) | 'all' | Define which channels to include in the search. |
## TemplateChannel
Represents a blueprint channel of which several similar channels can be generated.
Currently used to create matrix channels.
**Kind**: global class
* [TemplateChannel](#TemplateChannel)
* [new TemplateChannel(key, jsonObject, fixture)](#new_TemplateChannel_new)
* _instance_
* [.allTemplateKeys](#TemplateChannel+allTemplateKeys) ⇒ Array.<string>
* [.possibleMatrixChannelKeys](#TemplateChannel+possibleMatrixChannelKeys) ⇒ Map.<string, Array.<string>>
* [.createMatrixChannels()](#TemplateChannel+createMatrixChannels) ⇒ [Array.<AbstractChannel>](#AbstractChannel)
* _static_
* [.resolveTemplateObject(object, variables)](#TemplateChannel.resolveTemplateObject) ⇒ object
* [.resolveTemplateString(string, variables)](#TemplateChannel.resolveTemplateString) ⇒ string
### new TemplateChannel(key, jsonObject, fixture)
Creates new TemplateChannel instance. Also clears cache by setting jsonObject.
| Param | Type | Description |
| --- | --- | --- |
| key | string | The templateChannel's key with the required variables. |
| jsonObject | object | The template's JSON data which looks pretty similar to a normal channel's data except that channel aliases must include variables. |
| fixture | [Fixture](#Fixture) | The Fixture instance. |
### templateChannel.allTemplateKeys ⇒ Array.<string>
**Kind**: instance property of [TemplateChannel](#TemplateChannel)
**Returns**: Array.<string> - Template keys and aliases introduced by this channel, i.e. the channel key itself and defined fine and switching channels.
### templateChannel.possibleMatrixChannelKeys ⇒ Map.<string, Array.<string>>
**Kind**: instance property of [TemplateChannel](#TemplateChannel)
**Returns**: Map.<string, Array.<string>> - All template keys pointing to the key resolved with each pixel key to a matrix channel key.
### templateChannel.createMatrixChannels() ⇒ [Array.<AbstractChannel>](#AbstractChannel)
Creates matrix channels from this template channel (together with its fine and switching channels if defined) and all pixel keys.
**Kind**: instance method of [TemplateChannel](#TemplateChannel)
**Returns**: [Array.<AbstractChannel>](#AbstractChannel) - The generated channels associated to the given pixel key and its fine and switching channels.
### TemplateChannel.resolveTemplateObject(object, variables) ⇒ object
Replaces the specified variables in the specified object by cloning the object.
**Kind**: static method of [TemplateChannel](#TemplateChannel)
**Returns**: object - A copy of the object with replaced variables.
| Param | Type | Description |
| --- | --- | --- |
| object | object | The object which has to be modified. |
| variables | Record.<string, string> | Each variable (without $) pointing to its value. |
### TemplateChannel.resolveTemplateString(string, variables) ⇒ string
Replaces the specified variables in the specified string.
**Kind**: static method of [TemplateChannel](#TemplateChannel)
**Returns**: string - The modified string.
| Param | Type | Description |
| --- | --- | --- |
| string | string | The string which has to be modified. |
| variables | Record.<string, string> | Each variable (without $) pointing to its value. |
## Wheel
Information about a fixture's wheel.
**Kind**: global class
* [Wheel](#Wheel)
* [new Wheel(wheelName, jsonObject)](#new_Wheel_new)
* [.name](#Wheel+name) ⇒ string
* [.direction](#Wheel+direction) ⇒ 'CW' \| 'CCW'
* [.type](#Wheel+type) ⇒ string
* [.slots](#Wheel+slots) ⇒ [Array.<WheelSlot>](#WheelSlot)
* [.getSlot(slotNumber)](#Wheel+getSlot) ⇒ [WheelSlot](#WheelSlot)
* [.getAbsoluteSlotIndex(slotNumber)](#Wheel+getAbsoluteSlotIndex) ⇒ number
* [.getSlotsOfType(type)](#Wheel+getSlotsOfType) ⇒ [Array.<WheelSlot>](#WheelSlot)
### new Wheel(wheelName, jsonObject)
Creates a new Wheel instance.
| Param | Type | Description |
| --- | --- | --- |
| wheelName | string | The wheel's name, like specified in the JSON. |
| jsonObject | object | A wheel object from the fixture's JSON data. |
### wheel.name ⇒ string
**Kind**: instance property of [Wheel](#Wheel)
**Returns**: string - The wheel's name.
### wheel.direction ⇒ 'CW' \| 'CCW'
**Kind**: instance property of [Wheel](#Wheel)
**Returns**: 'CW' \| 'CCW' - The direction the wheel's slots are arranged in. Defaults to clockwise.
### wheel.type ⇒ string
**Kind**: instance property of [Wheel](#Wheel)
**Returns**: string - The type of the Wheel, i.e. the most frequent slot type (except for animation gobo wheels; the wheel type is AnimationGobo there).
### wheel.slots ⇒ [Array.<WheelSlot>](#WheelSlot)
**Kind**: instance property of [Wheel](#Wheel)
**Returns**: [Array.<WheelSlot>](#WheelSlot) - Array of wheel slots.
### wheel.getSlot(slotNumber) ⇒ [WheelSlot](#WheelSlot)
**Kind**: instance method of [Wheel](#Wheel)
**Returns**: [WheelSlot](#WheelSlot) - The slot object. Can be a split slot object, if a non-integer index is specified.
| Param | Type | Description |
| --- | --- | --- |
| slotNumber | number | The one-based slot number. |
### wheel.getAbsoluteSlotIndex(slotNumber) ⇒ number
**Kind**: instance method of [Wheel](#Wheel)
**Returns**: number - The zero-based slot index, bounded by the number of slots.
| Param | Type | Description |
| --- | --- | --- |
| slotNumber | number | The one-based slot number, can be smaller than 1 and greater than the number of slots. |
### wheel.getSlotsOfType(type) ⇒ [Array.<WheelSlot>](#WheelSlot)
**Kind**: instance method of [Wheel](#Wheel)
**Returns**: [Array.<WheelSlot>](#WheelSlot) - All slots with the given type.
| Param | Type | Description |
| --- | --- | --- |
| type | string | The wheel slot type to search for. |
## WheelSlot
Information about a single wheel slot (or a split slot).
**Kind**: global class
* [WheelSlot](#WheelSlot)
* [new WheelSlot(jsonObject, wheel, floorSlot, ceilSlot)](#new_WheelSlot_new)
* [.isSplitSlot](#WheelSlot+isSplitSlot) ⇒ boolean
* [.type](#WheelSlot+type) ⇒ string
* [.nthOfType](#WheelSlot+nthOfType) ⇒ number
* [.resource](#WheelSlot+resource) ⇒ [Resource](#Resource) \| string \| null
* [.name](#WheelSlot+name) ⇒ string
* [.colors](#WheelSlot+colors) ⇒ Array.<string> \| null
* [.colorTemperature](#WheelSlot+colorTemperature) ⇒ [Entity](#Entity) \| null
* [.facets](#WheelSlot+facets) ⇒ number \| null
* [.openPercent](#WheelSlot+openPercent) ⇒ [Entity](#Entity) \| null
* [.frostIntensity](#WheelSlot+frostIntensity) ⇒ [Entity](#Entity) \| null
* [.floorSlot](#WheelSlot+floorSlot) ⇒ [WheelSlot](#WheelSlot) \| null
* [.ceilSlot](#WheelSlot+ceilSlot) ⇒ [WheelSlot](#WheelSlot) \| null
### new WheelSlot(jsonObject, wheel, floorSlot, ceilSlot)
Creates a new WheelSlot instance.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| jsonObject | object \| null | | A wheel slot object from the fixture's JSON data. If null, this WheelSlot is a split slot. |
| wheel | [Wheel](#Wheel) | | The wheel that this slot belongs to. |
| floorSlot | [WheelSlot](#WheelSlot) \| null | | For split slots, the WheelSlot instance at the start. |
| ceilSlot | [WheelSlot](#WheelSlot) \| null | | For split slots, the WheelSlot instance at the end. |
### wheelSlot.isSplitSlot ⇒ boolean
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: boolean - True if this WheelSlot instance represents a split slot.
### wheelSlot.type ⇒ string
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: string - The slot's type.
### wheelSlot.nthOfType ⇒ number
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: number - The zero-based index of this slot amongst all slots with the same type in this wheel.
### wheelSlot.resource ⇒ [Resource](#Resource) \| string \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: [Resource](#Resource) \| string \| null - The gobo resource object if it was previously embedded, or the gobo resource reference string, or null if no resource is specified for the slot.
### wheelSlot.name ⇒ string
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: string - The wheel slot's name.
### wheelSlot.colors ⇒ Array.<string> \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: Array.<string> \| null - The colors of this wheel slot, or null if this slot has no colors.
### wheelSlot.colorTemperature ⇒ [Entity](#Entity) \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: [Entity](#Entity) \| null - For Color slots, the slot's color temperature. Null if this slot has no color temperature.
### wheelSlot.facets ⇒ number \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: number \| null - For Prism slots, the number of prism facets. Null if number of facets is not defined.
### wheelSlot.openPercent ⇒ [Entity](#Entity) \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: [Entity](#Entity) \| null - For Iris slots, the slot's openPercent value. Null if this slot has no openPercent value.
### wheelSlot.frostIntensity ⇒ [Entity](#Entity) \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: [Entity](#Entity) \| null - For Frost slots, the slot's frost intensity. Null if this slot has no frost intensity.
### wheelSlot.floorSlot ⇒ [WheelSlot](#WheelSlot) \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: [WheelSlot](#WheelSlot) \| null - For split slots, the floor (start) slot. Null for non-split slots.
### wheelSlot.ceilSlot ⇒ [WheelSlot](#WheelSlot) \| null
**Kind**: instance property of [WheelSlot](#WheelSlot)
**Returns**: [WheelSlot](#WheelSlot) \| null - For split slots, the ceil (end) slot. Null for non-split slots.
## Resolution : number
1 for 8bit, 2 for 16bit, ...
**Kind**: global typedef
## TriggerCapability : object
**Kind**: global typedef
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| dmxRange | [Range](#Range) | The DMX range that triggers the switching channel. |
| switchTo | string | The channel to switch to in the given DMX range. |
## SwitchingChannelBehavior : 'keyOnly' \| 'defaultOnly' \| 'switchedOnly' \| 'all'
**Kind**: global typedef
================================================
FILE: docs/plugins.md
================================================
# Plugins
The aim of the *Open Fixture Library* is to import and export our fixture definitions from / to fixture formats of third-party lighting control software, for example [QLC+](https://github.com/mcallegari/qlcplus)'s `.qfx` format. A plugin is a converter between our format and one such external format. It implements an import and / or export method that parses / generates the third-party format.
Each plugin has its own directory `plugins/