1This file is no longer used. For detailed Changelog information, please refer to the 2version control system's commits. For an overview of differences between versions, 3see: 4https://sourceforge.net/apps/trac/fluidsynth/wiki/ChangeLog1_1_2 5https://sourceforge.net/apps/trac/fluidsynth/wiki/ChangeLog1_1_1 6etc. 7 8For developer related "What's new"-information, doc/fluidsynth-v11-devdoc contains 9valuable information. 10 11=== OLD === 12 132009-05-01 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 14 * configure.ac: fix for win32 build. 15 162009-05-01 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 17 * doc/Doxyfile: added fluid_filerenderer.c to Doxygen documentation. 18 * doc/fluidsynth-v11-devdoc.txt: license changed to CC-BY-SA 3.0 19 * doc/fluidsynth_arpeggio.c: new example added. 20 * doc/fluidsynth_metronome.c: new example added. 21 * include/fluidsynth.h, include/fluidsynth/audio.h, 22 include/fluidsynth/settings.h: Doxygen documentation. 23 * src/fluid_settings.c: Doxygen documentation. 24 252009-04-27 Josh Green <jgreen@users.sourceforge.net> 26 * include/fluidsynth/audio.h: Moved new filerenderer documentation to source file. 27 * src/config_win32.h.in: Added 'typedef int socklen_t;' to the correct place. 28 * src/fluid_filerenderer.c: Removed 2 extra pasted duplicates of the file, moved 29 Doxygen documentation from header file and added "API 1.1.0" designators. 30 * src/config_win32.h: Removed from subversion, since it is generated from 31 config_win32.h.in. 32 332009-04-26 Josh Green <jgreen@users.sourceforge.net> 34 * configure.ac: Added glib 2.10 as a dependency, added notes in output 35 for LASH, LADCCA and READLINE that they are GPL. 36 * src/fluid_io.c: Moved code to fluid_sys.c and removed. 37 * src/config_win32.h: Added "typedef int socklen_t" definition. 38 * src/fluid_defsfont.h: Removed glib ripped code. 39 * src/fluid_oss.c: Fixed warnings where return value of write() was 40 being ignored. 41 * src/fluid_sys.c: Re-organized, implemented portable fluid_curtime() and 42 fluid_utime() using glib functions and removed old platform specific 43 code, implemented fluid_thread functionality using glib and removed 44 old platform specific code, fluid_istream_readline(), fluid_istream_gets() 45 and fluid_ostream_printf() should now work on WIN32 also, added code 46 for WIN32 for TCP sockets (not yet tested). 47 * src/fluid_sys.h: Added fluid_gerror_message() macro to extract message 48 safely from GError structures, replaced fluid_mutex macros with 49 portable implementations using glib, removed new_fluid_client_socket() 50 and delete_fluid_client_socket() which were never implemented or used. 51 * src/fluidsynth.c: Added call to g_thread_init(). 52 * src/fluidsynth_priv.h: Integer types now use glib integer types. 53 542009-04-11 Josh Green <jgreen@users.sourceforge.net> 55 * FluidSynth release 1.0.9 "A Sound Future" 56 * configure.ac: Bumped version, no library interfaces added, removed or changed. 57 * doc/Makefile.am: Removed html and api folders from EXTRA_DIST. 58 * src/fluid_synth.c (fluid_synth_program_change): Preset substitute warning 59 now outputs MIDI channel. 60 612009-04-02 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 62 * src/config_win32.h: fix compilation under MSVC 2008 and older 63 642009-03-15 Josh Green <jgreen@users.sourceforge.net> 65 * ltconfig: Removed obsolete ltconfig script by suggestion of 66 Sven Hoexter. 67 * doc/fluidsynth.1: Some fixes from Sven Hoexter. 68 * src/fluid_adriver.c: Re-order of default drivers to jack, alsa, pulse. 69 * src/fluidsynth.c (fluid_synth_program_change): Added preset selection 70 fallback logic: Melodic - Fallback to Bank0:prognum followed by 71 Bank0:Program0, Percussion - Fallback to 128:0, code re-organization. 72 732009-03-08 Josh Green <jgreen@users.sourceforge.net> 74 * src/fluid_jack.c: Added support for Jack MIDI. 75 * src/fluid_mdriver.c: Registered Jack MIDI driver. 76 * README-OSX: Update from Ebrahim Mayat. 77 782009-02-28 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 79 * src/fluid_midi.c: Fix for ticket #22 (Wrong tempo changes) 80 * src/fluid_midi.h: delta-time accumulator moved to fluid_midi_file struct. 81 822009-02-03 Josh Green <jgreen@users.sourceforge.net> 83 * Applied patch from KO Myung-Hun for OS/2 support including Dart audio 84 driver. 85 862009-01-29 Josh Green <jgreen@users.sourceforge.net> 87 * src/Makefile.am: Added PortAudio driver conditional build. 88 * src/fluid_adriver.c: Registered fluid_portaudio_driver_settings. 89 * src/fluid_portaudio.c: Completely overhauled for Portaudio 19. 90 This driver appears to have been unbuildable before. 91 922009-01-08 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 93 * configure.ac: detection of CoreMIDI support. Ticket #18. 94 * src/Makefile.am: conditional build of CoreMIDI driver. 95 * src/fluid_coremidi.c: Basic CoreMIDI driver. 96 * src/fluid_mdriver.c: added CoreMIDI driver. 97 982009-01-08 Josh Green <jgreen@users.sourceforge.net> 99 * configure.ac: Followed GTK's lead for some unexplained magic for 100 stupid libtool version parameters (fixes autogen.sh bomb on 101 undefined macro LT_REVISION/LT_CURRENT/LT_AGE). Added 102 AC_CONFIG_MACRO_DIR([m4]) as suggested by libtoolize. 103 * Makefile.am: Added ACLOCAL_AMFLAGS=-I m4 as suggested by libtoolize. 104 1052008-12-23 Josh Green <jgreen@users.sourceforge.net> 106 * configure.ac: Added detection of PulseAudio driver. 107 * src/Makefile.am: Added conditional build of PulseAudio driver. 108 * src/fluid_adriver.c: Added PulseAudio driver and re-sorted drivers 109 by use preference. 110 * src/fluid_chan.c: Using MIDI enums for initializing channel CC values, 111 added supported for RPN GM MIDI messages Bend Range, Fine Tune and 112 Coarse Tune, added check for out of range NRPN parameters. 113 * src/fluid_midi.h: Added RPN enum midi_rpn_event. 114 * src/fluid_pulse.c: New PulseAudio driver. 115 1162008-09-22 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net> 117 * src/fluid_dsound.c: Fix for ticket #16 - dsound device can't be selected. 118 1192008-09-07 Josh Green <jgreen@users.sourceforge.net> 120 121 * src/fluid_alsa.c (new_fluid_alsa_seq_driver): Patch from 122 Nicolas Boulicault to add ALSA sequencer midi.portname setting. 123 * src/fluid_conv.h: S. Christian Collins' patch - changed 124 FLUID_ATTEN_POWER_FACTOR from -531.509 to -200.0. 125 * src/fluid_defsfont.c (fluid_defpreset_noteon): S. Christian Collins' 126 patch - crash bug fix related to using certain modulators in a preset. 127 * src/fluid_mdriver.c: Pedro Lopez-Cabanillas' patch which adds a 128 midi.winmidi.device setting. 129 * src/fluid_mod.c: S. Christian Collins' patch - Stop forcing velocity 130 based filtering and a couple of calculation fixes to transform functions. 131 * src/fluid_synth.c: Nicolas Boulicault's patch to add midi.portname 132 setting. 133 (fluid_synth_program_change): added fix to properly search for a 134 percussion instrument 135 * src/fluid_synth.h: Changed FLUID_NUM_PROGRAMS to 128 and set 136 DRUM_INST_BANK to 128. 137 * src/fluid_voice.c (fluid_voice_write): S. Christian Collins' patch - 138 force velocity envelope value to be that of the previous stage when 139 switching from decay to sustain and filter calculation now uses 140 synthesizer baud rate rather than fixed at 44100. 141 (fluid_voice_update_param): S. Christian Collins' patch - Use multiplier 142 for GEN_ATTENUATION to be compatible with EMU10K1 cards. 143 * src/fluid_winmidi.c: Pedro Lopez-Cabanillas' patch which adds a 144 midi.winmidi.device option. 145 * src/fluidsynth.c: Nicolas Boulicault's patch which adds midi.portname 146 setting. Pedro Lopez-Cabanillas' patch which breaks out of argument 147 processing loop for non getopt option argument handling when a non 148 option is encountered and not using Readline. 149 1502007-11-17 Josh Green <jgreen@users.sourceforge.net> 151 152 * FluidSynth release 1.0.8 "Its about funky time!" 153 * configure.ac: Bumped LT_REVISION and added call to AM_PROG_CC_C_O macro. 154 * Makefile: Updated fluidsynth.prj to fluidsynth.anjuta 155 * README-OSX: Update from Ebrahim Mayat for OS X Leopard 156 * acinclude.m4: Fixed embedded main function in AM_PATH_READLINE macro. 157 1582007-11-11 Josh Green <jgreen@users.sourceforge.net> 159 160 * configure.ac: Added --enable-trap-on-fpe and --enable-fpe-check to 161 assist with Floating Point Exception debugging. 162 * src/fluid_chorus.c: Reverted the rest of the chorus "Effect level clip" 163 patch, until something better is devised. 164 * src/fluid_synth.c: Added support for trapping on Floating Point 165 Exceptions on GLIBC systems, to aid developers in tracking down FPEs 166 with gdb, removed buffer alignment hacks since they are no longer 167 needed (not using SSE currently). 168 * src/fluid_sys.c (fluid_time_config): Added check for a CPU freq 169 calculation of 0.0, since this test is inadequate to begin with and 170 was coming up as 0.0 on my laptop, causing a FPE. Will replace with 171 real timer functions, in the future. 172 * src/fluid_voice.c: Removed zap_almost_zero macro as it was buggy and 173 had issues which went away when gcc optimization was turned off and in 174 the case of !WITH_FLOAT was using abs() which is integer based and 175 would cause FPEs. 176 (fluid_voice_write): Removed a memory alignment hack and moved a call 177 to fluid_fpe_check() to a better location. 178 (fluid_voice_effects): Replaced zap_almost_zero with a call to fabs(), 179 added fluid_fpe_check() call. 180 * src/fluidsynth_priv.h: Removed FLUID_ALIGN16BYTE hack, as it is no 181 longer needed. 182 1832007-11-10 Josh Green <jgreen@users.sourceforge.net> 184 185 * doc/fluidsynth.1: Updated man page with current command line options and other changes (minor). 186 * include/fluidsynth/synth.h: Reverted "Effect level clip" patch as it seems to cause chorus 187 count to have a much lessor effect. 188 1892007-09-20 Josh Green <jgreen@users.sourceforge.net> 190 191 * Doc updates to AUTHORS and latest README-OSX from Ebrahim Mayat. 192 * src/config_win32.h.in: VERSION is now filled in at configure time. 193 * src/fluid_alsa.c (fluid_alsa_audio_run_s16): Fixed bug which was 194 causing weird crashes with QSynth when new_fluid_audio_driver2() when 195 audio meters were enabled (user data parameter was being used as a 196 fluid_synth_t instance). Synth instance is now no longer used in 197 this case (it was only used for 16 bit dithering before). 198 * src/fluid_oss.c: Fixed the same bug that was affecting ALSA driver. 199 * src/fluid_rev.c: Reverted to old commented out code in regards to 200 reverb level. 201 * src/fluid_synth.c (fluid_synth_dither_s16): Now no longer uses 202 fluid_synth_t instance, but accepts a pointer to an integer instead 203 for keeping track of dithering buffer index (all that the synth instance 204 was being used for). 205 * src/fluid_synth.c (fluid_synth_one_block): Reverted patch which 206 performs assignment of chorus and reverb levels in synthesis loop, 207 until a better scheme is devised (unnecessary CPU consumption). 208 * Added Visual Studio .sln and .vcproj files and some minor source 209 changes to get FluidSynth to build with it. 210 * Back-converted Visual Studio project to VC++ 6 project for users 211 using that build platform (not tested). 212 2132007-09-02 Josh Green <jgreen@users.sourceforge.net> 214 215 * configure.ac: Removed SSE and longlong related switches (SSE support 216 removed for now and longlong is now always used). 217 * : Applied effect level clip patch from David Hilvert 218 see http://fluidsynth.resonance.org/trac/ticket/2. 219 * : Applied reverb damp scaling patch from David Hilvert 220 see http://fluidsynth.resonance.org/trac/ticket/3. 221 * src/fluid_dsp_float.c: No longer being #include'd and all interpolation 222 functionality has been re-written as separate functions, interpolating 223 around loops is now supported, effect (reverb/chorus/pan/filter) stuff 224 moved to fluid_voice.c. 225 * src/fluid_phase.h: 64 bit unsigned integers are now used for phase 226 index/fraction sample pointers, modified macros accordingly. 227 * src/fluid_voice.c: Removed SSE code, fluid_voice_init() renamed to 228 fluid_dsp_float_init() and moved to fluid_dsp_float.c. Effect related 229 functionality (reverb/chorus/pan/filter) moved from fluid_dsp_float.c 230 to fluid_voice.c. Some code re-formatting and comment cleanup. Loop 231 no longer requires padding surrounding it (fixes bug related to loop 232 point right on the end of the sample). 233 2342007-08-18 Josh Green <jgreen@users.sourceforge.net> 235 236 * src/fluid_alsa.c: Added SND_SEQ_PORT_TYPE_MIDI_GENERIC back into the 237 ALSA sequencer port registration as it broke the use of playmidi 238 (thanks to Dave Serls for providing a patch and pointing this out). 239 2402007-01-14 Josh Green <jgreen@users.sourceforge.net> 241 242 * src/fluid_alsa.c: Fixed evil bugs in ALSA driver where return value 243 of new fluid_alsa_handle_write_error() was not being checked correctly 244 causing successfully handled ALSA errors (underruns for example) to 245 terminate audio thread. 246 * src/fluid_synth.c: Using an inline roundi function to replace roundf 247 as per suggestion by Mihail Zenkov, 16 bit for dithering. 248 2492006-12-10 Josh Green <jgreen@users.sourceforge.net> 250 251 Lots of documentation updates. 252 * doc/Doxyfile: No longer including functions by default, only those 253 listed in the listed header files. 254 * src/fluid_strtok.[ch]: Removed, since it was crap. Replaced with 255 fluid_strtok() in fluid_sys.c which doesn't require an allocated 256 tokenizing instance. 257 * src/fluid_alsa.c: Audio processing is more optimized in the case where 258 no user defined audio callback is used (removal of unneeded buffer copy), 259 fluid_alsa_handle_write_error() added for centralized ALSA audio error 260 handling, 261 * src/fluid_aufile.c: Now also doing 16 bit dithering. 262 * src/fluid_cmd.c: Removed use of old tokenizer instance. 263 * src/fluid_coreaudio.c: User defined callback function is now honored. 264 * src/fluid_defsfont.c: More leaks plugged (thanks to Paul Millar for 265 the patch), removed sfont_free_data() since sfont_close() should be 266 used instead (don't want to leak a file handle). 267 * src/fluid_midi_router.c: Took out uses of fflush() since sending a 268 line of text (with newline) should display it. 269 * src/fluid_oss.c: Using fluid_synth_dither_s16() in place of old 270 16 bit conversion code. 271 * src/fluid_settings.c: Replaced strtok stuff with new function, some 272 other improvements. 273 * src/fluid_synth.c (delete_fluid_synth): Turning off all voices so that 274 SoundFont data will be freed correctly (thanks to patch from 275 Paul Millar). 276 * src/fluid_sys.c (fluid_strtok): New function to replace old tokenizing 277 functions which required a token instance. 278 * src/fluidsynth.c: Warning message printed if a non option is not a 279 valid SoundFont or MIDI file (thanks to Nick Daly for the patch). 280 2812006-11-22 Josh Green <jgreen@users.sourceforge.net> 282 283 * src/fluid_alsa.c (new_fluid_alsa_audio_driver2): Removed some ALSA 284 lib calls to set software parameters, which was likely causing the 285 100% CPU usage problem (not actually fixed in last update, not sure 286 which one is the culprit). 287 (fluid_alsa_seq_run): More changes in ALSA sequencer code, hopefully 288 it is right this time! 289 (delete_fluid_alsa_seq_driver): Memory leak fixed - wasn't freeing 290 array of sequencer file descriptors. 291 * src/fluid_chan.c: Memory leak fixes: Now deleting preset from channel 292 when channel is destroyed. 293 * src/fluid_cmd.c: Memory leak fix: strtok being deleted from command 294 shell when shell is destroyed. 295 * src/fluid_defsfont.c: Memory leak fixes: Freeing modulator lists in 296 preset and instrument zones, freeing zone names, freeing instruments 297 linked from preset zones, replaced use of "safe_malloc" with FLUID_MALLOC 298 macro, deleting instrument list in SFData, deleting samples in SFData, 299 freeing SFData structure. 300 * src/fluid_settings.c: Memory leak fix: freeing options in option 301 type settings. 302 * src/fluid_synth.c: Memory leak fixes: Freeing FX buffers and 303 right/left_buf. 304 3052006-11-21 Josh Green <jgreen@users.sourceforge.net> 306 307 * src/fluid_alsa.c (new_fluid_alsa_audio_driver2): Modified all ALSA 308 calls to check return code error as "< 0" as per ALSA examples, sample 309 rate is now compared with what was expected and warning message displays 310 both values, if target sample rate wasn't set update the local 311 period_size variable (was causing 100% CPU consumption by ALSA, from 312 the resultant erroneous sw_params calls). 313 (fluid_alsa_audio_run_float): Using case statement for 314 error codes from snd_pcm_writen() for the sake of tidiness. 315 (fluid_alsa_audio_run_s16): Using case statement for error codes 316 from snd_pcm_writei() for the sake of tidiness, re-instated call 317 of device callback function that was broken with the dither patch 318 (don't want to break the API), now using new fluid_synth_dither_s16() 319 to convert floating point sample data to 16 bit with dithering. 320 (fluid_alsa_seq_run): Timeout in poll() call set to 100ms (from 1ms!), 321 snd_seq_event_input_pending is used to check if events are available 322 before calling snd_seq_event_input to prevent blocking, check of 323 snd_seq_event_input error code moved to the right location (bug fix). 324 * src/fluid_synth.h: Added dither_index parameter to fluid_synth_t 325 structure to allow for per synth dithering continuity. 326 * src/fluid_synth.c: Modified dithering to use new dither_index field 327 for per synth dithering continuity, fixed off by 1 error with 328 dithering index comparison, removed usage of roundf in dithering (is 329 it sufficient to just integer truncate?). 330 (fluid_synth_dither_s16): New function to perform dithering on 331 buffers of floating point sample data. 332 3332006-11-20 Josh Green <jgreen@users.sourceforge.net> 334 335 * src/fluid_alsa.c: Applied dithering patch from Mihail Zenkov. 336 * src/fluid_synth.c: Applied dithering patch from Mihail Zenkov. 337 3382006-03-04 Josh Green <jgreen@users.sourceforge.net> 339 340 * src/fluid_alsa.c (delete_fluid_alsa_audio_driver): Now calling 341 snd_pcm_close() to close the ALSA audio driver handle. 342 (fluid_alsa_seq_run): Check for -ENOSPC error was logicly inverted. 343 (new_fluid_alsa_seq_driver): Sequencer is now opened in blocking mode. 344 3452006-02-20 Josh Green <jgreen@users.sourceforge.net> 346 347 * Fixed build error that occured when neither LASH or LADCCA are 348 present. 349 * Updated README-OSX from Ebrahim Mayat. 350 3512006-02-18 Josh Green <jgreen@users.sourceforge.net> 352 * FluidSynth release 1.0.7 "Increasing Fluidity.." 353 354 * Removed spurious newlines from FLUID_LOG statements throughout. 355 * AUTHORS: Some cleanup and additions. 356 * src/fluid_lash.[ch]: Moved LADCCA related code from fluidsynth.c here 357 and added new LASH support (both old LADCCA and LASH are supported 358 exclusively). Used patches sent by Frieder Bürzele as a guide. 359 * src/fluidsynth.c: Removed LADCCA code (now in fluid_lash.c), 360 re-organized command line parsing and removed duplicate WIN32 switch 361 statement, re-organized help output and added missing entries, added 362 "-o help" switch for listing settings, welcome message now printed 363 whenever FluidSynth is run and simplified, 364 (print_usage): hard coded application name as "fluidsynth". 365 * configure.ac: Changed --enable-SSE option to --enable-broken-SSE 366 and --enable-SSE now just displays a fat warning about not using it. 367 * src/fluid_jack.c: Warning is now displayed if synth sample rate 368 doesn't match jackd. 369 * src/fluid_alsa.c: Added detection for ALSA sequencer buffer overrun 370 (-ENOSPC) and interrupted poll() call (-1??). 371 * src/fluid_voice.c: Applied patch from Henri Manson which adds a 372 fluid_ct2hz_real() function which does not have the filter cutoff 373 limits that fluid_ct2hz() does, new function being used for 374 calculations that may include non-audible frequencies. 375 * src/fluid_dsound.c: Applied patch from Henri Manson which 376 only creates the directsound window once. 377 3782005-09-04 Josh Green <jgreen@users.sourceforge.net> 379 380 * src/fluid_ramsfont.c (fluid_ramsfont_remove_izone): Applied crash bug 381 fix from Antoine Schmitt. 382 3832005-07-05 Josh Green <jgreen@users.sourceforge.net> 384 385 * src/fluidsynth_priv.h: FLUID_ALIGN16BYTE is broken on AMD64 so now 386 only enabled if SSE is being used. If SSE code becomes more useful in 387 the future this should be fixed. 388 3892005-06-29 Josh Green <jgreen@users.sourceforge.net> 390 391 * Applied LASH patch that is included with ladcca-0.4.0. 392 3932005-06-11 <jgreen@users.sourceforge.net> 394 395 * Released FluidSynth 1.0.6 "Music to my ears" 396 397 * README-OSX: Update from Ebrahim Mayat. 398 * acinclude.m4: Midishare support now defaults to auto. 399 * configure.ac: Added LT_CURRENT, LT_REVISION and LT_AGE in place of 400 LIBFLUIDSYNTH_MAJ and LIBFLUIDSYNTH_MIN to make better use of 401 libtool library versioning. Fixed use of AC_ARG_ENABLE (was setting 402 variables to yes even when disable was specified), fixes --disable-SSE 403 which was reported by Mikhail Yakshin, added warning when SSE is 404 enabled to let users know that this feature isn't really desirable 405 currently. 406 * src/Makefile.am: Now using LT_VERSION_INFO to substitute the libtool 407 version. 408 * src/fluid_cmd.c (fluid_cmd_handler_handle): Modified to avoid GCC 409 "type-punned" cast warning. 410 * src/fluid_defsfont.c (fluid_preset_zone_import_sfont): Fixed 411 assignment of modulator amtsrc flags (should be assigned to flags2 412 not flags1), thanks to Stephan Tassart for reporting this. 413 (fluid_inst_zone_import_sfont): Same fixes as for above. 414 * src/fluid_sys.c (fluid_log): Now using vsnprintf for formatting 415 error messages to fix buffer overflow as reported by Axioplase. 416 (fluid_debug): Same as above. 417 4182005-06-11 <jgreen@users.sourceforge.net> 419 420 * fluidsynth.prj: Added Anjuta project file. 421 * src/fluid_conv.c: fluid_cb2amp conversion set back to real centibels 422 and added a new fluid_atten2amp table conversion for non-standard 423 EMU 8k/10k attenuation. 424 * src/fluid_voice.c (fluid_voice_write): Updated volume calculations to 425 use fluid_cb2amp for envelope and LFO, but use fluid_atten2amp for 426 initial attenuation. 427 (fluid_voice_noteoff): Re-coded volenv_val attack conversion and 428 verified. 429 4302005-06-10 <jgreen@users.sourceforge.net> 431 432 * src/fluid_phase.h: Patch from Sean Bolton to fix big endian long long 433 phase combined 64 bit value type fluid_phase_t 434 * src/fluid_voice.c (fluid_voice_update_param): case GEN_OVERRIDEROOTKEY 435 was incorrectly adding pitchadj fine tune amount instead of subtracting 436 it. Also, fine tuning should be applied to root key override as well. 437 4382005-06-07 <jgreen@users.sourceforge.net> 439 440 * Applied Sean Bolton's DSSI patch (SB patch) which adds the ability to 441 change polyphony at runtime and fixes a bug (see below). 442 * README-OSX: Update from Ebrahim Mayat for OSX Panther. 443 * include/fluidsynth/synth.h: Sean Bolton's DSSI patch adds two new 444 functions fluid_synth_set_polyphony and fluid_synth_get_polyphony. 445 * src/fluid_conv.c: Centibel to amplitude conversion now follows 446 EMU 8k/10k which is contrary to SoundFont specification (TiMidity++ 447 used as an example). 448 * src/fluid_conv.h: FLUID_CB_POWER_FACTOR defined for the centibel->amp 449 conversion table equation. 450 * src/fluid_defsfont.c (load_pgen): Fixed 'use of cast expressions as 451 lvalues is deprecated' warning by casting the value being assigned 452 instead of the variable assigned to and removed code warrior 453 specific code to work around this. 454 (load_igen): Same as for load_pgen. 455 * src/fluid_synth.c: SB patch - uses synth->polyphony instead of 456 synth->nvoice when iterating over the synth's voices. 457 (fluid_synth_update_polyphony): SB patch (new) - runtime update 458 (fluid_synth_set_polyphony): SB patch (new) 459 (fluid_synth_get_polyphony): SB patch (new) 460 (fluid_synth_nwrite_float): SB patch - fixes bug where the use of 461 arbitrary values of the 'len' parameter was broken. 462 * src/fluid_voice.c (fluid_voice_write): modlfo_to_vol (modulation LFO 463 to volume) was being calculated inverted (should be negative 464 attenuation, gain, for a positive rise in LFO). 465 (fluid_voice_noteoff): Updated centibel to amplitude conversion 466 used when voice off during attack to use the new 467 FLUID_CB_POWER_FACTOR. 468 4692004-11-11 <jgreen@users.sourceforge.net> 470 471 * README-OSX: Update from Ebrahim Mayat. 472 4732004-08-18 <peter@hanappe.com> 474 475 * src/fluid_synth.c (fluid_synth_set_bank_offset): 476 (fluid_synth_get_bank_offset): New API to set 477 a bank offset in a SoundFont (proposition made by Ken Ellinwood). 478 4792004-08-06 <peter@hanappe.com> 480 481 * src/fluid_synth.c (fluid_synth_noteon): 482 fluid_synth_release_voice_on_same_note() is now called in the 483 noteon() function instead of in fluid_synth_start(). This fixes 484 the silent note problem! 485 4862004-07-29 <peter@hanappe.com> 487 488 * src/fluid_chan.c (fluid_channel_cc): Applied Ken Ellinwood's 489 fix for the bank select (MSB) message. 490 491 * src/fluid_jack.c (fluid_jack_audio_driver_settings): Applied Rui 492 Nuno Capela's patch 493 4942004-05-14 <peter@hanappe.com> 495 496 * doc/fluidsynth.1 (option): Fixed typo noted by Gerald Pye. 497 4982004-05-14 Peter Hanappe <peter@hanappe.com> 499 500 * src/fluid_dsound.c (fluid_dsound_enum_callback): Applied Sergey 501 Pavlishin's patch. This path fix stack overflow during DirectSound 502 audio driver initialization. 503 5042004-05-07 Peter Hanappe <peter@hanappe.com> 505 506 * src/fluid_synth.c (fluid_synth_remove_sfont): Added new function 507 5082004-05-05 Peter Hanappe <peter@hanappe.com> 509 510 * src/fluid_alsa.c (new_fluid_alsa_seq_driver): The alsa driver 511 now opens several ports if the synthesizer is configured for more 512 than 16 MIDI channels. 513 514 * src/fluid_voice.c (fluid_voice_write): I removed the filter 515 on/off optimization. The filter is always on and serves as an 516 anti-aliasing filter. 517 5182004-05-04 Peter Hanappe <peter@hanappe.com> 519 520 * src/fluid_synth.c (new_fluid_synth): The number of MIDI channels 521 now has to be a multiple of 16. The synth checks that this is the 522 case and changes the settings accordingly. I removed the sanity 523 checks for the min/max value of the number of MIDI channels since 524 this is already done by the settings object. 525 5262004-03-30 Josh Green <jgreen@users.sourceforge.net> 527 528 * src/fluid_voice.c (fluid_voice_write): Altered filter turn-off 529 optimization to not turn filter off once it has been 530 enabled. There is still a potential for a click when it gets 531 turned on though, which needs to be dealt with. 532 5332004-03-30 Peter Hanappe <peter@hanappe.com> 534 535 * src/fluid_dsp_core.c: I've split up the dsp core file in three 536 files: fluid_dsp_simple.c, fluid_dsp_float.c, and 537 fluid_dsp_sse.c. This improves the readability. 538 5392004-03-29 Peter Hanappe <peter@hanappe.com> 540 541 * src/fluid_jack.c (new_fluid_jack_audio_driver2): Testing the 542 number of ports before allocating them. 543 (fluid_jack_audio_driver_settings): Registering 544 the "audio.jack.autoconnect" setting. 545 546 * src/fluid_midi.c (fluid_player_set_midi_tempo): Tempo changes 547 handled correctly. Was broken after fix on [2004-03-22] (see 548 below). 549 550 * src/fluid_strtok.c (fluid_strtok_char_index): Removed printf's 551 from fluid_strtok.c 552 5532004-03-26 Peter Hanappe <peter@hanappe.com> 554 555 * bindings/README: Imported the fluidsynth_jni and fluidmax 556 projects. 557 5582004-03-25 Peter Hanappe <peter@hanappe.com> 559 560 * src/fluid_rev.c (new_fluid_revmodel): Added 'gain', similar as 561 in Freeverb 3. Using same 'wetscale' as Freeverb 3, but fixing 562 'wet' to 3. fluid_revmodel_setlevel() does not change the value of 563 'wet': The 'wet' level can be controlled with the 'reverb send'. 564 (fluid_revmodel_processreplace): The input is multiplied by 2 and 565 by the gain. This corresponds to the channel mixing and scaling 566 that Freeverb 3 does. 567 5682004-03-24 Peter Hanappe <peter@hanappe.com> 569 570 * src/fluidsynth.c (main): Added the -f switch. Passing "-f file" 571 on the command line tells fluidsynth to read parse the file and 572 execute and commands. 573 (main): User config and system config file are now loaded correctly 574 575 * src/fluid_cmd.c (fluid_shell_run): the shell doesn't get stuck 576 and loop on an emtpy string when the end of the stream is reached. 577 578 * src/fluid_io.c (fluid_istream_gets): fluid_istream_gets() 579 returns 0 if the end of the stream was reached and -1 on error. 580 581 * src/fluid_cmd.c (fluid_source): Fixed bug in "file = 582 open(filename, FLAGS);" (I shouldn't pass O_WRONLY when what I 583 want is O_RDONLY!) 584 5852004-03-23 Peter Hanappe <peter@hanappe.com> 586 587 * src/fluid_aufile.c (new_fluid_file_audio_driver): Added 588 fluid_aufile.c. This file implements a audio driver that writes 589 the audio output to a file. This driver is NOT real-time and is 590 currently useful for testing purposes only (not even useful to 591 play MIDI files). 592 5932004-03-22 Peter Hanappe <peter@hanappe.com> 594 595 * src/fluid_synth.c (new_fluid_synth): Removed the synth->busy 596 mutex. I don't think it is necessary; to be discussed. 597 598 * src/fluid_midi.c (fluid_player_callback): Fixed the timing in 599 the MIDI playback. The current MIDI tick in every timer callback 600 was calculated as an increment to the previous number of 601 ticks. This introduces a growing error due to rounding errors and 602 timer variations. The current tick is now calculated according to 603 the absolute time at the beginning of the file. (Beginners error 604 ...) 605 606 * doc/FluidSynth-LADSPA.pdf: Added Markus' LADSPA design document. 607 608 * doc/xtrafluid.txt: Added Antoine's Xtra API documentation. 609 610 * doc/midi_time.txt: Added a memo on midi timing. 611 6122004-03-19 Peter Hanappe <peter@hanappe.com> 613 614 * src/fluid_midishare.c: Applied Stephane Letz patch: MidiShare is 615 now connected to fluidsynth by default so that received MIDI 616 events directly trigger the synth 617 6182004-02-28 Peter Hanappe <peter@hanappe.com> 619 620 * src/fluid_synth.c: Added fluid_synth_program_select2() and 621 fluid_synth_get_sfont_by_name() in fluid_synth.c. These functions 622 are not in the public API, yet. 623 6242004-02-25 Peter Hanappe <peter@hanappe.com> 625 626 * src/fluid_voice.c: Fixed bug in volume envelope (in 627 fluid_voice_update_param(), case GEN_VOLENVDECAY): the minimum 628 value was converted to linear amplitude instead of a normalized 629 value of the cB (1-cB/1000). Because of that, the decay section 630 went on for too long. 631 6322004-12-xx Peter Hanappe <peter@hanappe.com> 633 634 * src/fluid_seq.c: Inserting events in the queueLater list was 635 incomplete. It didn't check if the event was the last in the list, 636 and the looping through the list didn't update the prev pointer. I 637 added muteces to the sequencer. Events are dynamically allocated 638 if no free events are available. The sequencer is protected by a 639 mutex. 640 6412003-11-14 Josh Green <jgreen@users.sourceforge.net> 642 * src/fluidsynth.c: Removed CCA_Use_Jack and CCA_Use_Alsa flags 643 since LADCCA no longer uses them. 644 6452003-08-31 Josh Green <jgreen@users.sourceforge.net> 646 647 * acinclude.m4: Renamed AC_SOUND macro to AC_OSS_AUDIO and removed 648 the ALSA check from it since pkg-config is now being used to check 649 for ALSA. Also fixed --enable-alsa-support and --enable-oss-support 650 which were disabling support instead (reported by Bart Massey). 651 * configure.ac: pkg-config is now being used to check for ALSA. 652 ALSA and OSS now use automake conditionals to conditionally compile 653 source files. 654 * Makefile.am: Re-arranged SUBDIRS so build output looks nicer. 655 * src/Makefile.am: ALSA and OSS are now conditionally compiled using 656 automake conditionals. 657 6582003-08-29 Josh Green <jgreen@users.sourceforge.net> 659 660 * src/fluid_sys.c: Patch from Eric Van Buggenhaut to make i386 asm 661 code not compile for all non-i386 archs rather than just DARWIN. 662 * src/fluidsynth_priv.h: Patch from Sergey Pavlishin to fix 663 FLUID_REALLOC macro. 664 * src/fluid_cmd.c: Ken Ellinwood's patch to add -verbose to "channels" 665 command, and print settings values with 3 decimal places. 666 * src/fluid_defsfont.c (fluid_defsfont_sfont_get_preset): Ken 667 Ellinwood's patch to initialize sfont field of preset. 668 * src/fluid_ramsfont.c (fluid_ramsfont_sfont_get_preset): Ken 669 Ellinwood's patch to initialize sfont field of preset. 670 * src/fluid_midi.c (fluid_midi_file_read_event): Fixed a crash bug with 671 zero length MIDI meta events that was pointed out by Sergey Pavlishin. 672 (delete_fluid_midi_event): Fixed a stack overflow problem pointed out 673 by Sergey Pavlishin that was caused by recursively deleting MIDI 674 event linked list, now just using a while loop. 675 6762003-08-25 Josh Green <jgreen@users.sourceforge.net> 677 678 * src/fluidsynth.c: MIDI channels switch should be -K not -L as was 679 listed in "Usage" output, also -K was setting audio.channels for 680 non getopt case statement - changed to midi.channels. Added a new 681 option "-l, --disable-ladcca" to disable LADCCA server connection. 682 6832003-08-25 Josh Green <jgreen@users.sourceforge.net> 684 685 Release version 1.0.3 686 687 * doc/fluidsynth.1: Applied typo patch from Eric Van Buggenhaut. 688 * TODO: Restructuring TODO file (removing old stuff). 689 * doc/Doxyfile: Disabled Tex doxygen generation and changed 690 OUTPUT_DIRECTORY to api/. 691 * doc/Makefile.am: Added an update-docs target and related for updating 692 developer doc and doxygen reference HTML. Also added update-docs to 693 dist-hook for updating before distribution packaging. 694 * include/fluidsynth/synth.h: Some fixes to doxygen documentation. 695 * fluidsynth.spec.in: New RPM spec file which is generated at configure 696 time. 697 * Makefile.am: Added fluidsynth.spec(.in) to EXTRA_DIST. 698 6992003-08-19 Josh Green <jgreen@users.sourceforge.net> 700 701 * src/fluid_alsa.c: Added some calls to snd_strerror() to print out 702 details of ALSA routine failures. 703 * src/fluid_defsfont.c: Put a message about SoundFont loading code 704 being borrowed from Smurf SoundFont Editor. 705 * src/fluid_rev.c: Valgrind found that some values were being used 706 uninitialized because fluid_revmodel_update() was being called before 707 all reverb parameters were set, now setting manually and then calling 708 update routine. 709 * src/fluid_voice.c: Increased FLUID_MAX_AUDIBLE_FILTER_FC to minimize 710 clicks from filter toggling. Added a FLUID_MIN_VOLENVRELEASE constant 711 to set the minimum volume envelope release to minimize clicks. 712 7132003-07-22 Josh Green <jgreen@users.sourceforge.net> 714 715 * src/fluid_midishare.c: Added include of header "config.h" as 716 per Albert Graef's request. 717 * src/fluid_voice.c (fluid_voice_optimize_sample): Moved a 718 variable declaration to the beginning of function, it was 719 causing problems with at least one user. 720 7212003-06-28 Josh Green <jgreen@users.sourceforge.net> 722 723 * src/fluid_defsfont.c: Moved call to fluid_voice_optimize_sample 724 from fluid_inst_zone_import_sfont to fluid_defsfont_load. Also 725 reduced minimum sample size before rejection from 48 to 8 (could 726 be lower?). 727 * src/fluid_voice.c (fluid_voice_optimize_sample): Added a check 728 for sample->valid to ignore ROM samples which was causing a crash 729 with Vintage Dreams and other SoundFont files with ROM samples. 730 7312003-06-17 Josh Green <jgreen@users.sourceforge.net> 732 733 Release version 1.0.2 734 Added Makefile.am files where lacking. 735 736 * Makefile.am: Fixes to "make dist" target by adding macbuild, sf2 737 and winbuild to SUBDIRS also removed acconfig.h from EXTRA_DIST. 738 * acinclude.m4: Removed AC_JACK, now using pkgconfig. 739 * configure.ac: Updated to version 1.0.2, Jack test now using 740 pkgconfig and built by default if found, coreaudio driver now built 741 by default if found. 742 * doc/Makefile.am: Added Doxyfile, example.c, example.sf2, fluidsynth.1 743 and fluidsynth-v10-devdoc.xml to EXTRA_DIST. 744 * src/Makefile.am: fluid_jack.c now conditionally built, fluid_sse.h 745 added to EXTRA_DIST. 746 * src/fluid_jack.c: #if JACK_SUPPORT removed as its not needed. 747 7482003-06-15 Josh Green <jgreen@users.sourceforge.net> 749 750 * configure.ac: Fixed detection of CoreAudio by looking for 751 CoreAudio/AudioHardware.h. 752 * src/Makefile.am: Added COREAUDIO_CFLAGS and COREAUDIO_LIBS. 753 * src/fluid_coreaudio.c: Added CoreAudio prefix to #include headers 754 (fluid_core_audio_callback): Fixed declarition to match that of the 755 typedef in CoreAudio header to stop warnings. 756 * fluidsynth.c: Now including fluidsynth_priv.h to include the arch 757 specific definitions in there (perhaps should be done in configure 758 script though). 759 * fluidsynth_priv.h: Added "#define WITHOUT_SERVER 1" to Darwin build. 760 7612003-06-12 Josh Green <jgreen@users.sourceforge.net> 762 763 * Makefile.am: Added autogen.sh to EXTRA_DIST 764 * acinclude.m4: Added AM_PATH_READLINE macro for readline detection 765 and prefix configuration. 766 * configure.ac: Support for MinGW32 build, Darwin build fixes, 767 configure CFLAGS input value now honored, fixes to CoreAudio support, 768 and better readline detection and config. 769 * src/Makefile.am: Now conditionally compiling CoreAudio and Windows 770 sources, added config_*.h files to EXTRA_DIST, some stuff for MinGW32 771 build, READLINE_LIBS and READLINE_CFLAGS now used. 772 * src/fluid_dsound.c: Fixed some warnings by adding "void" for 773 empty parameter procedure declarations. 774 * src/fluidsynth.c: Don't include config_win32.h if MinGW32. 775 * src/fluidsynth_priv.h: Stuff for MinGW32 and Darwin builds. 776 * doc/fluidsynth-v10-devdoc.xml: Applied a diff from 777 Alexandre Prokoudine. 778 7792003-06-09 Josh Green <jgreen@users.sourceforge.net> 780 781 * src/fluid_alsa.c: Added calls to pthread_attr_setschedparam to 782 properly create SCHED_FIFO threads. 783 * src/fluid_oss.c: pthread_attr_setschedparam calls added. 784 * src/fluid_midishare.c: Patch update from Stephane Letz. 785 7862003-05-29 root <mn@bongo> 787 788 * src/fluid_synth.c (fluid_synth_one_block): Added a mutex that 789 provides a small degree of protection against noteons / noteoffs, 790 when the audio thread is working. 791 792 * src/fluid_synth.h (struct _fluid_synth_t): 793 794 * src/fluid_voice.c (fluid_voice_optimize_sample): 795 7962003-05-29 Markus Nentwig <nentwig@users.sourceforge.net> 797 798 * include/fluidsynth/voice.h: added fluid_voice_gen_incr to api 799 * src/fluidsynth.c: Added error message for command line parameter handling 800 * src/fluid_voice.c (fluid_voice_optimize_sample): Removed loop peak detection 801 at run time, because it caused dropouts. Now the sound font loader or application 802 is responsible to call fluid_voice_optimize_sample (if it doesn't, the turnoff optimization is 803 simply disabled). 804 8051999-11-30 Antoine Schmitt <as@gratin.org> 806 807 * src/fluid_defsfont.c: inst_zone lokey is now properly inialized to 0 808 (it was not, leading to random lost noteons depending on memory 809 initialization) 810 8112003-04-03 Peter Hanappe <peter@hanappe.com> 812 813 * src/fluid_rev.c: reverb parameters are clipped to their valid 814 range. 815 816 * src/fluid_alsa.c: using fluid_alsa_audio_run_s16 as default 817 function. This reduces the high CPU usage. 818 819 * src/fluid_voice.c (fluid_voice_write): filter interpolation done 820 over only 1 buffer to avoid filter instability 821 822 * src/fluid_chan.c (fluid_channel_init): bank number set to 128 823 for the drum channel 824 825 * src/fluid_midi.c (fluid_midi_file_read_event): Correctly reading 826 pitchbend value 827 8282003-02-27 Josh Green <jgreen@users.sourceforge.net> 829 830 Updated automake files (automake 1.6). 831 832 * configure.ac: New version autoconf variables which get substituted 833 into include/iiwusynth/version.h.in. 834 * include/iiwusynth/version.h.in: Version defines that are filled in 835 by autoconf. 836 * src/Makefile.am: Fixed SOURCES including removing headers that are 837 now in include/iiwusynth/, added missing sources (iiwu_ramsfont.[ch], 838 iiwu_sfont.h) and added iiwu_dsp_core.c to EXTRA_DIST. 839 * doc/Makefile.am: Added iiwusynth.1 to EXTRA_DIST. 840 * include/iiwusynth.h: Added version.h. 841 * iiwusynth/Makefile.am: Added version.h to the installed headers. 842 8432003-02-08 Markus Nentwig <nentwig@users.sourceforge.net> 844 845 * src/iiwu_ladspa.c: Added a very small signal at Nyquist 846 frequency. This fixes denormal number problems in some 847 plugins. 848 * src/iiwu_cmd.c (iiwu_shell_run): Now also invalid input lines 849 are added to the command line history. So the user can just scroll 850 up and fix them. 851 * src/iiwu_ladspa.c: Cleaned up error messages 852 * src/iiwu_dsp_core.c: Disabled SSE interpolation, because it is 853 slower than the normal code 854 * autogen.sh: Added a line, that checks for the presence of pkg-config in 855 autogen.sh. 856 Motivation: It took me some time to figure out what was wrong... 857 It produces some error message instead of an obscure error later 858 during ./configure, if pkg-config is not installed. 859 8602003-02-07 Josh Green <jgreen@users.sourceforge.net> 861 862 Applied another Bob Ham LADCCA patch. 863 864 * src/iiwu_alsa.c: LADCCA patch: Now using a ladcca.enable setting. 865 * src/iiwu_jack.c: LADCCA patch: ladcca.enable setting and jack ports 866 are no longer auto connected unless audio.jack.autoconnect is set. 867 * src/iiwusynth.c: LADCCA patch: ladcca.enable and command line options 868 -j and --connect-jack-outputs to enable Jack autoconnect. 869 8702003-02-05 Josh Green <jgreen@users.sourceforge.net> 871 872 Applied Bob Ham's LADCCA and pkgconfig patches. 873 874 * Makefile.am: pkgconfig patch. 875 * configure.ac: Renamed from configure.in as per new autoconf 876 standards. LADCCA configure switch and detection. FluidSynth.pc 877 pkgconfig file output. 878 * src/Makefile.am: LADCCA patch. 879 * src/iiwu_alsa.c [HAVE_LADCCA]: LADCCA patch: reports ALSA 880 sequencer client ID. 881 * src/iiwu_jack.c [HAVE_LADCCA]: LADCCA patch: reports JACK 882 client name. 883 * src/iiwusynth.c [HAVE_LADCCA]: LADCCA patch: connects to LADCCA 884 server, creates client thread, saves/restores SoundFont file state. 885 Used iiwu_sfont_get_name macro to get SoundFont file names contrary 886 to the patch. Should these macros be public? Included unistd.h 887 for usleep call (within HAVE_LADCCA). 888 8892003-01-23 Josh Green <jgreen@users.sourceforge.net> 890 891 * src/iiwu_jack.c: Fixed a segfault bug caused by freeing jack 892 port names, when really only the port array should be freed, 893 jack reference docs are confusing on this matter! 894 * src/iiwu_voice.c (iiwu_voice_check_sample_sanity): Min loop size 895 and padding now set via constants IIWU_MIN_LOOP_SIZE and 896 IIWU_MIN_LOOP_PAD defined at top of iiwu_voice.c, and the values 897 were lowered to exceed SF spec requirements rather then just meet. 898 (iiwu_voice_write): Now using a constant IIWU_MAX_AUDIBLE_FILTER_FC 899 defined at the top of iiwu_voice.c to control the filter 900 cutoff optimization. Also added IIWU_MIN_AUDIBLE_FILTER_Q so 901 filter will only turn off if both cutoff and q are determined to be 902 inaudible. Filter optimization is much less noticeable when modulating. 903 9042003-01-14 Markus Nentwig <nentwig@users.sourceforge.net> 905 906 * src/iiwu_ladspa.c: Adapted new command handler 907 * src/iiwu_midi_router.c (midi_dump_prerouter): Added forgotten 908 'flush' for event dump 'fprintf's 909 9102003-01-01 Markus Nentwig <nentwig@users.sourceforge.net> 911 912 * src/iiwu_oss.c (new_iiwu_oss_audio_driver): Changed to callback function 913 * src/iiwu_alsa.c (new_iiwu_alsa_midi_driver): Changed to callback function 914 * src/iiwu_midishare.c (iiwu_midishare_midi_driver_receive): Partly done the same 915 * src/iiwu_winmidi.c (new_iiwu_winmidi_driver): To be done... 916 * src/iiwu_midi_router.c: Added 917 * src/iiwu_ladspa.c: Adapted to new settings system 918 * src/iiwu_adriver.c (iiwu_audio_driver_settings): Uses getint 919 instead of getnum for audio.period-size and audio.periods settings. 920 * src/iiwu_voice.c (iiwu_voice_write): 921 Ignore the valid flag for samples. Otherwise no sound is produced. 922 * src/iiwu_chan.c (iiwu_channel_cc): Fixed bank select (7-bit 923 instead of 8 bit) 924 9252002-12-23 Peter Hanappe <peter@hanappe.com> 926 927 * src/iiwu_io.c (iiwu_istream_readline): new file (iiwu_io.c and 928 iiwu_io.c) to handle IO in the shell. 929 930 * src/iiwusynth.c (main): options to start TCP server. 931 932 * src/iiwu_cmd.c (new_iiwu_server): New structure and functions 933 (new_iiwu_shell): New structure and functions to improve command 934 interface. 935 (new_iiwu_cmd_handler): New structure and functions to improve command 936 interface. 937 938 * src/iiwu_sys.c (new_iiwu_server_socket): New structure and 939 functions 940 (new_iiwu_thread): New structure and 941 functions 942 9432002-12-14 Peter Hanappe <peter@hanappe.com> 944 945 * src/iiwu_chan.c (iiwu_channel_cc): Handling NRPN messages (NRPN 946 system). 947 948 * src/iiwu_voice.c (iiwu_voice_update_param): Does more extensive 949 range checking because the NPRN system may produce out-of-range 950 values (NRPN system). 951 (iiwu_voice_set_param): New function to change 952 generator values (NRPN system). 953 954 * src/iiwusynth_priv.h (iiwu_clip): New macro 955 956 * src/iiwu_synth.c (iiwu_synth_set_gen): New function to change 957 generator values (NRPN system). 958 959 * src/iiwu_gen.c (iiwu_gen_map_nrpn): New function to map the NRPN 960 data input to the parameter range (NRPN system). 961 962 * src/iiwu_midi.c (iiwu_midi_file_read_event): Fixed metadata 963 buffer bug (alloc size 1 too small). 964 9652002-12-10 Peter Hanappe <peter@hanappe.com> 966 967 * src/iiwu_dsound.c (iiwu_win32_destroy_window): Filled in the 968 empty lines... 969 970 * src/iiwusynth.h: Changes in the definition for iiwu_synth_sfload 971 and iiwu_synth_sfunload, New functions: iiwu_synth_sfreload, 972 iiwu_synth_get_sfont_by_id, and iiwu_list_insert_at. New 'id' 973 field in iiwu_font_t. 974 9752002-12-08 Markus Nentwig <nentwig@users.sourceforge.net> 976 977 * src/Makefile.am: added iiwu_hash.c and iiwu_strtok.c to libiiwusynth_la_SOURCES 978 * src/iiwu_settings.c (iiwu_settings_init): Removed 979 multi_channel from the settings (replaced with audio_channels > 1) 980 * src/iiwu_settings.c (iiwu_settings_init): added audio_groups 981 setting. This is the number of individual channels generated from 982 the synth, and always equal to audio_channels, as long as the 983 LADSPA Fx unit is disabled. Otherwise it can be used (for 984 example) to separate even and odd MIDI channels, apply different Fx 985 and mix together to one stereo output. 986 src/iiwu_ladspa.c: Extended Fx unit to multigroup input, fx sends 987 and multiple audio output channels 988 9892002-12-04 Peter Hanappe <peter@hanappe.com> 990 991 * src/iiwu_midi.c (iiwu_midi_file_read_event): the metadata buffer 992 is now dynamically allocated. What! Dynamic memory management 993 already existed in the sixties! 994 995 * src/iiwu_cmd.c (iiwu_handle_reset): New shell command. Sends 996 system reset. 997 998 * src/iiwu_cmd.c (iiwu_expand_path): New function to handle 999 filenames starting with '~'. 1000 1001 * src/iiwu_cmd.c: Added commands for working with tunings. Added 1002 'source' command. 1003 1004 * src/iiwu_chan.h (struct _iiwu_channel_t): added tuning 1005 1006 * src/iiwusynth.h: new tuning functions 1007 1008 * src/iiwu_synth.c (iiwu_synth_reset_tuning): new tuning functions 1009 1010 * src/iiwu_voice.c: Added tuning 1011 10122002-12-03 Peter Hanappe <peter@hanappe.com> 1013 1014 * doc/iiwusynth.1: new man page 1015 1016 * src/iiwu_midi.c (iiwu_player_load): the player now handles a 1017 playlist. 1018 1019 * src/iiwusynth.h: 'iiwu_player_add' replaces 'iiwu_player_load' 1020 1021 * src/iiwusynth.c (main): iiwusynth can now play midifiles. 1022 10232002-12-02 Peter Hanappe <peter@hanappe.com> 1024 1025 * src/iiwu_sys.c (new_iiwu_timer): New argument 'auto_destroy' to 1026 specify whether the timer should delete it's structure when the 1027 timer is finished. 1028 1029 * src/iiwu_synth.c (iiwu_synth_sfunload): If the soundfont can not 1030 be unloaded immediately, a timer thread is spinned of to unload it 1031 later. On MacOS 9, the unload is tried at a subsequent 'load' or 1032 'unload' request. 1033 1034 * src/iiwusynth.h (struct _iiwu_sample_t): Added 'refcount' field 1035 to test when a soundfont can be unloaded. 1036 1037 * src/iiwu_synth.c (iiwu_synth_nwrite_float): New function 1038 allowing multi-channel audio output. 1039 (iiwu_synth_init): Fixed 'amount' for pan. Now set to 500. 1040 1041 * src/iiwu_cmd.c (iiwu_synth_cmdshell): Added little prompt. 1042 1043 * src/iiwusynth.c (print_welcome): iiwusynth prints out a welcome 1044 message as an well-behaved, interactive application should. 1045 1046 * src/iiwu_synth.c (iiwu_synth_all_sounds_off): New function to 1047 implement the 'All Sound Off' MIDI messages (CC 120). 1048 (iiwu_synth_system_reset): This function now also resets the 1049 default controller values on the MIDI channels, and clears the 1050 reverb and chorus delay lines. 1051 (iiwu_synth_count_midi_channels): New function to retreive the 1052 number of available midi channels. 1053 (iiwu_synth_count_audio_channels): New function to retreive the 1054 number of available midi channels. 1055 (iiwu_synth_count_effects_channels): New function to retreive the 1056 number of available effects channels. 1057 (iiwu_synth_get_cpu_load): New function to retreive an estimation 1058 of the CPU load. 1059 1060 * src/iiwusynth.h: Added fields to handle multi-channel audio and 1061 a variable number of midi-channels. The 'flags' has been 1062 expanded/replaced with several variables. 1063 1064 * src/iiwu_chan.c (iiwu_channel_cc): Implemented the 'All Control 1065 Off' MIDI message (CC 121). 1066 1067 * src/iiwu_chorus.c (iiwu_chorus_update): iiwu_chorus_update 1068 (called after the iiwu_chorus_set_xxx function) no longer returns 1069 an error of out-of-range values. It clips the value the the 1070 [min-max] range. 1071 10722002-11-22 Markus Nentwig <nentwig@users.sourceforge.net> 1073 * src/iiwu_voice.c (iiwu_voice_write): Fixed compilation problem 1074 without --enable-SSE (Pentium II and Mac) 1075 10762002-11-17 Markus Nentwig <nentwig@users.sourceforge.net> 1077 1078 * src/iiwu_voice.c (iiwu_voice_write): Fixed nonlooped samples-bug. 1079 * TODO (TODO): Updated 1080 * src/iiwu_cmd.c (iiwu_handle_reverbsetlevel): Changed command 1081 line command 'rev_setwet' to 'rev_setlevel'. Replaced the word 'wet' by 1082 'level' in most places. 1083 Added a command line option --dump, which provides 1084 'machine-readable' output from stdout to hook up a user interface. 1085 * src/iiwusynth.h: Moved the default values for gain, chorus and 1086 reverb here. Might be useful as an example... 1087 * src/iiwu_voice.c (iiwu_voice_calculate_runtime_synthesis_parameters): 1088 Added 'scale tuning' modulator, centered around C3. 1089 * src/iiwusynth.h: Added API functions to read the reverb state 1090 Moved iiwu_synth_system_reset to the API 1091 10922002-11-08 Markus Nentwig <nentwig@users.sourceforge.net> 1093 1094 * src/iiwu_voice.c (iiwu_voice_write): Fixed Volume envelope delay bug 1095 * src/iiwu_voice.c (FILTER_TRANSITION_SAMPLES): Doubled filter 1096 fading time 1097 * src/iiwu_mod.c (iiwu_mod_get_value): Changed convex unipolar 1098 negative definition 1099 * src/iiwu_voice.c (iiwu_voice_off): Cleaned up a bit, uses now 1100 calls to iiwu_voice_off, when a voice is finished. 1101 * src/iiwu_midi.c (iiwu_midi_parser_parse): Reimplemented 1102 New parser should be able to cope with realtime, system common 1103 and resynchronize. 1104 11052002-10-31 Markus Nentwig <nentwig@users.sourceforge.net> 1106 1107 * src/iiwu_alsa.c (iiwu_alsa_midi_run): Increased MIDI timeout 1108 from 1 to 100 ms 1109 * src/iiwu_dsp_core.c: Merged identical filter coefficients b0 and 1110 b2 into b02 1111 Implemented smooth filter transitions 1112 * src/iiwu_sys.c (iiwu_check_fpe): Added verbose FPE reporting and 1113 systematic FPE checks. 1114 * src/iiwu_rev.c: Added a constant DC offset to avoid slowdown 1115 caused by denormal numbers 1116 * src/iiwu_synth.c (delete_iiwu_synth): Fixed segv during shutdown 1117 * src/iiwu_dsp_core.c: Fixed buffer bug (aligned-unaligned) 1118 * src/iiwu_synth.c (iiwu_synth_damp_voices): Commented out unused code 1119 * src/iiwu_dsp_core.c: Optimized, added SSE code, which is 1120 this time actually faster than the default code. Well. Part of it. 1121 * src/iiwu_voice.c: Minor clean-up 1122 * configure.in: Added switch --enable-longlong 1123 * configure.in: Added switch --enable-SSE 1124 * src/iiwu_phase.h: Added 64 bit operations, documented 1125 * src/iiwu_sse.h: Check to avoid #including the file more than once 1126 11272002-10-29 Markus Nentwig <nentwig@users.sourceforge.net> 1128 1129 * src/iiwu_voice.c: Added experimental SSE support for Pentium 1130 III. Comment out #define SSE from iiwu_voice.c to get back to the standard version. 1131 11322002-10-26 Markus Nentwig <nentwig@users.sourceforge.net> 1133 1134 * src/iiwu_seq.c: Fixed a couple of warnings 1135 * src/iiwu_voice.c (new_iiwu_voice): Removed iiwu_voice_init. 1136 * src/iiwu_dsp_core.c: New 7th order interpolation. 1137 11382002-10-24 Markus Nentwig <nentwig@users.sourceforge.net> 1139 1140 * src/iiwu_voice.c(iiwu_voice_determine_amplitude_that_reaches_noise_floor_for_sample): 1141 Added checking for invalid sample. 1142 * src/iiwu_voice.c (iiwu_voice_write): 1143 Moved the DSP core functions into iiwu_dsp_core.c. 1144 Optimized, cleaned up, documented. 1145 Amplitude scaling short => floating point is now done as the last 1146 operation in the DSP loop (voice->amp does not include the scaling 1147 factor anymore). 1148 * src/iiwu_synth.c (iiwu_synth_one_block): Saved a couple of 1149 multiplications per sample by moving the master gain into iiwu_voice_write 1150 * src/iiwu_synth.c (iiwu_synth_free_voice_by_kill): Modified the algorithm 1151 * src/iiwu_synth.c (iiwu_synth_alloc_voice): Noteon algorithm will 1152 now turn off retriggered running voices ('sustain pedal problem') 1153 11542002-10-18 Markus Nentwig <nentwig@users.sourceforge.net> 1155 1156 * src/iiwu_alsa.c (new_iiwu_alsa_midi_driver): Disabled 1157 high-priority scheduling for the MIDI thread to get rid of audio dropouts. 1158 * src/iiwu_synth.c (iiwu_synth_free_voice_by_kill): Modified voice 1159 killing algorithm, so that recently started voices are not killed 1160 * src/iiwu_voice.c (iiwu_voice_run_dsp): Changed some variable 1161 names. Extensive loop point checking, when loop points are modulated. 1162 * src/iiwusynth.h: Added functions to read the state of the 1163 chorus. 1164 * src/iiwu_chorus.c: Rewrote chorus setup logic (if a parameter is 1165 out-of-range, all other parameter changes are discarded). 1166 * src/iiwu_voice.c: Added caching for loop peak detection: The 1167 amplitude of the loop is only detected once for each 1168 sample. Exception only, if the resulting loop differs from the 1169 original loop settings of the sample (in this case, the peak 1170 detection is still run for each noteon event). 1171 * src/iiwusynth.h (struct _iiwu_sample_t): Added 'amplitude_that_reaches_noise_floor_is_valid' 1172 and 'amplitude_that_reaches_noise_floor' 1173 * src/iiwu_voice.c(iiwu_voice_calculate_runtime_synthesis_parameters): 1174 Renamed 'iiwu_voice_optimize' 1175 11762002-07-21 Peter Hanappe <peter@hanappe.com> 1177 1178 * src/Makefile.am (libiiwusynth_la_SOURCES): Followed Bob Ham's 1179 suggestion for the Makefile.am to fix the problems with automake 1180 1.6 1181 11821999-11-30 Tim Goetze <tim@quitte.de> 1183 * src/iiwu_synth.c (iiwu_synth_alloc_voice): New algorithm for 1184 voice allocation, when all voice processes are in use 1185 11861999-11-30 Markus Nentwig <nentwig@users.sourceforge.net> 1187 * src/iiwu_synth.c (iiwu_synth_alloc_voice): Applied above patch, 1188 11892002-07-08 Markus Nentwig <nentwig@users.sourceforge.net> 1190 1191 * src/iiwu_synth.c (iiwu_synth_noteoff): Changed noteoff strategy: 1192 Noteoff now turns off all voice processes with the same channel / 1193 key, regardless of the voice ID (avoids stuck notes). 1194 11952002-07-13 Peter Hanappe <peter@hanappe.com> 1196 * src/Makefile.am (EXTRA_libiiwusynth_la_SOURCES): Applied Takashi 1197 Iwai's patch. The configure stuff in iiwusynth-0.2 cannot be 1198 rebuilt with the latest automake 1.6. You cannot use substitution 1199 for *_SOURCES in Makefile.am. This fixes this problem. 1200 12011999-11-30 Markus Nentwig <nentwig@users.sourceforge.net> 1202 1203 * src/iiwusynth.h: Added documentation, removed GEN_CHANGED (it 1204 was unused). 1205 1206 * src/iiwu_mod.c (iiwu_dump_modulator): Cleaned up 1207 1208 * src/iiwu_cmd.c (iiwu_handle_help): Restructured command line 1209 help system 1210 12112002-06-14 Markus Nentwig <nentwig@users.sourceforge.net> 1212 1213 * src/iiwu_chorus.c (iiwu_chorus_processmix): Turning off chorus now, when parameters are wrong (avoid FPE) 1214 * src/iiwu_voice.c (iiwu_voice_write): Optimized turnoff condition for voice 1215 12162002-06-11 Markus Nentwig <nentwig@users.sourceforge.net> 1217 1218 * src/iiwu_voice.c (iiwu_voice_add_mod): Fixed bug that prevented non-default modulators from being added. 1219 (iiwu_voice_config): Added peak detection for the sample loop, and a condition turning off the voice, 1220 if loop peak volume and amplitude envelope combined fall below the noise floor. 1221 12222002-06-06 Peter Hanappe <peter@hanappe.com> 1223 1224 * acinclude.m4: Fixed problems with enable/disable jack and 1225 midishare 1226 12272002-06-06 Tim Goetze <tim@quitte.de> 1228 1229 * src/iiwu_synth.c (iiwu_synth_all_notes_off): Added handling of 1230 all-notes-off midi message 1231 12322002-06-03 Markus Nentwig <nentwig@users.sourceforge.net> 1233 * src/iiwu_chorus.c: Fixed bug in initial phase calculation 1234 12352002-06-02 Peter Hanappe <peter@hanappe.com> 1236 1237 * src/iiwu_jack.c: updated for new JACK types. 1238 12392002-06-02 Bob Ham <node@users.sourceforge.net> 1240 1241 * acinclude.m4: Changed acinclude.m4 for configure to ignore jack. 1242 12432002-06-02 Markus Nentwig <nentwig@users.sourceforge.net> 1244 * autogen.sh: Added libtoolize -f to prevent error message 'libtool: ltconfig version does not match ltmain.sh version ...' 1245 * src/iiwusynth.h: Changed iiwu_voice_add_mod_t to iiwu_voice_add_mod 1246 * src/iiwu_synth.c: Added NULL termination to list returned by iiwu_synth_get_voicelist 1247 * src/iiwusynth.h: Added iiwu_synth_set_chorus (API function) 1248 * src/iiwu_synth.c: Added iiwu_synth_set_(reverb|chorus)_on (API functions) 1249 * src/iiwu_cmd.c: Added control commands for chorus (see help) 1250 12512002-05-26 Tim Goetze <tim@quitte.de> 1252 * src/iiwu_voice.c (iiwu_voice_noteoff): Fixed conversion between 1253 volenv-values from attack segment to later envelope segments 1254 12552002-05-22 Markus Nentwig <nentwig@users.sourceforge.net> 1256 1257 * src/iiwu_voice.c (iiwu_voice_query_ID): Added, API function 1258 1259 (iiwu_voice_query_playing): Added, API function 1260 1261 (iiwu_voice_write): Fixed problem with filter caused 05-18 1262 1263 * src/iiwusynth.h: Moved iiwu_voice_update_param into the API 1264 1265 12662002-05-19 Markus Nentwig <nentwig@users.sourceforge.net> 1267 1268 * src/iiwusynth.h (iiwu_synth_get_voicelist): Added. 1269 1270 * src/iiwu_voice.c (iiwu_voice_noteoff): Added a conversion for linear to cB amplitude, when a note is turned off 1271 during the attack phase of the volume envelope 1272 1273 * src/iiwu_gen.h: Moved the generator definition to API. Changed the fields to 'double'. 1274 1275 * src/iiwu_mod.c: Moved the modulator definitions to API. Changed the data type of amount to 'double'. 1276 1277 * src/iiwu_voice.c (iiwu_voice_write): The condition, that quits a voice, when the amplitude 1278 falls below a threshold now uses only the volume envelope instead of the voice amplitude. 1279 Previously, turning a volume pedal briefly to 0 would quit all voices playing. 1280 1281 * src/iiwu_rev.c (iiwu_revmodel_processreplace): Removed 'dry' path from reverb unit 1282 Motivation: This saves a couple of multiplications, the dry signal goes through the ordinary output 1283 anyway. 1284 1285 * src/iiwusynth.h (iiwu_synth_kill_by_exclusive_class): added to API 1286 * src/iiwu_synth.c (iiwu_synth_kill_by_exclusive_class): Extended the exclusive class function to 1287 work with stereo samples 1288 (iiwu_synth_set_reverb): Renamed iwu_synth_set_reverb to iiwu_synth_set_reverb_preset 1289 iiwu_synth_set_reverb is now an API function, that allows to set all reverb parameters. 1290 12912002-05-18 Markus Nentwig <nentwig@users.sourceforge.net> 1292 1293 * src/iiwu_chorus.c: Implemented variable delay line with bandlimited interpolation. Documentation, error handling. 1294 Removed unneeded and broken features 1295 * src/iiwusynth_priv.h: Moved typedef struct iiwu_mod_t iiwu_mod_t into iiwusynth.h 1296 * src/iiwusynth.h: Moved iiwu_voice_add_mod from iiwu_voice.h into iiwusynth.h (now API function). 1297 * src/iiwu_voice.c (iiwu_voice_update_param): Inserted chorus send into DSP loop 1298 (iiwu_voice_write): Added flag 'voice->update_filter'. Now Q can be modulated. 1299 13002002-05-12 Markus Nentwig <nentwig@users.sourceforge.net> 1301 1302 * src/iiwu_synth.c (iiwu_synth_pitch_wheel_sens): added 1303 * src/iiwu_chan.c (iiwu_channel_pitch_wheel_sens): added 1304 * src/iiwu_cmd.c (iiwu_handle_reverbsetwidth): changed 'wet' to 1305 * 'width' 1306 13072002-05-11 Markus Nentwig <nentwig@users.sourceforge.net> 1308 1309 * src/iiwu_conv.c (iiwu_tc2sec): 1310 Added more conversion functions with range check for different ranges: 1311 (iiwu_tc2sec_attack): 1312 (iiwu_tc2sec_hold): 1313 (iiwu_tc2sec_release): 1314 1315 * src/iiwu_voice.c (iiwu_voice_add_mod): 1316 implemented modulator src 0 (constant mod offset) 1317 * src/iiwu_voice.c (iiwu_voice_update_param): 1318 sample-and envelope related voice parameters 1319 are now handled together with other voice parameters. 1320 Implemented generators: 1321 GEN_KEYTOVOLENVDECAY 1322 GEN_KEYTOVOLENVHOLD 1323 GEN_KEYTOMODENVDECAY 1324 GEN_KEYTOMODENVHOLD 1325 13262002-05-10 Peter Hanappe <peter@hanappe.com> 1327 1328 * src/iiwu_synth.c (iiwu_synth_start_voice): added 1329 iiwu_synth_start_voice() to handle exclusive classes. 1330 13312002-05-09 Peter Hanappe <peter@hanappe.com> 1332 1333 * src/iiwu_conv.h: removed velocity to cB conversion. No longer 1334 used. 1335 1336 * src/iiwu_synth.c (iiwu_synth_write_float): removed limiter 1337 1338 * src/iiwu_synth.h (IIWU_NUM_CHANNELS): set the number of channels 1339 to 64. 1340 1341 * src/iiwu_synth.c (iiwu_synth_get_internal_bufsize): added 1342 1343 * src/iiwu_ladspa.h: lower-cased ladspa files 1344 1345 * src/iiwusynth.h: prefixed log levels with IIWU_... Updated all 1346 references. 1347 1348 * src/iiwu_cmd.c (iiwu_handle_reverb): renamed 'rev_enable' to 1349 'reverb' in correspondance with the long command line arguments 1350 1351 * src/iiwusynth.c (main): checking if files on command line are valid 1352 1353 * src/iiwuplay.c (main): checking if files on command line are valid 1354 1355 * src/iiwusynth.h: New log level for verbose messages: IIWU_INFO 1356 13572002-04-30 Markus Nentwig <nentwig@users.sourceforge.net> 1358 1359 * src: Added iiwu_LADSPA.c, iiwu_LADSPA.h (support for LADSPA effect plugins). 1360 1361 * src/iiwusynth.c (main): Changed default gain to 0.2. 1362 1363 * src/iiwu_voice.c: Restructured the voice initialization as follows: 1364 (iiwu_voice_init): sample position, IIR filter history, envelopes etc. are reset. 1365 (iiwu_voice_optimize): The generators (nominal value) have been set by the sound font. 1366 Now each modulator is calculated once to obtain the 'final' initial value for each 1367 generator, which consists of nominal value and modulator-contributed part. 1368 (iiwu_voice_update_param): Calculates all voice parameters, which depend on one 1369 particular generator. This is called once for each voice parameter during 1370 voice_optimize and further each time, when a modulator changes a generator. 1371 (iiwu_voice_update_param): Added a voice parameter filter_gain to avoid 1372 recalculating the filter gain each time the center frequency changes (it depends 1373 only on Q) 1374 (iiwu_voice_write): Voice is now turned off, when the amplitude falls below -100 dB, 1375 even during the sustain phase (happens, when holding a piano key for a very long time) 1376 1377 * src/iiwu_voice.c (iiwu_voice_noteoff): Moved voice->chan = NO_CHANNEL into iiwu_voice_off. 1378 Previously a released note was not modulated anymore, for example pitch bend stopped working as soon 1379 as the key was released. 1380 1381 * src/iiwu_voice.h: Changed _ON macro to figure out the state of a key from the position in 1382 the envelope, instead of using a cleared channel number as indicator. 1383 1384 * src/iiwu_synth.c: Implemented all default modulators 1385 Added LADSPA support. 1386 Added digital clipping. 1387 Moved master gain factor ahead of LADSPA Fx. 1388 1389 * src/iiwu_mod.c: 'Hardcoded' GM default modulator vel => filter. 1390 Replaced 128 with 127 in (127-x) 1391 1392 * src/iiwu_midi.c: Fixed sysex for realtime MIDI. Fixed pitch bend bug. 1393 1394 * src/iiwu_gen.c (iiwu_gen_set_default_values): Using float instead of int for default values. 1395 Added references to specifications (doc). Changed 'init array' function name to 'set_default' . 1396 1397 * src/iiwu_defsfont.c (iiwu_preset_zone_import_sfont): Import of modulators 1398 (iiwu_inst_zone_import_sfont): Import of modulators 1399 (iiwu_defpreset_noteon): Added modulators, fixed generator problem (local zone overwrites global zone, previously it added) 1400 1401 * src/iiwu_conv.c: Using now oncave / convex equation from SF specs. 1402 Removed ct2hz functions and tables. 1403 (iiwu_ct2hz): Limit checking 1404 (iiwu_cb2amp): Removed 'magic number' 1405 (iiwu_tc2sec): Avoided == for iiwu_real_t 1406 1407 * src/iiwu_cmd.c: Increased number of tokens. Using WORKLINELENGTH constant. 1408 Changed max. gain to 5. 1409 Added LADSPA commands. 1410 Renamed misleading rev_bypass command to rev_enable 1411 1412 * src/iiwu_chan.c: Centered pitch wheel. Added 'expression' modulator (CC 11). 1413 * configure.in: Added LADSPA support 1414 14152002-04-03 Peter Hanappe <peter@hanappe.com> 1416 1417 * src/iiwu_voice.c (iiwu_voice_run_dsp): Integrated Markus 1418 Nentwig's new filter design 1419 1420 14212002-03-12 Peter Hanappe <peter@hanappe.com> 1422 1423 * src/iiwusynth.h: the preset iteration in a soundfont now takes a 1424 pointer to a preset structure 1425 1426 * src/iiwu_sys.c (iiwu_profile_data): added support for profiling 1427 1428 * src/iiwu_voice.c (iiwu_voice_write): turns off voice if 1429 amplitude < -100 dB in release phase. Set filter gain back to old 1430 value (0.25f * ...) 1431 1432 * src/iiwuplay.c (main): added gain, interactive, and reverb options 1433 1434 * src/iiwusynth.c (main): added gain and reverb options 1435 1436 * src/iiwu_synth.c (iiwu_synth_write_s16): added brickwall limiter for s16 samples 1437 14382002-01-29 Stephane Letz <letz@grame.fr> 1439 1440 * src/iiwu_midishare.c : Compilation on MacOSX, use a task for typeNote management 1441 * src/iiwu_sys.c : Compilation on MacOSX 1442 * src/iiwu_sys.h : Compilation on MacOSX 1443 * src/iiwu_sfont.c : Use the flag MACINTOSH instead of MACOS 1444 * config_macos.h : Cleanup 1445 * config_macosx.h : New file, compilation on MacOSX 1446 1447 14482002-01-21 Stephane Letz <letz@grame.fr> 1449 1450 * src/iiwu_midi.c (delete_iiwu_midi_handler): Desallocation of heap allocated strings 1451 * src/iiwusynth_priv.h : Definition of strdup if not available (Macintosh) 1452 1453 14542002-01-16 Peter Hanappe <peter@hanappe.com> 1455 1456 * src/iiwu_alsa.c (new_iiwu_alsa_seq_driver): Applied and adjusted 1457 Bob Ham's patch: support for configurable ALSA sequencer client 1458 name. 1459 1460 * src/iiwu_chan.c (iiwu_channel_cc): Applied Bob Ham's patch: 1461 added bank select midi message. 1462 1463 14642001-12-31 Peter Hanappe <peter@hanappe.com> 1465 1466 * src/iiwu_synth.c (iiwu_synth_damp_voices): Sustain messages are 1467 now handled. Updated iiwu_channel and iiwu_voice. 1468 (delete_iiwu_synth): SoundFonts are deleted. 1469 14702001-12-21 Stephane Letz <letz@grame.fr> 1471 1472 * src/iiwu_midishare.c (new_iiwu_midishare_midi_driver, 1473 delete_iiwu_midishare_midi_driver): 1474 Updated to be compiled either in driver or application mode 1475 with the flag MIDISHARE_DRIVER. 1476 14772001-12-20 Stephane Letz <letz@grame.fr> 1478 1479 * src/iiwu_portaudio.c (iiwu_portaudio_run , new_iiwu_portaudio_driver): 1480 Adaptation for new audio drivers 1481 1482 * src/iiwu_synth.c (audio driver definition): 1483 Adaptation for PortAudio driver 1484 1485 * src/iiwu_sys.c (header): Adaptation for compilation on MacOS9 1486 1487 * src/iiwu_sys.h (header): Adaptation for compilation on MacOS9 1488 14892001-12-16 Peter Hanappe <peter@hanappe.com> 1490 1491 * src/iiwuplay.c (main): The .iiwusynth file is loaded *before* 1492 the soundfonts on the command lines are loaded 1493 1494 * src/iiwusynth.c (main): idem. 1495 14962001-12-16 Peter Hanappe <peter@hanappe.com> 1497 1498 * src/iiwu_midi.c (iiwu_player_callback): Fixed error in midi 1499 timing after a tempo change 1500 1501 * src/iiwu_jack.c (new_iiwu_jack_audio_driver): Added first 1502 version of JACK driver 1503 15042001-12-14 Peter Hanappe <peter@hanappe.com> 1505 1506 * src/iiwu_synth.c (iiwu_synth_noteoff): noteon/notoff events can 1507 print a clear message, useful for debugging. 1508 1509 * src/iiwu_sys.c (struct _iiwu_timer_t ): timer moved from 1510 iiwu_midi.c to iiwu_sys.c 1511 1512 * src/iiwusynth.h: New organization of settings; using bit flags; 1513 added verbose option 1514 1515 * src/iiwusynth.c (main): Added the verbose option 1516 1517 * src/iiwuplay.c (main): Added the verbose option 1518 15192001-10-05 Stephane Letz <letz@grame.fr> 1520 1521 * src/iiwu_portaudio.c (new_iiwu_portaudio_driver): imported new 1522 driver for the PortAudio library. 1523 15242001-10-04 Stephane Letz <letz@grame.fr> 1525 1526 * src/iiwu_synth.c (new_iiwu_synth): Fixed bug in synth initialisation 1527 15282001-10-02 Peter Hanappe <peter@hanappe.com> 1529 1530 * src/iiwu_cmd.c (iiwu_get_userconf): returns default user 1531 configuration 1532 (iiwu_get_sysconf): returns default system configuration 1533 (iiwu_synth_cmdline): Fixed bug with argument offset. Empty lines 1534 are skipped correctly. 1535 1536 * src/iiwusynth.c (main): loads the user or system config 1537 1538 * src/iiwuplay.c (main): loads the user or system config 1539 1540 * src/iiwu_synth.c (iiwu_sp_write): Using new envelope model for 1541 modulation envelope 1542 15432001-09-29 Peter Hanappe <peter@hanappe.com> 1544 1545 * src/iiwu_synth.c (iiwu_sp_write): redesigned the envelopes. 1546 15472001-09-20 Peter Hanappe <peter@hanappe.com> 1548 1549 * src/iiwu_synth.c (iiwu_sp_write): redesigned the dsp loop. it's 1550 faster and it sounds better (!) 1551 15522001-09-19 Peter Hanappe <peter@hanappe.com> 1553 1554 * src/iiwu_sfont.c (iiwu_sample_import_sfont): better checking for 1555 minimum sample size, loop start and loop end offsets. 1556 15572001-09-17 Peter Hanappe <peter@hanappe.com> 1558 1559 * src/iiwu_synth.c (iiwu_sp_write): improved calculation of filter 1560 coefficients 1561 (new_iiwu_synth): using settings structure 1562 15632001-09-09 Peter Hanappe <peter@hanappe.com> 1564 1565 * src/iiwu_synth.h (iiwu_phase_decr): fixed bug 1566 1567 * src/iiwu_synth.c (iiwu_synth_noteoff): noteoff now turns off the 1568 oldest note only (instead of all notes with the given channel and 1569 key) 1570 15712001-07-10 Peter Hanappe <peter@hanappe.com> 1572 1573 * src/iiwu_midi.h: removed midi driver join function. updated all 1574 structures, implementations and callers. 1575 15762001-07-04 Peter Hanappe <peter@hanappe.com> 1577 1578 * src/iiwuplay.c (print_help): corrected errors in the help and 1579 usage display. 1580 15812001-06-29 Peter Hanappe <peter@hanappe.com> 1582 1583 * src/iiwu_synth.c (iiwu_synth_one_block): new function. fills the 1584 buffer with fresh samples. 1585 (iiwu_synth_write_lr): now calls iiwu_synth_one_block. the 1586 synthesizer uses fixed synthesis buffer size, independent of the 1587 requested buffer length passed to iiwu_synth_write_lr. 1588 (iiwu_revmodel_processreplace): new uses fixed IIWU_BUFSIZE value 1589 for buffer length. 1590 (iiwu_revmodel_processmix): uses fixed IIWU_BUFSIZE value 1591 15922001-06-22 Peter Hanappe <peter@hanappe.com> 1593 1594 * src/iiwusynth.c (iiwu_handle_fonts): new shell command to list 1595 the loaded fonts. 1596 (iiwu_handle_mstat): new shell command to list the statistics of 1597 the midi driver. 1598 15992001-06-19 Peter Hanappe <peter@hanappe.com> 1600 1601 * src/iiwusynth.c (main): Several command line options are 1602 available to select the midi and audio driver and device. Using 1603 the getopt function on posix machines. 1604 16052001-06-16 Peter Hanappe <peter@hanappe.com> 1606 1607 * src/iiwu_synth.h: new iiwu_revmodel_presets_t structure to store 1608 reverb presets (concert hall, room, ...) 1609 1610 * src/iiwu_synth.c (iiwu_synth_write_lr): now using 1 reverb for 1611 all synthesis processes. the synthesis processes now receive a 1612 left and right buffer, a reverb buffer, a chorus buffer, and a 1613 monobuffer for their temporarry storage. reverb now always on. 1614 1615 (new_iiwu_sp): no longer allocating a reverb module nor a 1616 monobuf. only one reverb model and monobuffer allocated by the 1617 synth object (read: much less memory usage). 1618 1619 * src/iiwu_midi.c (iiwu_player_callback): fixed timing 1620 errors. midi should play correctly now. 1621 16222001-06-09 Peter Hanappe <peter@hanappe.com> 1623 1624 * src/iiwu_synth.c (iiwu_sp_write_lr): now using a 64-bits 1625 fixed-point number to calculate the phase of the 1626 wavetable. because of rounding erros, the float value I used 1627 before gave terrible tuning problems. I updated all the 1628 intepolation macros. 1629 1630 * src/iiwusynth_priv.h: included the iiwu_phase_t data type. This 1631 type represents a 64-bits fixed-point number. It's used to hold 1632 the phase in the wavetable. 1633 16342001-06-08 Peter Hanappe <peter@hanappe.com> 1635 1636 * src/iiwu_midi.c (new_iiwu_midi_handler): Better support for 1637 runtime selection of the MIDI driver (using the 1638 iiwu_mdriver_definition_t structure) 1639 1640 * src/iiwu_auport.c (new_iiwu_auport): Better support for runtime 1641 selection of the audio driver (using the iiwu_adriver_definition_t 1642 structure) 1643 16442001-06-07 Peter Hanappe <peter@hanappe.com> 1645 1646 * src/iiwu_synth.c (iiwu_sp_write_lr): rewrote the dsp function to 1647 accept a seperate left and right channel buffer. 1648 (iiwu_sp_write_lr): using cubic hermite interpolation by default. 1649 (iiwu_synth_write_lr): added a dsp function to accept a seperate 1650 left and right channel buffer. 1651 16522001-05-26 Peter Hanappe <peter@hanappe.com> 1653 1654 * src/iiwu_midi.c (iiwu_midi_parser_parse): Fixed a bug in the 1655 midi parser (running status should not be split in a status and 1656 channel part for system messages). 1657 (iiwu_midi_send_event): pitch bend events are now handled 1658 16592001-05-25 Peter Hanappe <peter@hanappe.com> 1660 1661 * src/iiwu_midi.c (iiwu_midi_file_getc): Fixed bug when pushed 1662 back byte equals zero (mf->c >= 0) 1663 1664 * src/iiwu_midi.c (iiwu_midi_file_getc): Fixed bug when pushed 1665 back byte equals zero (mf->c >= 0) 1666 16672001-05-24 Peter Hanappe <peter@hanappe.com> 1668 1669 * src/iiwusynth.c: added the stupidly simple interpreter 1670 1671 * src/iiwu_synth.c: removed all param strcutures. 1672 1673 * src/iiwu_synth.c (iiwu_channel_get_banknum): new function 1674 16752001-05-23 Peter Hanappe <peter@hanappe.com> 1676 1677 * src/iiwu_synth.c (iiwu_sp_write): Fixed devide by zero in filter 1678 1679 * src/smurf.c (gerr): applied Josh's patch: using va_list now (as 1680 it should). 1681 16822001-05-22 Peter Hanappe <peter@hanappe.com> 1683 1684 * src/iiwu_midi.c: the midi handler is now devided in a dummy 1685 iiwu_midi_handler_t and a "low level" driver. This allows for 1686 multiple midi drivers to be compiled in. 1687 1688 * src/iiwusynth.h: renamed iiwu_midi_driver_t to iiwu_midi_handler_t 1689 1690 * src/iiwu_auport.c (new_iiwu_auport): new "driver" argument to 1691 select between alsa, oss, midishare, directx, ... 1692 1693 * configure.in: preparing for the first pre-release, version 0.0.1 1694