MIDI on Linux

This information is for Euterpea 1.1.1. For Euterpea 2 and later versions, please see the setup information on euterpea.com.

For Linux users experiencing problems with MIDI performance in Euterpea similar to those described in the MIDI on Windows page, see the following article from the Rosegarden site: Improving Your Linux System for Creating Music.

Advice from Syver Enstad regarding Ubuntu:

To ubuntu users (and probably other linux users). Haskell wouldn’t play midi through timidity until I did:
> cabal install alsa-seq

Advice from Aaron F. regarding Euterpea and ALSA:

When you tell Euterpea to play a MIDI sequence, it sends it to the default MIDI device. Some Linux setups boot with the default MIDI device set to a dummy sequencer, which doesn’t produce sound. If you want Euterpea to play MIDI sequences, you have to get rid of the dummy sequencer so your preferred sequencer can become the default.

You can list your system’s MIDI output ports by running the command aconnect -o. When my system is freshly booted, the dummy sequencer, “Midi Through Port-0″, is the only thing on the list. When I start TiMidity++ in Alsa sequencer mode, it opens four ports, which appear further down the list.

Shut off the dummy sequencer using the command sudo rmmod snd_seq_dummy. This command doesn’t make any permanent changes to your system: it just turns off the kernel module snd_seq_dummy, which was turned on automatically when your system booted. The module will be turned on again the next time you boot (you can also turn it on without rebooting, using the insmod command).

Once you’ve shut off the dummy sequencer module, you can run aconnect -o again to verify that “Midi Through Port-0″ is gone. On my system, that means TiMidity++’s ports are the only ones left. With the dummy port out of the way, TiMidity++ claims the throne, and Euterpea will play MIDI sequences.

If you still have no sound, see Syver Enstad’s comment about installing the Haskell package alsa-seq. Also, remember to start TiMidity++ with the -iA and -Os flags, so it takes input as an ALSA sequencer and sends its output to your speakers.

Comments are closed.