Reference
OSC reference
ampOSC speaks BroadwayOSC. This page is what that means on an Allen & Heath desk: every address, the unit its value carries, and which of the four consoles answers it.
Connecting
UDP to port 8765. No handshake — send anything and you are registered as a
client. Send /Unsubscribe/* to leave cleanly. Several clients at once is
fine; each is identified by its address and port and keeps its own subscriptions.
Paths are case-insensitive. Every index is 1-based.
Message intent
Four intents, and the bare form is usually what you want.
/Input/1/Level ,f -6.0 set input 1 to -6 dB
/Input/1/Level ask, and subscribe from now on
/Subscribe/Input/*/Level subscribe without asking first
/Unsubscribe/Input/1/Level stop
/Unsubscribe/* stop everything
A path with a value is a SET. A path with no value is a GET, and asking also
subscribes you — which is the shortest way to get a client in sync and keep it
there. The explicit /Set/ and /Get/ prefixes do the same
thing if your client needs them.
When a value changes at the desk, every subscriber is sent the new one. Subscriptions last until you drop them; there is no keepalive.
Addressing
An index can be one channel, a range, a list, or all of them.
/Input/3/Level one channel
/Input/1-8/Level a range
/Input/1,4,5-8/Level a list
/Input/*/Level every input
So a single message addresses as many crosspoints as you like:
/Input/1-48/Aux/1-12/Level is 576 of them.
Channel types
Counts are what each manufacturer's protocol document publishes, not what a particular
model has fitted. Stereo types are their own path segment —
/GroupStereo/1/Level — not a flag on the mono one.
| Type | dLive | Avantis | SQ | SQ+ |
|---|---|---|---|---|
Input | 128 | 96 | 48 | 48 |
Group / GroupStereo | 62 / 31 | 54 / 27 | 12 / 6 | 12 / 6 |
Aux / AuxStereo | 62 / 31 | 54 / 27 | 12 / 6 | 12 / 6 |
Matrix / MatrixStereo | 62 / 31 | 54 / 27 | 3 / 1 | 6 / 3 |
FxSend / FxSendStereo | 16 / 16 | 12 / 12 | 4 / 4 | 4 / 4 |
FxReturnStereo | 16 | 12 | 8 | 8 |
MainStereo | 6 | 3 | 1 | 1 |
Dca | 24 | 16 | 8 | 8 |
MuteGroup | 8 | 8 | 8 | 8 |
UfxSend / UfxReturn | 8 / 8 | 8 / 8 | — | 4 units |
Level, mute, name, colour
| Address | Type | Unit |
|---|---|---|
/{Type}/{n}/Level | f | dB, −90 to +10. Unity 0, −90 fully off |
/{Type}/{n}/Mute | T/F | T = muted |
/{Type}/{n}/Name | s | Up to 8 characters |
/{Type}/{n}/Color | R | Packed 0x00RRGGBB |
/{Type}/{n}/MainAssign | T/F | On the main LR bus |
Name and colour are dLive and Avantis only. Neither SQ nor SQ+ carries channel names or colours in its MIDI protocol, so those addresses answer nothing there.
Sends
A send is the destination bus as a path segment under the source channel. There is no
Send keyword.
/Input/1/Aux/4/Level ,f -6.0 input 1 to aux 4, at -6 dB
/Input/1/Aux/4/Enable ,T route it
/Input/1/Group/2/Level ,f 0.0 input 1 to group 2, at unity
/Input/1/AuxStereo/3/Level ,f -3.0 to a stereo aux
Destination types are Aux, Group, FxSend and
Matrix, with their stereo forms. Send levels use the same dB scale as a
fader.
Two limits from the consoles. Avantis has no send routing — levels
work, Enable does not. And on SQ and SQ+ an input cannot send to a
matrix: matrix sources are LR, aux and group.
Pan
| Address | Type | Unit |
|---|---|---|
/{Type}/{n}/Pan | f | −100 hard left, 0 centre, +100 hard right |
/{Type}/{n}/{Bus}/{m}/Pan | f | The same, on a send |
SQ and SQ+ only. Neither dLive nor Avantis exposes pan over MIDI. On the SQ pair it is available on inputs, groups, FX returns and the outputs — not on DCAs, mute groups or FX sends.
DCA and mute groups
/Input/1/Dca/3/Enable ,T put input 1 in DCA 3
/Input/1/MuteGroup/2/Enable ,F take it out of mute group 2 dLive and Avantis only. The SQ pair can mute a DCA and set its level, but membership is not in its protocol.
Preamp
| Address | Type | Unit |
|---|---|---|
/Input/{n}/Trim | f | dB. dLive over MIDI is +5 to +60 |
/Input/{n}/Pad | T/F | Input pad |
/Input/{n}/Phantom | T/F | 48 V |
dLive only, and addressed by socket rather than by channel — 128 of them: 64 local, then two DX expanders of 32.
No Preamp/ sub-block: three parameters do not need one.
Filters and EQ
/Input/1/Filter/1/Freq ,f 120.0 high-pass at 120 Hz
/Input/1/Filter/1/Enable ,T
/Input/1/Eq/2/Freq ,f 1000.0
/Input/1/Eq/2/Gain ,f 3.0
/Input/1/Eq/2/Q ,f 1.0 octaves
/Input/1/Eq/2/Type ,s "Bell"
Filters are their own indexed block, separate from the EQ — so a high-pass is
Filter/1, not an EQ band. dLive has four parametric bands, numbered
1 to 4. Frequencies are hertz, gains are dB, and Q is
bandwidth in octaves.
Type is a string: "Bell", "Lowshelf",
"Highshelf", "Lpf", "Hpf". dLive restricts shelves
and passes to the outer bands.
dLive only. Neither Avantis nor the SQ pair exposes EQ over MIDI.
Scenes and cues
/Scene/Recall ,i 42 recall scene 42
/Cue/Recall ,i 150 recall a cue by its number
/Cue/Go fire the standby cue
/Cue/Next advance dLive and Avantis hold 500 scenes; the SQ pair holds 300. Recalling a scene at the desk sends the same message back, so a scene fired on the surface reaches every subscriber.
Cue lists differ. dLive has 2000 recall IDs but only on the Surface port. The SQ pair recalls cues by position and supports MIDI Show Control. Avantis has no cue list at all — scenes only.
Surface controls
/Strip/1/Fader ,f -6.0
/Strip/1/Mute ,T
/Strip/5/Rotary/2 ,f 0.5
/SoftKey/3/Press ,T
/Ufx/Key ,i 7
/Ufx/Scale ,i 1 All four consoles have 32 assignable MIDI strips. Soft keys are Avantis and the SQ pair — dLive has none in its protocol. UFX is dLive, Avantis and SQ+; plain SQ has none.
Value types
| Tag | Type | Used for |
|---|---|---|
f | float32 | Every engineering value — dB, hertz, octaves, pan |
i | int32 | Scene and cue numbers, UFX key and scale |
s | string | Names, EQ shape |
T / F | boolean | Mute, enable, assign — no data bytes |
I | trigger | Actions like Go |
R | RGB | Colour, packed 0x00RRGGBB |
Values are always engineering units — the number a sound engineer would read off the desk. Never a normalised 0-to-1 float. Each console encodes a fader differently, and ampOSC converts and clamps at the wire, so a client never sees a raw console value.
What each console does
Taken from the manufacturer's published protocol documents, not from what ampOSC will accept. A path that is not supported is accepted and quietly does nothing, so this table is the one to check before building against something.
| dLive | Avantis | SQ | SQ+ | |
|---|---|---|---|---|
| Level, Mute | ✓ | ✓ | ✓ | ✓ |
| Name, Colour | ✓ | ✓ | — | — |
| Send level | ✓ | ✓ | ✓ | ✓ |
| Send Enable (routing) | ✓ | — | ✓ | ✓ |
| Pan and balance | — | — | ✓ | ✓ |
| DCA assignment | ✓ 24 | ✓ 16 | — | — |
| Mute group assignment | ✓ | ✓ | — | — |
| MainAssign | ✓ | ✓ | ✓ | ✓ |
| Preamp — trim, pad, 48V | ✓ | — | — | — |
| EQ and high-pass | ✓ | — | — | — |
| Scenes | 500 | 500 | 300 | 300 |
| Cue list | ✓ Surface | — | ✓ | ✓ |
| MIDI strips | 32 | 32 | 32 | 32 |
| Soft keys | — | ✓ 16 | ✓ 16 | ✓ 16 |
| UFX | ✓ | ✓ | — | ✓ |
| Read a value back | everything | name, colour | everything | everything |
| Metering | — | — | — | — |
Nothing meters. No published protocol reports audio level over the MIDI link, so no client can draw a meter from it. And on the SQ pair the fader law is a console setting no message reports — dLive and Avantis share one fixed law, so this is the one family ampOSC has to be told about.
The protocol itself is published in full: the BroadwayOSC specification · PDF · Markdown.
The protocol itself is published in full: the BroadwayOSC specification · PDF · Markdown.