Bitwig Studio Tutorial 1:
How to create named Controllers.

5 Days ago Bitwig Studio was finally released after many years of development.

It is a great Audio Application for Creative Music Making with some similarities to Ableton Live, but enough new concepts of it’s own to set it apart.
Since it is a Version 1.0, some things aren’t completely there yet. As many people found out, you currently can’t for instance have named Midi Devices if they aren’t on the list of factory supported ones. If you create several “Generic Keyboards”, all are called “Midi Keyboard” in the Device Selection Dropdown, which makes it hard to select the one you want to use.

EDIT: Since Bitwig Studio Version 1.1 this is no longer the case, one can simply doubleclick on the Controller Name in Preferences and Change it. With that said, some of the below may still provide useful so I leave it here. Make sure to check the most current API Docs in you Bitwig Studio installation for updates on the syntax.

EDIT2: Since Bitwig Studio Version 2.0, many things have changed in the API.
Please be aware that this tutorial was for version 1.0 and no longer represents the latest state of the API.

The fix for this is very simple, but needs a bit of tinkering with Controller Scripts – but don’t fear, no Voodoo required ;-)
You can even see it as a golden opportunity to get a first look at the mighty Controller API Bitwig offers …  :-D

It’s dead easy in fact, so let’s dive right in and create a named Controller Script for a Standard Keyboard:

  1. Go to the BWS installation directory and locate the resources\controller\generic folder. This is on Windows, on OSX you have to look into the “package”, on Linux it should be a similar path.
  2. In there you find the “Generic MIDI Keyboard.control.js”. Bitwig Controller Scripts are written in Java Script, therefore the file ending .js.
  3. Create a copy of this file and name it according to your Keyboard or Controller. I’ll use “Acme” in this example, so my Script is called “Acme Keyboard.control.js” now.
  4. Now move this copy to the Bitwig User Folder for Controller Scripts, so that it isn’t touched when you update Bitwig Studio.
    On Windows this is:  C:\Users\YourUserName\Documents\Bitwig Studio\Controller Scripts
    On OSX it is located in: Users/YourUserName/Documents/Bitwig Studio/Controller Scripts
  5. Open the script in a good text editor. Don’t use a Software like Word or Libre Office, those will add formatting code and other weird stuff and may make the script unusable. I would highly recommend Komodo Edit, a free Cross-Platform Editor with great functionality. You can download it here: Komodo Edit
  6. At the top you find two lines:
    host.defineController("Generic", "MIDI Keyboard", "1.0", "6E55D132-1846-4C64-9F97-48041F2D9B96");
    host.defineMidiPorts(1, 0);

    The first line defines the name of the Controller and it’s unique Identifier, the second defines how many In- and Outputs it has, in this case One Input and Zero Outputs – “(1, 1)” would be One In- and One Output.

  7. For the sake of this example, change it to something like the following (Or use your own Keyboard Names of course):
    host.defineController("Acme", "Acme Keyboard", "1.0", "d84e03d0-b605-11e3-a5e2-0800200c9a66");
    host.defineMidiPorts(1, 0);

    The first entry in the parentheses is the “Folder Name” in which the script will show up in Bitwig Studio. Usually this is the company name.
    The second entry is the name of the actual device.
    The third is the version number, just leave it at “1.0”.
    And finally there is the “Universally Unique IDentifier”, UUID for short, a number that is supposed to be unique even if you create millions of them. But don’t fear, simply go to this address: UUID Generator  and copy the UUID shown on top. Each time you go there a new one will be generated and shown, so even if you create a dozen, each will be unique if you refresh the page.

  8. Finally, look some lines further down for this one:
    host.getMidiInPort(0).createNoteInput("MIDI Keyboard");

    This line defines the actual Name that is shown in the Track Input selector.

  9. Change it to:
    host.getMidiInPort(0).createNoteInput("Acme Keyboard");

    And that’s it!

    If you save the file, BWS should find it and offer it to you in the Preferences/Controllers Tab Dropdown:


Here is the final Script if you want it for reference: Acme Keyboard Controller Script for Bitwig

Just create such a Script for each of your Keyboards and if you want, upload them to the KVR Bitwig Ressources Thread for others to use them as well.

EDIT: For more advanced scripts, be sure to also enter them into the Bitwig User Controller database:

If you have any questions, feel free to ask below!



Continue with Part Two

Posted in Audio, English, Tutorials | Tagged , , , | Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *