diff options
Diffstat (limited to 'lib/timidity/doc/C')
-rw-r--r-- | lib/timidity/doc/C/CHANGES.02i | 298 | ||||
-rw-r--r-- | lib/timidity/doc/C/FAQ | 208 | ||||
-rw-r--r-- | lib/timidity/doc/C/Makefile.am | 34 | ||||
-rw-r--r-- | lib/timidity/doc/C/Makefile.in | 418 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.alsaseq | 135 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.dl | 42 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.m2m | 298 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.mts | 655 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.sf | 70 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.tk | 77 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.w32 | 458 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.xaw | 218 | ||||
-rw-r--r-- | lib/timidity/doc/C/README.xskin | 76 | ||||
-rw-r--r-- | lib/timidity/doc/C/timidity.1 | 1186 | ||||
-rw-r--r-- | lib/timidity/doc/C/timidity.cfg.5 | 504 |
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/ |