JACK-KEYBOARD(1)
π JACK-KEYBOARD π
okay so bestie, you want to play MIDI with your actual computer keyboard?? like, no piano, no controller, just vibes and your QWERTY?? slay, that's literally what jack-keyboard is β it's from the jack-keyboard(1) manual and it's giving virtual keyboard for JACK MIDI, and honestly? obsessed. πΉβ¨
β¨ SYNOPSIS β¨
jack-keyboard [ -C ] [ -G ] [ -K ] [ -T ] [ -V ] [ -a input port ] [ -k
] [ -r rate ] [ -t ] [ -u ] [ -c channel ] [ -b bank ] [ -p program ] [
-l layout ]
πΈ OPTIONS πΈ
bestie, here's the whole menu, no skips, no cuts, periodt π
-Cβ turns on "keyboard cue", which is two horizontal lines drawn over part of the keyboard π keys under the lower line get mapped to the lower row of your PC keyboard, and keys under the upper line get mapped to the upper row.-Gβ disables the GUI entirely. this makes jack-keyboard look exactly like it did before version 2.0, iykyk π«Ά-Kβ grabs the keyboard. this means jack-keyboard still receives keyboard events even when it doesn't have focus β in other words, you can keep playing while you're mousing around in a whole different window. main character energy fr.
β οΈ note: it's not reliable yet. it does not work when some other application is holding the keyboard grabbed. it does not work with GNOME. and even when it seems to be working, some keyboard events may get lost. π
-Tβ toggles the titlebar, the one that shows your channel/bank/program info. if you also passed-G, this disables the titlebar; otherwise it enables it.-Vβ prints the version number to standard output and exits. bye bestie π-ainput port β automatically connects to the named input port. heads up though: this may cause problems with LASH π-kβ allows connecting to other instances of jack-keyboard (peep PIANOLA MODE below π). without this option, jack-keyboard refuses to connect to any JACK client whose name starts in"jack-keyboard"β that's the anti-loop protection. note that it's impossible to connect an instance of jack-keyboard to itself, even with this option set.-rrate β sets the rate limit to rate, measured in Kbaud. the limit defined by the MIDI specification is31.25. by default this parameter is zero, which means rate limiting is disabled.-tβ sends all MIDI messages with zero time offset, so they play the moment they hit the synth. this was the default behavior before version 1.6, fun fact π§-uβ by default, jack-keyboard does not send program/bank change messages after reconnecting, so the newly connected instrument just stays at its previous settings. this option changes that behaviour. π₯-cchannel β sets the initial MIDI channel to channel; by default it's1.-bbank β sets the initial MIDI bank to bank. with this option, jack-keyboard will send the bank/program change once, when it connects.-pprogram β sets the initial MIDI program to program. with this option, jack-keyboard will send the bank/program change once, when it connects.-llayout β specifies the layout of the computer keyboard you're using. valid arguments areQWERTY,QWERTZ,AZERTY, andDVORAK. default isQWERTY. π¦
π DESCRIPTION π
jack-keyboard is a virtual MIDI keyboard β a program that lets you send JACK MIDI events (play ;-) ) using your PC keyboard. it's kinda similar to vkeybd, except it uses JACK MIDI instead of ALSA, and the keyboard mapping is so much better β it uses the same layout trackers (like Impulse Tracker) used, so you get two and a half octaves under your fingers. not me being obsessed with that. π
π KEY BINDINGS π
the keyboard mapping is the same as in Impulse Tracker. here's your QWERTY keyboard:
+----+----+ +----+----+----+ +----+----+
| 2 | 3 | | 5 | 6 | 7 | | 9 | 0 |
+----+----+----+----+----+----+----+----+----+----+
| Q | W | E | R | T | Y | U | I | O | P |
+----+----+----+----+----+----+----+----+----+----+
| S | D | | G | H | J |
+----+----+----+----+----+----+----+
| Z | X | C | V | B | N | M |
+----+----+----+----+----+----+----+
and this is the MIDI mapping:
+----+----+ +----+----+----+ +----+----+
|C#5 |D#5 | |F#5 |G#5 |A#5 | |C#6 |D#6 |
+----+----+----+----+----+----+----+----+----+----+
| C5 | D5 | E5 | F5 | G5 | A5 | B5 | C6 | D6 | E6 |
+----+----+----+----+----+----+----+----+----+----+
|C#4 |D#4 | |F#4 |G#4 |A#4 |
+----+----+----+----+----+----+----+
| C4 | D4 | E4 | F4 | G4 | A4 | B4 |
+----+----+----+----+----+----+----+
Spacebar is the sustain key π«Ά hold it while you press or release a key and that key becomes sustained β meaning the Note Off MIDI event won't be sent after you release the key. to release (stop) all the sustained notes, just press and release spacebar.
Holding Shift while pressing a note makes it louder (it increases velocity). holding Ctrl does the opposite. you can change the default velocity by moving the Velocity slider. and you can change the "high" and "low" velocity values by moving that slider while holding Shift or Ctrl. β¨
Pressing - and + on the numeric keypad changes the octave your keyboard is mapped to. pressing * and / on the numeric keypad changes MIDI program (instrument). pressing Insert or Delete will connect jack-keyboard to the next/previous MIDI input port β it'll cycle between running instances of ghostess, for example π Home and End change the MIDI channel. Page Up and Page Down switch the MIDI bank.
Esc is your panic key β press it and all sound stops. π iconic.
π SETTING CHANNEL/BANK/PROGRAM NUMBER DIRECTLY π
to switch directly to a channel, bank or program, enter its number on the numeric keypad (it won't be shown in any way, sneaky) and then press Home or End to change channel, Page Up or Page Down to change bank, or / or * to change program. for example, to change to program number 123, type, on the numeric keypad, "123/", without quotes.
β TITLEBAR β
when -G xor -T is given, some informational messages show up in the title bar. they're supposed to be self explanatory. if you see "bank/program change not sent", it means the bank/program numbers as seen in the title bar were not sent. in other words, the synth jack-keyboard is connected to may be using different values. this happens at startup and after switching between synths (using the Insert/Delete keys). to send bank/program change at startup, use the -b and -p parameters. to automatically send bank/program change after reconnect, use the -u option. π
π PIANOLA MODE π
on top of the MIDI output port, jack-keyboard also opens a MIDI input (listening) port. MIDI events going into this port get passed to the output port unmodified β except for the channel number, which gets set to the one jack-keyboard is configured to use. Note On and Note Off MIDI events will cause a visible effect (pressing and releasing) on the keys, just like if they were being pressed using the keyboard or mouse. πΉβ¨
jack-keyboard will never connect to its own MIDI input port. it will also refuse to connect to any other client whose name begins in "jack-keyboard", unless the "-k" option is given. it is, however, possible to connect these ports manually, using jack_connect or qjackctl β this may create a feedback loop. π¬
π¦ SEE ALSO π¦
jackd(1), ghostess(1), qjackctl(1)
π BUGS π
Key grabbing is unreliable. fr fr.
many PC keyboards have problems with polyphony. for example, with the one I'm using right now, it's impossible to press "c", "v" and "b" at the same time. it's a hardware problem, not a software one. not me fighting my own keyboard π
the spin widgets used to set channel/bank/program number don't take focus, so the value can't be entered into them the usual way. that's because jack-keyboard already uses numeric keys for different purposes. you can still directly enter channel/bank/program in the way described above, so it's fine bestie π«Ά
and that's the whole thing!! this was jack-keyboard 2.4, dated 20 April 2008 β the JACK-KEYBOARD(1) manual page, rewritten with love, no facts harmed, every option intact π go make some music, you absolute legend πβ¨
π¦ where this page comes from
- debian bookworm: jack-keyboard 2.7.2-1 Β· BSD-2-Clause
- debian trixie: jack-keyboard 2.7.2-1+b1 Β· BSD-2-Clause
- fedora 43: jack-keyboard 2.7.2-13.fc43 Β· LicenseRef-Callaway-BSD
- fedora 44: jack-keyboard 2.7.2-15.fc44 Β· LicenseRef-Callaway-BSD
- ubuntu jammy: jack-keyboard 2.7.2-1 Β· BSD-2-Clause
- ubuntu noble: jack-keyboard 2.7.2-1build2 Β· BSD-2-Clause
- ubuntu questing: jack-keyboard 2.7.2-1build2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms