Get early access

AI in music software

Bitwig and AI: the Controller API, MCP extensions and what they can reach

How code controls Bitwig Studio through its Controller API, how .bwextension and .js files are installed, what the WigAI MCP extension actually exposes, and a safe first test.

By monody7 min read

The short answer. Bitwig lets code reach a project through its open Controller API. A controller extension, written in Java or JavaScript, is installed in Bitwig and can use that API. A community extension called WigAI uses it to run a local MCP server, so an AI client can call a short list of tools. What the API allows is wider than what that one extension exposes, and the difference is the main thing to know before you try it.

"Bitwig AI" and "Bitwig MCP" searches usually mean the same question: can I let Claude or another assistant do something in my Bitwig project? The answer has three layers, and each has a different owner. This guide is based on Bitwig's own pages and on reading one extension's README and source. We did not run Bitwig or the extension, so the walkthrough is documentation and code review, not our test.

Three layers

Layer What it is Who makes it
The Controller API Java and JavaScript interfaces for controlling Bitwig Studio from an extension Bitwig
A controller extension A .bwextension (Java) or .js (JavaScript) file that uses the API Bitwig for the ones it ships, the community for the rest
An MCP extension An extension that also runs an MCP server so an AI client can call tools A third party, such as WigAI

Bitwig's user guide says anyone with knowledge of Java or JavaScript and the MIDI specification can customize the included controller scripts or write their own, and points to the full API documentation under the Dashboard's Help tab, Documentation page. Bitwig's community extensions page says there is a large collection of community extensions and scripts, mostly on developers' GitHub repositories, and that Bitwig's own frameworks are open source in its bitwig-extensions repository under an MIT license.

What the API allows

We looked at the published Controller API library from Bitwig's Maven repository, the one WigAI builds against. Its interfaces include, among many others:

  • Notes in clips. A clip can set, toggle, move and clear steps, which are notes at a position, pitch, velocity and length.
  • Clip launcher slots. A slot can launch, stop, record and create an empty clip.
  • The application. It can undo, redo, create an instrument track and duplicate.
  • Parameters and device remote controls, the surface WigAI uses.

That list is what the API contains. It doesn't mean an extension uses it, and an extension can only reach what its author wrote code for.

Installing an extension

Bitwig's support page How do I add a controller extension or script? gives the steps:

  • .js files (JavaScript). Put the script folder in Documents/Bitwig Studio/Controller Scripts on macOS (the same folder under your user profile on Windows, and ~/Bitwig Studio/Controller Scripts on Linux).
  • .bwextension files (Java). Put the file in Documents/Bitwig Studio/Extensions on macOS, or drag it onto the Bitwig window in version 4.2.5 or later and Bitwig copies it.
  • Then open Bitwig's Preferences, go to Controllers, and detect or add the controller manually.

One example: WigAI

WigAI is a controller extension by one author (its README says MIT license). Its README calls it an MCP server implemented as a Bitwig extension. We read the README and the source on 4 October 2026.

What it needs. The README lists Bitwig Studio 5.2.7 or later, Java 21 to build it, and an AI client that supports the Model Context Protocol. The repository's releases attach a prebuilt WigAI.bwextension. You can also build it with ./gradlew build, which writes the file to build/extensions. The README says to copy it to the extensions folder and activate it in Preferences. Bitwig's page says Controllers, and the README says Extensions, so look in whichever your version shows.

How a client connects. In the source, the server uses the MCP Java SDK's streamable HTTP transport, served by an embedded Jetty at /mcp. The README gives the default address as http://localhost:61169/mcp. The source registers two settings, MCP Host (default localhost) and MCP Port, under Network Settings in the extension's preferences. Your client must support streamable HTTP MCP. With Claude Code the command looks like claude mcp add --transport http wigai http://localhost:61169/mcp, as for any local HTTP MCP server.

Security. We found no authentication or origin check in the server code we read. It listens on the configured host, localhost by default. Anything on your machine that can reach that port can call the tools, so leave the host at localhost and don't expose the port.

Tools it exposes

Names are from the source's tool registrations.

