{"id":22765183,"url":"https://github.com/tomasmark79/bitwig-transport-control-script","last_synced_at":"2025-03-30T10:16:29.944Z","repository":{"id":267172250,"uuid":"868507904","full_name":"tomasmark79/bitwig-transport-control-script","owner":"tomasmark79","description":"BTCS came up with the idea of ​​using a 🖱️ mouse with side buttons as Bitwig transport control device.","archived":false,"fork":false,"pushed_at":"2024-10-14T06:30:15.000Z","size":649,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T23:35:53.470Z","etag":null,"topics":["bitwig","buttons","daw","mouse","play","repeat","spacebar","stop","transport","yabridge"],"latest_commit_sha":null,"homepage":"https://digitalspace.name","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomasmark79.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-06T15:07:07.000Z","updated_at":"2025-03-02T14:51:09.000Z","dependencies_parsed_at":"2024-12-11T00:46:29.687Z","dependency_job_id":null,"html_url":"https://github.com/tomasmark79/bitwig-transport-control-script","commit_stats":null,"previous_names":["tomasmark79/bitwig-transport-control-script"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2Fbitwig-transport-control-script","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2Fbitwig-transport-control-script/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2Fbitwig-transport-control-script/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2Fbitwig-transport-control-script/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomasmark79","download_url":"https://codeload.github.com/tomasmark79/bitwig-transport-control-script/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246301994,"owners_count":20755514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitwig","buttons","daw","mouse","play","repeat","spacebar","stop","transport","yabridge"],"created_at":"2024-12-11T12:12:06.106Z","updated_at":"2025-03-30T10:16:29.915Z","avatar_url":"https://github.com/tomasmark79.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BTCS\n\n##### bitwig-transport-control-script\n\n---\n\n#### preamble\nis 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.\nI 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.\nAs 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.\n\n---\n\n#### success\nFinally, I came up with the idea of ​​using a 🖱️ mouse with side buttons that every user has available. 🐁🍒🫐\n\n💥 **It is very intuitive and addictive!** 💥\n\nAnd 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!\n\n---\n\n#### Important note\n\nFor 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. \n    \nSome 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.**\n\n#### mouse layout\n\n![bitwig-button-transport-mouse-buttons-map](https://github.com/user-attachments/assets/58d5145c-df24-419e-b162-d2ffdc2ada4b)\n\n#### Keystrokes\n\u003cimg width=\"123\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1d697483-211b-4ee4-b1c3-f63c5516d836\"\u003e\n\n - Button 4(b:8) toggle **Play/Stop** from arranger start (key spacebar)\n   \n - Button 5(b:9) toggle **Play/Stop** from arranger cursor (key alt+p)\n\n - Button 6 - used mouse memory to reproduce keystroke\n\n\u003cimg width=\"54\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d215452d-6229-4111-b9e7-30695817c846\"\u003e\n\n - Ctrl + Button 5(b:9) toggle **Arm** from arranger start (key control+u)\n \n - Shift + Button 5(b:9) toggle **Solo** from arranger start (key shift+s)\n   \n - Alt + Button 5(b:9) toggle **Mute** from arranger cursor (key alt+w)\n \nreserved for future\n\n - Ctrl + Button 4(b:8) toggle **??** from arranger start (key control+??)\n \n - Shift + Button 4(b:8) toggle **??** from arranger start (key shift+??)\n   \n - Alt + Button 4(b:8) toggle **??** from arranger cursor (key alt+??)\n\nnote: be aware please that mouse buttons 4 and 5 are represented in my Linux OS as b:8 and b:9 in xbindkeys process\n\n#### recomendation\n\n\"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.\"\n\n---\n\n#### installation and requirements\n\n`Any Linux with X11 window server is required`\n\napt\n```\nsudo apt update \u0026\u0026 sudo apt install git xbindkeys xdotool -y \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\ndnf\n```\nsudo dnf install -y git xbindkeys xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\nyum\n```\nsudo yum install -y git xbindkeys xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\npacman\n```\nsudo pacman -S --noconfirm git xbindkeys xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\nnix-env\n```\nnix-env -iA nixpkgs.git nixpkgs.xbindkeys nixpkgs.xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\nzypper\n```\nsudo zypper install -y git xbindkeys xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\nemerge\n```\nsudo emerge git xbindkeys xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\neopg\n```\nsudo eopkg install -y git xbindkeys xdotool \u0026\u0026 git clone https://github.com/tomasmark79/bitwig-transport-control-script.git \u0026\u0026 cd bitwig-transport-control-script/ \u0026\u0026 chmod +x start_environment.sh \u0026\u0026 chmod +x stop_environment.sh \u0026\u0026 chmod +x toggle_parser.sh \u0026\u0026 chmod +x key_sender.sh \u0026\u0026 ls -l\n```\n\n#### project files description\n\n###### you will want to edit\n\nFile `.xbindkeysrc_bitwig` is responsible for definition od shortcuts at high level.\nFile `toggle_parser.sh` is shell script responsible for specific shortcuts behavior.\n\n###### you won't need to edit\n\nFile `start_environment.sh` is shell script responsible for monitoring events from devices.\nFile `stop_environment.sh` will stop all operations in memory.\nFile `key_sender.sh` is shell script responsible for sending commands to Bitwig Studio window.\n\n#### start service\n**for start the service just run the file `./start_environment.sh`**\n\n#### stop service\n`./stop_environment.sh`\n\n\n\n#### issues\n\n 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`.\n\n---\n#daw #bitwig #transport #spacebar #daw #midi #mouse #buttons\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasmark79%2Fbitwig-transport-control-script","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomasmark79%2Fbitwig-transport-control-script","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasmark79%2Fbitwig-transport-control-script/lists"}