OSC addresses
--osc <host:port>, or [osc] enabled = true, publishes the analyzer’s telemetry as OSC over UDP
so a lighting console or a bridge can follow the music.
The address space is versioned in the addresses, so a later signal is additive under the same
/rlx/v1 prefix and a mapping you have already bound keeps working across it. One argument per
address, so a console binds a parameter to an address rather than to a position inside a message.
| Address | Type | What it carries |
|---|---|---|
/rlx/v1/level/bass | f | Bass excitation, 0–1, normalized against its own running peak — not a magnitude. It reads 1.0 whenever this moment is the loudest bass of the last few seconds, which on four-on-the-floor material is every kick. See the note below the table before binding it to a dimmer |
/rlx/v1/level/mid | f | Mid excitation, same normalization and same ceiling behaviour |
/rlx/v1/level/treb | f | Treble excitation, same normalization and same ceiling behaviour |
/rlx/v1/level/onset | f | Spectral-flux onset envelope, same normalization and same ceiling behaviour |
/rlx/v1/level/rms | f | Broadband RMS of the waveform trace — un-normalized, unlike the four above it, because the trace it comes from deliberately is. Map it with a gain in the console |
/rlx/v1/raw/bass | f | Raw mean magnitude in the bass band — the absolute twin of level/bass, and the one to bind when you want loudness. Unnormalized, so it does move with input gain and is not portable across tracks |
/rlx/v1/raw/mid | f | Raw mean magnitude, mid |
/rlx/v1/raw/treb | f | Raw mean magnitude, treble |
/rlx/v1/raw/onset | f | Raw spectral-flux envelope |
/rlx/v1/beat/trigger | i | 1 on a frame an onset fired, 0 otherwise — the discrete event |
/rlx/v1/beat/index | i | Monotone count of onset detections. Not a musical beat count — the detector fires 1.2x–2.3x per beat depending on material, so no fixed multiplier turns it into bars. Useful as a ratchet, not as a meter |
/rlx/v1/beat/phase | f | Beat phase in [0, 1): 0 on each beat, ramping to the next |
/rlx/v1/tempo | f | Tempo estimate in BPM, 0 until the tracker warms. Expect a warm-up of tens of seconds before it settles |
/rlx/v1/preset | s | The active preset’s name |
level/* touches its ceiling by design, and no input gain moves it. Each of the four is
divided by its own slowly-decaying running peak — instant attack, a 2.5 s release
(ADR-0049) — so the value it
publishes is raw / peak, an excitation relative to this track’s recent past rather than a
loudness. Two consequences are worth knowing before a fixture is bound to one:
1.0is a normal reading, not a clip and not “loud”. It means only this is the loudest bass since the peak last released. At 120 BPM the peak is re-adopted every 0.5 s against a 2.5 s release, so on periodic material the term spends most of its life near the top of its range and reaches1.0once per kick. A look shaped asglow + depth * level/basstherefore sits atglow + depthon every kick and reads flat in the room — that is the term behaving as specified, not a saturated input.- Turning the mic or the interface down changes it by exactly nothing.
raw / peakis scale-invariant: halve the input and both terms halve. Gain portability is the entire purpose of the normalization —> 0.5is meant to mean the same thing on every track at every gain — so an input-gain control is provably the wrong lever for a pinnedlevel/*. The right lever is the binding: reach forraw/*, which is the absolute twin and is published beside every one of them, and scale it yourself.
Telemetry rides the rendered frame, so it stops when the window is hidden and the preset name lags a switch by one frame. Nothing here is a musical timebase you can drive a sequencer from — it is a level feed for lights.
The root moved in this release: /lmv/v1 became /rlx/v1. There is no transition period and
no dual-emit, and OSC has no error channel — so a binding left on the old root stops firing and
reports nothing, which looks exactly like a fixture that happens not to be moving. Re-point every
address by hand, and keep the old show file until each one is confirmed against a playing track.
/v1 did not move, because no payload, type tag, address suffix, vocabulary or send cadence
changed: re-point the root, change nothing else, and the mapping is correct.
Built from 13c7582 at version 0.158.0. This site tracks main and is not versioned per release.