============================================================================== TiMidity++ -- MIDI to WAVE converter and player Masanao Izumo Apr.28.1999 version 2.0.0 or lator ============================================================================== This program 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. This program 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. The original version of this program was written by Tuuka Tiovonen until TiMidity 0.2i (he discontinued development because he was too busy with work). Masanao Izumo and other people began to hack it, then we officially released the new version, which is called TiMidity++. TiMidity was originally a converter that converted MIDI files to WAV audio files. But now TiMidity++ is not only a converter but also a real-time player that can play a MIDI file in real time. TiMidity does not requires an external MIDI instrument module to play MIDI file; it can perform with software power only. TiMidity++ uses GUS/patch (Glavis Ultrasound) as the voice data to play. It can also handle SoundFont data for voice data. *Features of TiMidity++: - Plays MIDI files without external MIDI instruments - Converts MIDI files to various audio file formats (ex. wav, au, etc.) - Uses GUS/patch and SoundFont for voice data - Displays some information about the music data during playback - Various user interfaces are available (ncurses, motif, xaw, etc..) - Plays MIDI files over a network - Plays MIDI files in archive files - Plays not only SMF files but also MOD, RCP/R36/G18/G36 - Can handle 32 channel data - Can handle user interfaces as dynamically linked modules - Can display a sound spectrogram - Automatically detects the mode of a MIDI file (GM/GS/XG) - Automatically detects drum channels (GS/XG) - Trace playing - Low load - The following MIDI events are supported: NoteOn/Off, KeyPressure, Program, ChannelPressure, Pitchwheel, ToneBank, ModulationWheel, MainVolume, Panning, Expression, Sustain, Portamento, DataEntry, ReverbEffect, ChorusEffect, RPN+/-, NRPN, RPN, AllSoundsOff, ResetControllers, AllNotesOff, Mono/Poly Part, RandomPan, KeyShift, TempoChange, Lyric, InsertText, KARAOKE-Part(@KMIDI), MasterVolume, MIDI-Reset, SystemExclusiveMessages *Usage: -format: timidity [options] midi-filenames -option: -A amplification Multiplies the master volume by amplification %. Default value is 70%. The grater number of amplification makes louder sounds. Range of the amplification is from 0 to 800%. -a Turns on anti-aliasing. Samples are run through a low-pass filter before playing, which reduces aliasing noise at low resampling frequencies. -B fragments For the Linux / FreeBSD / OSS / Windows sound driver, selects the number of buffer fragments in interactive mode. Increasing the number of fragments may reduce choppiness when many proc- esses 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. -b mode Enables pseudo surround effects. mode parameters are the following: -bl Sounds are comes mainly from left. -br Sounds are comes mainly from right. -bb Sounds are comes left and right in random. -bc Disables this feature. -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. -c filename Reads an extra configuration file. -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. -d dir Specifies the directory contains installed dynamic- link interface modules. -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. -E mode Set TiMidity++ extend modes. The following modes are available (capitalized switch means disable this feature): w/W Enables/disables modulation controlling. p/P Enables/disables portamento controlling. v/V Enables/disables NRPM vibration. r/R Enables/disables reverb effect controlling. c/C Enables/disables chorus effect controlling. c ratio Sets the chorus effect value of all channels to ratio. s/S Enables/disables channel pressure control- ling. t/T Enables/disables tracing all Text Meta Events. o/O Accepts/rejects pronouncing multiple same notes. m HH Sets the manufacture ID to HH ( HH is the two hex-digits ). In addition if HH is GM/gm , GS/gs or XG/xg that are same as to 41 , 43 and 7e. B bank Sets the bank number of all channels to bank. -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. In current versions of TiMidity++ this option are toggled. -f Toggles fast envelopes. This option makes TiMidity++ do fast but the release time of the notes are shorten. -g sec Open the Sound-Spectrogram window. This option is activated if the system has support for X Window System. -h Show the help message. -I voice[/c] Uses the program number as the default instrument. Any Program Change events in MIDI files will over- ride this option. If the voice followed by /c the default program number of the channel c is specified by the voice. -i interface 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(old version) -iN NEW ncurses interface -is slang interface -ia X Ahtena Widget interface -ik Tcl/Tk interface -im motif interface -iT vt100 interface -ie Emacs interface (press M-x timidity on Emacs) -ii skin interface Environment variable TIMIDITY_SKIN must be specified with path of the skin data(com- pressed data are also available). Interface options Option characters may be added immediately after the interface identifier. The follow- ing options are recognized: v Increases verbosity level. This option is cumulative. q Decreases verbosity level. This option is cumulative. t Toggles trace mode. In trace mode, TiMid- ity 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 option. -j This option enables to load the patch file while playing. -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. -n degree Enables Noise Shaping Filter. degree is from 0(min) to 4(max). -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: -Od Output via audio device (default) -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 -Ou Generate Sun Audio (au) file -Oa Generate AIFF file -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. 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 6-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. -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. -p voices Sets polyphony (maximum number of simultaneous voices) to voices. -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. -R value Enables Pseudo Reverb Mode. value are the follow- ing: 0 Long slight release 1 Long loud release 2 Short release 3 No release -r This options causes another reverb effects. -s frequency Sets the resampling frequency(Hz or kHz). Not all sound devices are capable of all frequencies -- an approximate frequency may be selected, depending on the implementation. -U Instructs TiMidity++ to unload all instruments from memory between MIDI files. This can reduce memory requirements when playing many files in succession. -w mode Extend mode for MS-Windows. The following options are available: -wr Use rcpcv.dll to play RCP/R36 files. -wR Not use rcpcv.dll (default). -W mode Play with WRD file. mode are the follwing: x X Window System mode t TTY mode d Dumb mode (outputs WRD events directry) - not traces WRD WRD mode must be with trace mode(option -i?t) or timing of WRD events are terrible. -WR[opts] Sets WRD options: a1=b1,a2=b2, ... Sets the WRD options. an is the name of option and bn is the value. -WRd=n Emulates timing(@WAIT,@WMODE) bugs of the original MIMPI player. The emulate level is following: -WRd=0 not emulates any bugs of MIMPI -WRd=1 only emulates some bugs (default) -WRd=2 emulates all known bugs -WRF=filename Uses filename as WRD file only (input-file-name):r.wrd (like csh syntax) is not available. -WRf=filename Uses filername as WRD file. -x string Configure TiMidity++ by the string. The format of string is the same as timidity.cfg. For example: -x'bank 0\n0 violin.pat' Sets the instrument number 0 to violin. *Play the MIDI file in archive file: TiMidity++ can play a file contained in various kinds of archive file. The following archive formats are supported: - tar (*.tar) - gzipped tar (*.tar.gz, *.tgz) - zip file (*.zip) - lzh file (*.lzh) If you want to specify a certain MIDI file in the archive, describe the # expression following the archive name. The expressions after the # are allowed to use regular expressions (case insensitive). Note that the single quotes are needed to prevent the shell from misinterpreting the # character. For example: timidity 'file.zip#file.mid' Plays file.mid in file.zip timidity 'file.lzh#*.mid' Plays any files that match the regular expression '*.mid' in file.zip timidity 'file.tgz#*' This expression is the same as timidity 'file.tgz' *Play the MIDI file over a network TiMidity++ can access a file over a network. Supported network protocols include HTTP, FTP and NNTP(NetNews); specify these as http://foo, ftp://foo, and news://foo respectively. An archived file is also accessible over a network. With NNTP, if you specify a newsgroup in the message-ID field TiMidity++ plays all MIDI files posted in the specified newsgroup. These MIDI files must be encoded using uuencode or the Multipart encoded uuencode/base64/hexbin. *Availability: The latest release of TiMidity++ are available in these sites: http://www.goice.co.jp/member/mo/timidity/ (Unix version; the developer's site) http://www.asahi-net.or.jp/~gb7t-ngm/timidity/ (Macintosh version) http://www2.off.ne.jp/~dai/timidity/timidity-izumo.html (Windows version) ------------------------------------------------------------------------- This document was translated from the original README.jp (written in Japanese). Translator: NAGANO Daisuke (And modified by Masanao Izumo ) Proofreader: Mike Vanier (mvanier@bbb.caltech.edu) If you have any comments on or corrections for this translation, please tell us.