I recently got an unpleasant surprise when I tried to connect the input from a MIDI keyboard. I have a MIDI interface on my sound card plus a USB keyboard, so I was expecting to see something like the following on the ALSA tab of QjackCtl’s Connections window:
Instead, what I saw was this:
My MIDI input devices were gone! Where did they go?
I figured out a few things to try. First, I checked my QjackCtl settings. I didn’t see anything unexpected.
Next, I listed the ALSA MIDI devices:
[steve@audio ~]$ amidi -l Dir Device Name IO hw:0,0 M Audio Audiophile 24/96 MIDI IO hw:2,0,0 E-MU Xboard25 MIDI 1
Both MIDI input devices were present.
I then tried receiving ALSA MIDI input from the E-MU Xboard25:
[steve@audio ~]$ amidi -p hw:2,0,0 -d
90 3C 77 90 3C 00 90 3E 74 90 3E 00
(Press Ctrl-C to exit amidi)
That worked, too, but I didn’t know of anything else to try.
I then posted a request for help on the LinuxMusicians forum and got some helpful responses. The first hint was to run aconnect:
[steve@audio ~]$ aconnect -i client 0: 'System' [type=kernel] 0 'Timer ' 1 'Announce ' client 14: 'Midi Through' [type=kernel] 0 'Midi Through Port-0'
My MIDI input devices should have been listed but weren’t.
The next hint was to verify that module snd_seq_midi was loaded.
[steve@audio ~]$ lsmod | grep snd_seq_midi
The command had no output, meaning the required module wasn’t loaded! I loaded it manually:
[steve@audio ~]$ sudo modprobe snd_seq_midi
I then re-ran aconnect:
[steve@audio ~]$ aconnect -i client 0: 'System' [type=kernel] 0 'Timer ' 1 'Announce ' client 14: 'Midi Through' [type=kernel] 0 'Midi Through Port-0' client 16: 'M Audio Audiophile 24/96' [type=kernel] 0 'M Audio Audiophile 24/96 MIDI' client 24: 'E-MU Xboard25' [type=kernel] 0 'E-MU Xboard25 MIDI 1'
The missing devices were back and available in QjackCtl.
I don’t yet have a solution to this problem other than to manually load the snd_seq_midi module. The module appears to be part of the linux kernal package, so I’m hoping the problem will be solved the next time there’s a kernel update.
Note that the MIDI input devices are handled by ALSA and should show up in QjackCtl’s Connections window even if JACK isn’t running.
UPDATE 9 APRIL 2015: This is a known problem with Linux kernel 3.19 (Arch Linux bug 44286).
UPDATE 24 MAY 2015: The problem is not fixed after several kernel updates. I’ve now made a change to automatically load the missing module at startup. As root, I created a new file /etc/modules-load.d/alsa_fix.conf containing one line:
I restarted my system and the module was automatically loaded.
Note: There’s nothing special about the first part of the name alsa_fix.conf. The first part of the name can be anything you like but it needs to end with .conf.