# Fixture Profile Editor

The **Fixture Profile Editor** is Unilighter's dedicated workspace for building, customizing, and calibrating DMX fixture definitions. Whether patching a simple single-channel dimmer, an RGBW LED architectural bar, or an advanced multi-head moving beam fixture with motorized zoom and indexed gobo wheels, the editor gives lighting technicians complete control over channel mapping and behavioral metadata.

![Unilighter Fixture Profile Editor - Full interface overview showing personality modes, channel topology, and DMX addressing configuration](https://unilighter.cc/info/docs/fixture-editor/screen_fixture_editor_1a3cd1e4.png)

---

## 💡 Profile Architecture & Core Concepts

In Unilighter, a fixture profile acts as an intelligent translation layer. Rather than forcing you to memorize raw DMX channel numbers and arithmetic values during live shows, the profile abstracts hardware parameters into intuitive UI controls—[universal color pickers](https://unilighter.cc/info/for-ai/docs/controls/color-picker.md), [motorized color wheels](https://unilighter.cc/info/for-ai/docs/controls/color-wheel.md), [2D Pan/Tilt positioning pads](https://unilighter.cc/info/for-ai/docs/controls/xy-pad.md), [tactile faders](https://unilighter.cc/info/for-ai/docs/controls/fader.md), [rotary encoders (knobs)](https://unilighter.cc/info/for-ai/docs/controls/knob.md), discrete [strobe buttons](https://unilighter.cc/info/for-ai/docs/controls/button.md), and visual gobo selectors.

### 1. Multi-Mode Definitions
Real-world lighting fixtures often feature selectable DMX personality modes (e.g., `4-Channel Basic`, `16-Channel Standard`, `24-Channel Extended`, or `Pixel Matrix`).
- **Independent Channel Lists**: Define custom channel lists for each mode to match the fixture manual.
- **Mode Descriptions**: Annotate modes with recommended use cases (e.g., *"Use Extended mode for full 16-bit Pan/Tilt precision and individual ring control"*).
- **Active Mode Switching**: Seamlessly toggle between modes while editing to cross-check channel footprints.

### 2. Multi-Head & Pixel Bar Topologies
For LED bars, dual-headed moving lights, and multi-emitter wash fixtures:
- **Head Numbering (`0`, `1`, `2`...)**: Assign individual emitter segments to discrete head indices. This allows Unilighter's color engines and spatial wave generators to address each head independently.
- **Shared Master Controls (`SHARED_HEAD`)**: Channels without an explicit head assignment (such as Master Dimmer, Pan/Tilt base motors, or Global Strobe) are automatically treated as shared across all heads.

### 3. Generic Starting Profiles
For common fixtures, start with the built-in **Generic PAR**, **Generic Moving Head**, or **Generic LED Bar** profile and adjust the mode to match the manual. This is usually faster than creating every channel from scratch, especially for inexpensive fixtures that follow familiar layouts but use different names.

### 4. Import from Open Fixture Library
Use the **Import** dropdown in the Fixture Library, then choose **Open Fixture Library**.
- **Browse library**: search manufacturers and fixture keys from the public Open Fixture Library catalog, preview converted modes and channel counts, then import.
- **From files**: select one or more Open Fixture Library JSON files downloaded from the library website.
- Unilighter creates a new local profile (it never overwrites an existing one). Review warnings for switching channels, pixel matrices, or parameters that become `misc`, then save and patch as usual.

---

## 🎛️ Complete Channel Types Guide

Selecting the proper channel type ensures that Unilighter's automation engines, visualizers, and dashboard widgets interact correctly with your lighting hardware.

| Channel Type | Typical Function & Engine Integration |
|---|---|
| `dimmer` | Master or per-head luminous intensity (0–255). Directly mapped to [tactile faders](https://unilighter.cc/info/for-ai/docs/controls/fader.md) and blackout cues. |
| `red`, `green`, `blue`, `white`, `amber`, `uv` | Direct additive chromatic emitters. Automatically mapped to the universal [HSL/RGB color picker engine](https://unilighter.cc/info/for-ai/docs/controls/color-picker.md) with white balance calibration. |
| `pan`, `tilt` | 8-bit primary coarse axis positioning (0–255). Directly linked to [2D XY pads](https://unilighter.cc/info/for-ai/docs/controls/xy-pad.md) and spatial choreography engines. |
| `pan-fine`, `tilt-fine` | Legacy names for 16-bit Pan/Tilt fine channels. New profiles can set **Fine** resolution on any matching parameter. |
| `focus`, `frost`, `zoom` | Motorized optical beam shaping controls. Rendered as dedicated [rotary encoders (Knobs)](https://unilighter.cc/info/for-ai/docs/controls/knob.md) or [vertical faders](https://unilighter.cc/info/for-ai/docs/controls/fader.md). |
| `strobe` | Shutter frequency and pulse generator with latching and momentary [override buttons](https://unilighter.cc/info/for-ai/docs/controls/button.md). |
| `boolean` | Two-state toggle switches (0 or 255) for laser power relays, blackout shutters, or inversion switches. |
| `enum` | Discrete stepped operational states (e.g., Reset, Fan Speed, Macro Chases, Lamp Power). |
| `color-wheel` | Indexed rotating gel wheel with dedicated HEX color swatches (see [Motorized Gel Wheel](https://unilighter.cc/info/for-ai/docs/controls/color-wheel.md)). |
| `color-wheel-fine` | Split-color position between adjacent physical wheel slots. It is not treated as a generic 16-bit Fine byte. |
| `gobo-wheel` | Rotating pattern wheel featuring integrated vector SVG pattern previews. |
| `gobo-shake` | Variable-speed gobo wobble/shake oscillation frequency. |
| `gobo-rotation` | Continuous 360° gobo rotation speed and direction (CW / CCW / Index mode). |
| **Shared** | Range-multiplexed channel where one physical DMX channel performs different functions in different value ranges. Existing profile data keeps the internal type name `alias`. |
| `misc` | Controllable auxiliary parameters exposed via [rotary encoders (Knobs)](https://unilighter.cc/info/for-ai/docs/controls/knob.md) in the Device Control view. |
| `unknown` | Placeholder or reserved channels that preserve channel footprint spacing without generating UI controls. |

---

## 🔍 Deep Dive: Complex & Stepped Channel Types

Modern moving heads frequently pack complex multi-functional mechanics into single DMX channels. Unilighter provides specialized editors for these sophisticated modes:

### 1. Stepped Enumerable Channels (`enum`)
Enumerable channels represent discrete fixture states rather than smooth gradients—such as fixture reset commands, cooling fan modes, internal automation macros, or lamp ignition states.
- **Option Configuration**: Each entry contains a human-readable **Name** and a target **DMX Value**.
- **Adaptive Live Dashboard Presentation**: 
  - If a channel has **5 or fewer options**, Unilighter automatically renders them as instant, full-width touch buttons for fast busking triggers.
  - If a channel has **more than 5 options**, it automatically compacts into a space-efficient dropdown selector to keep your workspace uncluttered.

![Unilighter Fixture Profile Editor - Stepped enum channel options configuration with custom names and discrete DMX values](https://unilighter.cc/info/docs/fixture-editor/fixture_editor_enum_bfda74e3.png)

### 2. Motorized Gel Color Wheels (`color-wheel`)
When fixtures utilize a physical rotating wheel loaded with optical color gels (dichroic filters) rather than or in addition to LED mixing:
- **Exact Color Swatches**: Each option supports both a target DMX trigger value and a specific **HEX Color Swatch** (e.g., `#FF4500` for Flame Orange or `#00FFFF` for Electric Cyan).
- **Interactive UI Swatch Bar**: In the Live Dashboard and Device Control views, these options are rendered as an intuitive interactive palette. Operators can jump to exact gel colors visually instead of guessing raw DMX numbers.

![Unilighter Fixture Profile Editor - Motorized color wheel configuration with exact HEX color swatches and DMX trigger thresholds](https://unilighter.cc/info/docs/fixture-editor/fixture_editor_color_wheel_68e024a7.png)

### 3. Gobo Wheels with Built-In Vector SVG Editor (`gobo-wheel`)
Gobo wheels project patterned light stencils onto the stage:
- **Visual Pattern Thumbnails**: In addition to DMX trigger values, each gobo slot supports custom vector pattern artwork.
- **Integrated In-Browser SVG Editor**: Clicking any gobo thumbnail opens Unilighter's built-in vector drawing modal. You can sketch custom gobo geometry, edit SVG markup, or tweak starbursts, breakup patterns, and geometric prisms directly within the application without needing third-party graphic software.

![Unilighter Fixture Profile Editor - Gobo wheel channel setup with vector SVG pattern previews and built-in editor integration](https://unilighter.cc/info/docs/fixture-editor/fixture_editor_gobo_wheel_6b329be1.png)

### 4. Range-Multiplexed Composite Channels (**Shared**)
Some fixtures multiplex fundamentally different functions onto a single channel (for example, DMX `0–15`: Strobe Open, `16–128`: Linear Strobe Rate, `129–190`: Color Wheel Macro, `191–255`: Random Strobe Pulse).
- A **Shared** channel lets you define distinct DMX value windows (`min` to `max`). Older profiles and raw JSON still use the internal type name `alias`; this is the same channel type, not a separate feature.
- Each window can be assigned its own specialized sub-type (`strobe`, `color-wheel`, `misc`), default value, and custom color swatch.

### 5. Fine, Ultra & Uber Resolution
Any fixture parameter can span up to four DMX channels. Add the next resolution from the coarse channel in one click:

- **Coarse**: 8-bit, `0–255`.
- **Fine**: 16-bit, `0–65,535`.
- **Ultra**: 24-bit, `0–16,777,215`.
- **Uber**: 32-bit, `0–4,294,967,295`.

Use the same channel type, head, and base name for every byte. Unilighter links the channels and sends the most significant byte first. The order in the fixture mode remains the real DMX channel order, so it can also handle manuals that list Fine before Coarse or omit one of the usual bytes.

For continuous parameters such as Pan, Tilt, Dimmer, Zoom, or a custom `misc` control, the UI stays normalized while Unilighter distributes the value across all configured bytes. For `enum` and `gobo-wheel`, option values may use the full combined integer range. **Color Wheel Fine is different:** it continues to represent split colors between adjacent wheel slots, so color-wheel option values remain `0–255`.

> [!TIP]
> Most fixtures only need Fine resolution for Pan and Tilt. Add Ultra or Uber only when the fixture manual actually assigns those bytes; extra resolution channels do not create precision that the hardware does not support.

---

## ⚖️ Architectural Distinction: `misc` vs. `unknown`

Understanding when to choose `misc` versus `unknown` is crucial for maintaining clean, responsive live workspaces:

### `misc` (Controllable Miscellaneous Parameters)
- **Purpose**: Real, functional auxiliary features on your fixture that do not map to standard primary modules (e.g., Pan/Tilt Vector Speed, Fog Emitter Output, Internal Program Speed, Hazer Fan RPM).
- **UI Behavior**: Generates an interactive [rotary encoder (Knob)](https://unilighter.cc/info/for-ai/docs/controls/knob.md) or [numeric slider (Fader)](https://unilighter.cc/info/for-ai/docs/controls/fader.md) in the **Misc** group of the [Live Device Control](https://unilighter.cc/info/for-ai/docs/dashboard/widget-device-control.md) widget.
- **Automation Support**: Can be modulated in [Node Graphs](https://unilighter.cc/info/for-ai/docs/node-graphs.md) via the `misc.<paramName>` socket, sequenced with smooth easing in [Keyframe Animations](https://unilighter.cc/info/for-ai/docs/animations/keyframe.md), and recorded into [Scenes](https://unilighter.cc/info/for-ai/docs/scenes.md).

### `unknown` (Reserved & Inactive Spacer Channels)
- **Purpose**: Unmapped, undocumented, or manufacturer-reserved DMX slots (e.g., *"Reserved for future use"*, *"No function"*, or channels you intentionally do not want operators touching during a show).
- **UI Behavior**: Generates **no control elements** on the live dashboard.
- **Footprint Integrity**: Ensures the fixture's start-to-end DMX channel count remains 100% accurate. Without `unknown` spacers, subsequent channels (like Dimmer or Pan/Tilt) would shift to incorrect DMX addresses on the universe wire.

---

## ⚡ Power-User Speed Hacks & Workflow Shortcuts

The Fixture Profile Editor is engineered with high-efficiency keyboard and mouse gestures to drastically accelerate profile creation:

### 1. Drag-and-Release Channel Dropdown
When adding a new channel from the **Add channel...** dropdown:
- **Click and hold** the dropdown button, drag your cursor directly to the desired channel type (e.g., `Dimmer` or `Pan`), and **release the mouse button**.
- The channel is created immediately, and focus instantly shifts to the channel name with the default text highlighted.
- You can begin typing your custom channel label right away—requiring **zero redundant mouse clicks**.

### 2. The `Ctrl + Enter` (or `Cmd + Enter`) Rapid Spawner
- **In Modes View**: Pressing <kbd>Ctrl</kbd>+<kbd>Enter</kbd> (or <kbd>Cmd</kbd>+<kbd>Enter</kbd> on macOS) instantly appends a new channel to the active mode. The name field is auto-focused with its text selected. Type your name, hit <kbd>Ctrl</kbd>+<kbd>Enter</kbd> again, and repeat to knock out dozens of channels in seconds.
- **Inside Enums, Color Wheels & Gobos**: When focused on any Enum option or Color/Gobo slot, pressing <kbd>Ctrl</kbd>+<kbd>Enter</kbd> appends the next option below it.

### 3. Smart DMX Step Delta Calculation
When building stepped enum lists (like color wheels or strobe ranges):
- Unilighter inspects the mathematical delta between your previous two options. If Option 1 is `DMX 0` and Option 2 is `DMX 8` (a step of 8), pressing <kbd>Ctrl</kbd>+<kbd>Enter</kbd> automatically populates Option 3 with `DMX 16`, Option 4 with `DMX 24`, and so on.
- The new option's name is highlighted and automatically scrolled into the center of your view, enabling fluid, mouse-free cataloging of 30+ preset wheels.

### 4. Per-Channel Calibration (`Correction`)
- Toggle the **Correction** button on color emitter channels (`red`, `green`, `blue`).
- Sets a fractional intensity multiplier (e.g., `0.85`) directly inside the fixture definition.
- **Global Baseline with Per-Device Overrides**: The correction factors defined in the fixture profile serve as the automatic default baseline for all patched instances of this fixture model. When needed, operators can fine-tune or override these calibration multipliers on an individual physical unit level (in the [Device View](https://unilighter.cc/info/for-ai/docs/device-patch.md)) to compensate for component aging, LED batch variances, or mismatched optical paths across specific fixtures.
- Corrects hardware-level color imbalances between different fixture models before signals ever reach live scenes or node graphs.

### 5. Safe Power-On Defaults (`Default Value`)
- Toggle the **Default Value** property only for channels requiring **non-zero resting values**.
- Every DMX channel in Unilighter already evaluates to `0` by default, so there is no need to manually configure or toggle `0` for channels like Dimmer or RGB emitters.
- Define non-zero safe baselines where a raw `0` would inadvertently block light or park moving heads in awkward mechanical limit positions—such as `Shutter Open = 255` (unblocking the optical light gate), `Pan/Tilt Center = 128` (centering heads straight into the venue), or neutral motorized zoom levels.
- When a show project initializes or fixtures enter standby, channels automatically park at these designated levels.

### 6. Raw JSON Mode & Cloud Synchronization
- **`JSON` Tab**: Instantly view or edit the raw profile JSON structure with full schema validation. Perfect for duplicating complex channel blocks, copying definitions from external manuals, or backing up presets.
- **Cloud Library**: Seamlessly sync local profiles to your Unilighter Cloud account, compare versions (`local-newer` vs. `cloud-newer`), and pull verified profiles created by other lighting operators across the community.

