is a project that was originally created as an effort to solve problems with keyboard control of Bitwig Studio when the user has an active GUI of some third-party plugin open. Many plugins prevent keyboard input from being forwarded to Bitwig Studio, so it is not possible, for example, to call keyboard shortcuts if the plugin window is active and the user is focused on this window. I tried using the global OS hotkeys initially and that works pretty well if only one key is used as the global hotkey. Otherwise, when the global shortcut is composed of several keys, the response to these actions is unsatisfactory. As another option, how to control Bitwig Studio under all circumstances, was to try hacking into the MIDI channel and controlling the MIDI sequences directly. But that's something I haven't been able to do yet, and I'm not sure that the effort put into developing something like this will be worthwhile in the end.
Finally, I came up with the idea of using a 🖱️ mouse with side buttons that every user has available. 🐁🍒🫐
💥 It is very intuitive and addictive! 💥
And as it turns out, not only is it great, but it's also perfectly user-friendly and I got used to it immediately. Come with me and see how I came up with it. And in case you have any other interesting idea, don't hesitate to send it to me!
For the Logit3ch G305, and many more mice it is also possible to use the 6th mouse button thanks to the Logit3ch software, where you can assign any key combination to the number 6 button and save this configuration in the mouse memory.
Some manufacturers including Logite3ch also allow other buttons to be mapped. In that case, you don't need this project and just simply map your own keystrokes for your mouse. In case you have a mouse that does not support hardware storage of keyboard shortcuts with its internal memory, the following project will come in handy. The advantage of using a project is that if you change the mouse, you will still be functional.
-
Button 4(b:8) toggle Play/Stop from arranger start (key spacebar)
-
Button 5(b:9) toggle Play/Stop from arranger cursor (key alt+p)
-
Button 6 - used mouse memory to reproduce keystroke
-
Ctrl + Button 5(b:9) toggle Arm from arranger start (key control+u)
-
Shift + Button 5(b:9) toggle Solo from arranger start (key shift+s)
-
Alt + Button 5(b:9) toggle Mute from arranger cursor (key alt+w)
reserved for future
-
Ctrl + Button 4(b:8) toggle ?? from arranger start (key control+??)
-
Shift + Button 4(b:8) toggle ?? from arranger start (key shift+??)
-
Alt + Button 4(b:8) toggle ?? from arranger cursor (key alt+??)
note: be aware please that mouse buttons 4 and 5 are represented in my Linux OS as b:8 and b:9 in xbindkeys process
"I'm using KDE Plasma, and I have both start and stop scripts managed by global keyboard shortcuts, which is very useful for switching between Bitwig and other applications, such as browsers, where side mouse buttons can also be useful."
Any Linux with X11 window server is required
apt
sudo apt update && sudo apt install git xbindkeys xdotool -y && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
dnf
sudo dnf install -y git xbindkeys xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
yum
sudo yum install -y git xbindkeys xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
pacman
sudo pacman -S --noconfirm git xbindkeys xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
nix-env
nix-env -iA nixpkgs.git nixpkgs.xbindkeys nixpkgs.xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
zypper
sudo zypper install -y git xbindkeys xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
emerge
sudo emerge git xbindkeys xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
eopg
sudo eopkg install -y git xbindkeys xdotool && git clone https://github.com/tomasmark79/bitwig-transport-control-script.git && cd bitwig-transport-control-script/ && chmod +x start_environment.sh && chmod +x stop_environment.sh && chmod +x toggle_parser.sh && chmod +x key_sender.sh && ls -l
File .xbindkeysrc_bitwig
is responsible for definition od shortcuts at high level.
File toggle_parser.sh
is shell script responsible for specific shortcuts behavior.
File start_environment.sh
is shell script responsible for monitoring events from devices.
File stop_environment.sh
will stop all operations in memory.
File key_sender.sh
is shell script responsible for sending commands to Bitwig Studio window.
for start the service just run the file ./start_environment.sh
./stop_environment.sh
If your mouse side buttons are not reacting you will need to check if Xorg is registering clicks to these buttons. Check the ID of each of these buttons and rewrite them in file .xbindkeysrc_bitwig
.
#daw #bitwig #transport #spacebar #daw #midi #mouse #buttons