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.

+

TiMidity++ is a [[Wikipedia:software synthesizer|software synthesizer]] that can play MIDI files without a hardware synthesizer. It can either render to the sound card in real time, or it can save the result to a file, such as a PCM .wav file.

−

==Installing timidity++==

+

== Installation ==

−

The first step is to install timidity++ itself. It can be installed via pacman from the [[Pacman#Repositories|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: [[Timidity#Freepats|Freepats]] and [[Timidity#Soundfonts|soundfonts]].

+

[[Pacman|Install]] the {{Pkg|timidity++}} package from the [[official repositories]].

−

==Setting up the sound samples==

+

You should also install a [[Wikipedia:SoundFont|SoundFont]] to be able to produce sound. Here is a list of SoundFonts:

+

* {{Pkg|timidity-freepats}} from the [[official repositories]].

+

* {{AUR|fluidr3}} from the [[AUR]]

−

===Freepats===

+

== Configuration ==

−

The [http://freepats.zenvoid.org/ Freepats] project provides a set of instrument samples which are compatible with timidity++. It can be installed from the [[Pacman#Repositories|community repository]]:

+

−

# pacman -S timidity-freepats

+

−

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

+

=== SoundFonts ===

−

<pre>

+

Configure your choosed SoundFont.

+

+

==== Freepats ====

+

+

The [http://freepats.zenvoid.org/ Freepats] project provides a set of instrument samples which are compatible with TiMidity++.

+

+

To use Freepats with TiMidity, add the following lines to {{ic|timidity.cfg}}:

+

+

{{hc|/etc/timidity++/timidity.cfg|

dir /usr/share/timidity/freepats

dir /usr/share/timidity/freepats

source /etc/timidity++/freepats/freepats.cfg

source /etc/timidity++/freepats/freepats.cfg

−

</pre>

+

}}

−

Then timidity++ is ready for use.

+

==== Fluidr3 ====

−

===Soundfonts===

+

There are other SoundFonts available. This will show how to install the {{AUR|fluidr3}} SoundFont.

−

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|AUR User Guidelines]].

+

−

As sfarkxtc, a decompressor for soundfonts, is a make dependency of fluidr3, we install it first. Notice that it is accessible via the [[AUR]].

+

Now we have to add its path to the TiMidity++ configuration file. Just add this line:

−

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

+

{{hc|/etc/timidity++/timidity.cfg|

+

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

+

}}

−

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

+

=== Daemon ===

−

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

+

−

Then timidity++ is ready for use.

+

Start and configure to autostart the {{ic|timidity.service}}. Read [[Daemons]] for more details.

−

==How to use timidity++==

+

If you are using [[PulseAudio]], that may not work. You may want to add the following command as an auto start program in your desktop environment. Or, if you just want to start TiMidity++ in daemon mode once, you can use the following command which will make console output viewable:

−

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

+

−

===Standalone mode===

+

$ timidity -iA

−

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

+

+

== Usage ==

+

+

=== Play files ===

+

+

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

$ 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.

+

Add option {{ic|-in}} or {{ic|-ig}} for a text-based/gtk+ interface. E.g. as a Xfce/GNOME user you may want to set MIDI files to open with the custom command {{ic|timidity -ig}}. There are many other options to TiMidity++. See {{ic|man timidity}} or use {{ic|-h}} to get help.

−

===Alsa daemon mode===

+

The GTK+ interface offers such features as a playlist, track length estimates, volume control, a file load dialog box, play and pause buttons, rewind and fast forward buttons, as well as options to change the pitch of or speed up or slow down the playback of a midi file.

−

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:

+

==== Daemon mode ====

−

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:

+

If you are runing TiMidity++ as a [[#Daemon|daemon]] (ALSA sequencer client), it will provide MIDI output support for other programs such as rosegarden, aplaymidi, vkeybd, etc.

−

$ timidity -iA

+

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

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

+

{{hc|$ aconnect -o|2=

+

client 128: 'TiMidity' [type=user]

+

0 'TiMidity port 0 '

+

1 'TiMidity port 1 '

+

2 'TiMidity port 2 '

+

3 'TiMidity port 3 '

+

}}

−

$ aconnect -o

+

You can now play MIDI files using aplaymidi:

+

+

$ aplaymidi filename.mid --port 128:0

+

+

Another example is '''vkeybd''', a virtual MIDI keyboard for X.

+

+

You can [[Pacman|install]] {{AUR|vkeybd}} from the [[AUR]].

+

+

$ vkeybd --addr 128:0

+

+

Option {{ic|--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 [https://aur.archlinux.org/packages.php?do_Details=1&ID=9668 patchage], {{AUR|kaconnect}}. As a result when you play around with the keys on the vkeybd TiMidity++ plays the appropriate notes.

+

+

==== Connect to virtual MIDI device ====

+

+

Once you have the TiMidity++ daemon running and it is working with aplaymidi, you can connect it to a virtual MIDI device that will work in programs such as rosegarden or scala.

+

+

Load the {{ic|snd-virmidi}} '''kernel module''' and (optionally) configure it to be loaded at boot. Read [[Kernel modules]] for more information.

+

+

Use aconnect to verify the port numbers:

+

+

{{hc|$ aconnect -o|2=

+

client 14: 'Midi Through' [type=kernel]

+

0 'Midi Through Port-0'

+

client 20: 'Virtual Raw MIDI 1-0' [type=kernel]

+

0 'VirMIDI 1-0 '

+

client 21: 'Virtual Raw MIDI 1-1' [type=kernel]

+

0 'VirMIDI 1-1 '

+

client 22: 'Virtual Raw MIDI 1-2' [type=kernel]

+

0 'VirMIDI 1-2 '

+

client 23: 'Virtual Raw MIDI 1-3' [type=kernel]

+

0 'VirMIDI 1-3 '

client 128: 'TiMidity' [type=user]

client 128: 'TiMidity' [type=user]

0 'TiMidity port 0 '

0 'TiMidity port 0 '

Line 64:

Line 110:

2 'TiMidity port 2 '

2 'TiMidity port 2 '

3 'TiMidity port 3 '

3 'TiMidity port 3 '

+

}}

+

Now create the connection:

+

$ aconnect 20:0 128:0

−

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

+

You should now have a working MIDI output device on your system ({{ic|/dev/snd/midiC1D0}}).

−

You can install [http://aur.archlinux.org/packages.php?ID=19775 vkeybd] from the [[AUR]].

+

== Troubleshooting ==

−

$ vkeybd --addr 128:0

+

=== TiMidity++ does not play MIDI files ===

−

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 [http://aur.archlinux.org/packages.php?do_Details=1&ID=9668 patchage], [http://aur.archlinux.org/packages.php?ID=13818 kaconnect]. As a result when you play around with the keys on the vkeybd timidity plays the appropriate notes. See also [[USB_Midi_Keyboards|USB Midi Keyboards]].

+

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

−

+

−

==Troubleshooting==

+

−

===timidity++ does not play MIDI files===

+

−

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

+

$ timidity example.midi

$ timidity example.midi

−

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

+

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 - \

No instrument mapped to tone bank 0, program XX - \

this instrument will not be heard

this instrument will not be heard

−

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

+

Make sure you've installed some samples and your SoundFile is added to {{ic|/etc/timidity++/timidity.cfg}}. See [[#Soundfonts|SoundFonts]] for more details.

−

===How to make DOSBox use Timidity++===

+

=== Daemon mode won't start ===

−

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

+

+

First, make sure you are in the '''audio''' group. If not, add yourself to it:

+

+

# gpasswd audio -a ''username''

+

+

After group change, you should re-login.

+

+

If you are using [[PulseAudio]], instead of [[Daemons|enabling]] the {{ic|timidity.service}}, start TiMidity++ as an user:

+

+

$ timidity -iA -OO

+

+

If you want to run TiMidity++ in background, do not use TiMidity++'s daemonize option, append {{ic|&}} instead.

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

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

config -writeconf dosbox.conf

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.

+

you can replace {{ic|dosbox.conf}} by any name 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.

+

Make sure you started TiMidity++ as [[#Daemon|daemon]] as the instructions above, use the '''aconnect''' command.

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

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

−

[midi]

+

{{hc|dosbox.conf|2=

−

mpu401=intelligent

+

[midi]

−

device=default

+

mpu401=intelligent

−

config=

+

device=default

+

config=

+

}}

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

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

config=128:0

config=128:0

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.

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.

+

+

== See also ==

+

+

* [[USB Midi Keyboards]]

Revision as of 09:07, 7 June 2013

TiMidity++ is a software synthesizer that can play MIDI files without a hardware synthesizer. It can either render to the sound card in real time, or it can save the result to a file, such as a PCM .wav file.

Fluidr3

There are other SoundFonts available. This will show how to install the fluidr3AUR SoundFont.

Now we have to add its path to the TiMidity++ configuration file. Just add this line:

/etc/timidity++/timidity.cfg

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

Daemon

Start and configure to autostart the timidity.service. Read Daemons for more details.

If you are using PulseAudio, that may not work. You may want to add the following command as an auto start program in your desktop environment. Or, if you just want to start TiMidity++ in daemon mode once, you can use the following command which will make console output viewable:

$ timidity -iA

Usage

Play files

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-based/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 man timidity or use -h to get help.

The GTK+ interface offers such features as a playlist, track length estimates, volume control, a file load dialog box, play and pause buttons, rewind and fast forward buttons, as well as options to change the pitch of or speed up or slow down the playback of a midi file.

Daemon mode

If you are runing TiMidity++ as a daemon (ALSA sequencer client), it will provide MIDI output support for other programs such as rosegarden, aplaymidi, vkeybd, etc.

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

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, kaconnectAUR. As a result when you play around with the keys on the vkeybd TiMidity++ plays the appropriate notes.

Connect to virtual MIDI device

Once you have the TiMidity++ daemon running and it is working with aplaymidi, you can connect it to a virtual MIDI device that will work in programs such as rosegarden or scala.

Load the snd-virmidikernel module and (optionally) configure it to be loaded at boot. Read Kernel modules for more information.