BitX is a βClyphX-styleβ command system for Bitwig Studio.
You control your project by naming clips and cue markers with special commands like:
()BPM 122:8 ()LIR Bass1:2 ()MPCXD 134 ()RSND
BitX reads those names, parses the commands, and manipulates Bitwig: BPM, sends, instruments, FX racks, note filters, external synths via Program Change, OSC, and more.
- Download https://personalaudio.lemonsqueezy.com/
- Create a 'PerSonal' folder inside the Bitwig Studio Extensions folder and places the scripts inside of it
- Restart Bitwig, then go to
Settings β Controllers β Add Controller β Per-Sonal β BitX
π‘ Optional DisplayApp only for MacOS:
The optional external display app is signed, but macOS might block it the first time.
Go to System Settings β Security & Privacy and click Allow.
You donβt have to compile the project β just drop in the compiled extension.
BitX watches Clip Launcher clips and Arranger cue markers.
Any name that contains commands starting with () is parsed.
You can chain multiple commands in one clip name:
()BPM 120 ()SMW Hello World ()SPN Starting set! ()MPCXD 210
β
Spaces between commands are allowed
β
Commands can have arguments (e.g. 120:8, Bass 1:3, C2:G5)
Command groups:
| Group | Description |
|---|---|
| π Transport & timing | BPM, time signature |
| π Track utilities | Sends, channel/note filters |
| πΉ Bitwig devices | Drum Machine, Instrument Selector, FX Selector |
| πΌ External synths | MIDI Program Change, Korg XD helper |
| π¬ UI & OSC | Popups, display window, OSC out |
| π― Navigation | Jump by track and clip name |
In Bitwigβs Controller Preferences, youβll find:
| Setting | Description | Default |
|---|---|---|
| Number of tracks | Visible tracks in the TrackBank | 32 |
| Number of scenes | Scenes per TrackBank | 128 |
| Number of layers | Layers per selector | 32 |
| Number of sends | Sends per track | 4 |
| Display Window | Show/hide external JavaFX window | Off |
| OSC Send IP / Port | OSC target | 127.0.0.1 : 8000 |
| OSC Cursor Remotes Output | Which OSC output receives cursor remotes | Output 1 |
| Support me | Opens support link β€οΈ | β |
BitX can emit the currently active Remote Controls page (selected device / track remote / project remote) so external apps can bind controls in sync with Bitwig.
- In Preferences β OSC, set your OSC outputs (host/port) and enable them.
- Pick Bitx Cursor Remotes Output to choose which output receives the cursor remotes data.
- Restart the controller after changing output settings.
BitX listens for:
/torsot1script/cc <channel> <cc> <value> <targetType> <targetTrack> <targetPage> <label>
This message updates the display and can trigger a cursorβremotes snapshot, but the output also updates when the active Remote Controls page or values change.
BitX sends:
/bitx/cursorremotes/page <pageName>
/bitx/cursorremotes/knob1 <value> <name>
/bitx/cursorremotes/knob2 <value> <name>
...
/bitx/cursorremotes/knob8 <value> <name>
Notes:
valueis normalized 0.0..1.0.- If a slot has no remote,
nameis"0"andvalueis0.0.
Set or transition BPM.
()BPM 124 β sets tempo instantly to 124 BPM
()BPM 124:8 β transitions to 124 BPM over 8 bars
Format:
()BPM <targetBPM>[:<bars>]
Set time signature.
()STS 3:4
()STS 7:8
Format:
()STS <numerator>:<denominator>
| Numerator | 1β32 |
|---|---|
| Denominator | 1, 2, 4, 8, 16, 32 |
Set Channel Filter allowed MIDI channels.
()SCF 1:5:9
- Uses the first Channel Filter device on the track.
- Disables all channels, then enables 1, 5, 9.
Format:
()SCF <ch1>:<ch2>:<ch3>...
Channels: 1β16
Set Note Filter key range.
()SNF D1:E5
()SNF C-2:G8
Format:
()SNF <minNote>:<maxNote>
Set Note Transpose.
()SNT 2
()SNT -1:12
()SNT 1:7:-25
Format:
()SNT <octave>[:<coarse>[:<fine>]]
| Parameter | Range | Notes |
|---|---|---|
| Octave | -3 β¦ +3 | |
| Coarse | -48 β¦ +48 | semitones |
| Fine | -100 β¦ +100 | mapped to -200%..+200% |
Select Instrument layer by name.
()LIR Bass 1
()LIR Keyscape Pad:2
Format:
()LIR <layerName>[:<remotePageIndex>]
Select FX layer by name.
()LFR Reverb Long
()LFR CrunchDelay:3
Format:
()LFR <fxLayerName>[:<remotePageIndex>]
Load Drum Rack preset.
()LDR 909_Kicks
()LDR IDM_Drums_01
Format:
()LDR <presetName>
Reset all sends on all visible tracks.
()RSND
Format:
()RSND
Generic MIDI Program Change.
()MPC 10:1:5:2
()MPC *:*:3:*
()MPC 42:::15
| Arg | Range | Description |
|---|---|---|
| Program | 1β128 | Converted to 0β127 |
| Bank MSB | 1β128 | Converted to 0β127 |
| Bank LSB | 1β128 | Converted to 0β127 |
| Channel | 1β16 | Converted to 0β15 |
β
Use * or leave empty to skip that parameter.
Korg Minilogue XD slot selector (1β500).
()MPCXD 1
()MPCXD 137
()MPCXD 500
Format:
()MPCXD <slot>
Show message in the external Display Window.
()SMW Hello World
Show Bitwig popup notification.
()SPN Drop coming up!
Send OSC message.
()OSC /bitx/section 1 intro
()OSC /lights/scene 3
()OSC /fx/reverb 0.5
Jump to track & clip by name.
()JUMPTO Bassline:Verse A
()BPM 124:8 ()SMW Warming up ()SPN Transitioning tempo
()LIR Bass 1:2 ()SNF D1:E5 ()SNT 1:7
()MPCXD 210 ()SCF 1:3:5 ()SPN XD slot 210
()LFR Big Reverb:1 ()RSND ()OSC /lights/scene 5
| Device | UUID | Description |
|---|---|---|
| Instrument Selector | 9588fbcf-721a-438b-8555-97e4231f7d2c |
Controls instrument layers |
| FX Selector | 956e396b-07c5-4430-a58d-8dcfc316522a |
Controls FX layers |
| Channel Filter | c5a1bb2d-a589-4fda-b3cf-911cfd6297be |
Enables/disables MIDI channels |
| Note Filter | ef7559c8-49ae-4657-95be-11abb896c969 |
Sets note range |
| Note Transpose | 0815cd9e-3a31-4429-a268-dabd952a3b68 |
Shifts notes |
| MIDI Program Change (MPC) | 429c7dcb-6863-48bc-becc-508463841e3b |
External synth control |
Developed by Creating Spaces
πΆ Musician β’ π§ Developer β’ π« Space Creator
Support at https://personalaudio.lemonsqueezy.com/ π