Group Tools
Status status
Transport transport_start, transport_stop
Browsing the project list_tracks, get_track_details, list_devices_on_track, get_device_details, list_scenes, get_clips_in_scene
Launching launch_clip, session_launchSceneByIndex, session_launchSceneByName
Device parameters get_selected_device_parameters, set_selected_device_parameter, set_selected_device_parameters

Parameter writes go to the device you have selected in Bitwig, by parameter index, and the value is checked to be between 0.0 and 1.0.

What it does not expose

Set against the API list above, WigAI has no tool for:

  • Writing or editing notes. The API can, but there is no tool for it here.
  • Creating clips or tracks.
  • Undo or redo, or saving the project.
  • Mixer levels, sends or arrangement edits.
  • Adding or removing devices.

So "Claude controls Bitwig" with this extension means: look around, play and stop, launch clips and scenes, and turn the knobs of one selected device. It doesn't write a bassline. A different extension, or one you write, could do more.

A first check in a throwaway project

None of this was run by us. It is how we would start, from the documentation and the source.

  1. Make a project you don't need. Create a new project, add one instrument track with a clip, save it somewhere disposable.
  2. Install and activate the extension, as above, and open the extension's preferences to see the host and port.
  3. Connect a client with the command or configuration for your client. Ask it to call status. If that fails, nothing else will work.
  4. Read before you write. Call list_tracks and list_devices_on_track and compare the answers with what you see.
  5. Try transport. transport_start then transport_stop.
  6. Select a device in Bitwig, call get_selected_device_parameters, then set one parameter with set_selected_device_parameter. Watch the knob move.
  7. Check undo. Press Bitwig's undo and see whether the parameter change goes back. The extension has no undo tool, and we don't know whether Bitwig treats the change as an undo step, so find out here, not in a real project.
  8. Close the client and deactivate the extension when you are done.

Keep real projects out of it until you know how each tool behaves, and save a copy first.

Taking a part in or out of Bitwig

You don't need an extension to move work. Bitwig's user guide has Exporting MIDI, which writes the notes in the Arranger Timeline, organized by track, and Exporting Audio, which can export selected tracks separately, with a pre-fader option that the guide says helps with stems. Only Arranger Timeline selections can be exported that way, not Launcher clips. For whole projects, see DAWproject, MIDI files and stems, and for the notes-and-audio route between other programs, Move MIDI and stems between DAWs.

A part written in monody leaves as a .mid, as in AI basslines you can edit, and can be imported into Bitwig like any MIDI file. We haven't tried it in Bitwig. monody doesn't open Bitwig projects and doesn't use DAWproject.

If you want a DAW with the assistant built in

An extension adds tools to a DAW that wasn't built around them. monody's MCP page covers a DAW that is itself an MCP server, which is a different setup from WigAI. For other DAWs with scripting or community bridges, see REAPER and AI and Claude for music production, and for the kinds of AI in DAWs, What is an AI DAW?.

Sources

Checked on 4 October 2026. We did not run Bitwig Studio or WigAI.

Questions

Does Bitwig Studio have AI?
We did not find an assistant in the Bitwig pages we read for this guide, which cover controller extensions, exporting and project exchange. That is not a statement that no AI feature exists anywhere in Bitwig, so check Bitwig's current release notes.
How does an AI client control Bitwig?
Through a controller extension. Bitwig has an open Controller API, and extensions written in Java (.bwextension) or JavaScript (.js) can read and change parts of a project. A community extension such as WigAI turns some of that into MCP tools that a client like Claude can call.
What is the difference between a .bwextension and a .js file?
Bitwig's support page says controller support comes as .js files (JavaScript) or .bwextension files (Java). They go in different folders, Controller Scripts for .js and Extensions for .bwextension, and you then add the controller in Preferences. Since Bitwig Studio 4.2.5 you can drag a .bwextension onto the window.
What can WigAI do in a Bitwig project?
As we read its source, it reports status, lists tracks, devices, scenes and clips, starts and stops the transport, launches clips and scenes, and reads and sets parameters of the device you have selected. It has no tools for writing notes, creating clips, undoing or saving. We did not run it.
Can I move a Bitwig project to another DAW?
Yes, in a few ways, with different limits. Bitwig exports MIDI and audio, exports DAWproject, and imports Ableton Live and FL Studio projects. Our DAWproject guide goes through what each carries.