Nice job. Feels like there's a bit of misunderstanding of what this project is. It has nothing to do with audio - it's purely a means of mapping MIDI to shell commands.
There was (still is) a very popular program called BOME Midi Translator that did something similar - think of it like AutoHotKey but specifically for midi.
Back when I made heavy use of Kontakt libraries I got frustrated at the lack of an easy way to audition the patches (of which there could be hundreds on a single sampler). To get around it, I created a Bome script so when I pressed an unused button on my midi controller it would trigger a mouse click to advance to the next patch in my DAW and then send a note-on / note-off for C4 for half a second.
That may not seem like an obvious use-case when only thinking about a piano, but since it's mapping MIDI keys to commands, I guess it should be able — or at least no very far from being able — to map ergonomic MIDI controllers to actions that are not as ergonomic with the usual keyboard / mouse / trackball / touchpad most people use.
I wrote what I believe is a similar tool but with completely different goals initially: https://github.com/Arkanosis/smhkd ; I use it with a cheap MIDI controller (namely the KORG nanoKONTROL2) and was considering using another one with motorized faders (namely the Icon Platform M).
MIDI controllers are great for all kinds of non-musical things like:
- setting the volume / balance / solo / mute for speakers / multiple headsets and mixing multiple applications (eg. using pactl);
- setting the zoom level / brightness for camera / webcam (eg. using v4l2-ctl) ;
- setting the source / brightness for monitors (eg. using ddcutil)…
I see I'm not the first to have this idea haha. I suppose you could use additional midi controllers as extra "function" keys, for things like volume control, brightness, etc.. Could be useful especially if using smaller keyboards without a numpad or a function row.
There is an existing system for chorded text input via a piano-like system, known as the Michela stenotype. Plover supports it. The basic input is two ranges, each for one hand: the left-hand range goes D#-C, the right-hand is E-C#. The basic assignment is as follows:
D# F \ pinky \
E S / |
F C \ ring |
F# Z / |
G P \ middle |
G# N / /
A R \ index \
A# X / |
B I \ thumb |
C U / /
E u \ thumb \
F i / |
F# e \ index |
G a / /
G# n \ middle \
A p / |
A# z \ ring |
B c / |
C s \ pinky |
C# f / /
Basic usage picks one letter at most from each of the four groupings: the l.h. accounts for syllable onset (split into an initial and an intermediate component), the r.h. for syllable rime (split into a nucleus-like and coda-like component). Some very brief special cases to further illustrate the system (not accounting for special usages or abbreviations, which are even more complex):
FC/cf - h as in hat, or -st as in best
SC/cs - v as in vie, leave
FZ/zf - th, voiced or unvoiced
SZ/zs - used for hard ts or dz originally, but often repurposed in modern use
FP/pf - t as in tie
SP/ps - ch as in China
CP/pc - k sound, as in because
ZP/pz - j sound, as in just
FN/nf - -nd- as in and
SN/ns - -ng- as in sing
CN/nc - w as in wine
ZN/nz - y as in yes
FCP/pcf - b as in because (compare h, t, k)
SCP/pcs - d as in day (compare v, ch, k)
FZP/pzf - -shun ending, or hard g (compare t, th, j)
SZP/pzs - m sound (compare ch, j)
FCN/ncf - r sound (compare h, w, -nd)
SCN/ncs - l sound (compare v, w, -ng)
FZN/nzf - nt sound (compare th, nd, y)
SZN/nzs - x, ks or -ction (compare nd, y)
X - also internal -s- as in observe
RI - -l- as in glass
XI - internal -w- or -f- as in dwarf
RU - internal -m-
XU - internal -n-
UI - internal -p-, -b-
RIU - internal -t-, -d-
XIU - internal k/hard g sound
RX - reserved for disambig.
ie - short o as in lot
ua - long a as in face
ue - long e as in fleece
ui - long i as in pie
ia - -ou- as in our
ea - -ea- as in bread
uie - long o as in foot
uia - long u as in music
iea - -oa- as in load
FCR - str- as in stream
FCRI - spl- as in splash
FCRU - spr- as in sprint
FCXIU - scr- as in scroll
Uu - -aw- as in dawn
Ii - -oy- as in choice
There was (still is) a very popular program called BOME Midi Translator that did something similar - think of it like AutoHotKey but specifically for midi.
Back when I made heavy use of Kontakt libraries I got frustrated at the lack of an easy way to audition the patches (of which there could be hundreds on a single sampler). To get around it, I created a Bome script so when I pressed an unused button on my midi controller it would trigger a mouse click to advance to the next patch in my DAW and then send a note-on / note-off for C4 for half a second.
Made previewing the sounds much easier.
That may not seem like an obvious use-case when only thinking about a piano, but since it's mapping MIDI keys to commands, I guess it should be able — or at least no very far from being able — to map ergonomic MIDI controllers to actions that are not as ergonomic with the usual keyboard / mouse / trackball / touchpad most people use.
I wrote what I believe is a similar tool but with completely different goals initially: https://github.com/Arkanosis/smhkd ; I use it with a cheap MIDI controller (namely the KORG nanoKONTROL2) and was considering using another one with motorized faders (namely the Icon Platform M).
MIDI controllers are great for all kinds of non-musical things like: - setting the volume / balance / solo / mute for speakers / multiple headsets and mixing multiple applications (eg. using pactl); - setting the zoom level / brightness for camera / webcam (eg. using v4l2-ctl) ; - setting the source / brightness for monitors (eg. using ddcutil)…
- https://gitlab.com/enetheru/midi2input
- https://midimonster.net/
Funny how we don't hear that movement much...
https://www.youtube.com/watch?v=pUO7Ip0Xc10