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.
How to setup timidity++
timidity++ can be installed via pacman from the extra repository:
# pacman -S extra/timidity++
After timidity++ has been installed, you have to define where the soundfont is located. Because timidity++ comes without any soundfont we have to install it separately.
How to install a soundfont
There are several soundfonts out in the wild. This HowTo will use the fluidr3 soundfont which is accessible via the AUR.
- Note: It will be assumed that you know how to build packages from the AUR. This excerpt will be very short and barely explained. Too short if you're completely new to it.
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:
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.
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 community/vkeybd, a virtual MIDI keyboard for X:
# pacman -S vkeybd ... $ 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 your soundfile is added to /etc/timidity++/timidity.cfg. You may refer to the step 'How to install a soundfont'.
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:
[midi] mpu401=intelligent device=default config=
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.