Barely documented. Don’t ask chatgpt 🙂 Resources I’ve found:

https://www.youtube.com/watch?v=jSiF7tmkLHE

https://www.bitwig.com/support/technical_support/how-do-i-add-a-controller-extension-or-script-17

https://github.com/bitwig/bitwig-extensions

In the folder of your bitwig installation, you may find the API documentation:

<<bitwig programm folder>>/resources/doc/control-surface/api/help-doc.html#overview

Few first hints

In Bitwig, click on the bitwig symbol in the middle of the window title bar, then go to Help. Then documentation in the left pane of the dialog. Find controller API reference on the right side of the window. click on new project. Give it a name, add your company name, choose the folder where you want to develop your java controller script. It will be saved into a sub folder with the name you gave for the script.

Install maven and jdk (commands for Debian, jdk number may differ, or you likely have to current version installed anyway):

sudo apt install maven openjdk-21-jdk

The example code just requires API version 1. So you may change in /src/main/java/com/company name/*Definition.java:

public int getRequiredAPIVersion()
{
return 1;
}

Then only increase the value, if you use functions from newer API versions.

Go to the top folder of your created project an run:

mvn install

Find the *.bwextension file under project folder/target

Linux: copy it to your user folder /Bitwig Studio/Extension
Mac: copy it to Documents/Bitwig Studio/Extensions

Load your script in bitwig: click on the bitwig symbol in the middle of the window title bar, then go to Settings. Find Controller in the left pane. Hit „add controller“ on the right side. You should find your controller extension under the company name that you used when creating the java extension.