This application provides a link between the Behringer X32 Sound-mixer and MQTT topics. It uses the OSC protocol to listen for changes on different OSC addresses and then publishes the correct values to the MQTT broker.
Configuration is done using a config file. Either located in .
or /etc/x32-mqtt
. The file should be named x32-mqtt.y[a]ml
.
If no config file is found the default are loaded and an attempt to write a new config file to current directory is made.
The program must be compiled in a golang environment. No external dependencies are required to the final binary.
The topics used by the software follows the same syntax as the X32 mixers OSC addresses. Each address is reflected to its own topic with retention to allow user interfaces to load the current state from the topic.
Each mixer address is also mirrored to a "set" topic. The config file can specify a prefix for all MQTT topics, used for both reads and writes (set).
Example:
Topic | Payload | Description |
---|---|---|
<prefix>/ch/02/config/name |
{"value": "Channel 02", "type": "string" } |
Report a new channel name |
<prefix>/set/ch/02/config/name |
{"value": "Mychannel", "type": "string" } |
Set a new name for channel 02 |
Since OSC can send several values on the same address depending on the configuration object each payload consists of a JSON encoded array of objects. Each object contains information about the value and the binary format used for the value.
Example:
[
{
"value": 0.75,
"type": "float32"
}
]
Note: The type is always needed when using a set topic (or the software does not know how to send the data).
OSC addresses for the X32 mixer have been documented unofficially in this document.
A docker container can be built using the included Dockerfile like so:
docker build -t insektionen/x32-mqtt .