Skip to content

    Sensors & reactions

    OmnaDMX can make the lighting respond to the room. Plug in I2C sensors and wire their readings to the pattern two ways. Routes modulate continuously; reactions fire one-shot events. They compose, so one sensor can do both.

    The usual I2C types work: ambient light, motion (PIR), radar presence, proximity/gesture, time-of-flight distance, motion and orientation (IMU), environmental, sound (the onboard mic on Sparkle Motion), and a real-time clock for time-of-day behaviour. A sensor sits in a slot, and some sensors expose several outputs — a gesture sensor reports direction and proximity separately. Every reading is normalized to 0–100%, so any sensor can drive any parameter.

    You get 4 sensors, each with up to 16 outputs, and per sensor up to 8 routes and 8 reactions.

    A route ties one sensor output to one pattern parameter. Per route you set:

    • Target — Position, Size, Drive, Edge, Spin, Colour, or a motion LFO’s speed, depth, or phase. Colour is the odd one out: instead of numeric modulation it rotates the palette.
    • Mix — how it combines with your value. Scale and offset modulate around the value you set; replace hands the value entirely to the sensor.
    • Curve — the response shape, linear or eased.
    • Mode — continuous, where the reading constantly modulates; or triggered, where crossing a threshold fires an Attack–Hold–Release envelope. Triggered routes carry about 10% hysteresis so a signal hovering at the threshold doesn’t chatter, and the envelope’s Attack, Hold, and Release each run from 0 to roughly 5.1 s in ~20 ms steps.
    • Scope — global, where all elements move together; or staggered, a per-element phase offset set by a stagger amount, for travelling waves and cascades.

    You can also mask which elements a route touches, so one sensor drives only part of the rig. The Pattern tab puts a live ghost overlay on routed controls, so you can watch the sensor push a value in real time.

    A reaction fires a discrete action when a sensor output crosses a threshold. Each reaction tracks its own edge, so stacked thresholds work the way you’d expect — warm at 30%, party at 60%, strobe at 90%. Per reaction you set the threshold (0–100), a cooldown and an optional duration (both in 100 ms units; duration 0 runs until cancelled), and whether it hits all elements or one.

    The actions:

    • Global: Flash (timed, with a brightness %), Blackout (timed).
    • Pattern: Reset Phase, Rotate Palette, Cycle Engine, Set Engine, Boost Speed (timed).
    • Evolution: Mutate, Fake Transition, Boost Speed (timed), Mutate All — these nudge the evolving pattern rather than overriding it, so a sensor can steer evolution without breaking its flow.

    Reactions can also fire over the API (POST /api/reaction), which is handy for show control. There’s a global rate limit of about 500 ms so external triggers can’t overrun the device. See the Reference for API calling conventions.

    Next: AI pattern generation.

    Docs · 0.9.1-beta