[LAU] No joy from KeyKit

Paul Davis paul at linuxaudiosystems.com
Fri Aug 24 08:52:57 EDT 2007

On Thu, 2007-08-23 at 22:20 -0400, Paul Coccoli wrote:

(continuing on ...)

did you build keykit yourself? the default linux binaries do not use the
rawmidi MIDI devices at all. Please read the material from README_linux
quoted below and get back to us/me on what version you're actually


By default, exeucting 'key' will execute the ALSA version of keykit.
If you want to execute the version that uses /dev/midi*, just
edit /usr/local/bin/key and change key_alsa to key_devmidi.

For the ALSA version, there are two different implementations of MIDI
One uses "raw" MIDI ports, which generally means ports corresponding
by MIDI hardware on your computer (though note that ALSA does have a way
to create "virtual" "raw" MIDI ports as well; google for "snd-virmidi").
Using this MIDI implementation limits KeyKit to a single input port
and a single output port.

The other approach makes KeyKit a client of the ALSA "sequencer"
(its really a MIDI routing system), and allows KeyKit to have as many
input and output connections as you may desire. You control the
between KeyKit and hardware ports and/or soft synths or other
using other utility applications such as aconnect or qjackctl.
By default, KeyKit will create one input port and one output port,
but you can alter that by defining one or both of


in your environment. Their value should be sanely-sized integer. You
read doc/multiport to understand how to use these multiple input and
output ports. Note that KeyKit will *not* connect itself to any
other destinations, so you will not be able to do anything until you
used aconnect/qjackctl/etc. to make connections.

By default, KeyKit uses the ALSA sequencer implementation. To switch
to the "raw" MIDI version, do this before compiling:

   cd mdep/linux_alsa
   mv midi.c sequencer_midi.c
   mv raw_midi.c midi.c
   cd ../..

For the rawmidi version, the default ALSA midi device will be used
by default.  You can explicitly control the device used by setting
the environment variable ALSA_RAWMIDI_DEVICE.  The value of
ALSA_RAWMIDI_DEVICE should be of the form "hw:#,#", where the two
are the device and card numbers.  For example, a value of "hw:1,0"
would use card1 and the 0-th (first) device on that card.

If you use the devmidi version, the default midi device is
/dev/midi00.  If you want a different device, you can set the
environment variable MIDIDEVICE to the full path of the device.

More information about the Linux-audio-user mailing list