1---------------------------*-indented-text-*------------------------------ 2 3 TiMidity -- Experimental MIDI to WAVE converter 4 Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi> 5 6-------------------------------------------------------------------------- 7 8 List of changes 9 10-------------------------------------------------------------------------- 110.2h to 0.2i 12 13 Renamed most source files to fit into 8.3 characters and less. Sorry. 14 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 18 for more information. 19 20 Tcl/Tk interface by Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>. 21 Read README.tk. 22 23 DEC port by Chi Ming HUNG <cmhung@insti.physics.sunysb.edu>. Read 24 README.DEC. 25 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 ;) 28 29 Reversed the sense of the -F option to get rid of some nasty pops. 30 31 Attempted to merge Makefile.{SUN|SOLARIS|HPUX|DEC} back into Makefile 32 to conserve the world's ketoprofen reserves. 33 34 Lowered default amplification to 70% to get a bit more dynamic 35 headroom. 36 370.2g to 0.2h 38 39 Warning! This is a Vincent Pagel release... more official 40 release when Tuukka comes back from hollydays, err, his 41 exams actually. 42 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. 48 49 Added so called "nice" icons 50 51 Pipe communication between Motif interface and the program. 52 53 Antialiasing filtering now works even with looping patch, nice 54 when playing on a SUN at Ulaw at 8Khz ( option -a ) 55 56 Added a Makefile.HPUX since make on HP does not understand 57 the += notation 58 59 Thanks to Gilles Dauphin, works on Solaris 60 610.2f to 0.2g 62 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 67 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. 71 72 Error check in read_config_file to make some noise when 73 directories are specified as config files. 74 75 Squashed a segfault that resulted from resampling past loop 76 end (FINALINTERP, when incr > 1<<FRACTION_BITS). 77 78 Sweep computation overflow with seashore.pat fixed. 79 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. 85 86 Reverse loops are now done "right". 87 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. 92 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. 97 98 Split up mix_data in mix.c to make it easier to look at. 99 1000.2e to 0.2f 101 102 Moved mixing functions out of resample.c. New files: mix.c, 103 mix.h. 104 105 Added midia.cfg config file for the Midia patch set. 106 107 Added Shawn McHorse's loop optimizations and LOOKUP_SINE 108 config.h option. 109 110 Added Shawn's FAST_DECAY command line switch -- config.h 111 option FAST_DECAY now sets the default for this switch. 112 113 USE_LDEXP config.h option, in case your compiler converts 114 ldexp() into a straight fscale, and fscale is faster than fmul 115 on your machine. 116 117 Fixed WAVE header bug -- the lengths were 44 bytes short. 118 Thanks to Alexey Marinichev for noticing. 119 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. 123 124 Added external utility "bag". New file: bag.c, read it for 125 info. 126 127 Added "extern" to the s32towhatever() prototypes in output.h. 128 1290.2d to 0.2e 130 131 Riccardo Facchetti's S-Lang-based user interface: a more 132 efficient alternative to ncurses. Options in Makefile. 133 134 Rearranged options in Makefile to make various combinations 135 easier to select. 136 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 142 setup. 143 144 Changed instrument loading to add the Sustain flag to all 145 patches which have the Looped flag set. 146 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. 151 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. 156 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. 160 161 Fencepost error in resampling fixed by Vincent Pagel. 162 163 Fixed problem with bidirectional loops and vibrato. 164 1650.2c to 0.2d 166 167 Volume computations rewritten to use both floating point and 168 integer multiplication. 169 170 Tremolo and vibrato handling. Some tuning parameters are 171 available in config.h. 172 173 Fixed-pitch, non-looped instruments are now resampled at load 174 time. Note that fixed-pitch instruments can't be pitch-bent. 175 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. 180 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 185 suggestions. 186 187 Loops and envelopes are now removed from all percussion 188 instruments by default. This should eliminate cymbal crashes 189 being cut short. 190 191 Changes in gravis.cfg to override some instrument parameters 192 that would be guessed incorrectly. 193 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. 198 199 Enabled fast forward & rewind in non-trace mode in 200 ncurses_ctl.c. 201 202 Fixed a problem with envelopes -- envelope handling still 203 isn't perfect, but skipping the "Attack 2" phase was dumb. 204 205 Added ADJUST_PANNING_IMMEDIATELY to config.h, default on (no 206 change from previous behavior). 207 208 Silly bug in adjusting non-enveloped voice volumes fixed. 209 210 Small change in ncurses_ctl to display 100 for maximum volume 211 and expression. 212 213 After listening to a GUS, made FAST_DECAY default to on. 214 215 Riccardo Facchetti's patch to config.h: Not all Linux systems 216 are little-endian. 217 218 Riccardo's alternative keyboard commands in ncurses_ctl.c. 219 First step towards porting to MS Windows -- you can press 220 F1 to get help! 221 222 DANGEROUS_RENICE config.h option. Thanks again to Riccardo. 223 2240.2b to 0.2c 225 226 Fixed pitch bend sensitivity again. NRPN controls are now 227 correctly ignored. 228 2290.2a to 0.2b 230 231 Francesco Zanichelli's patches to get the Sun version to 232 actually compile. 233 234 Victor Langeveld's patches to get the FreeBSD version to 235 actually compile. 236 237 Fixed pitch bend sensitivity. Thanks again to Vincent Pagel 238 for the information. 239 240 Expression now defaults to 127, as with the SCC-1. Some things 241 may sound a bit loud. 242 2430.1a to 0.2a 244 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. 248 249 Output to HP-UX audio server by Vincent Pagel. 250 251 Output to Sun audio device based on Francesco Zanichelli's 252 port of version 0.1a. 253 254 Output to ZyXEL modems based on Rob Janssen's uLaw patches. 255 256 FreeBSD options in Makefile and linux_audio.c. Check for DSP 257 fragment capability. (Thanks to Victor Langeveld.) 258 259 ncurses interface changes. Trace mode optional. 260 261 Fixed bug -- the last MIDI event was getting eaten, causing 262 stuck notes at the end of songs. (Reported by Anthony Cruz.) 263 264 Pitch-bend sensitivity added, with a hack to process "Data 265 entry (MSB)" events. Thanks to Vincent Pagel for info on 266 this... 267 268 Run-time configuration of quiet and percussion channels. 269 270 Volume computation fix. You can now crank the volume up to 271 800%. 272 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. 277 278 Panning and volume controls no longer affect notes that have 279 already been turned off. 280 281 Click reduction on by default. CPU usage went up -- see option 282 I_WANT_THE_CLICKS_BACK in config.h. 283 284 Sample volume adjustment into compile time option -- see 285 option ADJUST_SAMPLE_VOLUMES in config.h 286 287 SMPTE time in divisions field in MThd. Untested. 288 289 Quote some special characters in filenames before popen(). 290 291 Hack to accept old patch files and files that claim to contain 292 0 instruments and/or layers. 293 294 Behavior when reading Gravis .cfg files changed -- syntax 295 error reported instead of segmentation fault. 296 2970.1a 298 First release. Plays MIDI files under Linux. 299