TiMidity(1) TiMidity(1) NAME TiMidity - MIDI to WAVE converter and player SYNOPSIS timidity [-options] filename [filenames ...] DESCRIPTION TiMidity is a MIDI to WAVE converter using Gravis Ultra­ sound-compatible patch files to generate digital audio data from General MIDI files. The data can be stored in a file for processing, or played in real time through an audio device. OPTIONS The following command line options are accepted by version 0.2i of TiMidity: -o filename Place output on filename, which may be a file, device, or HP-UX audio server, depending on the output mode selected with the -O option. The spe­ cial filename ``-'' causes output to be placed on stdout. -O mode Selects the output mode from the compiled-in alter­ natives. mode must begin with one of the supported output mode identifiers. Run TiMidity with the -h option to see a list. The following identifiers should be available in all versions: -Or Generate raw waveform data. All format options are supported. Common formats include: -OrU uLaw -Or1sl 16-bit signed linear PCM -Or8ul 8-bit unsigned linear PCM -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 util­ ity sox is able to read such malformed files, so you can pipe data directly to sox for on-the-fly conversion to other formats. 8 Sep 1995 1 TiMidity(1) TiMidity(1) Format options Option characters may be added immediately after the mode identifier to change the out­ put format. The following options are rec­ ognized: 8 8-bit sample width 1 16-bit sample width l Linear encoding U uLaw (8-bit) encoding M Monophonic S Stereo s Signed output u Unsigned output x Byte-swapped output Note that some options have no effect on some modes. For example, you cannot generate a byte- swapped RIFF WAVE file, or force uLaw output on a Linux PCM device. -s frequency Sets the resampling frequency. Not all sound devices are capable of all frequencies -- an approximate frequency may be selected, depending on the implementation. -a Turns on antialiasing. Samples are run through a lowpass filter before playing, which reduces alias­ ing noise at low resampling frequencies. -f Toggles fast envelopes. Some MIDI files sound bet­ ter when notes decay slower -- it gives the impres­ sion of reverb, which TiMidity doesn't currently support. -e Make TiMidity evil. On 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. -p voices Sets polyphony (maximum number of simultaneous voices) to voices. 8 Sep 1995 2 TiMidity(1) TiMidity(1) -A amplification Multiplies the master volume by amplification%. -C ratio Sets the ratio of sampling and control frequencies. This determines how often envelopes are recalcu­ lated -- small ratios yield better quality but use more CPU time. -L directory Adds directory to the library path. Patch, config­ uration, 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. -c file Reads an extra configuration file. -I number Uses the program number as the default instrument. Any Program Change events in MIDI files will over­ ride this option. -P file Uses the patch file for every program except drums. Program Change events will be ignored. This is useful for testing new patches. -D channel Marks channel as a drum channel. If channel is negative, channel -channel is marked as an instru­ mental channel. If channel is 0, all channels are marked as instrumental. -Q channel Causes channel to be quiet. If channel is nega­ tive, channel -channel is turned back on. If chan­ nel is 0, all channels are turned on. -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 balance rapidly between left and right, which can cause severe popping when the -F flag is used. -U Instructs TiMidity to unload all instruments from memory between MIDI files. This can reduce memory requirements when playing many files in succession. -i interface Selects the user interface from the compiled-in alternatives. interface must begin with one of the 8 Sep 1995 3 TiMidity(1) TiMidity(1) supported interface identifiers. Run TiMidity with the -h option to see a list. The following identi­ fiers may be available: -id The dumb interface -- plays files in sequence, prints messages according to ver­ bosity level. The trace mode shows the cur­ rent and total playing time. -im The motif interface -- X Window interactive interface. -ik The Tcl/Tk interface -- X Window interactive interface. -in The ncurses full-screen interface with interactive controls. -is The S-Lang full-screen interface with inter­ active controls. Interface options Option characters may be added immediately after the interface identifier. The follow­ ing options are recognized: v Increases verbosity. This option is cumulative. q Decreases verbosity. 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 accom­ plished through the use of short DMA buffer fragments, which can be tuned via the -B option. -B fragments For the Linux 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 of 0 to use the maximum number of fragments available. 8 Sep 1995 4 TiMidity(1) TiMidity(1) FILES TiMidity looks for the configuration file timidity.cfg at startup, before processing any options. If it can't be accessed, and the library path is changed with a -L option on the command line, then the default file will be sought again along the new library path after processing all options, unless another configuration file was specified with the -c option. Configuration files define the mapping of MIDI programs to instrument files. Multiple files may be specified, and statements in later ones will override earlier ones. The following statements can be used in a configuration file: dir directory Adds directory to the search path in the same man­ ner as the -L command line option. source file Reads another configuration file, then continues processing the current one. bank number Selects the tone bank to modify. Patch mappings that follow will affect this tone bank. drumset number Selects the drum set to modify. Patch mappings that follow will affect this drum set. number file [options] Specifies that the the MIDI program number in the current tone bank or drum set should be played using the patch file. options may be any of the following: amp=amplification Amplifies the instrument's volume by ampli­ fication percent. If no value is specified, one will be automatically determined when­ ever the instrument is loaded. note=note Specifies a fixed MIDI note to use when playing the instrument. If note is 0, the instrument will be played at whatever note the Note On event triggering it has. For percussion instruments, if no value is spec­ ified in the configuration file, the default in the patch file will be used. pan=panning Sets the instrument's default panning. pan­ ning may be left, right, center, or an 8 Sep 1995 5 TiMidity(1) TiMidity(1) integer between -100 and 100, designating full left and full right respectively. If no value is specified, the default in the patch file will be used. Note that panning controls in MIDI files will override this value. keep={loop|env} By default, percussion instruments have their loop and envelope information stripped. Strangely shaped envelopes are removed automatically from melodic instru­ ments as well. keep can be used to prevent stripping envelope or loop data. For exam­ ple, the Short and Long Whistle percussion instruments (General Midi numbers 71 and 72) need to have ``keep=loop keep=env'' speci­ fied in the configuration file. strip={loop|env|tail} Force removal of loop or envelope informa­ tion from all patches in the instrument, or strip the tail, i.e. all data after the loop. Some third-party instruments have garbage after the loop, as evidenced by a clicking noise whenever the instrument is played, so adding the strip=tail option will markedly improve sound quality. NOTE: Whenever any filename ends in one of the compiled-in compression identifiers, such as .gz, or .sht, TiMidity will pipe the file through the appropriate decompressor. MIDI files often compress very well, so the ability to handle compressed files can be useful. The special filename ``-'' can be used on the command line to indicate that a MIDI file should be read from stdin. COPYRIGHT Copyright (C) 1995 Tuukka Toivonen. TiMidity is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. TiMidity is distributed in the hope that it will be use­ ful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 8 Sep 1995 6 TiMidity(1) TiMidity(1) AVAILABILITY The latest release is available on the TiMidity Home Page, URL http://www.clinet.fi/~toivonen/timidity/. BUGS 8-bit and low-rate output sounds worse than it should. Eats more CPU time than a small CPU-time-eating animal. AUTHORS Tuukka Toivonen HP-UX audio code, X-Motif interface, icons and antialias­ ing filter by Vincent Pagel Tcl/Tk interface by Takashi Iwai Windows 95/NT audio code by Davide Moretti DEC audio code by Chi Ming HUNG S-Lang user interface by Riccardo Facchetti 8 Sep 1995 7