Difference between revisions of "Timidity"
Kynikos.bot (talk | contribs) (remove language suffix from Category:Audio/Video (English), see Talk:Table of Contents#English Category Names: Capitalization and Conflict with i18n) |
m (→Fluidr3) |
||
(8 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Audio/Video]] | [[Category:Audio/Video]] | ||
− | + | 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. | |
− | |||
− | == | + | == Installation == |
− | + | [[Pacman|Install]] the {{Pkg|timidity++}} package from the [[Official repositories]]. | |
− | |||
− | + | 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]] | ||
− | == | + | == Configuration == |
+ | === Soundfonts === | ||
+ | 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 | ||
− | + | }} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==== Fluidr3 ==== | |
+ | There are other soundfonts available. This will show how to install the {{AUR|fluidr3}} soundfont. | ||
− | + | Now we have to add its path to the timidity++ configuration file. Just add this line: | |
− | + | {{hc|/etc/timidity++/timidity.cfg| | |
− | + | soundfont /usr/share/soundfonts/fluidr3/FluidR3GM.SF2 | |
+ | }} | ||
− | + | === Daemon === | |
+ | Start and configure to autostart the {{ic|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: | |
− | + | {{bc|$ timidity -iA}} | |
− | |||
− | |||
+ | == Usage == | ||
===Play files=== | ===Play files=== | ||
There are two ways to use timidity++. Either as MIDI player or as daemon adding MIDI support to [[ALSA]]. | There are two ways to use timidity++. Either as MIDI player or as daemon adding MIDI support to [[ALSA]]. | ||
Line 48: | Line 44: | ||
====Standalone mode==== | ====Standalone mode==== | ||
You can simply use timidity++ to play MIDI files: | You can simply use timidity++ to play MIDI files: | ||
− | + | {{bc|$ timidity example.midi}} | |
− | Add option -in or -ig for a text | + | 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. |
====Daemon mode==== | ====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): | This will give you four output software MIDI ports (in addition of hardware MIDI ports on your system, if any): | ||
− | + | {{hc|$ aconnect -o|<nowiki> | |
− | + | client 128: 'TiMidity' [type=user] | |
− | + | 0 'TiMidity port 0 ' | |
− | + | 1 'TiMidity port 1 ' | |
− | + | 2 'TiMidity port 2 ' | |
− | + | 3 'TiMidity port 3 ' | |
− | + | </nowiki>}} | |
You can now play MIDI files using aplaymidi: | You can now play MIDI files using aplaymidi: | ||
− | + | {{bc|$ aplaymidi filename.mid --port 128:0}} | |
− | Another example is vkeybd, a virtual MIDI keyboard for X. | + | Another example is '''vkeybd''', a virtual MIDI keyboard for X. |
− | You can install | + | You can [[Pacman|install]] {{AUR|vkeybd}} from the [[AUR]]. |
− | + | {{bc|$ 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 [https://aur.archlinux.org/packages.php?do_Details=1&ID=9668 patchage], | + | 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=== | + | ====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. | 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: | Use aconnect to verify the port numbers: | ||
− | + | {{hc|$ aconnect -o|<nowiki> | |
− | |||
client 14: 'Midi Through' [type=kernel] | client 14: 'Midi Through' [type=kernel] | ||
0 'Midi Through Port-0' | 0 'Midi Through Port-0' | ||
Line 113: | Line 96: | ||
2 'TiMidity port 2 ' | 2 'TiMidity port 2 ' | ||
3 'TiMidity port 3 ' | 3 'TiMidity port 3 ' | ||
− | + | </nowiki>}} | |
Now create the connection: | Now create the connection: | ||
− | + | {{bc|$ aconnect 20:0 128:0}} | |
− | You should now have a working MIDI output device on your system (/dev/snd/midiC1D0). | + | You should now have a working MIDI output device on your system ({{ic|/dev/snd/midiC1D0}}). |
Line 123: | Line 106: | ||
===timidity++ does not play MIDI files=== | ===timidity++ does not play MIDI files=== | ||
It may be that your soundfile is not set up correctly. Just run: | It may be that your soundfile is not set up correctly. Just run: | ||
− | + | {{bc|$ 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. | ||
− | + | {{bc| | |
− | + | 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 [[ | + | Make sure you've installed some samples and your soundfile is added to {{ic|/etc/timidity++/timidity.cfg}}. See [[#Soundfonts]] above for more details. |
− | === | + | ===Daemon mode won't start=== |
− | First, make sure you are in audio group. If not, add yourself to | + | First, make sure you are in the '''audio''' group. If not, add yourself to it: |
− | + | {{bc|# gpasswd audio -a yourusername}} | |
After group change, you should re-login. | After group change, you should re-login. | ||
− | If you are using PulseAudio, instead of | + | If you are using [[PulseAudio]], instead of [[Daemons|enabling]] the {{ic|timidity.service}}, start timidity++ as an user: |
− | + | {{bc|$ timidity -iA -OO}} | |
− | + | If you want to run timidity++ in background, do not use timidity++'s daemonize option, append {{ic|&}} instead. | |
− | + | ===Daemon mode plays sound out of pace=== | |
+ | timidity++'s ALSA output module (default) may cause this issue in ALSA server mode. Try another output option, for example, '''libao''': | ||
− | + | {{bc|$ timidity -iA -OO}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
And test it using aplaymidi. If this does not work, you may want to configure [[JACK]] and set timidity++'s output to jack. | And test it using aplaymidi. If this does not work, you may want to configure [[JACK]] and set timidity++'s output to jack. | ||
+ | == Tips and tricks == | ||
+ | ===Convert files=== | ||
+ | timidity++ can also convert MIDI files into other formats. The following command saves the resulting sound to a WAV file: | ||
+ | {{bc|$ timidity ''input.mid'' -Ow -o ''out.wav''}} | ||
+ | To convert to another formats, you can use [[FFmpeg]]. This will convert it to mp3: | ||
+ | {{bc|$ timidity ''input.mid'' -Ow -o - <nowiki>|</nowiki> ffmpeg -i - -acodec libmp3lame -ab 256k ''out.mp3''}} | ||
===How to make DOSBox use Timidity++=== | ===How to make DOSBox use Timidity++=== | ||
− | The following method is tested in version DOSBox 0.72 | + | {{Note|The following method is tested in version DOSBox 0.72}} |
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: | ||
− | + | {{bc|config -writeconf dosbox.conf}} | |
− | you can replace | + | 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 | + | 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: | Edit this configuration file with any editor, go to the section: | ||
− | + | {{hc|dosbox.conf|<nowiki> | |
− | + | [midi] | |
− | + | mpu401=intelligent | |
− | + | device=default | |
+ | config= | ||
+ | </nowiki>}} | ||
put the ALSA connection port into the back of ''config='', in default: | put the ALSA connection port into the back of ''config='', in default: | ||
− | + | {{bc|1=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:31, 27 January 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.
Installation
Install the timidity++ package from the Official repositories.
You should also install a soundfont to be able to produce sound. Here is a list of soundfonts:
- timidity-freepats from the Official repositories.
- fluidr3AUR from the AUR
Configuration
Soundfonts
Configure your choosed soundfont:
Freepats
The Freepats project provides a set of instrument samples which are compatible with timidity++.
To use Freepats with timidity, add the following lines to timidity.cfg
:
/etc/timidity++/timidity.cfg
dir /usr/share/timidity/freepats source /etc/timidity++/freepats/freepats.cfg
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.
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):
$ aconnect -o
client 128: 'TiMidity' [type=user] 0 'TiMidity port 0 ' 1 'TiMidity port 1 ' 2 'TiMidity port 2 ' 3 'TiMidity port 3 '
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 install vkeybdAUR 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, 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-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:
$ aconnect -o
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] 0 'TiMidity port 0 ' 1 'TiMidity port 1 ' 2 'TiMidity port 2 ' 3 'TiMidity port 3 '
Now create the connection:
$ aconnect 20:0 128:0
You should now have a working MIDI output device on your system (/dev/snd/midiC1D0
).
Troubleshooting
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 #Soundfonts above for more details.
Daemon mode won't start
First, make sure you are in the audio group. If not, add yourself to it:
# gpasswd audio -a yourusername
After group change, you should re-login.
If you are using PulseAudio, instead of enabling the 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 &
instead.
Daemon mode plays sound out of pace
timidity++'s ALSA output module (default) may cause this issue in ALSA server mode. Try another output option, for example, libao:
$ timidity -iA -OO
And test it using aplaymidi. If this does not work, you may want to configure JACK and set timidity++'s output to jack.
Tips and tricks
Convert files
timidity++ can also convert MIDI files into other formats. The following command saves the resulting sound to a WAV file:
$ timidity input.mid -Ow -o out.wav
To convert to another formats, you can use FFmpeg. This will convert it to mp3:
$ timidity input.mid -Ow -o - | ffmpeg -i - -acodec libmp3lame -ab 256k out.mp3
How to make DOSBox use Timidity++
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 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.
Edit this configuration file with any editor, go to the section:
dosbox.conf
[midi] mpu401=intelligent device=default config=
put the ALSA connection port into the back of config=, in default:
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.