1
---------------------------*-indented-text-*------------------------------
3
TiMidity -- Experimental MIDI to WAVE converter
4
Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
6
--------------------------------------------------------------------------
10
--------------------------------------------------------------------------
13
Renamed most source files to fit into 8.3 characters and less. Sorry.
15
Changes by Davide Moretti <dmoretti@iper.net>: Incorporated the
16
changes to allow TiMidity to compile and run under Win32 platforms
17
(tested with Windows 95 and Windows NT for Intel). Read README.W32
20
Tcl/Tk interface by Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>.
23
DEC port by Chi Ming HUNG <cmhung@insti.physics.sunysb.edu>. Read
26
A few bugfixes: WAVE headers, shell substitution, Linux audio O_RDWR,
27
dumb/ncurses segfault (thanks to everyone who sent a fix for this ;)
29
Reversed the sense of the -F option to get rid of some nasty pops.
31
Attempted to merge Makefile.{SUN|SOLARIS|HPUX|DEC} back into Makefile
32
to conserve the world's ketoprofen reserves.
34
Lowered default amplification to 70% to get a bit more dynamic
39
Warning! This is a Vincent Pagel release... more official
40
release when Tuukka comes back from hollydays, err, his
43
I've added a Motif interface with files selection, time scale
44
cursor and other blue widgets. More gadgets to come. Changes
45
are in motif_* files, but also a big structure change in
46
timidity.c and playmidi.c as it is now the interface that
47
choose the name of the next file to play.
49
Added so called "nice" icons
51
Pipe communication between Motif interface and the program.
53
Antialiasing filtering now works even with looping patch, nice
54
when playing on a SUN at Ulaw at 8Khz ( option -a )
56
Added a Makefile.HPUX since make on HP does not understand
59
Thanks to Gilles Dauphin, works on Solaris
63
Wrote a little WAVE to patch converter and added ".wav" to
64
DECOMPRESSOR_LIST to allow using wave files as simple
65
instruments. This was Davor Jadrijevic's suggestion from some
66
time back. New file: wav2pat.c
68
Took out ADJUST_PANNING_IMMEDIATELY and put in a command line
69
option "-F" for "turn off _F_ast panning". Running out of
70
letters for command line options.
72
Error check in read_config_file to make some noise when
73
directories are specified as config files.
75
Squashed a segfault that resulted from resampling past loop
76
end (FINALINTERP, when incr > 1<<FRACTION_BITS).
78
Sweep computation overflow with seashore.pat fixed.
80
The portion of sample data from loop_end to data_length is now
81
played if the instrument doesn't have a loop or an envelope.
82
Some patches (e.g. Fretnoyz from the ProPats 3.0 set) contain
83
garbage between loop_end and data_length, so there's a new
84
config file option "strip=tail" to drop it off.
86
Reverse loops are now done "right".
88
Slight LOOKUP_HACK cleanup. There's a "final_volume_t" type
89
that's either an uint8 or an int32, whichever is required for
90
mixing computations, and a FINAL_VOLUME() macro to convert an
91
int32 to the required type.
93
Changed the "THING := $(THING) junk" assignments in Makefile
94
to "THING += junk"'s. Hopefully the latter is understood by
95
more makes than the former. The whole mess will be replaced by
96
a configure script within a few releases.
98
Split up mix_data in mix.c to make it easier to look at.
102
Moved mixing functions out of resample.c. New files: mix.c,
105
Added midia.cfg config file for the Midia patch set.
107
Added Shawn McHorse's loop optimizations and LOOKUP_SINE
110
Added Shawn's FAST_DECAY command line switch -- config.h
111
option FAST_DECAY now sets the default for this switch.
113
USE_LDEXP config.h option, in case your compiler converts
114
ldexp() into a straight fscale, and fscale is faster than fmul
117
Fixed WAVE header bug -- the lengths were 44 bytes short.
118
Thanks to Alexey Marinichev for noticing.
120
Added PATCH_EXT_LIST option to config.h, so you don't have to
121
change every filename in your configuration file when you
122
decide to compress your patches.
124
Added external utility "bag". New file: bag.c, read it for
127
Added "extern" to the s32towhatever() prototypes in output.h.
131
Riccardo Facchetti's S-Lang-based user interface: a more
132
efficient alternative to ncurses. Options in Makefile.
134
Rearranged options in Makefile to make various combinations
137
LOOKUP_HACK config file option: horrible experimental kludge
138
to substitute table lookups for multiplication. First attempt
139
to use uLaw as sample format failed miserably. Now using 8-bit
140
linear, which is fine for Sound Blaster owners. It only saves
141
~20% of CPU on a Pentium, but let me know what it does to your
144
Changed instrument loading to add the Sustain flag to all
145
patches which have the Looped flag set.
147
Implemented All Notes Off, All Sounds Off, and Reset All
148
Controllers events. The Day of the Tentacle intro music uses
149
the first and plays OK now. The other two might work, or they
150
might throw your machine into a damaging infinite binary loop.
152
Implemented Bank Select controller. Sort of emulates the SCC-1
153
(I think): use Control Change 00 xx, where xx is the tone bank
154
you want. Totally untested. Some MIDI files use Control
155
Change 0 for something else, generating loads of warnings.
157
In config.h, changed the default command line for shorten to
158
work with version 1.22. The old one was for some ancient
159
version which I finally got around to replacing.
161
Fencepost error in resampling fixed by Vincent Pagel.
163
Fixed problem with bidirectional loops and vibrato.
167
Volume computations rewritten to use both floating point and
168
integer multiplication.
170
Tremolo and vibrato handling. Some tuning parameters are
171
available in config.h.
173
Fixed-pitch, non-looped instruments are now resampled at load
174
time. Note that fixed-pitch instruments can't be pitch-bent.
176
Cheaper click removal scheme. Removed I_WANT_THE_CLICKS_BACK
177
option from config.h, added MAX_DIE_TIME definition. Moved
178
resampling and mixing functions from playmidi.{c,h} to new
179
files: resample.c, resample.h.
181
Percussion instrument pitches can now be specified
182
independently of the note they're assigned to. Melodic
183
instrument pitches can also be forced. Extra options in config
184
file -- see the manual. Thanks to Davor Jadrijevic for his
187
Loops and envelopes are now removed from all percussion
188
instruments by default. This should eliminate cymbal crashes
191
Changes in gravis.cfg to override some instrument parameters
192
that would be guessed incorrectly.
194
Vincent Pagel's experimental antialiasing filter. This doesn't
195
interact very well with looping yet, so it's only applied to
196
non-looped instruments. Use the command line option "-a" to
197
enable the filter. New files: filtering.c, filtering.h.
199
Enabled fast forward & rewind in non-trace mode in
202
Fixed a problem with envelopes -- envelope handling still
203
isn't perfect, but skipping the "Attack 2" phase was dumb.
205
Added ADJUST_PANNING_IMMEDIATELY to config.h, default on (no
206
change from previous behavior).
208
Silly bug in adjusting non-enveloped voice volumes fixed.
210
Small change in ncurses_ctl to display 100 for maximum volume
213
After listening to a GUS, made FAST_DECAY default to on.
215
Riccardo Facchetti's patch to config.h: Not all Linux systems
218
Riccardo's alternative keyboard commands in ncurses_ctl.c.
219
First step towards porting to MS Windows -- you can press
222
DANGEROUS_RENICE config.h option. Thanks again to Riccardo.
226
Fixed pitch bend sensitivity again. NRPN controls are now
231
Francesco Zanichelli's patches to get the Sun version to
234
Victor Langeveld's patches to get the FreeBSD version to
237
Fixed pitch bend sensitivity. Thanks again to Vincent Pagel
240
Expression now defaults to 127, as with the SCC-1. Some things
241
may sound a bit loud.
245
Internal changes for easier porting to other systems.
246
long long's are gone, floating point is used instead.
247
Command line options changed.
249
Output to HP-UX audio server by Vincent Pagel.
251
Output to Sun audio device based on Francesco Zanichelli's
252
port of version 0.1a.
254
Output to ZyXEL modems based on Rob Janssen's uLaw patches.
256
FreeBSD options in Makefile and linux_audio.c. Check for DSP
257
fragment capability. (Thanks to Victor Langeveld.)
259
ncurses interface changes. Trace mode optional.
261
Fixed bug -- the last MIDI event was getting eaten, causing
262
stuck notes at the end of songs. (Reported by Anthony Cruz.)
264
Pitch-bend sensitivity added, with a hack to process "Data
265
entry (MSB)" events. Thanks to Vincent Pagel for info on
268
Run-time configuration of quiet and percussion channels.
270
Volume computation fix. You can now crank the volume up to
273
Slower envelopes. Pianos sound better, harps sound
274
worse. Applause in Beethoven's 5th should sound
275
better... Thanks to Tim Norman for comments on this.
276
CPU usage went up -- see option FAST_DECAY in config.h.
278
Panning and volume controls no longer affect notes that have
279
already been turned off.
281
Click reduction on by default. CPU usage went up -- see option
282
I_WANT_THE_CLICKS_BACK in config.h.
284
Sample volume adjustment into compile time option -- see
285
option ADJUST_SAMPLE_VOLUMES in config.h
287
SMPTE time in divisions field in MThd. Untested.
289
Quote some special characters in filenames before popen().
291
Hack to accept old patch files and files that claim to contain
292
0 instruments and/or layers.
294
Behavior when reading Gravis .cfg files changed -- syntax
295
error reported instead of segmentation fault.
298
First release. Plays MIDI files under Linux.