For the most part, the original Non-Mixer OSC Control documentation applies to Non-Mixer-XT:
http://non.tuxfamily.org/mixer/doc/MANUAL.html#n:1.2.3.1.1.
Notable changes include the ability to query the value of any parameter (input and output) with an osc message, the abitily to bypass plugins with an osc message and the ability to query retrieve the vu-meter's level value).
Non-Mixer-XT exposes all controllable parameters with a generic OSC API. Exposed parameters are refered to here as "signals".
There are two types of signals :
- Input signals (plugin parameters, gain and mute state, etc): can have their value set and queried with an osc message.
- Output signals (meter level, plugin output control such as a compressor's gain reduction, etc): can only be queried.
The OSC path of a signal is automatically generated as follows:
/strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]
Sending a value between 0.0
and 1.0
(integer or float) will change the signal's value,
sending a message with no value is considered as a query and will send the signal's current value back to the sender.
An alternative path is also available, that uses exact values (integer or float) instead of normalized ones (e.g. gain would go from -70 to +6):
/strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]/unscaled
Plugins that can be bypassed (i.e. that have the same number of audio inputs and outputs, or that have 1 input and 2 outputs) have an extra signal exposed to allow changing their bypass state with an osc message:
/strip/[STRIP_NAME]/[MODULE_NAME]/dsp/bypass
The meter level of a strip is also exposed with a dedicated output signal. Only one value is returned regardless of the number of audio outputs (the loudest channel's level is returned):
/strip/[STRIP_NAME]/Meter/Level%20(dB)
Output parameters of plugins (e.g. a compressor's gain reduction) are not shown generic plugin interfaces but their signals can be quiered, see Signal listing.
When Non-Mixer-XT is managed by a Non Session Manager, signal paths are all prepended with Non-Mixer-XT.clientID
:
Non-Mixer-XT.clientID/strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]
The absence of leading slash is not a typing error. It does not comply with the OSC specification but is supported in some implementations such as liblo. This may change in a future version.
Non-Mixer-XT handles a few global OSC commands to help building remote controllers. These commands are not signals and thus are not affected under Non Session Managment.
/signal/list
For each signal, the following message will be sent back to the sender:
/reply ,sssfff "/signal/list" signal_path direction min max default
Arguments
"/signal/list"
: indicates which command the reply is forsignal_path
: osc path the signaldirection
: "in" or "out"min
: minimum valuemin
: maximum valuedefault
: default value
When all replies have been sent, an additional message is sent to indicate the reply is complete:
/reply ,s "/signal/list"
/signal/list ,s prefix
Works like the previous command except only signal's whose paths start with prefix
will be listed.
/signal/infos ,s signal_path
If provided signal_path
exists, the following message will be sent back to the sender:
/reply ,sssis "/signal/infos" signal_path type label
Arguments
"/signal/list"
: indicates which command the reply is forsignal_path
: indicates which signal the reply is fortype
: indicates which type of parameter is controlled by the signal, it's mostly useful to determine whether a parameter can be controlled by a toggle button or not:0
: linear1
: logarithmic2
: boolean3
: LV2 integer4
: LV2 integer enumeration
label
: for LV2 plugins, the parameter's symbol is used to generate the OSC path of the signal. This provides a human readable name for the parameter.
To enable signal subscription, one must first send the following command to Non-Mixer-XT:
/signal/hello ,ss name url
Arguments
name
: name associated with the controllerurl
: server url to which update messages will be sent (e.g:osc.udp://127.0.0.1:12345
)
/signal/connect ,ss destination_path source_path
Will make Non-Mixer-XT send a message whenever the signal's value changes. This works only for input signals.
Arguments
destination_path
: osc path used for update messagessource_path
: osc path of subscribe signal
/signal/disconnect ,ss destination_path source_path
Will cancel the signal subscription.
Arguments
destination_path
: osc path used for update messagessource_path
: osc path of subscribe signal