Skip to content

wimvandenborre/BitX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

77 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ›οΈ 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

  1. Download https://personalaudio.lemonsqueezy.com/
  2. Create a 'PerSonal' folder inside the Bitwig Studio Extensions folder and places the scripts inside of it
  3. 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

  1. In Preferences β†’ OSC, set your OSC outputs (host/port) and enable them.
  2. Pick Bitx Cursor Remotes Output to choose which output receives the cursor remotes data.
  3. 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:

  • value is normalized 0.0..1.0.
  • If a slot has no remote, name is "0" and value is 0.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/ πŸ’–

About

Clyphx for Bitwig

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors