TiMidity++ - MIDI to WAV converter and player
timidity [-options] filename [filenames ...]
TiMidity++ is a converter that converts some of MIDI files (supported
formats: Standard MIDI files (*.MID), Recomposer files (*.RCP, *.R36,
*.G18, *.G36) and Module files (*.mod)) into formatted audio files
(e.g. RIFF WAVE). TiMidity uses Gravis Ultrasound-compatible patch
files or Soundfonts (*.sfx, *.sf2) to generate digital audio data from
MIDI files. The digital audio data generated by TiMidity can be stored
in a file for processing, or played in real time through an audio
In real time playing, TiMidity can show the lyrics contained in KAR or
You can use the following expressions as the filename argument:
- Read a MIDI file from standard input.
Read a MIDI file from the specified path on a filesystem.
Read and play all MIDI files in the specified directory.
Extract and play the file(s) in the archive. If you want to
specify a certain MIDI file in the archive, append #<MIDI-file-
name> to the archive name. The expression after # can use regu-
lar expressions (case insensitive).
Plays file.mid in file.zip
Plays any files that match the regular expression '*.mid'
This expression is the same as
Since these mechanism are contained in TiMidity itself, you can
use this syntax even in the MS Windows environment.
TiMidity can handle the following archive formats:
Play the MIDI file in the specified article on the news server.
If a newsgroup is specified TiMidity plays all MIDI files found
in any article posted to that newsgroup.
TiMidity parses MIME Multi-part messages.
The following MIME-types are allowed:
"begin" is required
"Content-Transfer-Encoding base64" is required
"Content-Transfer-Encoding quoted-string" is required
Mac BinHex format
only 'HQX' format is available
Play the file specified in the URL.
plays the specified MIDI-file directly from the network.
If these expression are used in the *.cfg files, you can even
use patch-files (and others) from remote machines.
Timidity can handle the following file formats:
.MID (Format 0, 1, 2)
Standard MIDI File
.RCP, .R36, .G18, .G36 (Recomposer formats (product of COME ON MUSIC
The Windows version converts these with rcpcv.dll.
.KAR (Karaoke format)
Displays the lyrics as a Lyric Meta Event message.
.MOD, MOD.* (module file)
.WRD (WRD format)
-a Turns on antialiasing. Samples are run through a lowpass filter
before playing, which reduces aliasing noise at low resampling
For the Linux/FreeBSD/OSS/ALSA/Windows sound driver, selects the
number of buffer fragments in interactive mode. Increasing the
number of fragments may reduce choppiness when many processes
are running. It will make TiMidity seem to respond sluggishly
to fast forward, rewind, and volume controls, and it will throw
the status display off sync. Specify a fragments number of 0 to
use the maximum number of fragments available.
Sets the ratio of sampling and control frequencies. This deter-
mines how often envelopes are recalculated -- small ratios yield
better quality but use more CPU time.
Reads an extra configuration file.
Marks channel as a drum channel. If channel is negative, chan-
nel -channel is marked as an instru- mental channel. If channel
is 0, all channels are marked as instrumental.
-d dir Specifies the directory containing installed dynamic-link inter-
-e Make TiMidity evil. For the Win32 version, this increases the
task priority by one. It can give better playback when you
switch tasks at the expense of slowing all other tasks down.
Set TiMidity extend modes. The following modes are available
(capitalized switch means disable this feature):
w/W Enable/disable modulation controlling.
p/P Enable/disable portamento controlling.
v/V Enable/disable NRPM vibration.
s/S Enable/disable channel pressure controlling.
b n Use tone bank n as the default.
B bank Sets the bank number of all channels to bank.
F args For effects. See below.
-F Turns on fast panning to accommodate MIDI pieces that expect
panning adjustments to affect notes that are already playing.
Some files that don't expect this have a habit of flipping bal-
ance rapidly between left and right, which can cause severe pop-
ping when the -F flag is used.
In the current version of TiMidity this option is a toggle.
-f Toggles fast envelopes. This option makes TiMidity faster but
the release time of the notes are shortened.
-g sec Open the Sound-Spectrogram window. This option is activated if
the system has support for the X Window System.
-h Show the help message.
Use the program number as the default instrument. Any Program
Change events in MIDI files will override this option.
If voice is followed by /c the default program number of the
channel c is specified by voice.
Selects the user interfaces from the compiled-in alternatives.
interface must be begun with one of the supported interface
identifiers. Run TiMidity with the -h option to see a list.
The following identifiers may be available:
-id dumb interface
-in ncurses interface
-is S-Lang interface
-ia X Athena Widget interface
-ik Tcl/Tk interface
-im Motif interface
-iT vt100 interface
-ie Emacs interface (use M-x timidity in Emacs)
-ii skin interface
Option characters may be added immediately after the
interface identifier. The following options are recog-
v Increases verbosity level. This option is cumulative.
q Decreases verbosity level. This option is cumulative.
t Toggles trace mode. In trace mode, TiMidity attempts to
display its current state in real time. For the Linux
sound driver, this is accomplished through the use of
short DMA buffer fragments, which can be tuned via the -B
l Loop playing (some interfaces ignore this option)
r Randomize file list arguments before playing
s Sort file list arguments before playing
-j Enable the loading of patch files during play.
Specify audio queue time limit to reduce voices. If the remain-
ing audio buffer is less than msec milliseconds, TiMidity tries
to kill some voices. This feature makes it possible to play
complicated MIDI files on slow CPUs. Setting msec to zero tells
TiMidity to never remove any voices.
Adds directory to the library path. Patch, configuration, and
MIDI files are searched along this path. Directories added last
will be searched first. Note that the current directory is
always searched first before the library path.
Modify envelope volume decay time. time is the minimum number
of milliseconds to sustain a sustained note.
-m 1 Effectively behaves as if all sustains are ignored, vol-
ume ramping is the same as normal stage 3.
-m 0 Disable sustain ramping, causes constant volume sustains
A note at full volume will decay for 3 seconds once it
begins to be sustained (assuming the regular stage 3 rate
would not cause it to decay even longer). Softer notes
will of course die sooner.
must begin with one of the supported output mode identifiers.
Run TiMidity with the -h option to see the list. The following
identifiers are available in all versions:
-Od Outputs via audio device (default)
-Or Generate raw waveform data. All format options are sup-
ported. Common formats include:
-Or1sl 16-bit signed linear PCM
-Or8ul 8-bit unsigned linear PCM
-Ou Generate Sun Audio (au) data
-Oa Generate AIFF data
-Ow Generate RIFF WAVE format output. If output is directed
to a non-seekable file, or if TiMidity is interrupted
before closing the file, the file header will contain
0xFFFFFFFF in the RIFF and data block length fields. The
popular sound conversion utility sox is able to read such
malformed files, so you can pipe data directly to sox for
on-the-fly conversion to other formats.
Option characters may be added immediately after the mode
identifier to change the output format. The following
options are recognized:
8 8-bit sample width
1 6-bit sample width
l Linear encoding
U uLaw (8-bit) encoding
s Signed output
u Unsigned output
x Byte-swapped output
Note that some options have no effect on some modes. For exam-
ple, you cannot generate a byte-swapped RIFF WAVE file, or force
uLaw output on a Linux PCM device.
Sets polyphony (maximum number of simultaneous voices) to
-p a Toggle automatic polyphony reduction.
Causes channel to be quiet. If channel is negative, channel
-channel is turned back on. If channel is 0, all channels are
-q m/n Specify audio buffer in seconds. m: maximum size of buffer, n:
percentage filled at the beginning (default is 5.0/100%) (size
of 100% equals the whole device buffer size)
-R n Enables Pseudo Reverb Mode. It sets every instrument's release
to n ms. If n=0, n is set to 800 (default).
Sets the re-sample cache size to size bytes. If size equals 0
any sample caches are disabled. The default value of size is
Sets the resampling frequency (Hz or kHz). Not all sound
devices are capable of all frequencies -- an approximate fre-
quency may be selected, depending on the implementation.
Sets output coding of Japanese text. Possible values of code
auto determined by the LANG environment variable.
ascii Translates non-ASCII code to period.
nocnv No conversion.
1251 Convert from windows-1251 to koi8-r.
euc Outputs EUC (Japan) coding.
jis Outputs JIS coding.
sjis Outputs SJIS coding.
-T n Adjust tempo to n%; 120=play MOD files with an NTSC Amiga's tim-
-wr Use rcpcv.dll to play RCP/R36 files.
-wR Do not use rcpcv.dll (default).
Play WRD file. Allowed values of mode are:
x X Window System mode
t TTY mode
d Dumb mode (outputs WRD events directory)
- do not trace WRD
WRD mode must also use trace mode (option -i?t) or the timing of the
WRD events will be terrible.
Sets WRD options:
Sets the WRD options. an is the name of option and bn is
d="n" Emulates timing (@WAIT,@WMODE) bugs of the original MIMPI
player. The emulation levels are:
-WRd=0 do not emulate any bugs of MIMPI
-WRd=1 only emulate some bugs (default)
-WRd=2 emulate all known bugs
Use filename as WRD file only no file matching *.wrd is
Uses filename as WRD file.
Configure TiMidity with string. The format of string is the
same as timidity.cfg.
-x'bank 0\n0 violin.pat'
Sets the instrument number 0 to violin.
Character \ (Ascii 0x5c) in the string is treated as escape
character like in C literals. For example \n is treated as car-
In -EF <arg> option, you can specify following effect options:
Swap left & right.
Disabled delay effect.
Enable MIDI chorus effect control.
The optional parameter `level' specifies the chorus level
Surround sound, chorus detuned to a lesser degree
The optional parameter `level' specifies the chorus level
Disable MIDI reverb effect control.
Enable MIDI reverb effect control.
The optional parameter `level' specifies the reverb level
[0..127] This effect is only available in stereo
Global reverb effect.
Enable the n th degree noiseshaping filter. Valid values
of n are in the interval [0..4].
This effect is only available for 8-bit linear encoding
lsmidiprog(1), mididump(1), patinfo(1), sf2text(1), wav2pat(1), timid-
Copyright (C) 1999-2002 Masanao Izumo <firstname.lastname@example.org> Copyright (C)
1995 Tuukka Toivonen <email@example.com>
The original version was developed by Tuukka Toivonen <firstname.lastname@example.org> until
the release of TiMidity-0.2i. His development was discontinued because
of his being busy with work.
Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
The latest release is available on the TiMidity++ Page,
8-bit and low-rate output sounds worse than it should.
Eats more CPU time than a small CPU-time-eating animal.
This man page was translated from Japanese to English by me with poor
English skill :-)
Version 0.2i and earlier:
Tuukka Toivonen <email@example.com>
Vincent Pagel <firstname.lastname@example.org>
Takashi Iwai <email@example.com>
Davide Moretti <firstname.lastname@example.org>
Chi Ming HUNG <email@example.com>
Riccardo Facchetti <firstname.lastname@example.org>
IZUMO Masanao <email@example.com>
HARADA Tomokazu <firstname.lastname@example.org>
YAMATE Keiichirou <email@example.com>
KIRYU Masaki <firstname.lastname@example.org>
AOKI Daisuke <email@example.com>
MATSUMOTO Shoji <firstname.lastname@example.org>
KOYANAGI Masaaki <email@example.com>
IMAI Kunihiko <firstname.lastname@example.org>
NOGAMI Takaya <email@example.com>
WATANABE Takanori <firstname.lastname@example.org>
TAKEKAWA Hiroshi <email@example.com>
NAGANO Daisuke <firstname.lastname@example.org>
YAMAHATA Isaku <email@example.com>
KINOSHITA kosuke <firstname.lastname@example.org>
ARAI Yoshishige <email@example.com>
Glenn Trigg <firstname.lastname@example.org>
and other many people sent information and bug-fixes.
The english version of this man page was written by NAGANO Daisuke
If you have any comments or suggestions or complaints :) about this man
page, please tell me it.