Written from devices/bitwig/bitwig-studio.third-party-osc.fw-5.jsonEdit on GitHubJSON

Bitwig Studio (Bitwig Studio 5 + DrivenByMoss): OSC control from Claude, scripts and controllers

9 named commands to drive Bitwig Studio over OSC — from Claude (MCP), live-coding environments or a MIDI controller.

  • sourcethird-party OSC API
  • firmwareBitwig Studio 5
  • real unitnot yet checked

Not checked on a real Bitwig Studio yet. Own one? Load a sound or send a control, and tell us whether it worked.

Maker
Bitwig
Version
Bitwig Studio 5 + DrivenByMoss (latest)
Source
third-party OSC API
OSC prefix
/bitwig
README.mdwritten by the community; anyone can improve itEdit

Bitwig Studio — driver companion (DrivenByMoss OSC)

This driver pilots Bitwig Studio 5 through the DrivenByMoss controller extension, which exposes Bitwig over OSC. DrivenByMoss is a community project, but it is officially partnered with Bitwig (it's distributed in the Bitwig controller library).

One-time setup

  1. Install DrivenByMoss in Bitwig: Dashboard → Settings → Controllers → Add Controller → Generic → OSC. DrivenByMoss ships as a built-in option in recent Bitwig versions; if not, install the latest release into ~/Documents/Bitwig Studio/Extensions/ (or the OS-equivalent path).
  2. Configure the OSC ports in the controller's settings panel : set Port to receive on to 8000 (this is what the bridge sends to) and Host to send to / Port to send to to 127.0.0.1 / 9000 (this is what the bridge listens on as reply_port).
  3. Restart the controller (toggle it off/on in the Controller list).

Ports

Direction Port Notes
Bridge → Bitwig UDP 8000 configured in DrivenByMoss as "Port to receive on"
Bitwig → Bridge UDP 9000 DrivenByMoss "Port to send to"

OSC surface exposed to bridge clients

All addresses prefixed by /bitwig. Track and scene indices are 1-based to match DrivenByMoss's convention.

Send to bridge Effect Args
/bitwig/transport/play start playback —
/bitwig/transport/stop stop playback —
/bitwig/transport/tempo set tempo bpm (float, 20..666)
/bitwig/transport/tap tap tempo —
/bitwig/track/{n}/volume set track volume v (float, 0..1) — n 1..8
/bitwig/track/{n}/mute toggle mute on (bool)
/bitwig/track/{n}/solo toggle solo on (bool)
/bitwig/track/{n}/arm toggle record arm on (bool)
/bitwig/scene/{n}/launch fire scene —

What you receive from the bridge

DrivenByMoss auto-emits state changes — no start_listen subscription needed. Any time a value moves in Bitwig (UI or another controller), the bridge re-emits it.

From bridge to client When
/bitwig/transport/tempo tempo change in Bitwig
/bitwig/transport/playing play state changed (0 stopped, 1 playing)
/bitwig/track/{n}/volume volume change on track n
/bitwig/track/{n}/mute mute toggle
/bitwig/track/{n}/solo solo toggle
/bitwig/track/{n}/arm arm toggle

Argument conventions

  • Floats are floats. /bitwig/transport/tempo 120 will be coerced to 120.0 by the bridge but explicit float is safer. Same for volume.
  • Bools accept 0 / 1 or T / F. DrivenByMoss is tolerant on either.
  • Volume is 0..1 in DrivenByMoss; map your DAW fader values accordingly.
  • DrivenByMoss bank size is 8. Track and scene routing covers the currently-banked range. If you address /track/9/..., change the bank in Bitwig first (or extend the driver — paths /track/+ / /track/- shift the bank, not exposed in v1).

Out of scope (v1)

Browser, devices, parameter pages, automation, send/return, cue markers, the wider DrivenByMoss surface. Add them in a follow-up PR as needed.

References

  • DrivenByMoss OSC docs: https://github.com/git-moss/DrivenByMoss-Documentation/blob/master/Generic-Tools-Protocols/Open-Sound-Control-(OSC).md
  • DrivenByMoss releases: https://github.com/git-moss/DrivenByMoss/releases

Use it

Start the bridge with this driver; it forwards named OSC commands to the software:

osc-bridge run --device devices/bitwig/bitwig-studio.third-party-osc.fw-5.json

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /bitwig/transport/play

From Claude or any MCP client, the osc-bridge mcp server exposes this driver as bitwig: ask “what can the Bitwig Studio do?” and it reads this map with list_routes. See the MCP guide.

MIDI controls

9 controls, each with its number, its range and the name to send

OSC commands

Command Arguments Name to send
Transport play /bitwig/transport/play
Transport stop /bitwig/transport/stop
Transport tempo bpm: float /bitwig/transport/tempo
Transport tap /bitwig/transport/tap
Track {n} volume n: int, v: float /bitwig/track/{n}/volume
Track {n} mute n: int, on: bool /bitwig/track/{n}/mute
Track {n} solo n: int, on: bool /bitwig/track/{n}/solo
Track {n} arm n: int, on: bool /bitwig/track/{n}/arm
Scene {n} launch n: int /bitwig/scene/{n}/launch

JSON

Limitations

v1 covers transport (play / stop / tempo), per-track volume / mute / solo / arm for the first 8 tracks (DrivenByMoss bank size), and scene launch for the first 8 scenes. Track and scene indices are 1-based in DrivenByMoss (NOT 0-based like AbletonOSC). Browser, devices, automation, and the wider DrivenByMoss surface are out of scope for v1.

Other versions

The Bitwig Studio is mapped in 4 versions. per Electra preset, per Electra preset, per Electra preset.

Frequently asked questions

Can an AI agent like Claude control the Bitwig Studio?

Yes: SynthHub's hosted MCP server knows the Bitwig Studio's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.