Manuals
ADM OSC Support
What is ADM OSC?
ADM OSC is based on the Audio Definition Model (ADM), an international standard defined by the ITU and EBU for describing object-based audio. Instead of working with fixed channels, ADM represents audio as individual objects with metadata such as position (azimuth, elevation), level, width, and identity. This makes ADM the foundation for modern immersive audio formats used in broadcast, live production, and spatial audio workflows.
With ADM OSC, this object-based metadata is transmitted in real time using the Open Sound Control (OSC) protocol. This allows external systems—such as mixing consoles, automation systems, or show control software—to control KLANG audio objects dynamically, using ADM-style semantics, without embedding ADM metadata into audio files.
For a detailed technical description of ADM, refer to the official EBU documentation:
https://tech.ebu.ch/publications/adm
How to use it with KLANG
With KOS 5.8+ KLANG processors are ADM compatible directly. The first mix is controlled by ADM messages that are sent to the KLANG processor’s IP address on port 9110
9110. KLANG replies to queries on port
9111.(This is currently not adjustable)
The most simple way to try out ADM OSC with KLANG:
- Start KLANG:app
- Start CONFIG > Offline Editor
- Switch to Mix 1
- Make sure Channel 1 is visible
- Open
KLANG:app > CONFIG > INFO > Set Menu > Send Custom OSC- IP:
processor(this will automatically assign the processor IP and use the correct port9110) - OSC Address:
/adm/obj/1/elev - Argument:
f = Float - Value:
10
- IP:

Supported Commands
Syntax
/adm/obj/<chNumber>/<parameter>
<chNumber> is the channel number of mix to be controlled, e.g. a value in the range 1–128
| Description | OSC Parameter | Type | Range | Comment |
| Azimuth | /azim | f float | –180…180 (wraps around if outside range) | 90 is on the left, 0 in front |
| Elevation | /elev | f float | –90…90 | 0 is on horizon, +90 on top |
| Gain (linear, not in dB!) | /gain | f float | 0…3.16 | |
| Name | /name | s string | ||
| Mute | /mute | i integer | 0 = mute OFF, all other values = mute ON |
Queries
If no argument attached, this is handled as a request and the value is returned, e.g. /object/1/azim, KLANG responds with /object/1/azim f 45.0
Full List of Commands
| OSC Address | Arguments | Range | KLANG | Notes |
|---|---|---|---|---|
/adm/obj/n/azim | float | −180…180° | rx | 0° = front, +90° = left, −90° = right |
/adm/obj/n/elev | float | −90…90° | rx | 0° = horizon, +90° = top |
/adm/obj/n/dist | float | 0…1 | rx | Received and clamped; not used in KLANG rendering |
/adm/obj/n/aed | 3 × float | see azim/elev/dist | rx | Packed azimuth, elevation, distance |
/adm/obj/n/x | float | −1…1 | rx | −1 = left, +1 = right |
/adm/obj/n/y | float | −1…1 | rx | −1 = back, +1 = front |
/adm/obj/n/z | float | −1…1 | rx | −1 = bottom, +1 = top |
/adm/obj/n/xy | 2 × float | −1…1 | rx | Packed X, Y (horizontal) |
/adm/obj/n/xyz | 3 × float | −1…1 | rx | Packed X, Y, Z |
/adm/obj/n/gain | float | 0…≈3.16 | rx | Linear (not dB); capped at ≈+10 dB |
/adm/obj/n/mute | int | 0 / non-0 | rx | 0 = unmuted, any non-zero = muted |
/adm/obj/n/name | string | — | rx | Object label |
/adm/obj/n/w | float | 0…1 | — | Not implemented (query returns 0.0) |
/adm/obj/n/dref | float | 0…1 | — | Not implemented (query returns 1.0) |
/adm/obj/n/dmax | float | — | — | Not implemented (query returns 1.0) |
/adm/env/change | string | — | — | Not implemented |
/adm/lis/xyz | 3 × float | −1…1 | — | Not implemented (listener position) |
/adm/lis/ypr | 3 × float | −180…180° | — | Not implemented (listener orientation) |
rx = received and acted on; all rx rows also answer the no-argument query form. n = channel 1–128.