midi2key-ng
About
Map Buttons, Knobs and Sliders of your Midi Controller to Different Functions. With GUI. Developed for Linux (x11 & wayland) and a Behringer X Touch Mini, but most features are also working on Windows/MacOS and with other Midi Controllers.
Features
Give your midicontroller the ability to:
- emulate key presses or combos
- wayland: use e.g. ydotool console command
- write text
- wayland: use e.g. ydotool console command
- run console commands
- control your audio (currently only for linux)
- mute/unmute/toggle your input/output devices or even specific applications
- increase/decrease/set volume of your input/output devices or even specific applications
Screenshots
How to Install
Option 1: Download precompiled binary (Linux, Windows, MacOS)
Download a precompiled binary from the latest Release.
Option 2: Fetch using go (Linux, Windows, MacOS)
The repository can be fetched and installed using Go.
go install -v github.com/m10x/midi2key-ng@latest
Roadmap
- update fyne (versions higher than 2.4.1 are throwing errors)
- check why systray icon is missing after fyne has been updated
- build midi2key-ng 1.1.0 executables (cross compiling didn't work anymore using the script)
- warn if key is already assigend
- reorder rows
- multiple profiles
- hotkeys to start/stop listening
- implement soundboard functionality using beep
- add mouse emulation functionalities
- add optional textbox with log output
- add code comments
- export / import Key Mapping
- improve design, layout etc.
- test other midi controllers
- add Windows Audio Control
- add MacOS Audio Control
For Developers
sudo apt install libx11-dev xorg-dev libxtst-dev
sudo apt-get install libasound2-dev
For Wayland
- currently there are no usable golang libraries to emulate e.g. keypresses on wayland. However as a workaround it's possible to use commandline tools like ydotool:
Credits
Frontend Framework:
fyne
https://fyne.io/
MIDI Library:
gomidi
https://gitlab.com/gomidi/midi/
https://pkg.go.dev/gitlab.com/gomidi/midi/v2
Simulate Keyboard + Mouse
robot-go https://github.com/go-vgo/robotgo