I’ve written about Bitwig controller scripts for Arturia’s Beatstep Pro step sequencer before. After getting some good mileage out of justlep’s Bitwig scripts, I found myself wanting a little more. In particular, I wanted support for controlling a track’s primary device parameters and macros without having to manually assign the encoders.
So I decided to write a new script from scratch to do just that, in addition to using each of the BSP’s sequencers in Bitwig. I also added some code so the step buttons and pads can (in control mode) be used to navigate tracks, select presets in the preset brower, and control the selected track’s volume and arm/solo/mute state.
You can get source and release versions of the script at https://github.com/benschmaus/bitwig-beatsteppro. And here are some diagrams that show how various functions map to the controls on the BSP.
In order for the script to work, you need to load a template onto your BSP. The template makes the following minor adjustments to the factory template:
- encoders send relative values instead of absolute values; this avoids parameter jumping
- step buttons send midi output over both USB and MIDI ports (factory template just sends over MIDI but not USB)
To load the template, you need to import it into Arturia’s MIDI Control Center Software. It’s pretty easy. You just click the import button and select the template, which in our case is BeatstepBitwig.beatsteppro.
To install the script, if you don’t have any other Factotumo controller scripts installed, copy the Factotumo directory (from a release zip or the src directly) to your Bitwig controller scripts directory. If you have other Factotumo scripts installed, then copy the BeatstepPro folder to the existing Factotumo directory under your Bitwig controller scripts directory.
The last step is to change the channel for control mode to 3 instead of the default of 1. To do this, simply select control mode on your BSP, press and hold the “chan” button and select the 3rd step button. Step 3 should be highlighted in red after the assignment.
The script could be extended with additional functions, e.g., clip/scene launching, which I’m considering adding. As it is, I’ve found this script to be a nice alternative to existing options, and the code should be straightforward to extend. (In contrast, the justlep script is built around a custom framework that proved challenging to extend to enable primary device parameter/macro control by default from the encoders.) If anyone’s interested in new functionality for the script let me know. And happy Bitwiggling!