Tools for Behringer X32 / Midas M32 consoles — emulator, remote GUI, show recording.
Tools for Behringer X32 / Midas M32 digital consoles, written in Go.
The latest build, made from the main branch each time its tests pass:
| System | Download |
|---|---|
| Linux, x86-64 | tabula-linux-amd64.tar.gz |
| Linux, ARM 64-bit (Raspberry Pi 3/4/5 with a 64-bit system) | tabula-linux-arm64.tar.gz |
| Linux, ARM 32-bit (Raspberry Pi 2 or later with a 32-bit system) | tabula-linux-arm.tar.gz |
| macOS, Apple silicon | tabula-darwin-arm64.tar.gz |
| macOS, Intel | tabula-darwin-amd64.tar.gz |
| Windows, x86-64 | tabula-windows-amd64.zip |
Each archive holds both programs, tabula-emu and tabula, with the web GUI
built in: unpack it and run them, nothing to install. Checksums:
SHA256SUMS. On macOS, the binaries are not signed: allow
them once with xattr -d com.apple.quarantine tabula tabula-emu.
Versioned releases, with their notes, are on the releases page.
tabula-emu speaks the console’s OSC protocol on UDP port 10023, so remote
apps — X32-Edit, M32-Edit, Mixing Station, the tabula client — can connect to
it as if it were a console. Use it to prepare a show offline, to develop and
test software, or to learn the console without one.
tabula-emu -scene my-show.scn -save my-show.scn -http :8032
-scene loads a scene file at start, -save writes the state back on exit.-http opens a read-only debug page: every parameter (searchable), the
connected clients, the traffic, and every request the emulator did not
understand — connect an editor and see what is missing.-unhandled-log file.jsonl appends every unhandled request to a file.-library dir keeps the scenes, snippets and presets saved with /save
(from an editor’s library pages) in a directory, one file each
(scene-07.scn, snippet-03.snp…). A scene file copied there as
scene-NN.scn fills slot NN, ready to recall from an editor or from
tabula’s Scenes page.-model picks what /info reports: X32, X32RACK, X32C, X32P, X32CORE, M32, M32R, M32C.
/info, /xinfo, /status, get and set of every parameter (enums by
name or index, floats quantized to the console’s known values), node sets
with multiple type tags, /node, / (echoed), and /xremote: changes
are pushed to the other connected clients.X32GetScene./save, /load, /copy,
/delete, /rename, /add, /showdump./-prefs, /-stat, /-show, /-libs, /-usb,
/-urec, /-action…), as the editors query them when connecting./meters/0…16) with synthetic levels that follow the mix, and
/subscribe, /formatsubscribe, /batchsubscribe, /renew, /unsubscribe.How the emulator simulates the console: audio flow, meters, RTA, effects, and exactly what linking two strips does.
Scene safes and snippet filters on recall: see the plan.
tabula connects to a console (or to tabula-emu) and serves a web GUI,
from the same binary, to any browser on the network — a laptop at the desk
or a phone on stage.
tabula -console 192.168.1.62 -http :8033

ch → 01 → eq → 1), searchable by path or value, each with an
editor; values can also be typed as on the console (-6,
1k20, GATE).
It is read-only until writes are armed, after a confirmation: on a real
console, nothing moves by accident. Every page of the GUI in
detail. -record starts recording as soon as the console is synced, for
unattended recording of a concert (-audio-device hw:CARD=X32,DEV=0
-audio-tracks 1-16 adds the audio).
Later: more band-specific screens.
The protocol work relies on Patrick-Gilles Maillot’s Unofficial X32/M32 OSC Remote Protocol and his tools: https://sites.google.com/site/patrickmaillot/x32.
Source code: https://github.com/yoda-jm/tabula