BitX
Clyphx for Bitwig
Install / Use
/learn @wimvandenborre/BitXREADME
🎛️ BitX – Command-Based Live Control System for Bitwig
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.
🚀 Installation
- 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.
🧠 How it works
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 |
⚙️ Preferences
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 ❤️ | – |
🎛 OSC Cursor Remotes Output (TouchOSC, TouchDesigner, etc.)
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.
Setup
- 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.
Incoming (optional, from Torso T-1)
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.
Outgoing (from BitX)
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.
🧩 Command Reference
1. 🎚 Transport & Timing
()BPM
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>]
()STS
Set time signature.
()STS 3:4
()STS 7:8
Format:
()STS <numerator>:<denominator>
| Numerator | 1–32 | |------------|------| | Denominator | 1, 2, 4, 8, 16, 32 |
2. 🎛 Bitwig Device Utilities (Per Track)
()SCF
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
()SNF
Set Note Filter key range.
()SNF D1:E5
()SNF C-2:G8
Format:
()SNF <minNote>:<maxNote>
()SNT
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% |
3. 🎹 Instrument & FX Selector (Layer-Based)
()LIR
Select Instrument layer by name.
()LIR Bass 1
()LIR Keyscape Pad:2
Format:
()LIR <layerName>[:<remotePageIndex>]
()LFR
Select FX layer by name.
()LFR Reverb Long
()LFR CrunchDelay:3
Format:
()LFR <fxLayerName>[:<remotePageIndex>]
()LDR
Load Drum Rack preset.
()LDR 909_Kicks
()LDR IDM_Drums_01
Format:
()LDR <presetName>
4. 🎚 Sends & Mix
()RSND
Reset all sends on all visible tracks.
()RSND
Format:
()RSND
5. 🎼 External Synths (MIDI Program Change)
()MPC
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.
()MPCXD
Korg Minilogue XD slot selector (1–500).
()MPCXD 1
()MPCXD 137
()MPCXD 500
Format:
()MPCXD <slot>
6. 💬 UI & Feedback
()SMW
Show message in the external Display Window.
()SMW Hello World
()SPN
Show Bitwig popup notification.
()SPN Drop coming up!
()OSC
Send OSC message.
()OSC /bitx/section 1 intro
()OSC /lights/scene 3
()OSC /fx/reverb 0.5
7. 🎯 Navigation & Jumping
()JUMPTO
Jump to track & clip by name.
()JUMPTO Bassline:Verse A
🔗 Chaining Commands – Examples
()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 Reference
| 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 |
💡 Credits
Developed by Creating Spaces
🎶 Musician • 🧠 Developer • 💫 Space Creator
Support at https://personalaudio.lemonsqueezy.com/ 💖
