JACK Keyboard

Go to:

(This site is waiting for your design ;-)

What is jack-keyboard?

jack-keyboard is a virtual MIDI keyboard - a program that allows you to send JACK MIDI events (play ;-) using your PC keyboard. It's somewhat similar to vkeybd, except it uses JACK MIDI instead of ALSA, and the default keyboard mapping is much better - it uses the same layout as trackers (like Impulse Tracker) did, so you have two and half octaves under your fingers.

What do I need to use it?

First, you need supported operating system. It was tested under Linux and FreeBSD, but should also work on OSX. If it doesn't work for you - let me know, I'll fix it.

Then, you need JACK with MIDI support (at least 0.103.0; current SVN snapshot is ok) and some softsynth that accepts JACK MIDI as input. Ghostess with some DSSI plugin to make actual sound (like WhySynth) is a good choice.


Latest version is 2.5, released 14 May 2008.


If you are running Gentoo, install by doing "emerge jack-keyboard". If you are running FreeBSD, update your ports tree and install audio/jack-keyboard. Otherwise, you will probably have to build from source. Latest version of jack-keyboard is 2.5. Download it from here. To build it, you need relatively new GTK+ (at least GTK 2.12) and JACK with MIDI support (at least jack-0.103.0). SVN version of JACK is fine. JACK Keyboard uses LASH if you have it installed; it's not required, but suggested. After downloading jack-keyboard, unpack it ("tar zxvf jack-keyboard-2.5.tar.gz"), go into the directory ("cd jack-keyboard-2.5") and build ("./configure && make install").

How to use it?

When you have all of the above installed: first, run jackd. Then run ghostess with a plugin of choice ("ghostess whysynth.so", for example). Then run jack-keyboard. Press "Insert" key to make it connect to the first listening JACK MIDI port, in this case the ghostess. Press "z" key. You should hear sound. If you don't, you probably have ghostess compiled without JACK MIDI support. In that case, the best solution is to either use "-X seq" option to jackd, or use a2jmidid, which works as a "relay" between applications using legacy ALSA MIDI and applications using JACK MIDI. Consult the manual page ("man jack-keyboard") for further instructions.

Keyboard mapping is similar to the one used in Impulse Tracker. This is 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 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 a sustain key. Holding it when pressing or releasing key will make that key sustained, i.e. Note Off MIDI event won't be sent after releasing the key. To release (stop) all the sustained notes, press and release spacebar.

Holding Shift when pressing note will make it louder (it increases velocity). Holding Ctrl will do the opposite. You can change the default velocity by moving the Velocity slider. You can change the "high" and "low" velocity values by moving the slider while holding Shift or Ctrl keys.

Pressing "-" and "+" keys on numeric keypad changes the octave your keyboard is mapped to. Pressing "*" and "/" on numeric keypad changes MIDI program (instrument). Pressing Insert or Delete keys will connect jack-keyboard to the next/previous MIDI input port (it will cycle between running instances of ghostess, for example). Home and End keys change the MIDI channel. Page Up and Page Down keys switch the MIDI bank.

Esc works as a panic key - when you press it, all sound stops.

To switch directly to a channel, bank or program, enter its number on the numeric keypad (it won't be shown in any way) and 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.

Mandatory screenshot ;-)


JACK Keyboard is under 2-clause BSD license. Basically, it means you can use the code freely in both Open Source (including GPLed) and closed source software.


List of changes between releases can be found here.


If you have any questions, comments, suggestions, patches or anything, let me know: Edward Tomasz Napierala <trasz@FreeBSD.org>.