We are still working on the Frontend Documentation, as this will be configurable via the Config Builder. Essentially, endpoints on aLED Strips have a layer associated with them. In Firmware v1.1, those layers have a (currently fixed) opacity assigned to them. The opacity can either apply to the full segment or be interpolated based on a configured mask (this mask can also slide—this is where the animation aspect comes in).
Gradients can therefore be achieved by stacking two endpoints over the same segments: one base endpoint and one with ascending (or descending) opacity above it. This creates a gradient effect, as the color gradually transitions from the base endpoint’s color to the gradient endpoint’s color.
Example:
Base EP: Green
Gradient EP: Red and Blue
Animated Gradient:
Here’s a snippet of the (work in progress) documentation:
3. Addressable Configuration
Structure
"addressable": {
"driver": { ... },
"endpoints": [ { ... }, ... ]
}
Driver Object
"driver": {
"type": STRING(["WS2812", "SK6812"]),
"numSegments": INT(1–1024),
"emitter": [ { ... } ]
}
Key |
Description |
ConfigVersion |
type |
LED IC type |
>= 1 |
numSegments |
Number of addressable segments |
>= 1 |
emitter |
Defines color channel order (e.g., RGB, GRBW) |
>= 1 |
Array Order Matters!
Example: RGB
"emitter": [
{"type": "red"},
{"type": "green"},
{"type": "blue"}
]
Example: GRBW
"emitter": [
{"type": "green"},
{"type": "red"},
{"type": "blue"},
{"type": "white"}
]
Endpoint Object
"endpoints": [
{
"id": INT,
"name": STRING (max 32),
"layer": INT(0–3),
"start": INT,
"end": INT,
"opacity": { ... }, // Optional
"dimViaCurve": BOOL, // Optional
"ctUseRgb": BOOL, // Optional
"rgbUseWhite": BOOL, // Optional
"constLumen": BOOL, // Optional
"dimViaOpacity": BOOL,// Optional
"emitter": [ ... ] // Optional
}
]
Key |
Description |
Default |
ConfigVersion |
id |
Unique sequential endpoint ID |
N/A |
>= 1 |
name |
Label for the segment group |
N/A |
>= 1 |
layer |
Rendering priority (higher layers are rendered on top of lower ones) |
0 |
>= 1 |
start , end |
First and last segments (0 is a wildcard for First/Last Segment) |
0 |
>= 1 |
opacity |
Transparency control for layer blending |
N/A |
>= 2 |
dimViaCurve |
Endpoint acts as dimmable light; color is derived from brightness level and emitter curves |
false |
>= 2 |
ctUseRgb |
Extends the color temperature range using RGB emitters |
true |
>= 2 |
rgbUseWhite |
Improves CRI by using white emitter in RGB calculation |
true |
>= 2 |
constLumen |
Maintains constant brightness across chromaticity shifts (sacrifices max brightness) |
false |
>= 2 |
dimViaOpacity |
Current Level correlates to Endpoint Opacity instead of 100% opacity + Level |
false |
>= 2 |
emitter |
Per Endpoint overwrite of Driver Level Emitter Array |
N/A |
>= 1 |
Emitter Array
see PWM Emitter Section
Opacity Object
"opacity": {
"mask": [FLOAT(0.0–1.0), ...],
"speed": FLOAT(-4.0–4.0),
"repeat": INT(0–1024)
}
Key |
Description |
ConfigVersion |
mask |
Opacity mask array (up to 8 floats) |
>= 2 |
speed |
Animation speed and direction (negative values for reverse) |
>= 2 |
repeat |
Number of mask repetitions across segments |
>= 2 |
Examples:
- Static Opacity
"opacity": {
"mask": [0.5]
}
- Gradient
"opacity": {
"mask": [0.0, 1.0]
}
- Reverse Gradient
"opacity": {
"mask": [1.0, 0.0]
}
- Animated Gradient
"opacity": {
"mask": [0.0, 1.0],
"speed": -0.3333
}