aboutsummaryrefslogtreecommitdiff
path: root/lib/timidity/doc/C
diff options
context:
space:
mode:
Diffstat (limited to 'lib/timidity/doc/C')
-rw-r--r--lib/timidity/doc/C/CHANGES.02i298
-rw-r--r--lib/timidity/doc/C/FAQ208
-rw-r--r--lib/timidity/doc/C/Makefile.am34
-rw-r--r--lib/timidity/doc/C/Makefile.in418
-rw-r--r--lib/timidity/doc/C/README.alsaseq135
-rw-r--r--lib/timidity/doc/C/README.dl42
-rw-r--r--lib/timidity/doc/C/README.m2m298
-rw-r--r--lib/timidity/doc/C/README.mts655
-rw-r--r--lib/timidity/doc/C/README.sf70
-rw-r--r--lib/timidity/doc/C/README.tk77
-rw-r--r--lib/timidity/doc/C/README.w32458
-rw-r--r--lib/timidity/doc/C/README.xaw218
-rw-r--r--lib/timidity/doc/C/README.xskin76
-rw-r--r--lib/timidity/doc/C/timidity.11186
-rw-r--r--lib/timidity/doc/C/timidity.cfg.5504
15 files changed, 4677 insertions, 0 deletions
diff --git a/lib/timidity/doc/C/CHANGES.02i b/lib/timidity/doc/C/CHANGES.02i
new file mode 100644
index 0000000000..fc3569f5a9
--- /dev/null
+++ b/lib/timidity/doc/C/CHANGES.02i
@@ -0,0 +1,298 @@
+---------------------------*-indented-text-*------------------------------
+
+ TiMidity -- Experimental MIDI to WAVE converter
+ Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
+
+--------------------------------------------------------------------------
+
+ List of changes
+
+--------------------------------------------------------------------------
+0.2h to 0.2i
+
+ Renamed most source files to fit into 8.3 characters and less. Sorry.
+
+ Changes by Davide Moretti <dmoretti@iper.net>: Incorporated the
+ changes to allow TiMidity to compile and run under Win32 platforms
+ (tested with Windows 95 and Windows NT for Intel). Read README.W32
+ for more information.
+
+ Tcl/Tk interface by Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>.
+ Read README.tk.
+
+ DEC port by Chi Ming HUNG <cmhung@insti.physics.sunysb.edu>. Read
+ README.DEC.
+
+ A few bugfixes: WAVE headers, shell substitution, Linux audio O_RDWR,
+ dumb/ncurses segfault (thanks to everyone who sent a fix for this ;)
+
+ Reversed the sense of the -F option to get rid of some nasty pops.
+
+ Attempted to merge Makefile.{SUN|SOLARIS|HPUX|DEC} back into Makefile
+ to conserve the world's ketoprofen reserves.
+
+ Lowered default amplification to 70% to get a bit more dynamic
+ headroom.
+
+0.2g to 0.2h
+
+ Warning! This is a Vincent Pagel release... more official
+ release when Tuukka comes back from hollydays, err, his
+ exams actually.
+
+ I've added a Motif interface with files selection, time scale
+ cursor and other blue widgets. More gadgets to come. Changes
+ are in motif_* files, but also a big structure change in
+ timidity.c and playmidi.c as it is now the interface that
+ choose the name of the next file to play.
+
+ Added so called "nice" icons
+
+ Pipe communication between Motif interface and the program.
+
+ Antialiasing filtering now works even with looping patch, nice
+ when playing on a SUN at Ulaw at 8Khz ( option -a )
+
+ Added a Makefile.HPUX since make on HP does not understand
+ the += notation
+
+ Thanks to Gilles Dauphin, works on Solaris
+
+0.2f to 0.2g
+
+ Wrote a little WAVE to patch converter and added ".wav" to
+ DECOMPRESSOR_LIST to allow using wave files as simple
+ instruments. This was Davor Jadrijevic's suggestion from some
+ time back. New file: wav2pat.c
+
+ Took out ADJUST_PANNING_IMMEDIATELY and put in a command line
+ option "-F" for "turn off _F_ast panning". Running out of
+ letters for command line options.
+
+ Error check in read_config_file to make some noise when
+ directories are specified as config files.
+
+ Squashed a segfault that resulted from resampling past loop
+ end (FINALINTERP, when incr > 1<<FRACTION_BITS).
+
+ Sweep computation overflow with seashore.pat fixed.
+
+ The portion of sample data from loop_end to data_length is now
+ played if the instrument doesn't have a loop or an envelope.
+ Some patches (e.g. Fretnoyz from the ProPats 3.0 set) contain
+ garbage between loop_end and data_length, so there's a new
+ config file option "strip=tail" to drop it off.
+
+ Reverse loops are now done "right".
+
+ Slight LOOKUP_HACK cleanup. There's a "final_volume_t" type
+ that's either an uint8 or an int32, whichever is required for
+ mixing computations, and a FINAL_VOLUME() macro to convert an
+ int32 to the required type.
+
+ Changed the "THING := $(THING) junk" assignments in Makefile
+ to "THING += junk"'s. Hopefully the latter is understood by
+ more makes than the former. The whole mess will be replaced by
+ a configure script within a few releases.
+
+ Split up mix_data in mix.c to make it easier to look at.
+
+0.2e to 0.2f
+
+ Moved mixing functions out of resample.c. New files: mix.c,
+ mix.h.
+
+ Added midia.cfg config file for the Midia patch set.
+
+ Added Shawn McHorse's loop optimizations and LOOKUP_SINE
+ config.h option.
+
+ Added Shawn's FAST_DECAY command line switch -- config.h
+ option FAST_DECAY now sets the default for this switch.
+
+ USE_LDEXP config.h option, in case your compiler converts
+ ldexp() into a straight fscale, and fscale is faster than fmul
+ on your machine.
+
+ Fixed WAVE header bug -- the lengths were 44 bytes short.
+ Thanks to Alexey Marinichev for noticing.
+
+ Added PATCH_EXT_LIST option to config.h, so you don't have to
+ change every filename in your configuration file when you
+ decide to compress your patches.
+
+ Added external utility "bag". New file: bag.c, read it for
+ info.
+
+ Added "extern" to the s32towhatever() prototypes in output.h.
+
+0.2d to 0.2e
+
+ Riccardo Facchetti's S-Lang-based user interface: a more
+ efficient alternative to ncurses. Options in Makefile.
+
+ Rearranged options in Makefile to make various combinations
+ easier to select.
+
+ LOOKUP_HACK config file option: horrible experimental kludge
+ to substitute table lookups for multiplication. First attempt
+ to use uLaw as sample format failed miserably. Now using 8-bit
+ linear, which is fine for Sound Blaster owners. It only saves
+ ~20% of CPU on a Pentium, but let me know what it does to your
+ setup.
+
+ Changed instrument loading to add the Sustain flag to all
+ patches which have the Looped flag set.
+
+ Implemented All Notes Off, All Sounds Off, and Reset All
+ Controllers events. The Day of the Tentacle intro music uses
+ the first and plays OK now. The other two might work, or they
+ might throw your machine into a damaging infinite binary loop.
+
+ Implemented Bank Select controller. Sort of emulates the SCC-1
+ (I think): use Control Change 00 xx, where xx is the tone bank
+ you want. Totally untested. Some MIDI files use Control
+ Change 0 for something else, generating loads of warnings.
+
+ In config.h, changed the default command line for shorten to
+ work with version 1.22. The old one was for some ancient
+ version which I finally got around to replacing.
+
+ Fencepost error in resampling fixed by Vincent Pagel.
+
+ Fixed problem with bidirectional loops and vibrato.
+
+0.2c to 0.2d
+
+ Volume computations rewritten to use both floating point and
+ integer multiplication.
+
+ Tremolo and vibrato handling. Some tuning parameters are
+ available in config.h.
+
+ Fixed-pitch, non-looped instruments are now resampled at load
+ time. Note that fixed-pitch instruments can't be pitch-bent.
+
+ Cheaper click removal scheme. Removed I_WANT_THE_CLICKS_BACK
+ option from config.h, added MAX_DIE_TIME definition. Moved
+ resampling and mixing functions from playmidi.{c,h} to new
+ files: resample.c, resample.h.
+
+ Percussion instrument pitches can now be specified
+ independently of the note they're assigned to. Melodic
+ instrument pitches can also be forced. Extra options in config
+ file -- see the manual. Thanks to Davor Jadrijevic for his
+ suggestions.
+
+ Loops and envelopes are now removed from all percussion
+ instruments by default. This should eliminate cymbal crashes
+ being cut short.
+
+ Changes in gravis.cfg to override some instrument parameters
+ that would be guessed incorrectly.
+
+ Vincent Pagel's experimental antialiasing filter. This doesn't
+ interact very well with looping yet, so it's only applied to
+ non-looped instruments. Use the command line option "-a" to
+ enable the filter. New files: filtering.c, filtering.h.
+
+ Enabled fast forward & rewind in non-trace mode in
+ ncurses_ctl.c.
+
+ Fixed a problem with envelopes -- envelope handling still
+ isn't perfect, but skipping the "Attack 2" phase was dumb.
+
+ Added ADJUST_PANNING_IMMEDIATELY to config.h, default on (no
+ change from previous behavior).
+
+ Silly bug in adjusting non-enveloped voice volumes fixed.
+
+ Small change in ncurses_ctl to display 100 for maximum volume
+ and expression.
+
+ After listening to a GUS, made FAST_DECAY default to on.
+
+ Riccardo Facchetti's patch to config.h: Not all Linux systems
+ are little-endian.
+
+ Riccardo's alternative keyboard commands in ncurses_ctl.c.
+ First step towards porting to MS Windows -- you can press
+ F1 to get help!
+
+ DANGEROUS_RENICE config.h option. Thanks again to Riccardo.
+
+0.2b to 0.2c
+
+ Fixed pitch bend sensitivity again. NRPN controls are now
+ correctly ignored.
+
+0.2a to 0.2b
+
+ Francesco Zanichelli's patches to get the Sun version to
+ actually compile.
+
+ Victor Langeveld's patches to get the FreeBSD version to
+ actually compile.
+
+ Fixed pitch bend sensitivity. Thanks again to Vincent Pagel
+ for the information.
+
+ Expression now defaults to 127, as with the SCC-1. Some things
+ may sound a bit loud.
+
+0.1a to 0.2a
+
+ Internal changes for easier porting to other systems.
+ long long's are gone, floating point is used instead.
+ Command line options changed.
+
+ Output to HP-UX audio server by Vincent Pagel.
+
+ Output to Sun audio device based on Francesco Zanichelli's
+ port of version 0.1a.
+
+ Output to ZyXEL modems based on Rob Janssen's uLaw patches.
+
+ FreeBSD options in Makefile and linux_audio.c. Check for DSP
+ fragment capability. (Thanks to Victor Langeveld.)
+
+ ncurses interface changes. Trace mode optional.
+
+ Fixed bug -- the last MIDI event was getting eaten, causing
+ stuck notes at the end of songs. (Reported by Anthony Cruz.)
+
+ Pitch-bend sensitivity added, with a hack to process "Data
+ entry (MSB)" events. Thanks to Vincent Pagel for info on
+ this...
+
+ Run-time configuration of quiet and percussion channels.
+
+ Volume computation fix. You can now crank the volume up to
+ 800%.
+
+ Slower envelopes. Pianos sound better, harps sound
+ worse. Applause in Beethoven's 5th should sound
+ better... Thanks to Tim Norman for comments on this.
+ CPU usage went up -- see option FAST_DECAY in config.h.
+
+ Panning and volume controls no longer affect notes that have
+ already been turned off.
+
+ Click reduction on by default. CPU usage went up -- see option
+ I_WANT_THE_CLICKS_BACK in config.h.
+
+ Sample volume adjustment into compile time option -- see
+ option ADJUST_SAMPLE_VOLUMES in config.h
+
+ SMPTE time in divisions field in MThd. Untested.
+
+ Quote some special characters in filenames before popen().
+
+ Hack to accept old patch files and files that claim to contain
+ 0 instruments and/or layers.
+
+ Behavior when reading Gravis .cfg files changed -- syntax
+ error reported instead of segmentation fault.
+
+0.1a
+ First release. Plays MIDI files under Linux.
diff --git a/lib/timidity/doc/C/FAQ b/lib/timidity/doc/C/FAQ
new file mode 100644
index 0000000000..d7f9b4308f
--- /dev/null
+++ b/lib/timidity/doc/C/FAQ
@@ -0,0 +1,208 @@
+---------------------------*-indented-text-*------------------------------
+
+ TiMidity -- Experimental MIDI to WAVE converter
+ Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
+
+--------------------------------------------------------------------------
+
+ Frequently Asked Questions with answers:
+
+--------------------------------------------------------------------------
+Q: What is it?
+
+A: Where? Well Chris, TiMidity is a software-only synthesizer, MIDI
+ renderer, MIDI to WAVE converter, realtime MIDI player for UNIX machines,
+ even (I've heard) a Netscape helper application. It takes a MIDI file
+ and writes a WAVE or raw PCM data or plays it on your digital audio
+ device. It sounds much more realistic than FM synthesis, but you need a
+ ~100Mhz processor to listen to 32kHz stereo music in the background while
+ you work. 11kHz mono can be played on a low-end 486, and, to some, it
+ still sounds better than FM.
+
+--------------------------------------------------------------------------
+Q: I don't have a GUS, can I use TiMidity?
+
+A: Yes. That's the point. You don't need a Gravis Ultrasound to use
+ TiMidity, you just need GUS-compatible patches, which are freely
+ available on the Internet. See below for pointers.
+
+--------------------------------------------------------------------------
+Q: I have a GUS, can I use TiMidity?
+
+A: The DOS port doesn't have GUS support, and TiMidity won't be taking
+ advantage of the board's internal synthesizer under other operating
+ systems either. So it kind of defeats the purpose. But you can use it.
+
+--------------------------------------------------------------------------
+Q: It doesn't work. It doesn't play anything, and it prints out error
+ messages and stuff.
+
+A: Read the INSTALL file, or get someone to read it for you. Then go
+ through the rest of the documentation, there really isn't that much.
+ Once you've got it working in the distribution directory, here's a list
+ of further things to do:
+
+ Get a full General Midi set. Create a directory, say C:\TIMIDITY or
+ /usr/local/lib/timidity, and put all the *.pat files in it. Also toss
+ in all of the *.cfg files that came with the TiMidity distribution.
+ Then edit timidity.cfg:
+
+ Uncomment and edit the dir statement to read "dir c:\timidity" or
+ whatever, and uncomment the "source gravis.cfg" statement.
+
+ Now run the program: "timidity -L c:\timidity <midi files>"
+
+ That should do it really. Note that TiMidity always checks the current
+ directory first, so things might get confusing if you've got different
+ copies of the config files in various places. "timidity -idvv
+ <midifile>" will list all attempts to open patch files, which might
+ help.
+
+ If it still doesn't work, email me and/or the author of the particular
+ port, if using a non-Unix version.
+
+--------------------------------------------------------------------------
+Q: I tried playing a MIDI file I got off the Net but all I got was a
+ dozen warnings saying "No instrument mapped to tone bank 0, program
+ xx - this instrument will not be heard". What's wrong?
+
+A: The General MIDI standard specifies 128 melodic instruments and
+ some sixty percussion sounds. If you wish to play arbitrary General
+ MIDI files, you'll need to get more patch files.
+
+ There's a program called Midia for SGI's, which also plays MIDI
+ files and has a lot more bells and whistles than TiMidity. It uses
+ GUS-compatible patches, too -- so you can get the 8 MB set at
+ ftp://archive.cs.umbc.edu/pub/midia for pretty good GM compatibility.
+
+ There are also many excellent patches on the Ultrasound FTP sites.
+ I can recommend Dustin McCartney's collections gsdrum*.zip and
+ wow*.zip in the "[.../]sound/patches/files" directory. The huge
+ ProPats series (pp3-*.zip) contains good patches as well. General
+ MIDI files can also be found on these sites.
+
+ This site list is from the GUS FAQ:
+
+> FTP Sites Archive Directories
+> --------- -------------------
+> Main N.American Site: archive.orst.edu pub/packages/gravis
+> wuarchive.wustl.edu systems/ibmpc/ultrasound
+> Main Asian Site: nctuccca.edu.tw PC/ultrasound
+> Main European Site: src.doc.ic.ac.uk packages/ultrasound
+> Main Australian Site: ftp.mpx.com.au /ultrasound/general
+> /ultrasound/submit
+> South African Site: ftp.sun.ac.za /pub/packages/ultrasound
+> Submissions: archive.epas.utoronto.ca pub/pc/ultrasound/submit
+> Newly Validated Files: archive.epas.utoronto.ca pub/pc/ultrasound
+>
+> Mirrors: garbo.uwasa.fi mirror/ultrasound
+> ftp.st.nepean.uws.edu.au pc/ultrasound
+> ftp.luth.se pub/msdos/ultrasound
+
+--------------------------------------------------------------------------
+Q: This MIDI file used to work fine with version 0.0001z but now it
+ suddenly sounds weird. What happened?
+
+A: Something changed in the way TiMidity interprets MIDI or patch
+ parameters. If you think it changed for the worse, try to find out
+ which patch/MIDI file is causing problems, exactly what is different,
+ and if possible, why :) Also, try another MIDI player or device to
+ hear how the file is played correctly. Then mail me.
+
+ If you just upgraded from 0.2c or lower, note that you'll need to
+ update your configuration files. See "gravis.cfg" for an example.
+
+--------------------------------------------------------------------------
+Q: Some files have awful clicks and pops.
+
+A: Find out which patch is responsible for the clicking (try "timidity
+ -P<patch> <midi/test-decay|midi/test-panning>". Add "strip=tail" in
+ the config file after its name. If this doesn't fix it, mail me the
+ patch.
+
+--------------------------------------------------------------------------
+Q: I'm playing Fantasie Impromptu in the background. When I run Netscape,
+ the sound gets choppy and it takes ten minutes to load. What can I do?
+
+A: Here are some things to try:
+
+ - Use a lower sampling rate.
+
+ - Use mono output. This can improve performance by 10-30%.
+ (Using 8-bit instead of 16-bit output makes no difference.)
+
+ - Use a smaller number of simultaneous voices.
+
+ - Make sure you compiled with FAST_DECAY and PRECALC_LOOPS enabled
+ in config.h
+
+ - If you don't have hardware to compute sines, recompile with
+ LOOKUP_SINE enabled in config.h
+
+ - Recompile with LOOKUP_HACK enabled in config.h.
+
+ - Recompile with LINEAR_INTERPOLATION disabled in config.h.
+
+ - Recompile with DANGEROUS_RENICE enabled in config.h, and make
+ TiMidity setuid root. This will help only if you frequently play
+ music while other processes are running.
+
+ - Recompile with an Intel-optimized gcc for a 5-15%
+ performance increase.
+
+ - Use "bag".
+
+--------------------------------------------------------------------------
+Q: I made TiMidity setuid root. Starting Netscape now takes *twenty*
+ minutes!
+
+A: Wow.
+
+--------------------------------------------------------------------------
+Q: I can't reach the WWW page. Is the URL okay?
+
+A: The URL is fine, but clinet.fi is connected to the Internet via two
+ monkeys banging 5-bit PPP on a pair of teletypewriters. If you have
+ trouble connecting, please try again later in case they've gotten
+ banana in the mechanism or started eating the tape or something. The
+ source is also available at
+ ftp://sunsite.unc.edu/Linux/apps/sound/players/ although not every
+ release gets there. You can also try a mirror at
+ http://www.loria.fr/~pagel/
+
+ Other foreign mirror sites would be welcome -- if you can spare a few
+ megs of http space on your server, please email me!
+
+--------------------------------------------------------------------------
+Q: Is there any kind of TiMidity Contest where I could win great
+ prizes like a trip to stersundom, Finland to have dinner with the
+ author and have my picture taken with a polar bear and a free
+ year's subscription to TiMidity Inside Edition beta versions and...
+
+A: Sure. Announcing the TIMIDITY PATCH TREASURE HUNT-AND-DESTROY!
+ You may already be a winner! All you have to do is find the
+ weirdest GUS patch you can, take it to your nearest Unix Prompt,
+ and say the magic words:
+
+ "cat weird.pat |
+ gzip -9 |
+ uuencode weird.pat.gz |
+ pbmtext |
+ pnmscale 3 |
+ pgmtopbm |
+ pbmtoascii -2x4 |
+ od -vb |
+ morse |
+ sed -e 's/,/....../' |
+ say -a -o -
+ uuencode contest_entry.au |
+ mail -s 'Contest Entry' John.R.Format-Designer@gravis.whatever"
+
+ [DISCLAIMER: Contestants must be under 18 months to enter. Rules not
+ available on request. You won't get a prize. Don't try this at home.
+ Winners will not be announced in the New York Times on July 10th, 1996.
+ Winners will not be informed privately. There are no winners, only
+ survivors. Void where not prohibited by common sense. Punishable by up
+ to three years imprisonment and/or a $500,000 fine. Don't send money.]
+
+--------------------------------------------------------------------------
diff --git a/lib/timidity/doc/C/Makefile.am b/lib/timidity/doc/C/Makefile.am
new file mode 100644
index 0000000000..bf4a466777
--- /dev/null
+++ b/lib/timidity/doc/C/Makefile.am
@@ -0,0 +1,34 @@
+# TiMidity++ -- MIDI to WAVE converter and player
+# Copyright (C) 1999-2004 Masanao Izumo <iz@onicos.co.jp>
+# Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
+#
+# 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 distributed in the hope that it will be useful,
+# 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.
+#
+# 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
+
+include $(top_builddir)/common.makefile
+
+EXTRA_DIST = \
+ timidity.1 \
+ timidity.cfg.5 \
+ CHANGES.02i \
+ FAQ \
+ README.dl \
+ README.sf \
+ README.tk \
+ README.xskin \
+ README.xaw \
+ README.alsaseq \
+ README.m2m \
+ README.mts \
+ README.w32
diff --git a/lib/timidity/doc/C/Makefile.in b/lib/timidity/doc/C/Makefile.in
new file mode 100644
index 0000000000..51e1f236ef
--- /dev/null
+++ b/lib/timidity/doc/C/Makefile.in
@@ -0,0 +1,418 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# TiMidity++ -- MIDI to WAVE converter and player
+# Copyright (C) 1999-2004 Masanao Izumo <iz@onicos.co.jp>
+# Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
+#
+# 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 distributed in the hope that it will be useful,
+# 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.
+#
+# 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
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ALSA_CFLAGS = @ALSA_CFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AO_CFLAGS = @AO_CFLAGS@
+AO_LIBS = @AO_LIBS@
+ARTS_CFLAGS = @ARTS_CFLAGS@
+ARTS_CONFIG = @ARTS_CONFIG@
+ARTS_LIBS = @ARTS_LIBS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+A_so_libs = @A_so_libs@
+BORLANDC_FALSE = @BORLANDC_FALSE@
+BORLANDC_LDFLAGS = @BORLANDC_LDFLAGS@
+BORLANDC_START = @BORLANDC_START@
+BORLANDC_TRUE = @BORLANDC_TRUE@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGNUS_FALSE = @CYGNUS_FALSE@
+CYGNUS_TRUE = @CYGNUS_TRUE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ELFILES = @ELFILES@
+EMACS = @EMACS@
+ENABLE_ALSASEQ_FALSE = @ENABLE_ALSASEQ_FALSE@
+ENABLE_ALSASEQ_TRUE = @ENABLE_ALSASEQ_TRUE@
+ENABLE_DYNAMIC_TCLTK_FALSE = @ENABLE_DYNAMIC_TCLTK_FALSE@
+ENABLE_DYNAMIC_TCLTK_TRUE = @ENABLE_DYNAMIC_TCLTK_TRUE@
+ENABLE_DYNAMIC_XAW_FALSE = @ENABLE_DYNAMIC_XAW_FALSE@
+ENABLE_DYNAMIC_XAW_TRUE = @ENABLE_DYNAMIC_XAW_TRUE@
+ENABLE_EMACS_FALSE = @ENABLE_EMACS_FALSE@
+ENABLE_EMACS_TRUE = @ENABLE_EMACS_TRUE@
+ENABLE_GTK_FALSE = @ENABLE_GTK_FALSE@
+ENABLE_GTK_TRUE = @ENABLE_GTK_TRUE@
+ENABLE_MOTIF_FALSE = @ENABLE_MOTIF_FALSE@
+ENABLE_MOTIF_TRUE = @ENABLE_MOTIF_TRUE@
+ENABLE_NCURSES_FALSE = @ENABLE_NCURSES_FALSE@
+ENABLE_NCURSES_TRUE = @ENABLE_NCURSES_TRUE@
+ENABLE_NETWORK_FALSE = @ENABLE_NETWORK_FALSE@
+ENABLE_NETWORK_TRUE = @ENABLE_NETWORK_TRUE@
+ENABLE_PLUGIN_FALSE = @ENABLE_PLUGIN_FALSE@
+ENABLE_PLUGIN_TRUE = @ENABLE_PLUGIN_TRUE@
+ENABLE_PORTMIDISYN_FALSE = @ENABLE_PORTMIDISYN_FALSE@
+ENABLE_PORTMIDISYN_TRUE = @ENABLE_PORTMIDISYN_TRUE@
+ENABLE_SERVER_FALSE = @ENABLE_SERVER_FALSE@
+ENABLE_SERVER_TRUE = @ENABLE_SERVER_TRUE@
+ENABLE_SLANG_FALSE = @ENABLE_SLANG_FALSE@
+ENABLE_SLANG_TRUE = @ENABLE_SLANG_TRUE@
+ENABLE_SOUND_SPEC_FALSE = @ENABLE_SOUND_SPEC_FALSE@
+ENABLE_SOUND_SPEC_TRUE = @ENABLE_SOUND_SPEC_TRUE@
+ENABLE_TCLTK_FALSE = @ENABLE_TCLTK_FALSE@
+ENABLE_TCLTK_TRUE = @ENABLE_TCLTK_TRUE@
+ENABLE_VT100_FALSE = @ENABLE_VT100_FALSE@
+ENABLE_VT100_TRUE = @ENABLE_VT100_TRUE@
+ENABLE_W32GUI_FALSE = @ENABLE_W32GUI_FALSE@
+ENABLE_W32GUI_TRUE = @ENABLE_W32GUI_TRUE@
+ENABLE_W32G_SYN_FALSE = @ENABLE_W32G_SYN_FALSE@
+ENABLE_W32G_SYN_TRUE = @ENABLE_W32G_SYN_TRUE@
+ENABLE_WINSYN_FALSE = @ENABLE_WINSYN_FALSE@
+ENABLE_WINSYN_TRUE = @ENABLE_WINSYN_TRUE@
+ENABLE_WRD_FALSE = @ENABLE_WRD_FALSE@
+ENABLE_WRD_TRUE = @ENABLE_WRD_TRUE@
+ENABLE_XAW_FALSE = @ENABLE_XAW_FALSE@
+ENABLE_XAW_TRUE = @ENABLE_XAW_TRUE@
+ENABLE_XSKIN_FALSE = @ENABLE_XSKIN_FALSE@
+ENABLE_XSKIN_TRUE = @ENABLE_XSKIN_TRUE@
+ESD_CFLAGS = @ESD_CFLAGS@
+ESD_CONFIG = @ESD_CONFIG@
+ESD_LIBS = @ESD_LIBS@
+EXEEXT = @EXEEXT@
+EXTRALIBS = @EXTRALIBS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_CONFIG = @GTK_CONFIG@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTERFACE_SRCS = @INTERFACE_SRCS@
+LDFLAGS = @LDFLAGS@
+LIBFLAC_CFLAGS = @LIBFLAC_CFLAGS@
+LIBFLAC_LIBS = @LIBFLAC_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBOGGFLAC_CFLAGS = @LIBOGGFLAC_CFLAGS@
+LIBOGGFLAC_LIBS = @LIBOGGFLAC_LIBS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MSYS_FALSE = @MSYS_FALSE@
+MSYS_TRUE = @MSYS_TRUE@
+NEEDDLOPEN_FALSE = @NEEDDLOPEN_FALSE@
+NEEDDLOPEN_TRUE = @NEEDDLOPEN_TRUE@
+NEEDGETOPT_FALSE = @NEEDGETOPT_FALSE@
+NEEDGETOPT_TRUE = @NEEDGETOPT_TRUE@
+NETSRCS = @NETSRCS@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+P_so_libs = @P_so_libs@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHCFLAGS = @SHCFLAGS@
+SHELL = @SHELL@
+SHLD = @SHLD@
+STRIP = @STRIP@
+SYSEXTRAS = @SYSEXTRAS@
+T_so_libs = @T_so_libs@
+VCPP_FALSE = @VCPP_FALSE@
+VCPP_LDFLAGS = @VCPP_LDFLAGS@
+VCPP_TRUE = @VCPP_TRUE@
+VERSION = @VERSION@
+VORBISENC_LIBS = @VORBISENC_LIBS@
+VORBISFILE_LIBS = @VORBISFILE_LIBS@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+W32READDIR_FALSE = @W32READDIR_FALSE@
+W32READDIR_TRUE = @W32READDIR_TRUE@
+WATCOM_C_FALSE = @WATCOM_C_FALSE@
+WATCOM_C_TRUE = @WATCOM_C_TRUE@
+WATCOM_LDFLAGS = @WATCOM_LDFLAGS@
+WISH = @WISH@
+W_so_libs = @W_so_libs@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+a_so_libs = @a_so_libs@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+dynamic_targets = @dynamic_targets@
+e_so_libs = @e_so_libs@
+exec_prefix = @exec_prefix@
+g_so_libs = @g_so_libs@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+i_so_libs = @i_so_libs@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+k_so_libs = @k_so_libs@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localstatedir = @localstatedir@
+m_so_libs = @m_so_libs@
+mandir = @mandir@
+n_so_libs = @n_so_libs@
+oldincludedir = @oldincludedir@
+p_so_libs = @p_so_libs@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+r_so_libs = @r_so_libs@
+s_so_libs = @s_so_libs@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+so = @so@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+tcltk_dep = @tcltk_dep@
+timidity_LDFLAGS = @timidity_LDFLAGS@
+w_so_libs = @w_so_libs@
+
+EXTRA_DIST = \
+ timidity.1 \
+ timidity.cfg.5 \
+ CHANGES.02i \
+ FAQ \
+ README.dl \
+ README.sf \
+ README.tk \
+ README.xskin \
+ README.xaw \
+ README.alsaseq \
+ README.m2m \
+ README.mts \
+ README.w32
+
+subdir = doc/C
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h $(top_builddir)/interface.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/C/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+include $(top_builddir)/common.makefile
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/timidity/doc/C/README.alsaseq b/lib/timidity/doc/C/README.alsaseq
new file mode 100644
index 0000000000..19932b0ba0
--- /dev/null
+++ b/lib/timidity/doc/C/README.alsaseq
@@ -0,0 +1,135 @@
+=======================================================================
+ ALSA Sequencer Interface
+ Copyright (c) 2000 Takashi Iwai <tiwai@suse.de>
+=======================================================================
+
+DESCRIPTION
+===========
+
+This document describes about the Advanced Linux Sound Architecture
+(ALSA) sequencer interface. The ALSA sequencer interface communicates
+between ALSA sequencer core and timidity. The interface receives
+events from sequencer and plays it in (quasi-)real-time.
+On this mode, TiMidity works purely as the software real-time MIDI
+render, that is as a software MIDI synth engine on ALSA.
+There is no scheduling routine in this interface, since all scheduling
+is done by ALSA sequencer core.
+
+For invoking ALSA sequencer interface, run timidity as follows:
+ % timidity -iA -B2,8 -Os -q0/0 -k0
+The fragment size is adjustable. The smaller number gives better
+real-time response. Then timidity shows new port numbers which were
+newly created (128:0 and 128:1 below).
+ ---------------------------------------
+ % timidity -iA -B2,8 -Os -q0/0 -k0
+ TiMidity starting in ALSA server mode
+ Opening sequencer port 128:0 128:1
+ ---------------------------------------
+These ports can be connected with any other sequencer ports.
+For example, playing a MIDI file via pmidi (what's an overkill :-),
+ % pmidi -p128:0 foo.mid
+If a midi file needs two ports, you may connect like this:
+ % pmidi -p128:0,128:1 bar.mid
+Connecting from external MIDI keyboard may become like this:
+ % aconnect 64:0 128:0
+
+INSTALLATION
+============
+
+Configure with --enable-alsaseq and --enable-audio=alsa option.
+Of course, other audio devices or interfaces can be chosen
+additionally, too.
+
+For getting better real-time response, timidity must be run as root
+(see below). Set-UID root is the easiest way to achieve this. You
+may change the owner and the permission of installed timidity binary
+as follows:
+ # chown root /usr/local/bin/timidity
+ # chmod 4755 /usr/local/bin/timidity
+
+Be aware that this might cause a security hole!
+
+
+REAL-TIME RESPONSE
+==================
+
+The interface tries to reset process scheduling to SCHED_FIFO and as
+high priority as possible. The SCHED_FIFO'd program exhibits much
+better real-time response. For example, without SCHED_FIFO, timidity
+may cause significant pauses at every time /proc is accessed.
+For enabling this feature, timidity must be invoked by root or
+installed with set-uid root.
+
+
+INSTRUMENT LOADING
+==================
+
+Timidity loads instruments dynamically at each time a program change
+event is received. This causes sometimes pauses due to buffer
+underrun during playback. Furthermore, timidity resets the loaded
+instruments when the all subscriptions are disconnected. Thus for
+keeping all loaded instruments even after playback is finished, you
+need to connect a dummy port (e.g. midi input port) to a timidity port
+via aconnect:
+ % aconnect 64:0 128:0
+
+
+RESET PLAYBACK
+==============
+
+You may stop all sounds during playback by sending SIGHUP signal to
+timiditiy. The connections will be kept even after reset, but the
+events will be no longer processed. For enabling the audio again, you
+have to reconnect the ports.
+
+
+VISUALIZATION
+=============
+
+If you prefer a bit more fancy visual output, try my tiny program,
+aseqview.
+ % aseqview -p2 &
+Then connect two ports to timidity ports (assumed 129:0 and 129:1 were
+created by aseqview):
+ % aconnect 129:0 128:0
+ % aconnect 129:1 128:1
+The outputs ought to be redirected to 129:0,1 instead of 128:0,1.
+ % pmidi -p129:0,129:1 foo.mid
+
+
+COMPATIBILITY WITH OSS
+======================
+
+You may access to timidity also via OSS MIDI emulation on ALSA
+sequencer. Take a look at /proc/asound/seq/oss for checking the
+device number to be accessed.
+ ---------------------------------------
+ % cat /proc/asound/seq/oss
+ OSS sequencer emulation version 0.1.8
+ ALSA client number 63
+ ALSA receiver port 0
+ ...
+ midi 1: [TiMidity port 0] ALSA port 128:0
+ capability write / opened none
+
+ midi 2: [TiMidity port 1] ALSA port 128:1
+ capability write / opened none
+ ---------------------------------------
+In the case above, the MIDI devices 1 and 2 are assigned to timidity.
+Now, play with playmidi:
+ % playmidi -e -D1 foo.mid
+
+
+BUGS
+====
+
+Well, well, they must be there..
+
+
+RESOURCES
+=========
+
+- ALSA home page
+ http://www.alsa-project.org
+- My ALSA hack page (including aseqview)
+ http://members.tripod.de/iwai/alsa.html
diff --git a/lib/timidity/doc/C/README.dl b/lib/timidity/doc/C/README.dl
new file mode 100644
index 0000000000..541e6af32f
--- /dev/null
+++ b/lib/timidity/doc/C/README.dl
@@ -0,0 +1,42 @@
+====================== DYNAMIC INTERFACE ======================
+
+ Interface modules that are specified with `-i' option can be
+loadable modules by using dynamic link module.
+ Place the shared library
+
+ interface_<ID>.so
+
+on the SHARED_LIB_PATH directory. In this case <ID> is the interface's
+ID that are specified at `-i' option.
+ TiMidity++ requires to this shared library the following function:
+ (the <ID> is the same as above)
+
+ControlMode* interface_<ID>_loader(void)
+{
+ ControlMode* ctl;
+ /* ... */
+
+ return ctl;
+}
+
+ If the dynamic interface that are specified at -i<ID>, TiMidity++
+loads interface_<ID>.so at the SHARED_LIB_PATH (this is the macro specified
+in the Makefile) and calls a function in the shared library
+interface_<ID>_loader().
+
+ If a file
+
+ interface_<ID>.txt
+
+describing the information about the interface by 1 line is in the
+SHARED_LIB_PATH, TiMidity++ displays this information when `-h'
+option is specified.
+
+
+WARNING:
+
+ You shouldn't specify the interface you want to build as dynamic link
+as enabled in Makefile. TiMidity++ searches its interfaces first from
+interfaces statically linked with TiMidity++, and next from dynamic linked
+interfaces.
+
diff --git a/lib/timidity/doc/C/README.m2m b/lib/timidity/doc/C/README.m2m
new file mode 100644
index 0000000000..20ff623fe0
--- /dev/null
+++ b/lib/timidity/doc/C/README.m2m
@@ -0,0 +1,298 @@
+m2m: mod->midi file converter for TiMidity++
+
+
+
+
+BRIEF SYNOPSIS:
+
+This adds the new -OM output mode to TiMidity++, which will read in a mod file
+and output a midi file. All parameters needed for the conversion are
+contained in a .m2m file of the same base name as the mod. If this file can
+not be found, it will generate one for you. Chord assignment and
+transposition values can be very difficult and tedious to assign by hand. It
+is STRONGLY recommended that you let the program generate the initial .m2m
+file, so that it can do most (if not all) of this for you. You will still
+need to assign drums, correct banks/programs, and tweak volume amps by hand.
+
+
+
+
+EXAMPLE USAGE:
+
+timidity -c c:\timidity\timidity.cfg -OM -V 2 -idt foo.mod
+
+This will try to read in foo.m2m as the config file for the conversion, and
+will output a file called foo.mid. -V 2 tells it to generate midi for use
+on a device that uses an X^2 volume curve (all GM/GS/XG hardware). You can
+use the -o flag to specify any other output name you wish.
+
+If you don't have timidity installed, so that you don't have a valid
+timidity.cfg file, just create a 0 byte file and use it instead of the real
+thing. Since you're playing mod files, timidity doesn't need to load any
+midi instruments, so you don't need to have a set of patches or a real
+timidity.cfg file :)
+
+
+
+
+BACKGROUND:
+
+MOD files are a lot like MIDI files. Both formats are basicly a series of
+events that control how notes get played with which instruments. MODs
+package the instruments along with the events into a single file, while MIDI
+relies on external sources of instruments. It is this fundamental
+difference that creates the most difficulty in performing a mod->midi file
+conversion. The mod file does not need to know what pitch each sample is
+tuned to, if it is a drum, or if it is a chord. MOD players simply play the
+packaged sample at the requested pitch, assuming all samples are tuned to
+the same fixed frequency, whether they actually are or not. Thus, if you
+were to do a direct mod->midi event conversion, you would wind up with midi
+instruments playing in the wrong keys, snare drums being treated as normal
+melodic instruments, and single notes where there should be chords.
+Transposition, drum related channel movements, and chord emissions are the
+most noticable obstacles to overcome when performing an accurace mod->midi
+conversoin.
+
+Paolo Bonzini has already done half of my job for me. He contributed a good
+amount of code that turns TiMidity++ into a first rate mod player. This,
+alone, would not have helped me very much; it was how he implemented it.
+Rather than handle the events like every other mod player known to man,
+TiMidity++ converts them into standard midi events, loads the mod instruments
+in as special patches, and then renders them just like it would any normal
+midi file. The mod event parsing, instrument parsing, and direct event
+conversion was already done! All I had to do was handle the problems I
+mentioned above, along with many more minor ones I haven't mentioned, before
+writing the internal TiMidity++ events out to a midi file. See the comments
+at the top of m2m.c if you are interested in some of the other issues that
+needed to be addressed during the conversion process. Although some of
+these other issues were non-trivial to deal with, and pitch bends beyond 4
+octaves may still sound a bit odd, they are nothing that the average user
+needs to know about or keep in mind when trying to succesfully convert a mod
+file. The only thing you need to know is that, in order to address the
+conversion problems disscussed above, some information about each sample in
+the mod must be specified in a config file (.m2m) associated with each mod
+file. The format of this file is given below.
+
+
+
+
+M2M CONFIG FILE FORMAT:
+
+Comment lines must begin with a #. Blank lines (no spaces or any other
+character besides a newline or carriage return) are allowed. All other lines
+must specify ALL FIVE of the fields described below. Each field is separated
+by white space.
+
+
+
+FIELD 1: Sample Number
+
+This is the number of the sample that you are defining information for.
+The first sample in the mod file is 1 (not zero).
+
+
+
+FIELD 2: Bank/Program, drum flag, chord, silent flag
+
+This field specifies several different properties of the sample. Optional
+paramaters are given surrounded by parentheses. The format for this field
+is:
+
+(!)(bank/)program(chord)(*)
+
+If the field begins with an exclaimation mark, ! , then no notes will be
+issued for this sample. This can be used to silence samples that you can
+not assign to a general midi instrument, such as speech, complicated drum
+tracks, or any sound effect that you can not create a close approximation to
+using GS sfx banks.
+
+The bank portion of the field specifies an optional bank selection. This is
+the number of the bank to use, followed by a / to separate it from the
+program number.
+
+The program number is the midi instrument you are assigning to the sample.
+If the sample is a drum, this is the note that the drum is mapped to in the
+drum set.
+
+The optional chord field specifies what type of chord the sample is composed
+of. There are 4 types of chords, each of which has 3 subtypes. The
+supported chord types are (M)ajor, (m)inor, (d)iminished minor, and (f)ifth.
+Each chord is specified by the letter surrounded by parantheses in the
+previous line. The subtype of the chord describes how much the chord is
+"rotated" from a standard chord, which can be 0, 1, or 2. As an example of
+what I mean by "rotated", a major chord is composed of the following note
+semitone offsets: 0,4,7. If you were to rotate the chord one to the left, it
+would be: -5,0,4. Two to the left is: -8,-5,0. If no subtype is given,
+zero rotation is assumed.
+
+The final part specifies if the sample is a drum. Put a * at the end of the
+field to indicate this. Chord assignments will be ignored if the drum flag
+is set.
+
+Examples:
+8/48M bank 8, program 48 (Orchestra Strings), with a normal major chord
+!8/48M silence this sample
+8/48M2 same as the first example, only the chord is rotated down twice
+48 normal Marcato Strings in tone bank 0
+16/38* Power drum set, Snare1
+38* Snare1 on the regular drum set 0
+
+
+
+FIELD 3: Transposition
+
+This is how much to transpose the original note specified in the mod file.
+If the sample is tuned at middle C (pitch 60), it will need to be transposed
++24 semitones for the midi instrument to play on the correct pitch. Samples
+marked as drums will not be transposed, since they are fixed to a single
+note on the drum channel. You must still enter a value for the
+transposition field, even if it is ignored by the drums, so that the config
+file parser will not crash.
+
+
+
+FIELD 4: Fine Tuning
+
+All pitch bend events for this sample will be adjusted by the given fraction
+of a pitch. This is sometimes necessary for highly out of tune samples.
+Some MOD composers, instead of tuning their samples correctly, use pitch
+bends to tune the samples. When you play this music with correctly tuned
+samples, these pitch bends detune the note and it sounds out of tune. So the
+fine tuning value is used to compensate for these detuning pitchbends.
+
+It is also common to find out of tune samples that were NOT tuned with
+pitchbends, so adding in a pitch bend adjustment would only make them sound
+worse in a midi file. To disable fine tuning, an optional ! can be placed
+before the fine tuning value. This is the DEFAULT SETTING in the automatic
+config file generator. If you find that a mod requires fine tuning for a
+sample, simply delete the ! and redo the conversion.
+
+This feature is not yet fully implemented. Only existing pitch bend events
+are affected, so no new pitch bend events are issued. This is not usually a
+problem, however, since most cases where this feature needs to be applied
+involve mods that issue pitch bends before the affected notes, since they
+were intended to tune the samples to begin with. I plan to eventually
+implement insertion of new pitch bend events, so that this will be a true
+fine tuning feature.
+
+
+
+FIELD 5: %Volume
+
+Each sample can be amplified by scaling the expression events. 100 is the
+default amount, which is 100% of the original volume. 50 would decrease it
+to half of the original volume, while 150 would be 1.5 times the original
+volume. Don't forget that the maximum expression value is 127, so any
+expression events that get scaled higher than this will cap off at 127 and
+you won't hear any difference. It is mainly used for quieting instruments
+that are too loud in the midi file, or for amplifying instruments whoose
+expression values are too low to begin with.
+
+Any fields beyond the first 5 will not be parsed. You can type anything
+here that you want. You do not have to place a # before comment text, but
+it is conventional to do so.
+
+
+
+
+FREQUENCY ANALYSIS:
+
+So, how do you figure out how much to transpose each sample and what chord
+it is? Load it up in a program that can perform an FFT on the sample and
+display the frequency peaks. The first peak is usually, but not always, the
+fundamental pitch of the sample. If the sample is a chord, take the first 3
+major peaks and assign the chord from these. Then enter the appropriate
+chord and transposition values in the .m2m file and see if it sounds correct.
+It is VERY time consuming to do all of this by hand.... So, I wrote routines
+to do all of the assignments for you :) It is not 100% accurate, but it's
+pretty darn close. And when it does miss a pitch or a chord, it always
+assigns it the correct LOOKING answer. That is, if I were to visually
+inspect the FFT data, I would pick the same pitch the algorithm does. I'm
+no expert at this, but after spending so many hours testing this on many
+different difficult to assign pitches, I think I'm pretty good at it now :)
+The only way I can see to improve it is to build in some sort of
+psychoacoustical model that takes into account how the human ear percieves
+the sound. And I don't think I want to do that at the moment.... It does an
+above average job at dealing with samples that have more than one pitch or
+chord in them, but don't be surprised if a noisy or multi-tonal sample
+doesn't get assigned correctly. Garbage in, garbage out :) The automatic
+assignment is very good for the vast majority of samples and should DEFINATELY
+be tried first before you start changing things by hand. When it does mess
+up, it's usually only off by a single semitone or an octave multiple, so it's
+easy to tweak from there.
+
+Before I wrote the automatic frequency analysis routines, I knew very little
+about the field. Pitch detection is a very old problem in the audio signal
+processing literature. I looked up references in the library dating from
+the 1960's. The stuff from back then is just as relevant as the later
+literature, since the methods really haven't improved much since then. The
+two major camps on how to do this are "autocorrelation" and "cepstrum"
+analysis. It turns out that autocorrelation was not the answer to my
+problems. While it works well on "well behaved" samples, it breaks down
+very quickly on synth instruments, noisy instruments, and instruments with
+multiple fundamental frequencies. A large number of samples encountered in
+mod files exhibit these properties. No matter what I did to try to tweak it,
+and I tried a lot of good things, I just could not make it robust enough to
+handle real world samples. It's a good theory, but it falls apart in
+practice.
+
+Cepstrum analysis proved to be much more robust. But even so, I had to do a
+good deal of pitch filtering and peak weighting before I could get it to work
+well. The 2nd FFT analysis kept giving me frequency peaks that didn't exist
+in the 1st FFT spectrum. They were, however, very close to real peaks. So I
+throw away all frequencies that fall below a pitch peak area and maximum
+magnitude filter, then force the cepstrum analysis to only choose pitches that
+have made it through the filter in the 1st FFT spectrum. I set a maximum
+frequency based on zero point crossing analysis, going out two zero crossings
+from the largest amplitude in the sample. This was necessary to prevent
+octave jumping errors. I found that it is also important to weight the
+cepstrum peak areas by the maximum magnitude within the corresponding pitch
+peak in the 1st FFT. This was a desperate attempt to get some especially
+troublesome bass samples to assign correctly. Surprisingly enough, it works
+great, giving me a higher success rate on all my samples without inducing any
+new misassignments! The only catch is that the weighting only works well for
+< 2 seconds of audio analysis. Any larger than that and the FFT size gets
+so big that the pitch peaks are too diffused, so the maximum magnitudes for
+the pitches are too small, and the weighting starts to give wrong answers.
+If anyone wants to analyze >= 2 seconds of data, which isn't neccessary for
+assigning pitches to mod/midi instruments, it would be easy to implement a
+sliding window average that calls the existing frequency assignment
+function.
+
+It appears to work better than any of the other sample analysis software I
+have. If you are interested in more details of how I did the cepstrum
+analysis, try looking over the code in freq.c and/or email me for a more
+complete description of the algorithm I wound up with. The new FFT routines
+are not mine, but are public domain. From all the benchmarks I could find,
+this is the best FFT implementation for doing what I need to do (and for
+future effects processing, should they ever be added to TiMidity++). See
+fft4g.c for info on where to get the original FFT package.
+
+
+
+
+SUGGESTIONS ?:
+
+Feel free to email me with any suggestions you may have on how I can do a
+better job of converting the mods, or how I can implement things on the TODO
+or WISH lists in m2m.c. I am considering turning this into a stand alone
+program, but until I get more free time and energy, it's going to stay as
+just an addon for TiMidity++.
+
+
+
+
+LEGAL STUFF:
+
+TiMidity++ is distributed under the GPL, and since my code is derived from
+and makes use of it, I guess it's under the GPL too. So blah blah blah,
+legal stuff, blah blah blah, etc.. You know the drill.
+
+
+
+
+Eric A. Welsh <ewelsh@ccb.wustl.edu>
+Center for Molecular Design
+Center for Computational Biology
+Washington University
+St. Louis, MO
diff --git a/lib/timidity/doc/C/README.mts b/lib/timidity/doc/C/README.mts
new file mode 100644
index 0000000000..d6f5a2d782
--- /dev/null
+++ b/lib/timidity/doc/C/README.mts
@@ -0,0 +1,655 @@
+======================================================================
+MIDI Tuning Standard summary
+======================================================================
+
+Besides GS/XG scale tuning which adjusts the pitch of 12 tones in an
+octave individually, TiMidity++ supports MIDI Tuning Standard in
+Universal SysEx. MIDI Tuning Standard has the following advantages
+compared with GS/XG scale tuning:
+
+ - Support for microtonal sound other than 12 tones
+ - The pitch can be adjusted in 1/100 cent or less accuracy
+ - Temperaments can be rationally setup based on the tonality
+
+For details, please refer to the recommended practice.
+
+(1) Bulk Tuning Dump Request (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 00 tt F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+00 sub-ID#2 = "bulk tuning dump request (Non Real-Time)"
+tt tuning program number (0 - 127)
+F7 EOX
+----------------------------------------------------------------------
+
+(2) Bulk Tuning Dump (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 01 tt <tuning name> [xx yy zz] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+01 sub-ID#2 = "bulk tuning dump (Non Real-Time)"
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx yy zz] frequency data for one note (repeated 128 times)
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(3) Single Note Tuning Change (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 02 tt ll [kk xx yy zz] F7
+
+F0 7F Universal Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+02 sub-ID#2 = "single note tuning change (Real-Time)"
+tt tuning program number (0 - 127)
+ll number of changes (1 change = 1 set of [kk xx yy zz])
+[kk MIDI key number
+ xx yy zz] frequency data for that key (repeated 'll' number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+(4) Bulk Tuning Dump Request (Bank) (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 03 bb tt F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+03 sub-ID#2 = "bulk tuning dump request (Bank) (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+F7 EOX
+----------------------------------------------------------------------
+
+(5) Key-Based Tuning Dump (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 04 bb tt <tuning name> [xx yy zz] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+04 sub-ID#2 = "key-based tuning dump (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx yy zz] frequency data for one note (repeated 128 times)
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(6) Scale/Octave Tuning Dump 1-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 05 bb tt <tuning name> [xx] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+05 sub-ID#2 = "scale/octave tuning dump 1-byte form
+ (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx] frequency data for C,C#,... B (12 bytes total)
+ 00H means -64 Cent
+ 40H means +/- 0 Cent
+ 7FH means +63 Cent
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(7) Scale/Octave Tuning Dump 2-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 06 bb tt <tuning name> [xx yy] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+06 sub-ID#2 = "scale/octave tuning dump 2-byte form
+ (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx yy] frequency data for C,C#,... B (24 bytes total)
+ 00H 00H means -100 cents (8,192 steps of .012207 cents)
+ 40H 00H means 0 cents (equal temperament)
+ 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(8) Single Note Tuning Change (Bank) (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
+
+F0 7F Universal Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+07 sub-ID#2 = "single note tuning change (Bank) (Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+ll number of changes (1 change = 1 set of [kk xx yy zz])
+[kk MIDI key number
+ xx yy zz] frequency data for that key (repeated 'll' number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+(9) Single Note Tuning Change (Bank) (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+07 sub-ID#2 = "single note tuning change (Bank) (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+ll number of changes (1 change = 1 set of [kk xx yy zz])
+[kk MIDI key number
+ xx yy zz] frequency data for that key (repeated 'll'number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+(10) Scale/Octave Tuning 1-Byte Form (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 08 ff gg hh [ss] ... F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+08 sub-ID#2 = "scale/octave tuning 1-byte form (Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss] 12 byte tuning offset of 12 semitones from C to B
+ 00H means -64 cents
+ 40H means 0 cents (equal temperament)
+ 7FH means +63 cents
+F7 EOX
+----------------------------------------------------------------------
+
+(11) Scale/Octave Tuning 1-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 08 ff gg hh [ss] ... F7
+
+F0 7E Universal Non Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+08 sub-ID#2 = "scale/octave tuning 1-byte form (Non Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss] 12 byte tuning offset of 12 semitones from C to B
+ 00H means -64 cents
+ 40H means 0 cents (equal temperament)
+ 7FH means +63 cents
+F7 EOX
+----------------------------------------------------------------------
+
+(12) Scale/Octave Tuning 2-Byte Form (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 09 ff gg hh [ss tt] ... F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+09 sub-ID#2 = "scale/octave tuning 2-byte form (Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss tt] 24 byte tuning offset of 2 bytes per semitone from C to B
+ 00H 00H means -100 cents (8,192 steps of .012207 cents)
+ 40H 00H means 0 cents (equal temperament)
+ 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
+F7 EOX
+----------------------------------------------------------------------
+
+(13) Scale/Octave Tuning 2-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 09 ff gg hh [ss tt] ... F7
+
+F0 7E Universal Non Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+09 sub-ID#2 = "scale/octave tuning 2-byte form (Non Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss tt] 24 byte tuning offset of 2 bytes per semitone from C to B
+ 00H 00H means -100 cents (8,192 steps of .012207 cents)
+ 40H 00H means 0 cents (equal temperament)
+ 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
+F7 EOX
+----------------------------------------------------------------------
+
+(14) Temperament Tonality Control Tuning (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 0A sf mi F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0A sub-ID#2 = "temperament tonality control tuning
+ (Real-Time)"
+sf number of sharp/flat (1 byte)
+ 39H means 7 flats
+ 3FH means 1 flat
+ 40H means key of C
+ 41H means 1 sharp
+ 47H means 7 sharps
+mi major/minor (1 byte)
+ 00H means major key
+ 01H means minor key
+ 02H means passing major key
+ 03H means passing minor key
+F7 EOX
+----------------------------------------------------------------------
+
+(15) Temperament Tonality Control Tuning (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0A sf mi F7
+
+F0 7E Universal Non Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0A sub-ID#2 = "temperament tonality control tuning
+ (Non Real-Time)"
+sf number of sharp/flat (1 byte)
+ 39H means 7 flats
+ 3FH means 1 flat
+ 40H means key of C
+ 41H means 1 sharp
+ 47H means 7 sharps
+mi major/minor (1 byte)
+ 00H means major key
+ 01H means minor key
+ 02H means passing major key
+ 03H means passing minor key
+F7 EOX
+----------------------------------------------------------------------
+
+(16) Temperament Type Control Tuning (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 0B ff gg hh tt F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0B sub-ID#2 = "temperament type control tuning (Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bit 2 = port A/B
+ bits 3 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+tt temperament type (1 byte)
+ 00H means equal temperament
+ 01H means Pythagoras tuning
+ 02H means mean-tone tuning
+ 03H means pure intonation
+ 40H means user-defined temperament #0
+ 41H means user-defined temperament #1
+ 42H means user-defined temperament #2
+ 43H means user-defined temperament #3
+F7 EOX
+----------------------------------------------------------------------
+
+(17) Temperament Type Control Tuning (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0B ff gg hh tt F7
+
+F0 7E Universal Non Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0B sub-ID#2 = "temperament type control tuning (Non Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bit 2 = port A/B
+ bits 3 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+tt temperament type (1 byte)
+ 00H means equal temperament
+ 01H means Pythagoras tuning
+ 02H means mean-tone tuning
+ 03H means pure intonation
+ 40H means user-defined temperament #0
+ 41H means user-defined temperament #1
+ 42H means user-defined temperament #2
+ 43H means user-defined temperament #3
+F7 EOX
+----------------------------------------------------------------------
+
+(18) User-defined Temperament Entry (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0C tt <temper name>
+ ll [fh fl bh bl aa bb cc dd ee ff] ... F7
+
+F0 7E Universal Non Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0C sub-ID#2 = "user-defined temperament entry (Non Real-Time)"
+tt temperament program number (0 - 63)
+<temper name> 16 ASCII characters
+ll number of formula (1 formula =
+ 1 set of [fh fl bh bl aa bb cc dd ee ff])
+[fh applying pitch bit mask byte 1
+ bits 0 to 3 = circle of fifth forward 8 to 11
+ bits 4 to 5 = reserved for future expansion
+ bit 6 = major flag (reversal)
+ fl applying pitch bit mask byte 2
+ bits 0 to 6 = circle of fifth forward 1 to 7
+ bh applying pitch bit mask byte 3
+ bits 0 to 3 = circle of fifth backward 8 to 11
+ bits 4 to 5 = reserved for future expansion
+ bit 6 = minor flag (reversal)
+ bl applying pitch bit mask byte 4
+ bits 0 to 6 = circle of fifth backward 1 to 7
+ aa bb fraction (aa/bb)
+ cc dd ee ff] power ((cc/dd)^(ee/ff)) (repeated 'll' number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+======================================================================
+The major/minor in the temperament tonality
+======================================================================
+
+The basic chords used in general music in C major are not only C, G, F
+but also Am, Em, Dm which appear frequently. There may also be Cm,
+Gm, Fm, A, E, D, and so on. Since these chords are not supported only
+in pure intonation (C major), players need to change temperaments
+according to progress of music.
+
+To solve the issue, TiMidity++ prepares
+
+(1) pure intonation (C major)
+ based on the pitch of C in Pythagoras tuning (C major)
+(2) pure intonation (A minor)
+ based on the pitch of A in Pythagoras tuning (A minor)
+(3) pure intonation (passing C major)
+ based on the pitch of A in Pythagoras tuning (C major)
+(4) pure intonation (passing A minor)
+ based on the pitch of C in Pythagoras tuning (A minor)
+
+I will explain more precisely. The following table gives the lattice
+(Cartesian model) of the scale system:
+
+-----------------------------------------------------------------------------
+D-- A-- E-- B-- F#-- C#-- G#-- D#-- A#-- E#-- B#-- F##-- C##--
+Bb- F- C- G- D- A- E- B- F#- C#- G#- D#- A#-
+Gb Db Ab Eb Bb F C G D A E B F#
+Ebb+ Bbb+ Fb+ Cb+ Gb+ Db+ Ab+ Eb+ Bb+ F+ C+ G+ D+
+Cbb++ Gbb++ Dbb++ Abb++ Ebb++ Bbb++ Fb++ Cb++ Gb++ Db++ Ab++ Eb++ Bb++
+-----------------------------------------------------------------------------
+
+The notation "ABCDEFG" is according to Pythagoras tuning. The
+notation "+", "-", "++" and "--" mean 1sc higher, 1sc lower, 2sc
+higher and 2sc lower respectively.
+
+A certain pure intonation is given as 12 sounds arranged by the
+rectangle of 4x3 from the lattice. For example, C tuning, A tuning,
+A- tuning and C+ tuning are given as following tables respectively:
+
+[C tuning (C major)]
+----------------------
+A- E- B- F#-
+F C G D
+Db+ Ab+ Eb+ Bb+
+----------------------
+
+[A tuning (A minor)]
+----------------------
+F#- C#- G#- D#-
+D A E B
+Bb+ F+ C+ G+
+----------------------
+
+[C+ tuning (passing C major)]
+----------------------
+A E B F#
+F+ C+ G+ D+
+Db++ Ab++ Eb++ Bb++
+----------------------
+
+[A- tuning (passing A minor)]
+----------------------
+F#-- C#-- G#-- D#--
+D- A- E- B-
+Bb F C G
+----------------------
+
+I think it is nice to select the tuning combination whose pitch of
+parallel key is slightly lower for major music, and slightly higher
+for minor music.
+
+======================================================================
+Preset temperament of Temperament Type Control Tuning
+======================================================================
+
+First, Pythagoras tuning (major) chromatic scale is expressed by the
+following recurrence relations. Here, the index [] is a offset of the
+tonic. The operation results are surely settled between 1 and 2, so
+they will be made into half or double if necessary.
+
+[Pythagoras tuning (major) chromatic scale]
+pytha_maj[ 0] = 1 # C 1
+pytha_maj[ 7] = pytha_maj[ 0] * 3/2 # G 3/2
+pytha_maj[ 2] = pytha_maj[ 7] * 3/2 # D 9/8
+pytha_maj[ 9] = pytha_maj[ 2] * 3/2 # A 27/16
+pytha_maj[ 4] = pytha_maj[ 9] * 3/2 # E 81/64
+pytha_maj[11] = pytha_maj[ 4] * 3/2 # B 243/128
+pytha_maj[ 6] = pytha_maj[11] * 3/2 # F# 729/512
+--
+pytha_maj[ 5] = pytha_maj[ 0] * 2/3 # F 4/3
+pytha_maj[10] = pytha_maj[ 5] * 2/3 # Bb 16/9
+pytha_maj[ 3] = pytha_maj[10] * 2/3 # Eb 32/27
+pytha_maj[ 8] = pytha_maj[ 3] * 2/3 # Ab 128/81
+pytha_maj[ 1] = pytha_maj[ 8] * 2/3 # Db 256/243
+
+On the other hand, pure intonation (major) chromatic scale can be
+expressed by the following recurrence relations. Here, sc means a
+syntonic comma (81/80).
+
+[pure intonation (major) chromatic scale]
+pure_maj[ 0] = 1 # C 1
+pure_maj[ 7] = pure_maj[ 0] * 3/2 # G 3/2
+pure_maj[ 2] = pure_maj[ 7] * 3/2 # D 9/8
+pure_maj[ 9] = pure_maj[ 2] * 3/2 / sc # A 5/3
+pure_maj[ 4] = pure_maj[ 9] * 3/2 # E 5/4
+pure_maj[11] = pure_maj[ 4] * 3/2 # B 15/8
+pure_maj[ 6] = pure_maj[11] * 3/2 # F# 45/32
+--
+pure_maj[ 5] = pure_maj[ 0] * 2/3 # F 4/3
+pure_maj[10] = pure_maj[ 5] * 2/3 * sc # Bb 9/5
+pure_maj[ 3] = pure_maj[10] * 2/3 # Eb 6/5
+pure_maj[ 8] = pure_maj[ 3] * 2/3 # Ab 8/5
+pure_maj[ 1] = pure_maj[ 8] * 2/3 # Db 16/15
+
+It can be understood that pure intonation is similar to Pythagoras
+tuning fundamentally except descending with 1sc at A and rising with
+1sc at B flat while going up and down respectively from the tonic in
+the circle of fifths.
+
+Similarly, expressed Pythagoras tuning and pure intonation (minor)
+chromatic scale by the following recurrence relations. Although the
+fractions written to right-hand side is terrible values, the
+recurrence relations themselves are very simple.
+
+[Pythagoras tuning (minor) chromatic scale]
+pytha_min[ 0] = 1 # C 1
+pytha_min[ 7] = pytha_min[ 0] * 3/2 # G 3/2
+pytha_min[ 2] = pytha_min[ 7] * 3/2 # D 9/8
+pytha_min[ 9] = pytha_min[ 2] * 3/2 # A 27/16
+pytha_min[ 4] = pytha_min[ 9] * 3/2 # E 81/64
+pytha_min[11] = pytha_min[ 4] * 3/2 # B 243/128
+pytha_min[ 6] = pytha_min[11] * 3/2 # F# 729/512
+pytha_min[ 1] = pytha_min[ 6] * 3/2 # C# 2187/2048
+pytha_min[ 8] = pytha_min[ 1] * 3/2 # G# 6561/4096
+pytha_min[ 3] = pytha_min[ 8] * 3/2 # D# 19683/16384
+--
+pytha_min[ 5] = pytha_min[ 0] * 2/3 # F 4/3
+pytha_min[10] = pytha_min[ 5] * 2/3 # Bb 16/9
+
+[pure intonation (minor) chromatic scale]
+pure_min[ 0] = 1 * sc # C 1 * sc
+pure_min[ 7] = pure_min[ 0] * 3/2 # G 3/2 * sc
+pure_min[ 2] = pure_min[ 7] * 3/2 / sc # D 10/9 * sc
+pure_min[ 9] = pure_min[ 2] * 3/2 # A 5/3 * sc
+pure_min[ 4] = pure_min[ 9] * 3/2 # E 5/4 * sc
+pure_min[11] = pure_min[ 4] * 3/2 # B 15/8 * sc
+pure_min[ 6] = pure_min[11] * 3/2 / sc # F# 25/18 * sc
+pure_min[ 1] = pure_min[ 6] * 3/2 # C# 25/24 * sc
+pure_min[ 8] = pure_min[ 1] * 3/2 # G# 25/16 * sc
+pure_min[ 3] = pure_min[ 8] * 3/2 # D# 75/64 * sc
+--
+pure_min[ 5] = pure_min[ 0] * 2/3 # F 4/3 * sc
+pure_min[10] = pure_min[ 5] * 2/3 # Bb 16/9 * sc
+
+The differences from the major tuning are that the boundary of
+Pythagoras tuning goes up three positions, that the positions of
+descending with syntonic comma are changed, and that pure intonation
+is adjusted 1sc higher so that melodic parts' tonic (Pythagoras
+tuning) and harmonic parts' tonic (pure intonation) are overlapped.
+
+By the way, mean-tone tuning is also prepared besides Pythagoras
+tuning and pure intonation as preset temperament of TiMidity++. While
+mean-tone tuning (major) is based on the general one whose major
+thirds are pure, mean-tone tuning (minor) is based on Salinas tuning
+whose minor thirds are pure. Both mean-tone tuning (major) chromatic
+scale and mean-tone tuning (minor) chromatic scale can be expressed by
+the following recurrence relations.
+
+[mean-tone tuning (major) chromatic scale]
+mt_maj[ 0] = 1 # C 1
+mt_maj[ 7] = mt_maj[ 0] * 5^(1/4) # G 5^(1/4)
+mt_maj[ 2] = mt_maj[ 7] * 5^(1/4) # D 5^(1/2) / 2
+mt_maj[ 9] = mt_maj[ 2] * 5^(1/4) # A 5^(3/4) / 2
+mt_maj[ 4] = mt_maj[ 9] * 5^(1/4) # E 5/4
+mt_maj[11] = mt_maj[ 4] * 5^(1/4) # B 5^(5/4) / 4
+mt_maj[ 6] = mt_maj[11] * 5^(1/4) # F# 5^(3/2) / 8
+--
+mt_maj[ 5] = mt_maj[ 0] / 5^(1/4) # F 2 / 5^(1/4)
+mt_maj[10] = mt_maj[ 5] / 5^(1/4) # Bb 4 / 5^(1/2)
+mt_maj[ 3] = mt_maj[10] / 5^(1/4) # Eb 4 / 5^(3/4)
+mt_maj[ 8] = mt_maj[ 3] / 5^(1/4) # Ab 8/5
+mt_maj[ 1] = mt_maj[ 8] / 5^(1/4) # Db 8 / 5^(5/4)
+
+[mean-tone tuning (minor) chromatic scale]
+mt_min[ 0] = 1 * sc # C 1 * sc
+mt_min[ 7] = mt_min[ 0] * (10/3)^(1/3) # G (10/3)^(1/3) * sc
+mt_min[ 2] = mt_min[ 7] * (10/3)^(1/3) # D (10/3)^(2/3) / 2 * sc
+mt_min[ 9] = mt_min[ 2] * (10/3)^(1/3) # A 5/3 * sc
+mt_min[ 4] = mt_min[ 9] * (10/3)^(1/3) # E (10/3)^(4/3) / 4 * sc
+mt_min[11] = mt_min[ 4] * (10/3)^(1/3) # B (10/3)^(5/3) / 4 * sc
+mt_min[ 6] = mt_min[11] * (10/3)^(1/3) # F# 25/18 * sc
+mt_min[ 1] = mt_min[ 6] * (10/3)^(1/3) # C# (10/3)^(7/3) / 16 * sc
+mt_min[ 8] = mt_min[ 1] * (10/3)^(1/3) # G# (10/3)^(8/3) / 16 * sc
+mt_min[ 3] = mt_min[ 8] * (10/3)^(1/3) # D# 125/108 * sc
+--
+mt_min[ 5] = mt_min[ 0] / (10/3)^(1/3) # F 2 / (10/3)^(1/3) * sc
+mt_min[10] = mt_min[ 5] / (10/3)^(1/3) # Bb 4 / (10/3)^(2/3) * sc
+
+The point that the boundary of mean-tone tuning goes up three
+positions, and that mean-tone tuning is adjusted 1sc higher, are the
+same situation as Pythagoras tuning and pure intonation.
+
+Now, I think that mean-tone tuning could use for a harmony-melody
+because of the characteristic that is more harmony-like than
+Pythagoras tuning, and a scale is not uneven like pure intonation.
+
+======================================================================
+User-defined temperament entry
+======================================================================
+
+The function of user-defined temperament entry (experimental) is
+implemented in TiMidity++. This corresponds to (18) of MIDI Tuning
+Standard summary (see the top of this document). For example, it can
+generate various temperaments by the following SysEx's.
+
+[equal temperament]
+f0 7e 00 08 0c 00 ; temper prog number
+65 71 75 61 6c 00 00 00 00 00 00 00 00 00 00 00 ; "equal"
+01 ; number of formula
+0f 7f 00 00 01 01 02 01 07 0c ; (both) 2^(7/12)
+f7
+
+[Pythagoras tuning]
+f0 7e 00 08 0c 01 ; temper prog number
+50 79 74 68 61 67 6f 72 61 73 00 00 00 00 00 00 ; "Pythagoras"
+02 ; number of formula
+00 3f 40 1f 03 02 01 01 00 01 ; (maj) 3/2
+43 7f 00 03 03 02 01 01 00 01 ; (min) 3/2
+f7
+
+[mean-tone tuning]
+f0 7e 00 08 0c 02 ; temper prog number
+6d 65 61 6e 2d 74 6f 6e 65 00 00 00 00 00 00 00 ; "mean-tone"
+02 ; number of formula
+00 3f 40 1f 01 01 05 01 01 04 ; (maj) 5^(1/4)
+43 7f 00 03 01 01 0a 03 01 03 ; (min) (10/3)^(1/3)
+f7
+
+[pure intonation]
+f0 7e 00 08 0c 03 ; temper prog number
+70 75 72 65 20 69 6e 74 6f 6e 61 74 69 6f 6e 00 ; "pure intonation"
+04 ; number of formula
+00 3f 40 1f 03 02 01 01 00 01 ; (maj) 3/2
+00 04 40 02 05 01 02 03 04 01 ; (maj) 5*(2/3)^4
+43 7f 00 03 03 02 01 01 00 01 ; (min) 3/2
+40 22 00 00 05 01 02 03 04 01 ; (min) 5*(2/3)^4
+f7
+
+[Kirnberger-3]
+f0 7e 00 08 0c 00 ; temper prog number
+4b 69 72 6e 62 65 72 67 65 72 2d 33 00 00 00 00 ; "Kirnberger-3"
+02 ; number of formula
+00 0f 00 00 01 01 05 01 01 04 ; (both) 5^(1/4)
+00 30 00 1f 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+[Hirashima temperament]
+f0 7e 00 08 0c 01 ; temper prog number
+48 69 72 61 73 68 69 6d 61 00 00 00 00 00 00 00 ; "Hirashima"
+02 ; number of formula
+00 1f 00 03 01 01 05 01 01 04 ; (both) 5^(1/4)
+00 00 00 3c 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+[Werckmeister-3]
+f0 7e 00 08 0c 02 ; temper prog number
+57 65 72 63 6b 6d 65 69 73 74 65 72 2d 33 00 00 ; "Werckmeister-3"
+02 ; number of formula
+00 07 00 00 01 09 02 01 0f 04 ; (both) 2^(15/4)/9
+00 18 00 3f 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+[well-temperament]
+f0 7e 00 08 0c 03 ; temper prog number
+77 65 6c 6c 2d 74 65 6d 70 65 72 00 00 00 00 00 ; "well-temper"
+02 ; number of formula
+00 07 00 00 01 09 02 01 0f 04 ; (both) 2^(15/4)/9
+00 00 01 7f 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+----
+TAMUKI Shoichi <tamuki@linet.gr.jp>
diff --git a/lib/timidity/doc/C/README.sf b/lib/timidity/doc/C/README.sf
new file mode 100644
index 0000000000..0c222f1056
--- /dev/null
+++ b/lib/timidity/doc/C/README.sf
@@ -0,0 +1,70 @@
+================================================================
+ ** Timidity SoundFont Extension **
+
+ written by Takashi Iwai
+ <iwai@dragon.mm.t.u-tokyo.ac.jp>
+ <http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/>
+
+ patch level 1: April 2, 1997
+================================================================
+
+* WHAT'S THIS?
+
+This is an extension to use samples in SoundFont files with
+timidity-0.2i. You can employ both SoundFont file together with
+ordinary GUS patch files. Both SBK and SF2 formats are supported.
+
+
+* USAGE
+
+Two commands are newly added in configuration.
+
+To specify the SoundFont file to be used, just add a line in config
+file like:
+
+ soundfont sffile [order=number]
+
+The first parameter is the file name to be loaded. The file itself
+is stored once after reading all configurations, then converted to
+the internal records except wave sample data.
+
+The optional argument specifies the order of searching.
+'order=0' means to search the SoundFont file at first, then search
+the GUS patches if the appropriate sample is not found.
+'order=1' means to search the SoundFont file after GUS patches.
+
+Another command 'font' is supplied to control the behavior of sample
+selection. If you don't want to use some samples in the SoundFont
+file, specify the sample via 'exclude' sub-command.
+
+ font exclude bank [preset [keynote]]
+
+The first parameter is MIDI bank number of the sample to be removed.
+The optional second parameter is MIDI program number of the sample.
+For drum samples, specify 128 as bank, and drumset number as preset,
+and keynote number for the drum sample.
+
+You can change the order of individual sample (or bank) via "order"
+sub-command.
+
+ font order number bank [preset [keynote]]
+
+The first parameter is the order number (zero or one) to be changed,
+and the sequent parameters are as well as in exclude command above.
+
+
+* BUGS & TODO'S
+
+- noises on some bass drum samples
+- support of modulation envelope
+- support of cut off / resonance
+- support of chorus / reverb
+
+
+* CHANGES
+
+- pl.1
+ + fix volume envelope calcuation
+ + add font command
+ + fix font-exclude control
+
diff --git a/lib/timidity/doc/C/README.tk b/lib/timidity/doc/C/README.tk
new file mode 100644
index 0000000000..3c0a93b9e2
--- /dev/null
+++ b/lib/timidity/doc/C/README.tk
@@ -0,0 +1,77 @@
+---------------------------------------------------------------------
+This is the README file of TkMidity Ver.1.5, Tcl/Tk interface for
+TiMidity MIDI Converter/Player.
+
+TkMidity realizes the Tk interface panel communicating with true
+TiMidity program. By using Tk, you can enjoy a beautiful Motif-like
+window without Motif libraries.
+
+
+* WHAT'S NEW in 1.5
+
+- Trace window using timer callback
+- Forward/backward buttons
+- A couple of bug fixes..
+
+
+* CONTENTS
+
+This archive contains the following files:
+
+README.tk - this file
+tk_c.c - tk-interface control source file
+tkmidity.ptcl - main tcl/tk source to be preprocessed
+tkpanel.tcl - main control panel tcl/tk script
+browser.tcl - file browser
+misc.tcl - miscellaneous subroutines
+tkbitmaps/*.xbm - bitmap files for TkMidity
+
+
+* USAGE
+
+There are four modes newly featured to TiMidity; repeat, shuffle,
+auto-start and auto-exit modes. Repeat mode plays musics after all
+files are finished repeatedly. Shuffle mode means the random pick-up
+playing. When Auto-start is on, the TkMidity begins playing music as
+soon as program starts. Auto-exit means to quit TkMidity automatically
+after all songs are over. Each setting can be saved by Save Config
+menu.
+
+You can change the display configuration in Displays menu. This
+configuration also can be saved on the start-up file by Save Config
+menu.
+
+From ver.1.3, File Open/Close menues and direct keyboard
+controls are supported. You can append arbitrary files from file
+browser. The shortcut key actions are as follows:
+
+ [Enter] : Start Playing
+ [Space] : Pause / Start Again
+ [c] : Stop Playing
+ [q] : Quit TkMidity
+ [p] or [Left] : Previous File
+ [n] or [Right] : Next File
+ [v] or [Down] : Volume Down (5%)
+ [V] or [Up] : Volume Up (5%)
+ [F10] : Menu Mode
+ [Alt]+[Any] : Select Each Menu
+
+From this version (1.4), trace mode window is realized. You can see a
+funny movements of volume and panning of each channel if you specify
+the option flag in command line (see manual).
+
+
+* PROGRAM NOTES
+
+This version requires Tcl7.5/Tk4.1 libraries. Unlike the older tk
+interface, timidity links the tcl/tk libraries on its binary, not
+using wish program. Also, shared memory access must be permitted.
+
+
+* TROUBLE SHOOTING
+
++The present script verifies the existence of the file before pass to
+TiMidity, but occasionally this could happen...
+
+ Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>
+ <http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/>
diff --git a/lib/timidity/doc/C/README.w32 b/lib/timidity/doc/C/README.w32
new file mode 100644
index 0000000000..92ee226732
--- /dev/null
+++ b/lib/timidity/doc/C/README.w32
@@ -0,0 +1,458 @@
+How to compile TiMidity++ for Windows
+
+This file contains fllowing instructions.
+
+1.Mingw in Msys environment
+2.Borland C++ in Msys environment
+3.OpenWatcom C++ in Msys environment
+4.Visual C++ in Msys environment
+
+
+1.Mingw in Msys environment
+
+(1)Setup Mingw and MSYS
+ 1)Setup Mingw(http://sourceforge.net/projects/mingw/)
+ and MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
+ If want to build Japanese version of TiMidity++,
+ you can use Mingw-JP(http://sourceforge.jp/projects/mingw-jp),
+ at least windres.exe from Mingw-JP is needed,
+ and to set windows(not msys) environment valiable CLANG=C-SJIS is recomended.
+(2)Setup needed libraries
+ 2-0)get pexports from Mingw
+ "pexports" is included in mingw-utils-0.3.tar.gz, get it and extract it.
+ 2-1)pdcurses
+ Get pdcurses-2.6.0-2003.07.21-1.exe from Mingw. and extract them.
+ Move curses.h to include path and libcurses.a libarary path.
+ 2-2)oggvorbis(http://www.vorbis.com/)
+ get OggVorbis-win32sdk-1.0.1.zip and extract it.
+ make export libraries
+ pexports xxxx.dll >xxxx.def
+ dlltool --dllname xxxx.dll --input-def xxxx.def --output-lib libxxxx.a
+ Change include\ogg\os_type.h line 29 as following
+ (os_types.h)
+ 29 # if !defined(__GNUC__) || defined(__MINGW32__)
+ set environment variables in batch file like this.
+ REM OggVorbis
+ set PATH=\usr\local\oggvorbis-win32sdk-1.0.1\bin;\usr\local\oggvorbis-win32sdk-1.0.1\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/include:%C_INCLUDE_PATH
+ set LD_LIBRARY_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/lib:%LD_LIBRARY_PATH%
+
+ 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
+ get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
+ get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
+ move gogo.h gogo\include\gogo
+ move gogo.dll gogo\lib
+ make export libraries
+ pexports gogo.dll >gogo.def
+ dlltool --dllname gogo.dll --input-def gogo.def --output-lib libgogo.a
+ set environment variables in batch file like this.
+ REM GOGO
+ set PATH=\usr\local\gogo\bin;\usr\local\gogo\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/gogo/include:%C_INCLUDE_PATH%
+ set LD_LIBRARY_PATH=/usr/local/gogo/lib:%LD_LIBRARY_PATH%
+ 2-4)flac(http://flac.sourceforge.net/)
+ get flac-1.1.0-win.zip and extract it.
+ Change include\*\export.h line 23 as following
+ (export.h)
+ 23 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER) \
+ || !defined(__BORLANDC__) || !defined(__CYGWIN32__) || !defined(__MINGW32__)
+ set environment variables in batch file like this.
+ REM FLAC
+ set PATH=\usr\local\flac-1.1.0-win\bin;;%PATH%
+ set C_INCLUDE_PATH=/usr/local/flac-1.1.0-win/include:%C_INCLUDE_PATH%
+ set LD_LIBRARY_PATH=/usr/local/flac-1.1.0-win/bin:%LD_LIBRARY_PATH%
+
+ 2-5)portaudio(http://www.portaudio.com/)
+ Download and make portaudio v1.18.
+ (see callasio http://www.audiomulch.com/~rossb/code/calliasio/)
+ Each portaudio.dll must be renamed pa_asio.dllApa_win_ds.dllApa_win_wmme.dll.
+ Only portaudo.h is needed for compiling TiMidity++.
+
+ 2-6)portmidi(http://www-2.cs.cmu.edu/~music/portmusic/)
+ Download portmidi18jun03.zip, extract it and compile it.
+ Copy porttime.h libporttime.a portmidi.h libportmidi.a to appropriate directories.
+
+(3)Make TiMidity++ binaries
+ 3-1)timw32g.exe
+ (configure)
+ CFLAGS="-O2" configure --enable-network --enable-w32gui \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ strip timidity.exe
+ mv timidity.exe timw32g.exe
+ 3-2)twsyng.exe
+ (configure)
+ CFLAGS="-O2" configure --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ strip timidity.exe
+ mv timidity.exe twsyng.exe
+
+ 3-3)twsynsrv.exe
+ (configure)
+ CFLAGS="-O2" configure --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ add config.h following line
+ #define TWSYNSRV 1
+ (make)
+ make
+ strip timidity.exe
+ mv timidity.exe twsynsrv.exe
+
+ 3-4)timidity.exe
+ (configure)
+ CFLAGS="-O2" configure --enable-interface=ncurses,vt100,winsyn --enable-network \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ strip timidity.exe
+
+
+2.Borland C++ in Msys environment
+
+(1)Setup BorlandC and MSYS
+ 1)Setup BorlandC
+ Downlod C++Buldercompiler(http://www.borland.com/products/downloads/download_cbuilder.html#)
+ , read readme.txt and make bcc32.cfg and ilink 32.cfg.
+ (bcc32.cfg)
+ -I"C:\Borland\Bcc55\include"
+ -L"C:\Borland\Bcc55\lib;C:\Borland\Bcc55\lib\PSDK"
+ -DWINVER=0x0400
+ -D_WIN32_WINNT=0x0400
+ (ilink32.cfg )
+ -L"C:\Borland\Bcc55\lib;C:\Borland\Bcc55\lib\PSDK"
+ 2)Setup MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
+ Remove mingw path from /etc/fstab.
+ Add fllowing line at the top of Msys.bat and create bcc_env.bat.
+ call c:\borland\bcc55\bin\bcc_env.bat
+ bcc_env.bat is like follow ing
+ @echo off
+ set PATH=c:\borland\bcc55\bin;%PATH%
+
+ Set INCLUDE=c:\usr\local\pdcurses_bcc\include;%INCLUDE%
+ ----
+ ( setteing of various env. val. s )
+ ----
+(2)Setup needed libraries
+ 2-0-1)implib.exe(to make import library from dll)
+ implib -a -c xxx.lib xxx.dll
+ 2-0-2)coff2omf.exe(VCC library to BCC library)
+ coff2omf xxxx.lib xxx_bcpp.lib.
+
+ 2-1)pdcurses
+ pdcurses-2.6.0-src.tar.bz2 from Mingw(http://sourceforge.net/project/showfiles.php?group_id=2435)
+ and make them.
+ rename pdcurses.lib libpdcurses.lib
+ Move curses.h to include path.
+ Add library path in ilink32.cfg
+ 2-2)oggvorbis(http://www.vorbis.com/)
+ get OggVorbis-win32sdk-1.0.1.zip and extract it.
+ set environment variables in batch file like this.
+ REM OggVorbis
+ set PATH=\usr\local\oggvorbis-win32sdk-1.0.1\bin;\usr\local\oggvorbis-win32sdk-1.0.1\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/include:%C_INCLUDE_PATH
+ Add library path in ilink32.cfg
+ Only hederfiles are need for compiling TiMidity++
+ 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
+ get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
+ get gogo.h files from Gogo no Coder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
+ move gogo.h gogo\include\gogo
+ (for timidity gogo.lib is not necessary)
+ set environment variables in batch file like this.
+ REM GOGO
+ set PATH=\usr\local\gogo\bin;\usr\local\gogo\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/gogo/include:%C_INCLUDE_PATH%
+ Add library path in ilink32.cfg
+ Only hederfiles are need for TiMidity++
+ 2-5)flac(http://flac.sourceforge.net/)
+ get flac-1.1.0-win.zip and extract it.
+ Change include\*\export.h line 23 as following
+ (export.h)
+ 23 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER) \
+ || !defined(__BORLANDC__) || !defined(__CYGWIN32__) || !defined(__MINGW32__)
+ Change include\FLAC\ordinals.h line 39 as following
+ 39 #if defined(_MSC_VER) || defined(__BORLANDC__)
+ set environment variables in batch file like this.
+ REM FLAC
+ set PATH=\usr\local\flac-1.1.0-win\bin;;%PATH%
+ set C_INCLUDE_PATH=/usr/local/flac-1.1.0-win/include:%C_INCLUDE_PATH%
+ Add library path in ilink32.cfg
+ 2-6)portaudio(http://www.portaudio.com/)
+ I don't know how to comple portaudio with bcc commandline tools.
+ Only portaudio.h is needed for compiling TiMidity++.
+ 2-7)portmidi(http://www-2.cs.cmu.edu/~music/portmusic/)
+ I don't know how to comple portaudio with bcc commandline tools.
+
+(3)Make TiMidity++ binaries
+ 3-0-1) perl -pe 's/CC\s-o\s\S\S*\s/CC /g' configure >configure_bc
+ ( -o xxxx options are not work correctly with BCC)
+ 3-0-2)Invoke sh rm_float.sh in timidity/timidity directory.
+ This removes f , F, l and L after sonst float valude( ex. 123.45f )
+<rmfloat.sh>
+-------------------- from here -----------------------
+#!/bin/sh
+
+for foo in `ls *.c` `ls *.h`;do
+perl -pe 's/(%[0-9]*\.[0-9]+f)/$1f/g' $foo|perl -pe 's/(\.[0-9]+)f/$1/g' - |perl -pe 's/(\.[0-9]+)F/$1/g' - |perl -pe 's/(\.[0-9]+)l/$1/g' - |perl -pe 's/(\.[0-9]+)L/$1/g' - |perl -pe 's/(0x[0-9a-f]+)l/$1/g' - |perl -pe 's/(0x[0-9a-f]+)L/$1/g' - >$foo.rm
+mv $foo.rm $foo
+done
+-------------------- to here -------------------------
+
+ 3-1)timw32g.exe
+ (configure)
+ CC="bcc32" CPP="cpp32" CFLAGS="" ./configure_bc --enable-w32gui \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ mv timidity.exe timw32g.exe
+ 3-2)twsyng.exe
+ (configure)
+ CC="bcc32" CPP="cpp32" CFLAGS="" \
+ ./configure_bc --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ mv timidity.exe twsyng.exe
+ 3-3)twsynsrv.exe
+ (configure)
+ CC="bcc32" CPP="cpp32" CFLAGS=""\
+ ./configure_bc --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ add config.h following line
+ #define TWSYNSRV 1
+ (make)
+ make
+ mv timidity.exe twsynsrv.exe
+ 3-4)timidity.exe
+ (configure)
+ CC="bcc32" CPP="cpp32" CFLAGS="" \
+ ./configure_bc --enable-interface=vt100,winsyn,ncurses --enable-network \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+
+
+3.OpenWatcom C++ in Msys environment
+
+(1)OpenWatcom and MSYS
+ 1)Set OpenWatcom(http://www.openwatcom.org)
+ 1-1)Download OpenWatcom, install and configure them
+ 1-2)Download Microsoft Platform SDK install and configure them.
+ Replace rc.exe of OpenWatom with the one of Platform SDK's one.
+ (OpenWatcom's rc.exe can't use).
+ 2)Setup Mngw and MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
+ Remove mingw path from /etc/fstab.
+ Add fllowing line at the top of Msys.bat and create wcc_env.bat.
+ call wcc_env.bat
+ wcc_env.bat is like follow ing
+ @echo off
+ set LIB=
+ set INCLUDE=
+ call i:\watcom\setvars.bat
+ ----
+ ( setteing of various env. val. s )
+ ----
+(2)Setup needed libraries(The wcc386 option -5s is recomended !! Because of TiMidity++ compatibility.!!)
+ 2-0) make import Libray from dll
+ mlib -n -b out.lib in.dll
+ 2-1)pdcurses
+ Get pdcurses-2.5.0 from GnuWin32(http://sourceforge.net/projects/gnuwin32/)
+ and make import Libraries from dlls.
+ "libpdcurses.lib" is needed (not pdcurses.lib).
+ Move curses.h to include path and libpdcurses.lib libarary path.
+ 2-2)oggvorbis(http://www.vorbis.com/)
+ Get OggVorbis-win32sdk-1.0.1.zip and extract it.
+ Edit include\ogg\os_types.h.
+ (os_types.h)
+ 29 # if defined(__WATCOMC__)
+ 30 /* MSVC/Borland */
+ 31 typedef __int64 ogg_int64_t;
+ 32 typedef int ogg_int32_t;
+ 33 typedef unsigned int ogg_uint32_t;
+ 34 typedef short ogg_int16_t;
+ 35 typedef unsigned short ogg_uint16_t;
+ 36 # else
+ -----
+ 52 # endif
+ Make inport Libraries from dll
+ Set environment variables in batch file like this.
+ REM OggVorbis
+ set PATH=\usr\local\oggvorbis-win32sdk-1.0.1_wcc\bin;\usr\local\oggvorbis-win32sdk-1.0.1_wcc\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1_wcc/include:%C_INCLUDE_PATH
+ set LIB=\usr\local\oggvorbis-win32sdk-1.0.1_wcc\lib:%LIB%
+ Only *.h files are needed for TiMidity++.
+ 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
+ Get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
+ Get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
+ Move gogo.h gogo\include\gogo
+ (for timidity gogo.lib not necessary)
+ Set environment variables in batch file like this.
+ REM GOGO
+ set PATH=\usr\local\gogo_wcc\bin;\usr\local\gogo_wcc\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/gogo_wcc/include:%C_INCLUDE_PATH%
+ set LIB=\usr\local\gogo_wcc\lib:%LIB%
+ Only *.h files are needed for compiling TiMidity++.
+ 2-5)flac(http://flac.sourceforge.net/)
+ get flac-1.1.0-win.zip and extract it.
+ make inport Libraries from dll
+ set environment variables in batch file like this.
+ REM FLAC
+ set PATH=\usr\local\flac-1.1.0-win_wcc\bin;%PATH%
+ set C_INCLUDE_PATH=/usr/local/flac-1.1.0-win_wcc/include:%C_INCLUDE_PATH%
+ set LIB=\usr\local\flac-1.1.0-win_wcc\bin:%LIB%
+ Only *.h files are needed for compiling TiMidity++.
+ 2-6)portaudio(http://www.portaudio.com/)
+ I don't know how to comple portaudio with OpenWatcom commandline tools.
+ Only port audio.h is needed for compling TiMidity++.
+ 2-7)portmidi(http://www-2.cs.cmu.edu/~music/portmusic/)
+ I don't know how to comple portmidi with OpenWatcom commandline tools..
+
+(3)Make TiMidity++ binaries
+ 3-0-1)wcc386_w.sh ( it is in scripts/directory )
+ Wcc386 is not familier to GNU autoconf tools,
+ Use my wrapper wcc386_w.sh, instead of wcc386.exe
+ 3-1)timw32g.exe
+ (configure)
+ CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
+ ./configure --enable-network --enable-w32gui \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
+ --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
+ (make)
+ make
+ mv timidity.exe timw32g.exe
+ 3-2)twsyng.exe
+ (configure)
+ CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
+ ./configure --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
+ --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
+ (make)
+ make
+ mv timidity.exe twsyng.exe
+ 3-3)twsynsrv.exe
+ (configure)
+ CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
+ ./configure --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
+ --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
+ add config.h following line
+ #define TWSYNSRV 1
+ (make)
+ make
+ mv timidity.exe twsynsrv.exe
+
+ 3-4)timidity.exe
+ (configure)
+ CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
+ ./configure --enable-interface=ncurses,vt100,winsyn --enable-network \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
+ --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
+ (make)
+ make
+
+
+4.Visual C++ in Msys environment
+
+(1)Setup VisualC++ and MSYS
+ 1)Setup Visual C++
+ Download
+ Microsoft Visual C++ Toolkit 2003
+ Microsoft.NET SDK
+ Microsoft Platform SDK
+ install and configure them.
+======= CAUTION !! ===========
+If you plan to distribute TiMidity++ binary, use "Visual C++" or "Visual Studio" not "Microsoft Visual C++ Toolkit 2003". because of LICENCE issue.
+Use -MD option insted of -MT and link msvcrt.lib instead of libcmt.lib.
+==============================
+
+ 2)Setup Mngw and MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
+ Remove mingw path from /etc/fstab.
+ Add fllowing line at the top of Msys.bat and create bcc_env.bat.
+ call vc_msys_env.bat
+ vc_msys_env.bat is like follow ing
+ @echo off
+ call i:\"Program Files\Microsoft Visual C++ Toolkit 2003"\vcvars32.bat
+ call i:\"Program Files\Microsoft SDK"\SetEnv.Bat /RETAIL
+ call i:\"Program Files\Microsoft.NET\SDK\v1.1\bin"\sdkvars.bat
+
+ Set INCLUDE=c:\DXSDK\include;%INCLUDE%
+ Set LIB=c:\DXSDK\lib;%LIB%
+ ----
+ ( setteing of various env. val. s )
+ ----
+(2)Setup needed libraries
+ 2-1)pdcurses
+ pdcurses-2.6.0-src.tar.bz2 from Mingw(http://sourceforge.net/project/showfiles.php?group_id=2435)
+ and make them.
+ rename pdcurses.lib libpdcurses.lib
+ move curses.h to include path and libpdcurses.lib libarary path.
+ 2-2)oggvorbis(http://www.vorbis.com/)
+ get OggVorbis-win32sdk-1.0.1.zip and extract it.
+ set environment variables in batch file like this.
+ REM OggVorbis
+ set PATH=\usr\local\oggvorbis-win32sdk-1.0.1\bin;\usr\local\oggvorbis-win32sdk-1.0.1\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/include:%C_INCLUDE_PATH
+ set LIB=\usr\local\oggvorbis-win32sdk-1.0.1\lib:%LIB%
+
+ 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
+ Get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
+ Get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
+ Move gogo.h gogo\include\gogo
+ (for timidity gogo.lib not necessary)
+ Set environment variables in batch file like this.
+ REM GOGO
+ set PATH=\usr\local\gogo\bin;\usr\local\gogo\lib;%PATH%
+ set C_INCLUDE_PATH=/usr/local/gogo/include:%C_INCLUDE_PATH%
+ set LIB=\usr\local\gogo\lib:%LIB%
+ 2-5)flac(http://flac.sourceforge.net/)
+ Set flac-1.1.0-win.zip and extract it.
+ Set environment variables in batch file like this.
+ REM FLAC
+ set PATH=\usr\local\flac-1.1.0-win\bin;;%PATH%
+ set C_INCLUDE_PATH=/usr/local/flac-1.1.0-win/include:%C_INCLUDE_PATH%
+ set LIB=\usr\local\flac-1.1.0-win\bin:%LIB%
+ 2-6)portaudio(http://www.portaudio.com/).
+ I don't know how to comple portaudio with vc commandline tools.
+ But for compling TiMidity++ only port audio.h is needed.
+ 2-7)portmidi(http://www-2.cs.cmu.edu/~music/portmusic/)
+ I don't know how to comple portmidi with vc commandline tools..
+
+(3)Make TiMidity++ binaries
+ 3-1)timw32g.exe
+ (configure)
+ CC="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
+ ./configure --enable-network --enable-w32gui \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ mv timidity.exe timw32g.exe
+ 3-2)twsyng.exe
+ (configure)
+ CC="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
+ ./configure --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+ mv timidity.exe twsyng.exe
+ 3-3)twsynsrv.exe
+ (configure)
+ CC="cl" CPP="cl.exe -EP" CFLAGS="-O2"\
+ ./configure --enable-network --enable-winsyng \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ add config.h following line
+ #define TWSYNSRV 1
+ (make)
+ make
+ mv timidity.exe twsynsrv.exe
+ 3-4)timidity.exe
+ (configure)
+ CC="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
+ ./configure --enable-interface=ncurses,vt100,winsyn --enable-network \
+ --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
+ (make)
+ make
+
+
+2004.5.28 Keishi Suenaga(skeishi@mutt.freemail.ne.jp)
diff --git a/lib/timidity/doc/C/README.xaw b/lib/timidity/doc/C/README.xaw
new file mode 100644
index 0000000000..f547d1f166
--- /dev/null
+++ b/lib/timidity/doc/C/README.xaw
@@ -0,0 +1,218 @@
+---------------------------------------------------------------------
+ HOW TO USE Xaw interface of TiMidity++
+
+Xaw interface of TiMidity prepares a GUI only with Athena Widget sets
+and Xt libraries that are standard toolkits of X Window System.
+
+
+* WHAT'S NEW int 1.3
+
+- Imported shortcut key translations
+- Added Trace window including keyboard displaying
+- Enabled to configure resources of X
+- Supported Drag and Drop used on OffiX application
+- Added function to load and/or delete MIDI file entries
+- Enabled to modify some of extended option settings
+- Enabled to save the current playing lists into ~/.xtimidity
+- Menu and dialog messages were Internationalized
+- Resource files were attached
+
+
+* USAGE
+
+New Xaw interface has following file menu;
+
+ LOAD
+ Load a new MIDI file.
+
+ SAVE CONFIG
+ Save the current settings and modes e.g. shuffle,
+ repeat, auto-start and auto-exit flags to ~/.xtimidity .
+
+ HIDE/UNHIDE MESSAGES
+ Toggles displaying status text widget showing messages.
+
+ HIDE/UNHIDE TRACE
+ Toggles displaying status of trace canvas.
+
+ SHUFFLE
+ Toggles shuffle flag.
+
+ REPEAT
+ Toggle repeat flag.
+
+ AUTO-START
+ Toggle auto-start flag.
+
+ AUTO-EXIT
+ Toggle auto-exit flag to exit or not after all songs are over.
+
+ FILE LIST
+ Popup the playing file list window.
+
+ EXTEND MODES
+ Popup the extend mode control window.
+
+ ABOUT
+ Information about Xaw interface of TiMidity++.
+
+ QUIT
+ terminate timidity.
+
+From ver.1.3, File Load and File List menues that enabled to add and/or
+delete playing list. You can append or delete arbitrary files from file
+browser. To play a file, you can select it by either of pull-down menu
+on the title bar or File List window.
+The shortcut key actions on each window are as follows:
+
+<Main Window>
+ [Enter] or [r] : Start Playing
+ [Space] : Pause / Start Again
+ [s] : Stop Playing
+ [q] : Quit TiMidity++
+ [p] or [Left] : Previous File
+ [n] or [Right] : Next File
+ [v] or [Down] : Volume Down (10%)
+ [V] or [Up] : Volume Up (10%)
+ [Alt + N] : Load Files
+ [Alt + S] : Save settings to ~/.xtimidity
+ [Ctrl + M] : Hide/Show Messages
+ [Ctrl + T] : Hide/Show Trace canvas
+ [Ctrl + S] : Toggles Shuffle state
+ [Ctrl + R] : Toggles Repeat state
+
+<File List Window>
+ [p] or [Up] : Move the cursor to the previous file
+ [n] or [Down] : Move the cursor to the next file
+ [Right] : Move the cursor 5 lines backward
+ [Left] : Move the cursor 5 lines forward
+ [v] : Volume Down (10%)
+ [V] : Volume Up (10%)
+ [Enter] or [R] : Start Playing the selected file
+ [d] : Delete the selected file entry
+ [Space] : Pause / Start Again
+ [s] : Stop Playing
+ [q] : Quit TiMidity++
+ [c] : Close the window
+
+<Extend Mode Window>
+ [c] : Close the window
+ [q] : Quit TiMidity++
+
+<Dialog in Load File Window>
+ [Tab] : File or directory completion
+ [Enter] : Select the directory entries.
+ [Escape] or [CTRL]+[g] : Cancel and close the window
+ [Ctrl-a] : Move the cursor to the top
+ [Ctrl-e] : Move the cursor to the line-end
+ [Ctrl-k] : Delete strings after the cursor
+
+From version 1.1, trace canvas is realized and renewed overall in
+1.3. Specify the interface option flag 't' in command line like as
+'timidity -iat' when you execute TiMidity(see timidity man page).
+You can see a funny movements of volume, expression, panning,
+pitchbending, reverb, chorus and voices et cetera of each channel on the
+trace canvas. Click left mouse button on the trace screen and you can
+toggle trace screen between 'pitchbend and instrument' or 'tonebank,
+reverb and chorus'.
+
+
+* INSTALLATION
+
+TiMidity++ uses Xaw3d by default while compiling when it exists on your
+system because GNU configure is employed. If you feel like to use Xaw,
+edit common.makefile manually to delete all of '-DXAW3D' definitions
+from CPPFLAGS and/or CFLAGS and correct -lXaw3d to -lXaw after
+configure.
+If you want to use Label Widget as before, make the following line
+enable at interface/xaw.h to remove /* */.
+
+ #define WIDGET_IS_LABEL_WIDGET
+
+And make clean before build. If you are using X servers compiled
+without X_LOCALE on the system that doesn't support locale, rewrite
+the folloing line;
+
+ #define I18N
+
+to '#undef I18N' before compiling TiMidity++.
+Although $(HOME)/.xtimidity will be regarded as an initial personal
+configuration file, you can rename it by correcting the line;
+
+ #define INITIAL_CONFIG ".xtimidity"
+
+in xaw.h manually.
+
+!!! NOTE !!!
+Some resource files were attached to TiMidity++1.3.6 or later.
+If you create a resource file of another locale except English or
+Japanese, please mail it to Yoshishige Arai <ryo2@on.rim.or.jp> or
+to Masanao Izumo <mo@goice.co.jp>.
+After building TiMidity++, put TiMidity.ad into the resources directory
+such as;
+ $(X11R6)/lib/X11/app-defaults
+And put TiMidity-uj.ad, which is the Japanese-EUC resource file into;
+ $(X11R6)/lib/X11/$(LANG)/app-defaults
+For example, those are as follows if the Japanese-EUC locale of your
+system is ja_JP.EUC as FreeBSD;
+ # cp TiMidity.ad /usr/X11R6/lib/X11/app-defaults/TiMidity
+ # cp TiMidity-uj.ad /usr/X11R6/lib/X11/app-defaults/ja_JP.EUC/TiMidity
+
+
+* RESOURCES
+
+Application class name is 'TiMidity', so specity resources in
+.Xdefaults or .Xresources in your home directory as follows for example;
+
+ TiMidity*textbackground: LemonChiffon
+ TiMidity*background: PeachPuff1
+ TiMidity*menubutton: goldenrod
+ TiMidity*buttonbackground: gold
+ TiMidity*labelfont: -adobe-helvetica-bold-o-*-*-14-*-75-75-*-*-*-*
+
+typical resources are listed below.
+
+Name Class Default
+----------------------------------------------------------
+bitmapDir BitmapDir "DEFAULT_PATH/bitmaps"
+ directory bitmaps is put.
+arrangeTitle ArrangeTitle False
+ Show MIDI titles on the title bar of the main window.
+background Background gray65
+ Background color of the main window.
+menubutton MenuButtonBackground #CCFF33
+ Menu button color.
+textbackground TextBackground gray85
+ Background color of Text Widget.
+togglebackground ToggleBackground MediumBlue
+ Background color of toggle buttons.
+buttonbackground ButtonBackground gray76
+ Background color of command buttons and other transient windows.
+tracebackground TraceBackground gray90
+ Background color of trace canvas.
+labelfont LabelFont -adobe-helvetica-bold-r-*-*-14-*-75-75-*-*-*-*
+ Label widget font.
+volumefont VolumeFont -adobe-helvetica-bold-r-*-*-12-*-75-75-*-*-*-*
+ Volume Label font.
+tracefont TraceFont -*-*-medium-r-normal--14-*-*-*-*-*-*-*
+ Trace window font.
+textfontset TextFontSet -*-*-medium-r-normal--14-*-*-*-*-*-*-*
+ Text font for message box and so on.
+ttitlefont TtitleFont -*-fixed-medium-r-normal--14-*-*-*-*-*-*-*
+ MIDI title font at the bottom of trace window.
+
+Note that you have to specify FontSet style for font resources
+of TiMdifity*textfontset and/or TiMidity*ttitlefont if you are using
+executables compiled with -DI18N on the internationalized X server.
+
+
+* REPORTS
+
+Please send problems concerning Xaw interface, feature requests,
+bug reports or comments to either Yoshishige Arai <ryo2@on.rim.or.jp>
+or to the TiMidity mailing list <timidity@goice.co.jp>.
+
+
+ Regards,
+
+ Yoshishige Arai <ryo2@on.rim.or.jp>
diff --git a/lib/timidity/doc/C/README.xskin b/lib/timidity/doc/C/README.xskin
new file mode 100644
index 0000000000..33b72ed10c
--- /dev/null
+++ b/lib/timidity/doc/C/README.xskin
@@ -0,0 +1,76 @@
+------------------------------------------------------------------
+This document describes about TiMidity++ skin interface.
+
+ Skin interface is the front-end of TiMidity++ to allow users to
+control TiMidity++ with funny GUI. The face of GUI is changable
+by using "skin data" of WinAmp / x11amp.
+
+
+* SETTING UP THE X-SKIN INTERFACE *
+
+ First, choose a skin data to use and place it on some directory.
+And set this path to the environment variable "timidity_skin"
+ e.g, If your favourite skin data (*.bmp) is placed on
+ ~/.x11amp/Skins/timidity/ :
+
+% setenv timidity_skin ~/.x11amp/Skins/timidity/ (csh)
+$ timidity_skin=~/.x11amp/Skins/timidity ; export timidity_skin (sh)
+
+ If your skin data archive file is on /dos/programs/winamp/skins/winamp.zip:
+
+% setenv timidity_skin /dos/programs/winamp/skins/winamp.zip
+$ timidity_skin=/dos/programs/winamp/skins/winamp.zip ; export timidity_skin
+
+ Only one skin can be specified. There are no selector of skin data.
+ Since default skin is not prepared, if the environment variable isn't
+specified or the data specified is broken, TiMidity++ won't boot.
+
+ This skin interface requires 10 BMP files for skin data such that:
+
+ main, titlebar, playpaus, cbuttons, monoster,
+ posbar, shufrep, text, volume, number
+
+ If your data losts some of these files, please borrow the corresponding
+data from other skin data.
+ In case the data has viscolor.txt, the color of spectrum analyzer is
+determined by this file. If not, the default colors are used.
+
+
+* BOOTING TiMidity++ *
+
+ To use skin interface, boot TiMidity++ with command-line option -ii(tv).
+After initializing of internal of TiMidity++, a window looks like WinAmp :)
+will raise.
+
+
+* USAGE OF INTERFACE *
+
+ Features of this interface now available are:
+
+ Prev/Play/Pause/Stop/Next/ Shuffle/Repeat/ Volume/ Exit
+
+with every corresponding buttons.
+ Clicking the area of displaying elapsed-time changes the contents of
+this area as elapsed-time / remained-time.
+ Clicking the area below the time displaying area changes the contents of
+this area as spectrum analyzer. If you want to display the spectrum analyzer,
+you should compile TiMidity++ with configure option --enable-spectrogram.
+
+ You can move interface's window by grabbing any place of this window.
+
+ To exit this interface, click the little button on right corner.
+
+
+* BUG? *
+
+ Text displaying area can display only English, digits and some graphical
+characters. Any of multi-byte character won't displayed.
+ Cannot set panpot, Equalizer and PlayList of TiMidity++.
+ There no effect by clicking the eject button.
+ Cannot iconize, smalling.
+
+
+ YOU CAN USE THIS INTERFACE AT YOUR OWN RISK.
+
+ Daisuke Nagano <breeze_geo@geocities.co.jp>
+ http://www.geocities.co.jp/Playtown/4370/index.html
diff --git a/lib/timidity/doc/C/timidity.1 b/lib/timidity/doc/C/timidity.1
new file mode 100644
index 0000000000..ab41261731
--- /dev/null
+++ b/lib/timidity/doc/C/timidity.1
@@ -0,0 +1,1186 @@
+.TH timidity 1 "April 25 2004" "2.13.0"
+.SH NAME
+TiMidity++ \- MIDI\-to\-WAVE converter and player
+.SH SYNOPSIS
+.B timidity
+[options] filename [...]
+.SH DESCRIPTION
+\fBTiMidity++\fP 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). \fBTiMidity++\fP uses Gravis
+Ultrasound\-compatible patch files or Soundfonts (*.sfx, *.sf2) to
+generate digital audio data from MIDI files. The digital audio data
+generated by \fBTiMidity++\fP can be stored in a file for processing,
+or played in real time through an audio device.
+.br
+In real time playing, \fBTiMidity++\fP can show the lyrics contained
+in KAR or WRD files.
+.SH FILENAME
+You can use the following expressions as the \fIfilename\fP argument:
+.TP
+.B \-
+Read a MIDI file from standard input.
+.TP
+.B path/filename
+Read a MIDI file from the specified path on a filesystem.
+.TP
+.B dir:directory
+.br
+.ns
+.TP
+.B directory/
+Read and play all MIDI files in the specified \fIdirectory\fP. For
+example,
+.sp
+% timidity some/where/
+.sp
+plays all files in the directory \fBsome/where/\fP.
+.TP
+.B Archive File
+Extract and play the file(s) in the archive. If you want to specify a
+certain MIDI file in the archive, append \fB#<MIDI\-filename>\fP to
+the archive name. The path after `#' allows the use of the wildcard
+expressions (case insensitive).
+.br
+You can use escape sequence \fB\\xHH\fP, where `HH' is a ASCII number
+in hexadecimal integer.
+.sp
+For example:
+.RS
+.TP
+% timidity file.zip#file.mid
+Plays \fBfile.mid\fP in \fBfile.zip\fP
+.TP
+% timidity file.lzh#*.mid
+Plays any files that match the wildcard expression \fB*.mid\fP in
+\fBfile.lzh\fP
+.TP
+% timidity file.tgz#*
+This expression is the same as \fBfile.tgz\fP
+.LP
+Since these mechanism are contained in \fBTiMidity++\fP itself, you
+can use this syntax even in the MS Windows environment.
+.sp
+\fBTiMidity++\fP can handle the following archive formats:
+.TP
+.B tar (*.tar)
+.TP
+.B tar+gzip (*.tar.gz, *.tgz)
+.TP
+.B zip (*.zip)
+.TP
+.B lzh (*.lzh, *.lha)
+(lh0, lh1, lh2, lh3, lh4, lh5, lh6, lz4, lzs and lz5 are available)
+.LP
+Other archives can be expanded if expander command is specified on the
+compile phase. \fBTiMidity++\fP will pipe that command.
+.RE
+.TP
+.B news://news\-server[:port]/Message\-ID
+.br
+.ns
+.TP
+.B news://news\-server[:port]/newsgroup[/first\-last]
+Play the MIDI file in the specified article on the news server. If a
+newsgroup is specified \fBTiMidity++\fP plays all MIDI files found in
+any article posted to that newsgroup.
+.br
+\fBTiMidity++\fP parses MIME Multi\-part messages in case of
+\fBnews://*\fP scheme, extracts MIDI file that was post to that group,
+or in case of normal file, you can explicitly handle MIME documents by
+naming that file with *.mime extension, or prefix that file with
+\fBmime:\fP
+.sp
+The following MIME\-types are allowed:
+.RS
+.TP
+.B uu\-encoded file
+\fBbegin\fP
+.br
+is required
+.TP
+.B base64 encoded
+\fBContent\-Transfer\-Encoding: base64\fP
+.br
+is required
+.TP
+.B quoted\-string
+\fBContent\-Transfer\-Encoding: quoted\-string\fP
+.br
+is required
+.TP
+.B Mac BinHex format
+only HQX format is available
+.RE
+.TP
+.B http://address
+.br
+.ns
+.TP
+.B ftp://address
+Play the file specified in the URL.
+.sp
+For example:
+.RS
+.TP
+% timidity http://www.goice.co.jp/member/mo/dist/midi/impromptu.mid
+plays the specified MIDI\-file directly from the network.
+.LP
+If these expression are used in the *.cfg files, you can even use
+patch\-files (and others) from remote machines.
+.RE
+.SH INPUT FILE
+\fBTiMidity++\fP can handle the following file formats:
+.TP
+.B .mid, .rmi (Format 0, 1, 2)
+Standard MIDI File
+.TP
+.B .rcp, .r36, .g18, .g36 (Recomposer formats)
+Recomposer format which is product for COME ON MUSIC co.
+.TP
+.B .mfi (MFi Version 3 \- Melody Format for i\-Mode)
+i\-Mode is Japanese local mobile phone
+.TP
+.B .kar (Karaoke format)
+Displays the lyrics as a Lyric Meta Event message.
+.TP
+.B .mod, mod.* (Module file)
+.TP
+.B .wrd (WRD format)
+.SH OPTIONS
+The following command line options are accepted by \fBTiMidity++\fP:
+.TP
+.BI "\-A " [n][,m](a)
+.br
+.ns
+.TP
+.BI \-\-amplification= n
+.br
+.ns
+.TP
+.BI \-\-drumpower= m
+.br
+.ns
+.TP
+.B \-\-[no\-]volume\-compensation
+Multiplies the master volume by \fIn\fP%. Default value is 70%.
+Higher amplification makes louder sounds. You can specify the drum
+power, ratio of drum volume from the other channels. The allowed
+values of amplification range from \fB0\fP (no sound) to \fB800\fP.
+.br
+Optionally to put `a' character along with \fB\-a\fP option, or to use
+\fB\-\-volume\-compensation\fP, instructs \fBTiMidity++\fP to
+regularize the volume. You can easily gain dynamic range.
+.sp
+For example:
+.RS
+.TP
+.B \-A90
+volume 90%, drum power 100%, compensation is off
+.TP
+.B \-A,120
+volume 70%, drum power 120%, compensation is off
+.TP
+.B \-A90,120
+volume 90%, drum power 120%, compensation is off
+.TP
+.B \-Aa
+volume 70%, drum power 100%, compensation is on
+.TP
+.B \-A90a
+volume 90%, drum power 100%, compensation is on
+.TP
+.B \-A,120a
+volume 70%, drum power 120%, compensation is on
+.TP
+.B \-A90,120a
+volume 90%, drum power 120%, compensation is on
+.RE
+.TP
+.B \-a, \-\-[no\-]anti\-alias
+Turns on antialiasing. Samples are run through a lowpass filter
+before playing, which reduces aliasing noise at low resampling
+frequencies.
+.TP
+.BI "\-B " n,m ", \-\-buffer\-fragments=" n,m
+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 \fBTiMidity++\fP 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.
+.TP
+.BI "\-C " n ", \-\-control\-ratio=" n
+Sets the ratio of sampling and control frequencies. This determines
+how often envelopes are recalculated \-\- small ratios yield better
+quality but use more CPU time.
+.TP
+.BI "\-c " file ", \-\-config\-file=" file
+Reads an extra configuration file.
+.TP
+.BI "\-D " n ", \-\-drum\-channel=" n
+Marks channel as a drum channel. If channel is negative, channel
+\-\fIn\fP is marked as an instrumental channel. If \fIn\fP is
+\fB0\fP, all channels are marked as instrumental.
+.TP
+.BI "\-d " dir ", \-\-interface\-path=" dir
+Specifies the directory containing installed dynamic\-link interface
+modules.
+.TP
+.BI "\-E " mode ", \-\-ext=" mode
+Set \fBTiMidity++\fP extend modes. The following modes are available
+(capitalized switch means disable this feature):
+.RS
+.TP
+.B w/W, \-\-[no\-]mod\-wheel
+Enable/disable modulation controlling.
+.TP
+.B p/P, \-\-[no\-]portamento
+Enable/disable portamento controlling.
+.TP
+.B v/V, \-\-[no\-]vibrato
+Enable/disable NRPM vibration.
+.TP
+.B s/S, \-\-[no\-]ch\-pressure
+Enable/disable channel pressure controlling.
+.TP
+.B e/E, \-\-[no\-]mod\-envelope
+Enable/disable modulation envelope controlling.
+.TP
+.B t/T, \-\-[no\-]trace\-text\-meta
+Enable/disable tracing all Text Meta Events.
+.TP
+.B o/O, \-\-[no\-]overlap\-voice
+Accept/reject pronouncing multiple same notes.
+.TP
+.B z/Z, \-\-[no\-]temper\-control
+Enable/disable MIDI Tuning Standard temperament controlling.
+.TP
+.BI m HH ", \-\-default\-mid=" HH
+Sets the manufacturer ID to \fIHH\fP (where \fIHH\fP are two
+hex\-digits).
+.br
+\fIHH\fP values of \fBGS/gs\fP, \fBXG/xg\fP or \fBGM/gm\fP are
+understood as \fB41\fP, \fB43\fP and \fB7e\fP respectively.
+.TP
+.BI M HH ", \-\-system\-mid=" HH
+Sets the system manufacturer ID to \fIHH\fP (where \fIHH\fP are two
+hex\-digits).
+.br
+In this option, the manufacuture ID is set unchangable. Manufacuture
+ID from the input file would be ignored.
+.TP
+.BI b n ", \-\-default\-bank=" n
+Use tone bank \fIn\fP as the default.
+.TP
+.BI B n ", \-\-force\-bank=" n
+Sets the bank number of all channels to \fIn\fP.
+.TP
+.BI i n[/m] ", \-\-default\-program=" n[/m]
+Use the program number as the default instrument. Any Program Change
+events in MIDI files will override this option.
+.br
+If \fIn\fP is followed by \fI/m\fP the default program number of the
+channel \fIm\fP is specified by \fIn\fP.
+.TP
+.BI I n[/m] ", \-\-force\-program=" n[/m]
+Similar to \fB\-Ei\fP but this ignores all program changes.
+.TP
+.BI "F " args
+For effects. See below. In \fIargs\fP option, you can specify
+following effect options:
+.RS
+.TP
+.BI delay= (d|l|r|b)[,msec] ", \-\-delay=" (d|l|r|b)[,msec]
+Sets delay type.
+.RS
+.TP
+.B d, 0
+Disabled delay effect.
+.TP
+.B l, 1
+Left delay.
+.TP
+.B r, 2
+Right delay.
+.TP
+.B b, 3
+Swap left & right.
+.LP
+Optional \fImsec\fP is the delay time.
+.RE
+.TP
+.BI chorus= (d|n|s)[,level] ", \-\-chorus=" (d|n|s)[,level]
+.RS
+.TP
+.B d, 0
+Disable this effect.
+.TP
+.B n, 1
+Enable MIDI chorus effect control.
+.TP
+.B s, 2
+Surround sound, chorus detuned to a lesser degree (default).
+.LP
+The optional parameter \fIlevel\fP specifies the chorus level \fB0\fP
+to \fB127\fP.
+.RE
+.TP
+.BI reverb= (d|n|g|f|G)[,level] ", \-\-reverb=" (d|n|g|f|G)[,level]
+.RS
+.TP
+.B d, 0
+Disable MIDI reverb effect control.
+.TP
+.B n, 1
+Enable MIDI reverb effect control. This effect is only available in
+stereo.
+.TP
+.B g, 2
+Global reverb effect.
+.TP
+.B f, 3
+Freeverb MIDI reverb effect control (default).
+.TP
+.B G, 4
+Global freeverb effect.
+.LP
+The optional parameter \fIlevel\fP specifies the reverb level \fB0\fP
+to \fB127\fP.
+.RE
+.TP
+.BI vlpf= (d|c|m) ", \-\-voice\-lpf=" (d|c|m)
+.RS
+.TP
+.B d, 0
+Disable LPF effect.
+.TP
+.B c, 1
+Chamberlin resonant LPF (12dB/oct) (default).
+.TP
+.B m, 2
+Moog resonant low\-pass VCF (24dB/oct)
+.RE
+.TP
+.BI ns= n ", \-\-noise\-shaping=" n
+Enable the \fIn\fP th degree noiseshaping filter. The distortion at
+decay stage is improved, but the noise on human auditory feeling
+increases because it shifts to a high frequency. In case of 8\-bit
+linear encoding, valid values of \fIn\fP are in the interval from
+\fB0\fP (min) to \fB4\fP (max). Default value is \fB4\fP. In case of
+16\-bit linear encoding, valid values of n are in the interval from
+\fB0\fP to \fB4\fP. According to the value, it works as following.
+Default value is \fB4\fP.
+.RS
+.TP
+.B 0
+No noise shaping.
+.TP
+.B 1
+Traditional noise shaping.
+.TP
+.B 2
+Overdrive-like soft-clipping + new noise shaping.
+.TP
+.B 3
+Tube-amplifier-like soft-clipping + new noise shaping.
+.TP
+.B 4
+New noise shaping.
+.RE
+.TP
+.BI resamp= (d|l|c|L|n|g) ", \-\-resample=" (d|l|c|L|n|g)
+.RS
+.TP
+.B d, 0
+No interpolation.
+.TP
+.B l, 1
+Linear interpolation.
+.TP
+.B c, 2
+Cubic spline interpolation.
+.TP
+.B L, 3
+Lagrange method.
+.TP
+.B n, 4
+Newton polynomial interpolation.
+.TP
+.B g, 5
+Modified Gauss effect (default).
+.LP
+This option affects the behavior of \fB\-N\fP option.
+.RE
+.RE
+.RE
+.TP
+.B \-e, \-\-evil
+Make \fBTiMidity++\fP 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.
+.TP
+.B \-F, \-\-[no\-]fast\-panning
+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 \fB\-F\fP flag
+is used.
+.br
+In the current version of \fBTiMidity++\fP this option is a toggle.
+.TP
+.B \-f, \-\-[no\-]fast\-decay
+Toggles fast envelopes. This option makes \fBTiMidity++\fP faster but
+the release time of the notes are shortened.
+.TP
+.BI "\-g " sec ", \-\-spectrogram=" sec
+Open the Sound\-Spectrogram window. This option is activated if the
+system has support for the X Window System.
+.TP
+.BI "\-H " n ", \-\-force\-keysig=" n
+Specify the number of key signature. MIDI file is performed with
+transposition to the key of the number of sharp (when \fIn\fP is
+positive) or flat (when \fIn\fP is negative). Valid values of \fIn\fP
+are in the interval from \fB\-7\fP to \fB7\fP. For example, if \fIn\fP
+is \fB1\fP, MIDI file with any tonality will be performed transposing
+to \fB1\fP flat (i.e., F major or D minor). Therefore, it is
+convenient to use for the accompaniment when practicing a musical
+instrument by the tonality which is easy to perform.
+.TP
+.B \-h, \-\-help
+Show the help message.
+.TP
+.BI "\-i " mode ", \-\-interface=" mode
+.br
+.ns
+.TP
+.BI \-\-realtime\-priority= n
+.br
+.ns
+.TP
+.BI \-\-sequencer\-ports= n
+Selects the user interfaces from the compiled\-in alternatives.
+\fImode\fP must be begun with one of the supported interface
+identifiers. Run \fBTiMidity++\fP with the \fB\-h\fP option to see a
+list.
+.br
+For ALSA sequencer interface, optionally to use
+\fB\-\-realtime\-priority\fP, set the realtime priority by \fIn\fP,
+and to use \fB\-\-sequencer\-ports\fP, set the number of opened
+sequencer ports. Default value is \fB4\fP.
+.br
+The following identifiers may be available:
+.RS
+.TP
+.B \-id
+dumb interface
+.TP
+.B \-in
+ncurses interface
+.TP
+.B \-is
+S\-Lang interface
+.TP
+.B \-ia
+X Athena Widget interface
+.TP
+.B \-ik
+Tcl/Tk interface
+.TP
+.B \-im
+Motif interface
+.TP
+.B \-iT
+vt100 interface
+.TP
+.B \-ie
+Emacs interface
+.br
+(use ``M\-x timidity'' in Emacs)
+.TP
+.B \-ii
+skin interface
+.br
+Environment variable \fBTIMIDITY_SKIN\fP must be set to the path of
+the skin data (compressed data are also supported).
+.TP
+.B \-ig
+GTK+ interface
+.TP
+.B \-ir
+Launch \fBTiMidity++\fP as MIDI server.
+.TP
+.B \-iA
+Launch \fBTiMidity++\fP as ALSA sequencer client.
+.TP
+.B \-iW
+Windodws synthesizer interface
+.TP
+.B \-iw
+Windodws GUI interface
+.TP
+.B \-iP
+PortMIDI synthesizer interface
+.TP
+.B \-ip
+UMP interface
+.TP
+.B Interface options
+Option characters may be added immediately after the interface
+identifier. The following options are recognized:
+.RS
+.TP
+.BI "v, \-\-verbose=" n
+Increases verbosity level. This option is cumulative.
+.TP
+.BI "q, \-\-quiet=" n
+Decreases verbosity level. This option is cumulative.
+.TP
+.B t, \-\-[no\-]trace
+Toggles trace mode. In trace mode, \fBTiMidity++\fP 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 \fB\-B\fP option.
+.TP
+.B l, \-\-[no\-]loop
+Loop playing (some interfaces ignore this option)
+.TP
+.B r, \-\-[no\-]random
+Randomize file list arguments before playing
+.TP
+.B s, \-\-[no\-]sort
+Sort file list arguments before playing
+.TP
+.B D, \-\-[no\-]background
+Daemonize \fBTiMidity++\fP in background (for alsaseq only)
+.RE
+.RE
+.TP
+.B \-j, \-\-[no\-]realtime\-load
+Enable the loading of patch files during play.
+.TP
+.BI "\-K " n ", \-\-adjust\-key=" n
+Adjusts key (i.e., transposes the song) by \fIn\fP half tones. Ranges
+from \fB\-24\fP to \fB24\fP.
+.TP
+.BI "\-k " msec ", \-\-voice\-queue=" msec
+Specify audio queue time limit to reduce voices. If the remaining
+audio buffer is less than \fImsec\fP milliseconds, \fBTiMidity++\fP
+tries to kill some voices. This feature makes it possible to play
+complicated MIDI files on slow CPUs. Setting \fImsec\fP to zero tells
+\fBTiMidity++\fP to never remove any voices.
+.TP
+.BI "\-L " path ", \-\-patch\-path=" path
+Adds \fIpath\fP 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.
+.TP
+.BI "\-M " name ", \-\-pcm\-file=" name
+\fBTiMidity++\fP can play a PCM file instead of a MIDI file. If
+``auto'' is specified, \fBTiMidity++\fP tries to open foo.mid.wav or
+foo.mid.aiff when playing foo.mid. If ``none'' is specified, this
+feature is disabled. Otherwise just plays \fIname\fP.
+.TP
+.BI "\-m " msec ", \-\-decay\-time=" msec
+Modify envelope volume decay time. \fImsec\fP is the minimum number
+of milliseconds to sustain a sustained note.
+.RS
+.TP
+.BI \-m 0
+Disable sustain ramping, causes constant volume sustains (default).
+.TP
+.BI \-m 1
+Effectively behaves as if all sustains are ignored, volume ramping is
+the same as normal stage 3.
+.TP
+.BI \-m 3000
+A note at full volume will decay for \fB3\fP 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.
+.RE
+.TP
+.BI "\-N " n ", \-\-interpolation=" n
+Sets interpolation parameter. This option depends on the
+\fB\-EFresamp\fP option's value.
+.RS
+.TP
+.B cspline, lagrange
+Toggles 4\-point linear interpolation (default is on).
+.TP
+.B newton
+\fIn\fP point interpolation using Newton polynomials. \fIn\fP must be
+an odd number from \fB1\fP to \fB57\fP.
+.TP
+.B gauss
+\fIn\fP+1 point modified Gauss interpolation. Ranges \fB0\fP
+(disable) to \fB34\fP (max), default to \fB25\fP.
+.LP
+In either way, linear interpolation is used if audio queue < 99%.
+.RE
+.TP
+.BI "\-O " mode ", \-\-output\-mode=" mode
+.br
+.ns
+.TP
+.B \-\-flac\-verify
+.br
+.ns
+.TP
+.BI \-\-flac\-padding= n
+.br
+.ns
+.TP
+.BI \-\-flac\-complevel= n
+.br
+.ns
+.TP
+.B \-\-oggflac
+.br
+.ns
+.TP
+.BI \-\-speex\-quality= n
+.br
+.ns
+.TP
+.B \-\-speex\-vbr
+.br
+.ns
+.TP
+.BI \-\-speex\-abr= n
+.br
+.ns
+.TP
+.B \-\-speex\-vad
+.br
+.ns
+.TP
+.B \-\-speex\-dtx
+.br
+.ns
+.TP
+.BI \-\-speex\-complexity= n
+.br
+.ns
+.TP
+.BI \-\-speex\-nframes= n
+Selects the output mode from the compiled\-in alternatives.
+\fImode\fP must begin with one of the supported output mode
+identifiers. Run \fBTiMidity++\fP with the \fB\-h\fP option to see
+the list.
+.br
+Special in Ogg FLAC output mode, verifying generated data (will be a
+bit slower), the size of header padding (default is 4096), the
+compression level (0 to 8) (default is 5), and enabling OggFLAC stream
+can be specified by \fB\-\-flac\-verify\fP, \fB\-\-flac\-padding\fP,
+\fB\-\-flac\-complevel\fP and \fB\-\-oggflac\fP options respectively.
+.br
+Special in Ogg Speex output mode, the compression quality (0 to 10)
+(default is 8), Enabling VBR output, enabling ABR output and setting
+the ratio to n, enabling VAD (voice activity detection), enabling DTX
+(discontinuous transmission), the encoding complexity (0 to 10)
+(default is 3), and frames in a single Ogg packet (0 to 10) (default
+is 1) can be specified by \fB\-\-speex\-quality\fP,
+\fB\-\-speex\-vbr\fP, \fB\-\-speex\-abr\fP, \fB\-\-speex\-vad\fP,
+\fB\-\-speex\-dtx\fP, \fB\-\-speex\-complexity\fP and
+\fB\-\-speex\-nframes\fP options respectively.
+.br
+The following identifiers are available in all versions:
+.RS
+.TP
+.B \-Od
+Outputs via audio device (default)
+.TP
+.B \-Os
+Output to ALSA
+.TP
+.B \-Or
+Generate raw waveform data. All format options are supported. Common
+formats include:
+.RS
+.TP
+.B \-OrU
+u\-Law
+.TP
+.B \-Or1sl
+16\-bit signed linear PCM
+.TP
+.B \-Or8ul
+8\-bit unsigned linear PCM
+.RE
+.TP
+.B \-Ou
+Generate Sun Audio (au) data
+.TP
+.B \-Oa
+Generate AIFF data
+.TP
+.B \-Ow
+Generate RIFF WAVE format output. If output is directed to a
+non\-seekable file, or if \fBTiMidity++\fP 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.
+.TP
+.B \-Ol
+List MIDI events
+.TP
+.B \-OM
+MOD \-> MIDI conversion
+.TP
+.B \-Oe
+EsounD
+.TP
+.B \-Op
+PortAudio
+.TP
+.B \-Oj
+JACK
+.TP
+.B \-Or
+aRts
+.TP
+.B \-OA
+Alib
+.TP
+.B \-Ov
+Ogg Vorbis
+.TP
+.B \-OF
+Ogg FLAC
+.TP
+.B \-OS
+Ogg Speex
+.TP
+.B \-OO
+libdao
+.TP
+.B Format options
+Option characters may be added immediately after the mode identifier
+to change the output format. The following options are recognized:
+.RS
+.TP
+.B S, \-\-output\-stereo
+Stereo
+.TP
+.B M, \-\-output\-mono
+Monophonic
+.TP
+.B s, \-\-output\-signed
+Signed output
+.TP
+.B u, \-\-output\-unsigned
+Unsigned output
+.TP
+.B 1, \-\-output\-16bit
+16\-bit sample width
+.TP
+.B 2, \-\-output\-24bit
+24\-bit sample width
+.TP
+.B 8, \-\-output\-8bit
+8\-bit sample width
+.TP
+.B l, \-\-output\-linear
+Linear encoding
+.TP
+.B U, \-\-output\-ulaw
+u\-Law (8\-bit) encoding
+.TP
+.B A, \-\-output\-alaw
+A\-Law encoding
+.TP
+.B x, \-\-[no\-]output\-swab
+Byte\-swapped output
+.LP
+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.
+.RE
+.RE
+.TP
+.BI "\-o " file ", \-\-output\-file=" file
+Place output on \fIfile\fP, which may be a file, device, or HP\-UX
+audio server, depending on the output mode selected with the \fB\-O\fP
+option. The special filename `\-' causes output to be placed on
+stdout.
+.TP
+.BI "\-P " file ", \-\-patch\-file=" file
+Use patch file for all programs.
+.TP
+.BI "\-p " [n](a)
+.br
+.ns
+.TP
+.BI \-\-polyphony= n
+.br
+.ns
+.TP
+.B \-\-[no\-]polyphony\-reduction
+Sets polyphony (maximum number of simultaneous voices) to \fIn\fP.
+.br
+Optionally to put `a' character along with \fB\-p\fP option, or to use
+\fB\-\-polyphony\-reduction\fP, instructs \fBTiMidity++\fP to enable
+automatic polyphony reduction algorithm.
+.TP
+.BI "\-Q " n[,...](t)
+.br
+.ns
+.TP
+.BI \-\-mute= n[,...]
+.br
+.ns
+.TP
+.BI \-\-temper\-mute= n[,...]
+Cause channel \fIn\fP to be quiet. \fIn\fP can carry out package
+specification by `,'. If \fIn\fP is \fB0\fP, all channels are turned
+off. Continuously, specifying \-\fIn\fP, channel \fIn\fP is turned
+back on.
+.br
+On the other hand, to put `t' character after \fB\-Q\fP option or to
+use \fB\-\-temper\-mute\fP describes temperament mute. This mutes
+channels of specific temperament type \fIn\fP. For preset
+temperament, \fIn\fP can range \fB0\fP to \fB3\fP. For user\-defined
+temperament, \fIn\fP can range \fB4\fP to \fB7\fP.
+.TP
+.BI "\-q " sec/n ", \-\-audio\-buffer=" sec/n
+Specify audio buffer in seconds. \fIsec\fP maximum size of buffer,
+\fIn\fP percentage filled at the beginning (default is \fB5.0/100\fP)
+(size of 100% equals the whole device buffer size).
+.TP
+.BI "\-R " msec
+Enables Pseudo Reverb Mode. It sets every instrument's release to
+\fImsec\fP ms. If \fImsec\fP is \fB0\fP, \fImsec\fP is set to
+\fB800\fP (default).
+.TP
+.BI "\-S " n ", \-\-cache\-size=" n
+Sets the re\-sample cache size to \fIn\fP bytes. If \fIn\fP equals
+\fB0\fP any sample caches are disabled. The default value of
+\fIn\fP is \fB2097152\fP (2MB).
+.TP
+.BI "\-s " freq ", \-\-sampling\-freq=" freq
+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.
+.TP
+.BI "\-T " n ", \-\-adjust\-tempo=" n
+Adjust tempo to \fIn\fP%; \fB120\fP play MOD files with an NTSC
+Amiga's timing.
+.TP
+.BI "\-t " code ", \-\-output\-charset=" code
+Sets output coding of Japanese text. Possible values of \fIcode\fP
+are:
+.RS
+.TP
+.B auto
+determined by the LANG environment variable.
+.TP
+.B ascii
+Translates non\-ASCII code to period.
+.TP
+.B nocnv
+No conversion.
+.TP
+.B 1251
+Convert from windows\-1251 to koi8\-r.
+.TP
+.B euc
+Outputs EUC (Japan) coding.
+.TP
+.B jis
+Outputs JIS coding.
+.TP
+.B sjis
+Outputs SJIS coding.
+.RE
+.TP
+.B \-U, \-\-[no\-]unload\-instruments
+Unload all instruments from memory between MIDI files. This can
+reduce memory requirements when playing many files in succession.
+.TP
+.BI "\-V " power ", \-\-volume\-curve=" power
+Set the power of volume curve. The total amplification becomes
+volume^\fIpower\fP. \fB0\fP (default) uses the regular tables. Any
+non\-zero value causes all midi to use the new user defined
+velocity/volume/expression curve (linear: \fB1\fP, ideal:
+~\fB1.661\fP, GS: ~\fB2\fP).
+.TP
+.B \-v, \-\-version
+Show the version string
+.TP
+.BI "\-W " mode ", \-\-wrd=" mode
+Play WRD file.
+.sp
+Allowed values of \fImode\fP are:
+.RS
+.TP
+.B x
+X Window System mode
+.TP
+.B w
+Windows console mode
+.TP
+.B t
+TTY mode
+.TP
+.B d
+Dumb mode (outputs WRD events directory)
+.TP
+.B \-
+do not trace WRD
+.TP
+.B R[opts]
+Sets WRD options:
+.RS
+.TP
+.BI a1= b1 ,a2= b2 ,...
+Sets the WRD options. \fBan\fP is the name of option and \fIbn\fP is
+the value.
+.TP
+.BI d= n
+Emulates timing (@WAIT, @WMODE) bugs of the original MIMPI player.
+The emulation levels are:
+.RS
+.TP
+.BI \-WRd= 0
+do not emulate any bugs of MIMPI
+.TP
+.BI \-WRd= 1
+only emulate some bugs (default)
+.TP
+.BI \-WRd= 2
+emulate all known bugs
+.RE
+.TP
+.BI F= file
+Use \fIfile\fP as WRD file only no file matching *.wrd is found.
+.TP
+.BI f= file
+Uses \fIfile\fP as WRD file.
+.RE
+.LP
+WRD mode must also use trace mode (option \fB\-i?t\fP) or
+the timing of the WRD events will be terrible.
+.RE
+.TP
+.BI "\-w " mode ", \-\-rcpcv\-dll=" mode
+Extended mode for MS Windows. The following options are available:
+.RS
+.TP
+.BI "\-w " r
+Use rcpcv.dll to play RCP/R36 files.
+.TP
+.BI "\-w " R
+Do not use rcpcv.dll (default).
+.RE
+.TP
+.BI "\-x " str ", \-\-config\-string=" str
+Configure \fBTiMidity++\fP with \fIstr\fP. The format of \fIstr\fP is
+the same as \fBtimidity.cfg\fP.
+.sp
+For example:
+.br
+\fB\-x'bank 0\\n0 violin.pat'\fP
+.br
+Sets the instrument number 0 to violin.
+.br
+Character `\\' (Ascii 0x5c) in the \fIstr\fP is treated as escape
+character like in C literals. For example \fB\\n\fP is treated as
+carriage return.
+.TP
+.BI "\-Z " file ", \-\-freq\-table=" file
+Cause the table of frequencies to be read from \fIfile\fP. This is
+useful to define a tuning different from 12\-equal temperament. If
+``pure'' is specified, TiMidity++ plays in trial pure intonation.
+.RS
+.TP
+.BI \-Zpure [n(m)] ", \-\-pure\-intonation=" [n(m)]
+Play in trial pure intonation by Key Signature meta\-event in the MIDI
+file. You can specify the initial keysig by hand, in case the MIDI
+file does not contains the meta\-event. Optionally, \fIn\fP is the
+number of key signature. In case of sharp, \fIn\fP is positive. In
+case of flat, \fIn\fP is negative. Valid values of \fIn\fP are in the
+interval from \fB\-7\fP to \fB7\fP. In case of minor mode, you should
+put `m' character along with \fB\-Zpure\fP option.
+.RE
+.TP
+.BI \-\-module= n
+Simulate behavior of specific synthesizer module as much as possible.
+For the moment, the value of \fIn\fP defined is as follows:
+.RS
+.TP
+.B 0
+\fBTiMidity++\fP Default
+.TP
+.B 1
+Roland SC\-55
+.TP
+.B 2
+Roland SC\-88
+.TP
+.B 3
+Roland SC\-88Pro
+.TP
+.B 4
+Roland SC\-8850
+.TP
+.B 5\-15
+Reserved for GS family
+.TP
+.B 16
+YAMAHA MU\-50
+.TP
+.B 17
+YAMAHA MU\-80
+.TP
+.B 18
+YAMAHA MU\-90
+.TP
+.B 19
+YAMAHA MU\-100
+.TP
+.B 20\-31
+Reserved for XG family
+.TP
+.B 32
+SoundBlaster Live!
+.TP
+.B 33
+SoundBlaster Audigy
+.TP
+.B 34\-111
+Reserved for other synthesizer modules
+.TP
+.B 112
+\fBTiMidity++\fP Special 1
+.TP
+.B 113\-126
+Reserved for \fBTiMidity++\fP specification purposes
+.TP
+.B 127
+\fBTiMidity++\fP Debug
+.RE
+.SH SEE ALSO
+lsmidiprog(1), mididump(1), patinfo(1), sf2text(1), wav2pat(1),
+timidity.cfg(5)
+.SH COPYRIGHT
+Copyright (C) 1999\-2004 Masanao Izumo <iz@onicos.co.jp>
+.br
+Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
+.LP
+The original version was developed by Tuukka Toivonen <tt@cgs.fi>
+until the release of TiMidity\-0.2i. His development was discontinued
+because of his being busy with work.
+.LP
+This program is free software; you can redistribute it and/or modify
+it under the terms of the \fIGNU General Public License\fP as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+.LP
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \fIGNU
+General Public License\fP for more details.
+.LP
+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
+.SH AVAILABILITY
+The latest release is available on the \fBTiMidity++\fP Page,
+.LP
+URL http://www.timidity.jp/
+.SH BUGS
+Eats more CPU time than a small CPU\-time\-eating animal.
+.LP
+This man page was translated from Japanese to English by me with
+poor English skill :\-)
+.SH AUTHORS
+.TP
+.B Version 0.2i and earlier:
+Tuukka Toivonen <tt@cgs.fi>
+.br
+Vincent Pagel <pagel@loria.fr>
+.br
+Takashi Iwai <tiwai@suse.de>
+.br
+Davide Moretti <dave@rimini.com>
+.br
+Chi Ming HUNG <cmhung@insti.physics.sunysb.edu>
+.br
+Riccardo Facchetti <riccardo@cdc8g5.cdc.polimi.it>
+.TP
+.B TiMidity++:
+IZUMO Masanao <iz@onicos.co.jp>
+.br
+HARADA Tomokazu <harada@prince.pe.u\-tokyo.ac.jp>
+.br
+YAMATE Keiichirou <keiich\-y@is.aist\-nara.ac.jp>
+.br
+KIRYU Masaki <mkiryu@usa.net>
+.br
+AOKI Daisuke <dai@y7.net>
+.br
+MATSUMOTO Shoji <shom@i.h.kyoto\-u.ac.jp>
+.br
+KOYANAGI Masaaki <koyanagi@okilab.oki.co.jp>
+.br
+IMAI Kunihiko <imai@leo.ec.t.kanazawa\-u.ac.jp>
+.br
+NOGAMI Takaya <t\-nogami@happy.email.ne.jp>
+.br
+WATANABE Takanori <takawata@shidahara1.planet.kobe\-u.ac.jp>
+.br
+TAKEKAWA Hiroshi <sian@big.or.jp>
+.br
+NAGANO Daisuke <breeze.nagano@nifty.ne.jp>
+.br
+KINOSHITA kosuke <kino@krhm.jvc\-victor.co.jp>
+.br
+SHIGEMURA Norikatsu <nork@ninth\-nine.com>
+.br
+YAMAHATA Isaku <yamahata@kusm.kyoto\-u.ac.jp>
+.br
+ARAI Yoshishige <ryo2@on.rim.or.jp>
+.br
+Glenn Trigg <ggt@netspace.net.au>
+.br
+Tim Allen <thristian@usa.net>
+.br
+Michael Haardt <michael@moria.de>
+.br
+Eric A. Welsh <ewelsh@ccb.wustl.edu>
+.br
+Paolo Bonzini <bonzini@gnu.org>
+.br
+KIMOTO Masahiko <kimoto@ohnolab.org>
+.br
+IWAI Takashi <tiwai@suse.de>
+.br
+Saito <saito2@digitalme.com>
+.br
+SATO Kentaro <kentaro@ps.catv.ne.jp>
+.br
+TAMUKI Shoichi <tamuki@linet.gr.jp>
+.br
+URABE Shohei <root@mput.dip.jp>
+.br
+SUENAGA Keishi <s_keishi@mutt.freemail.ne.jp>
+.br
+SUZUKI Koji <k@kekyo.net>
+.LP
+(titles omitted and an order different)
+.LP
+and other many people sends information and bug\-fix codes.
+.LP
+The English version of this man page was written by NAGANO Daisuke
+<breeze.nagano@nifty.ne.jp>.
+.LP
+Now, TAMUKI Shoichi <tamuki@linet.gr.jp> and URABE Shohei
+<root@mput.dip.jp> are maintaining the man page.
+.br
+If you have any comments or suggestions or complaints :) about this
+man page, please tell us it.
diff --git a/lib/timidity/doc/C/timidity.cfg.5 b/lib/timidity/doc/C/timidity.cfg.5
new file mode 100644
index 0000000000..12c81514ef
--- /dev/null
+++ b/lib/timidity/doc/C/timidity.cfg.5
@@ -0,0 +1,504 @@
+.TH timidity.cfg 5 "April 25 2004" "2.13.0"
+.SH NAME
+timidity.cfg \- configure file of TiMidity++
+.SH DESCRIPTION
+The file \fBtimidity.cfg\fP describes the runtime environments of
+timidity(1): that are the path of sound font, instruments
+configurations or else.
+.br
+\fBTiMidity++\fP looks for the configuration file \fBtimidity.cfg\fP
+at startup, before processing any options. If it can't be accessed,
+and the library path is changed with a \fB\-L\fP 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 \fB\-c\fP option.
+.br
+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.
+.SH VARIABLE
+When alphanumeric and/or underscore `_' characters continue after
+dollar sign `$', it is considered that the string is a variable and
+the configuration file is processed, it is transposed to another
+string. The variable name can also be written with an inside
+parenthesis, in order to separate from a following character.
+.sp
+For example:
+.br
+$variable
+.br
+${variable} # same as $variable
+.sp
+For the moment, the command which newly defines variables is not
+prepared. The undifined variable is transposed to null string.
+.br
+The variable defined as a regular variable is the next only one.
+.TP
+.B $basedir
+Expresses the directory where the configuration file exists. By the
+command which mainly specifies a path, it uses in order to specify the
+relative path from a setting file.
+.br
+When a blank may be included in $basedir, it is necessary to bundle
+with "".
+.sp
+For example:
+.br
+In /usr/local/share/timidity/timidity.cfg
+.br
+dir $basedir/inst # source /usr/local/share/timidity/inst
+.SH SYNTAX
+The following statements can be used in a configuration file:
+.TP
+.BI "dir " "directory [...]"
+Adds \fIdirectory\fP to the search path in the same manner as the
+\fB\-L\fP command line option.
+.br
+Archive file are also allowed.
+.sp
+For example:
+.br
+dir /usr/local/share/timidity/inst/foo.zip#
+.br
+bank 0
+.br
+0 bar.pat
+.br
+1 baz.pat
+.br
+2 zoo.pat
+.sp
+At first, \fBdir\fP specifies the archive name (followed by `#') for
+the path of patch files same as directory name (in this case,
+/usr/local/share/timidity/inst/foo.zip). \fBTiMidity++\fP recognize
+the path is an archive file if the expression has the last character
+`#', and also read the files contained in this archive file. In
+previous example the patch files bar.pat, baz.pat and zoo.pat
+contained in the foo.zip are also installed.
+.TP
+.BI "source " "file [...]"
+Reads another configuration file, then continues processing the
+current one.
+.TP
+.BI "progbase " number
+Sets and displays the tone number from \fInumber\fP to
+\fInumber\fP+128. If \fBprogbase 1\fP are specified, tone numbers
+that follow are set and displayed as the numbers from \fB1\fP to
+\fB128\fP.
+.TP
+.BI "bank " "[MapID1] number"
+Selects the tone bank to modify. Patch mappings that follow will
+affect this tone bank. You can indicate specific map as a target, by
+specifing any ofthe following to \fIMapID1\fP: \fBgm2\fP, \fBsc55\fP,
+\fBsc88\fP, \fBsc88pro\fP, \fBsc8850\fP, \fBxg\fP and \fBxgsfx64\fP.
+.TP
+.BI "drumset " "[MapID2] number"
+Selects the drum set to modify. Patch mappings that follow will
+affect this drum set. You can indicate specific map as a target, by
+specifing any ofthe following to \fIMapID2\fP: \fBgm2drum\fP,
+\fBsc55drum\fP, \fBsc88drum\fP, \fBsc88prodrum\fP, \fBsc8850drum\fP,
+\fBxgdrum\fP and \fBxgsfx126\fP.
+.TP
+.BI "number " "file [options]"
+.br
+.ns
+.TP
+.BI "number %font " "file bank prog [key] [options]"
+.br
+.ns
+.TP
+.BI "number %sample " "file [options]"
+Specifies that the MIDI program number in the current tone bank or
+drum set should be played using the patch file. If \fIfile\fP is
+SoundFont, the specific instrument with \fIbank\fP, \fIprog\fP, and
+\fIkey\fP is taken out by the format of \fBnumber %font\fP. If
+\fIfile\fP is linear AIFF or WAV sample data, the MIDI program number
+is specified by the format of \fBnumber %sample\fP. Options may be
+any of the following:
+.RS
+.TP
+.BI amp= amplification
+Amplifies the instrument's volume by \fIamplification\fP percent. If
+no value is specified, one will be automatically determined whenever
+the instrument is loaded.
+.TP
+.BI note= note
+Specifies a fixed MIDI note to use when playing the instrument. If
+\fInote\fP is \fB0\fP, the instrument will be played at whatever note
+the Note On event triggering it has. For percussion instruments, if
+no value is specified in the configuration file, the default in the
+patch file will be used.
+.TP
+.BI pan= panning
+Sets the instrument's default panning. \fIpanning\fP may be
+\fBleft\fP, \fBright\fP, \fBcenter\fP, or an integer between
+\fB\-100\fP and \fB100\fP, 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.
+.TP
+.BI tune= tuning[,...]
+Adjust the instrument's root frequency. \fBtune=1\fP causes \fB1\fP
+half tone higher. Since a fraction is available for \fItuning\fP, it
+is possible to do fine tuning such as \fBtune=\-0.2\fP. When two or
+more sample data is contained, the arguments after the second can
+specify different value respectively.
+.TP
+.BI rate= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's ADSR rate. Each value may be an integer between
+\fB0\fP and \fB255\fP. When you set only sustain rate,
+.sp
+6 GUS/hrpschrd.pat rate=::60
+.sp
+is available. When you set only attack time fasten,
+.sp
+6 GUS/hrpschrd.pat rate=255
+.sp
+is available. When two or more sample data is contained, the
+arguments after the second can specify different value respectively.
+.TP
+.BI offset= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's ADSR offset. Each value may be an integer
+between \fB0\fP and \fB255\fP. The format is same as \fBrate=\fP.
+.TP
+.B keep={loop|env}
+By default, percussion instruments have their loop and envelope
+information stripped. Strangely shaped envelopes are removed
+automatically from melodic instruments as well. \fBkeep=\fP can be
+used to prevent stripping loop or envelope data. For example, the
+Short and Long Whistle percussion instruments (General Midi numbers 71
+and 72) need to have `\fBkeep=loop keep=env\fP' specified in the
+configuration file.
+.TP
+.B strip={loop|env|tail}
+Force removal of loop or envelope information 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
+\fBstrip=tail\fP option will markedly improve sound quality.
+.TP
+.BI tremolo= sweep_increment:control_ratio:depth[,...]
+Sets the instrument's tremolo. Each value may be an integer
+between \fB0\fP and \fB255\fP. The format is similar to \fBrate=\fP.
+\fIsweep_increment\fP is the time until tremolo is started.
+\fIcontrol_ratio\fP is the rate changing amplification.
+\fIdepth\fP is the depth changing amplification.
+.TP
+.BI vibrato= sweep_increment:phase_increment:depth[,...]
+Sets the instrument's vibrato. Each value may be an integer
+between \fB0\fP and \fB255\fP. The format is similar to \fBrate=\fP.
+\fIsweep_increment\fP is the time until vibrato is started.
+\fIphase_increment\fP is the rate changing frequency.
+\fIdepth\fP is the depth changing frequency.
+.TP
+.BI sclnote= note[,...]
+Sets the instrument's standard note for scale tuning. For example,
+\fBsclnote=60\fP causes the center note C to be standard note for
+scale tuning. When two or more sample data is contained, the
+arguments after the second can specify different value respectively.
+.TP
+.BI scltune= tune[,...]
+Sets the instrument's scale tuning factor in cents. For example,
+\fBscltune=50\fP causes the half tone steps as \fB50\fP cents. When
+two or more sample data is contained, the arguments after the second
+can specify different value respectively.
+.TP
+.BI comm= comment
+Specifies the comment \fIcomment\fP.
+.TP
+.BI modrate= attack:decay:sustain:release1:release2:release3[,...]
+.br
+.ns
+.TP
+.BI modoffset= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's behavior of change of modulation envelope.
+The format and values are fundamentally same as volume envelope.
+Except for some SoundFonts, even if it specifies only the option,
+nothing happens.
+.TP
+.BI envkeyf= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's volume envelope key follow. Based on
+\fBnote=60\fP, it changes envelope time according to note. The unit
+is +\-cent/key. For example, \fBenvkeyf=100\fP means that the attack
+time will double when it goes up by 1 octave. The format is similar
+to \fBrate=\fP. The parameter of \fIdecay\fP and \fIsustain\fP may be
+preset in some SoundFont.
+.TP
+.BI envvelf= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's volume envelope velocity follow. Based on
+\fBvelocity=64\fP, it changes envelope time according to velocity.
+The unit is +\-cent/velocity. For example, \fBenvvelf=100\fP means
+that the attack time will 38 times at \fBvelocity=127\fP. The format
+is similar to \fBrate=\fP. In the future, the specification of this
+option may be changed.
+.TP
+.BI modkeyf= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's modulation envelope key follow. Based on
+\fBnote=60\fP, it changes envelope time according to note. The unit
+is +\-cent/key. For example, \fBmodkeyf=100\fP means that the attack
+time will double when it goes up by 1 octave. The format is similar
+to \fBrate=\fP. The parameter of \fIdecay\fP and \fIsustain\fP may be
+preset in some SoundFont.
+.TP
+.BI modvelf= attack:decay:sustain:release1:release2:release3[,...]
+Sets the instrument's modulation envelope velocity follow. Based on
+\fBvelocity=64\fP, it changes envelope time according to velocity.
+The unit is +\-cent/velocity. For example, \fBmodvelf=100\fP means
+that the attack time will 38 times at \fBvelocity=127\fP. The format
+is similar to \fBrate=\fP. In the future, the specification of this
+option may be changed.
+.TP
+.BI trempitch= num[,...]
+Sets the instrument's depth of changing pitch according to tremolo.
+The effect itself is same as vibrato, it uses to operate in another
+system. The unit is +\-cent. The format is similar to \fBrate=\fP.
+.TP
+.BI tremfc= num[,...]
+Sets the instrument's depth of changing cutoff frequency according to
+tremolo. It can express the so\-called glowl effect. The unit, etc.
+are same as \fBtrempitch=\fP.
+.TP
+.BI modpitch= num[,...]
+Sets the instrument's depth of changing pitch according to modulation
+envelope. It can temporarily express raising pitch only for the
+attack stage. The unit, etc. are same as \fBtrempitch=\fP.
+.TP
+.BI modfc= num[,...]
+Sets the instrument's depth of changing cutoff frequency according to
+modulation envelope. The unit, etc. are same as \fBtrempitch=\fP.
+.TP
+.BI fc= num[,...]
+Sets the instrument's standard of cutoff frequency. The unit is Hz.
+The format is similar to \fBrate=\fP.
+.TP
+.BI q= num[,...]
+Sets the instrument's Q (resonance). The unit is cB. The format is
+similar to \fBrate=\fP.
+.TP
+.BI fckeyf= num
+Sets the instrument's filter key follow. Based on \fBnote=60\fP, it
+change cutoff frequency according to note. The unit is +\-cent/key.
+For example, \fBfckeyf=100\fP means that it changes same as pitch.
+.TP
+.BI fcvelf= num
+Sets the instrument's filter velocity follow. Based on
+\fBvelocity=127\fP, it changes cutoff frequency according to velocity.
+The unit is +\-cent. In SoundFont, \fB\-2400\fP is set up as a
+characteristic value.
+.TP
+.BI qvelf= num
+Sets the instrument's resonance velocity follow. Based on
+\fBvelocity=0\fP, it changes resonance according to velocity. The
+unit is +\-cB.
+.RE
+.TP
+.BI "default " file
+When MIDI program appears, which is not mapped to instrument file,
+this file is pronounced as a substitute.
+.TP
+.BI "map " "MapID1 from\-bank from\-prog to\-bank to\-prog"
+The existing tone is assigned as a tone of GS/XG each map. \fBgm2\fP,
+\fBsc55\fP, \fBsc88\fP, \fBsc88pro\fP, \fBsc8850, \fP\fBxg\fP and
+\fBxgsfx64\fP can be specified to be \fIMapID1\fP.
+.TP
+.BI "map " "MapID2 from\-drumset from\-keynote to\-drumset to\-keynote"
+The existing drum is assigned as a drum of GS/XG each map.
+\fBgm2drum\fP, \fBsc55drum\fP, \fBsc88drum\fP, \fBsc88prodrum\fP,
+\fBsc8850drum\fP, \fBxgdrum\fP and \fBxgsfx126\fP can be specified to
+be \fIMapID2\fP.
+.TP
+.BI "soundfont " "file [options]"
+Read the whole SoundFont. \fIoptions\fP may be any of the following:
+.RS
+.TP
+.BI order= number
+Sets the order of searching for instrument. When \fBorder=0\fP, first
+read SoundFont, and then search for insufficient samples in GUS/patch.
+When \fBorder=1\fP, after reading GUS/patch, search for SoundFont.
+.TP
+.BI amp= amplification
+Sets the amplification of the whole SoundFont as \fIamplification\fP%.
+If the value is not specified, it is set by \fB100\fP%.
+.TP
+.BI cutoff= number
+Specifies whether LPF in SoundFont is enable (\fB1\fP) or disable
+(\fB0\fP). If the value is not specified, it is considered to be
+enable.
+.TP
+.BI reso= number
+Specifies whether resonance in SoundFont is enable (\fB1\fP) or disable
+(\fB0\fP). If the value is not specified, it is considered to be
+enable.
+.TP
+.B remove
+Cancels the target SoundFont from the memory.
+.RE
+.TP
+.BI "font exclude " "bank [prog [key]]"
+Suppresses searching for SoundFont of \fIbank\fP, \fIprog\fP.
+If the sample is drumset, bank is \fB128\fP, drumset is \fIprog\fP,
+keynum is \fIkey\fP.
+.TP
+.BI "font order " "number bank [prog [key]]"
+Sets the order of searching for instrument individually. The format is
+same as \fBfont exclude\fP.
+.LP
+The following statements are available only latest \fBTiMidity++\fP.
+.TP
+.BI "#extension altassign " "program1 program2 ..."
+Sets the alternate assign for drum set. For example, if you want to
+pronounce Hi\-Hat cymbals (note number \fB42\fP, \fB44\fP and
+\fB46\fP) in the \fBdrumset 0\fP exclusively to each others, specify:
+.sp
+drumset 0
+.br
+altassign 42 44 46
+.sp
+Note that alternate assign of \fBdrumset 0\fP is used by default.
+.TP
+.BI "#extension comm " "program comment"
+Specifies the comment \fIcomment\fP for the tone number \fIprogram\fP.
+These comments are displayed in the indicator line when
+\fBTiMidity++\fP is booted with option \fB\-int\fP, \fB\-iTt\fP.
+.TP
+.BI "#extension timeout " "program second"
+Specifies the time\-out value of the \fIprogram\fP. If any notes
+played with the tone number \fIprogram\fP are suspended more than
+\fIsecond\fP seconds, \fBTiMidity++\fP kills the notes.
+.TP
+.BI "#extension copydrumset " drumset
+Copies all settings of the \fIdrumset\fP to the current drumset.
+.TP
+.BI "#extension copybank " bank
+Copies all settings of the \fIbank\fP to the current bank.
+.TP
+.BI "#extension copymap " "to\-MapID from\-MapID"
+Copies all settings of the banks defined for the map \fIfrom\-MapID\fP
+to the map \fIto\-MapID\fP.
+.TP
+.BI "#extension HTTPproxy " hostname:port
+Specifies the proxy of the HTTP protocol. \fIhostname\fP and
+\fIport\fB are of the proxy host's.
+.TP
+.BI "#extension FTPproxy " hostname:port
+Specifies the proxy of the FTP protocol. Same as HTTP.
+.TP
+.BI "#extension mailaddr " your\-mail\-address
+Specifies user's mail address. This address is sent to the FTP
+server if \fBTiMidity++\fP access any file via FTP.
+.TP
+.BI "#extension opt " option
+Sets the value of boot\-time options.
+.TP
+.BI "#extension undef " progno
+Undefines the tone \fIprogno\fP of current tone bank.
+.TP
+.BI "#extension legato " "progno " {0|1}
+Specifies whether legato is enable (\fB1\fP) or disable (\fB0\fP) on
+\fIprogno\fP.
+.TP
+.BI "#extension level " "progno tva_level"
+Sets the standard value of changing amplification when processing Drum
+Instrument TVA Level of NRPN. Unless Drum Instrument TVA Level is
+specified at playing, the amplification is not influenced.
+\fIprogno\fP can carry out package specification by `,' and/or
+[\fIstart\fP]\-[\fIend\fP]. If start and end are omitted, they are
+assumed to be \fB0\fP and \fB127\fP respectively.
+.TP
+.BI "#extension damper " "progno " {0|1}
+Specifies whether redamper and half-damper are enable (\fB1\fP) or
+disable (\fB0\fP) on \fIprogno\fP.
+.TP
+.BI "#extension playnote " "progno note"
+Sets the frequency of pronounce to \fBnote\fP. If the frequency of
+pronounce is specified by GS SysEx Play Note, the pitch is changed
+appropriately according to the value. \fIprogno\fP can carry out
+package specification by `,' and/or [\fIstart\fP]\-[\fIend\fP]. If
+start and end are omitted, they are assumed to be \fB0\fP and
+\fB127\fP respectively.
+.sp
+For example:
+.br
+drumset 0
+.br
+#extension playnote \-37,39,44\-46,55\-60
+.TP
+.BI "#extension delaysend " "progno level"
+.br
+.ns
+.TP
+.BI "#extension chorussend " "progno level"
+.br
+.ns
+.TP
+.BI "#extension reverbsend " "progno level"
+Sets the send level when drum part effect is enable. All initial value
+are \fB127\fP. If one of delay, chorus and reverb is at least set up,
+the effect which is not set as the tone will become the initial value
+\fB0\fP. \fIprogno\fP can carry out package specification by `,'
+and/or [\fIstart\fP]\-[\fIend\fP]. If start and end are omitted, they
+are assumed to be \fB0\fP and \fB127\fP respectively.
+.TP
+.BI "#extension rnddelay " "progno msec"
+For every pronunciation, it is random and less than a maximum of
+\fImsec\fP delay. The distribution of random value is pink noise
+(1/f fluctuation) rather than a white noise.
+.LP
+These \fB#extension\fP statements are beginning with character `#'
+that is the comment flag of old TiMidity (version 0.2i or earlier).
+So these statements are treated as comment line.
+.br
+The latest \fBTiMidity++\fP treats \fB#extension\fP as white\-space.
+So you can omit it.
+.LP
+If any file\-name expression ended with character `|' (Ascii 0x7c),
+the file\-name is treated as command and outputs of the command
+are also examined as arguments of statements.
+.br
+\fBsource\fP \fIcommand\fP| causes the output of \fIcommand\fP becomes
+the argument of \fBsource\fP. It is convenient to choose settings of
+\fBTiMidity++\fP according to environment. In addition, if a space
+enters on the way like \fIcommand\fP |, it will be divided at the time
+of setting file reading, and will no longer be regarded as a command.
+This function is applicable to all the places that can specify a file
+name.
+.sp
+.RS
+timidity 'cat fild.mid|'
+.RE
+.sp
+will read from the output of cat fild.mid.
+.SH FILES
+.TP
+.B /etc/timidity.cfg
+.TP
+.B /usr/local/share/timidity/timidity.cfg
+.SH SEE ALSO
+timidity(1), lsmidiprog(1), mididump(1), patinfo(1), sf2text(1), wav2pat(1)
+.SH COPYRIGHT
+Copyright (C) 1999\-2004 Masanao Izumo <iz@onicos.co.jp>
+.br
+Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
+.LP
+The original version was developed by Tuukka Toivonen <tt@cgs.fi>
+until the release of TiMidity\-0.2i. His development was discontinued
+because of his being busy with work.
+.LP
+This program is free software; you can redistribute it and/or modify
+it under the terms of the \fIGNU General Public License\fP as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+.LP
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \fIGNU
+General Public License\fP for more details.
+.LP
+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
+.SH AVAILABILITY
+The latest release is available on the \fBTiMidity++\fP Page,
+.LP
+URL http://www.timidity.jp/