From ArchWiki
Revision as of 23:44, 7 July 2010 by Thestinger (Talk | contribs) (Alsa daemon mode)

Jump to: navigation, search

timidity++ is a MIDI to WAVE converter and player which is basically used to play MIDI files if your sound card does not support the MIDI protocol natively.

Installing timidity++

The first step is to install timidity++ itself. It can be installed via pacman from the extra repository:

# pacman -S timidity++

However, timidity++ will not produce any sound yet. This is because timidity++ does not include any instrument samples. To produce sound, instrument patches and/or soundfonts need to be installed and timidity++ configured so it knows where to find them. This guide shows two ways of getting sound samples: Freepats and soundfonts.

Setting up the sound samples


The Freepats project provides a set of instrument samples which are compatible with timidity++. It can be installed from the community repository:

# pacman -S timidity-freepats

To use Freepats with timidity, add the following lines to /etc/timidity++/timidity.cfg:

dir /usr/share/timidity/freepats
source /etc/timidity++/freepats/freepats.cfg

Then timidity++ is ready for use.


There are many soundfonts available. This example will show how to isntall the fluidr3 soundfont, which is accessible via the AUR.

Note: It will be assumed that you know how to build packages from the AUR. If you have never used the AUR before, please take a look at the AUR User Guidelines.

As sfarkxtc, a decompressor for soundfonts, is a make dependency of fluidr3, we install it first:

# pacman -S sfarkxtc

After sfarkxtc has been installed, we will be able to build fluidr3 which may take some time.

# wget http://aur.archlinux.org/packages/fluidr3/fluidr3/PKGBUILD
# wget http://aur.archlinux.org/packages/fluidr3/fluidr3/fluidr3.install
# wget http://aur.archlinux.org/packages/fluidr3/fluidr3/license
# makepkg
# pacman -U fluidr3-122501-6.pkg.tar.gz

If fluidr3 has been installed properly, we have to add it's path to the timidity++ configuration file. Just add this line to /etc/timidity++/timidity.cfg:

soundfont /usr/share/soundfonts/fluidr3/FluidR3GM.SF2

Then timidity++ is ready for use.

How to use timidity++

There are two ways to use timidity++. Either as MIDI player or as daemon adding MIDI support to ALSA.

Standalone mode

You can simply use timidity++ to play MIDI files:

$ timidity example.midi

Add option -in or -ig for a text mode/gtk+ interface. E.g. as a Xfce/GNOME user you may want to set MIDI files to open with the custom command `timidity -ig'. There are many other options to timidity; see manpage or use -h to get help.

Alsa daemon mode

If you want timidity to run as ALSA daemon, just use:

# /etc/rc.d/timidity++ start

If you want to have permanent MIDI support, add timidity to your daemon list in /etc/rc.conf:

DAEMONS=(... timidity++ ...)

Or if you just want to run timidity with ALSA support once, you can use the following command which will make console output viewable:

$ timidity -iA

This will give you four output software MIDI ports (in addition of hardware MIDI ports on your system, if any):

$  aconnect -o
client 128: 'TiMidity' [type=user]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '

An example usage for this is vkeybd, a virtual MIDI keyboard for X.

You can install vkeybd from the AUR.

$ vkeybd --addr 128:0

Option --addr 128:0 connects the input (readable) software MIDI port provided by vkeybd to the first output (writable) ALSA port provided by Timidity. Alternatively you can use aconnect(1), community/aconnectgui or AUR packages patchage, kaconnect. As a result when you play around with the keys on the vkeybd timidity plays the appropriate notes. See also USB Midi Keyboards.


timidity++ does not play MIDI files

It may be that your soundfile is not set up correctly. Just run:

$ timidity example.midi

If you find a line like this in the terminal output, your soundfile is not set up properly.

No instrument mapped to tone bank 0, program XX - \
this instrument will not be heard

Make sure you've installed some samples and your soundfile is added to /etc/timidity++/timidity.cfg. See Setting up the sound samples above for more details.

How to make DOSBox use Timidity++

The following method is tested in version DOSBox 0.72 (don't know if this works for OLDER or NEWER!).

First of all, you need to write a config file. Input the following in DOSBox to create a configuration file:

config -writeconf dosbox.conf

you can replace dosbox.conf by anyname that you want, add a dot in front of it if you want to hide it.

Make sure you statred Timidity++ as DAEMON as the instructions above, use the aconnect command.

Edit this configuration file with any editor, go to the section:


put the ALSA connection port into the back of config=, in default:


Restart DOSBox within a terminal so you can see its debug messages, by no accident you should see a successful initiation on port 128:0.