fluidsynth/fluidsynth/ChangeLog
Peter Hanappe 2aa2813083 Added fluid_synth_program_select2() and
fluid_synth_get_sfont_by_name() in fluid_synth.c. These functions
are not in the public API, yet.
2004-02-28 13:20:07 +00:00

1076 lines
42 KiB
Text

2004-02-28 Peter Hanappe <peter@hanappe.com>
* src/fluid_synth.c: Added fluid_synth_program_select2() and
fluid_synth_get_sfont_by_name() in fluid_synth.c. These functions
are not in the public API, yet.
2004-02-25 Peter Hanappe <peter@hanappe.com>
* src/fluid_voice.c: Fixed bug in volume envelope (in
fluid_voice_update_param(), case GEN_VOLENVDECAY): the minimum
value was converted to linear amplitude instead of a normalized
value of the cB (1-cB/1000). Because of that, the decay section
went on for too long.
2004-12-xx Peter Hanappe <peter@hanappe.com>
* src/fluid_seq.c: Inserting events in the queueLater list was
incomplete. It didn't check if the event was the last in the list,
and the looping through the list didn't update the prev pointer. I
added muteces to the sequencer. Events are dynamically allocated
if no free events are available.
2003-11-14 Josh Green <jgreen@users.sourceforge.net>
* src/fluidsynth.c: Removed CCA_Use_Jack and CCA_Use_Alsa flags
since LADCCA no longer uses them.
2003-08-31 Josh Green <jgreen@users.sourceforge.net>
* acinclude.m4: Renamed AC_SOUND macro to AC_OSS_AUDIO and removed
the ALSA check from it since pkg-config is now being used to check
for ALSA. Also fixed --enable-alsa-support and --enable-oss-support
which were disabling support instead (reported by Bart Massey).
* configure.ac: pkg-config is now being used to check for ALSA.
ALSA and OSS now use automake conditionals to conditionally compile
source files.
* Makefile.am: Re-arranged SUBDIRS so build output looks nicer.
* src/Makefile.am: ALSA and OSS are now conditionally compiled using
automake conditionals.
2003-08-29 Josh Green <jgreen@users.sourceforge.net>
* src/fluid_sys.c: Patch from Eric Van Buggenhaut to make i386 asm
code not compile for all non-i386 archs rather than just DARWIN.
* src/fluidsynth_priv.h: Patch from Sergey Pavlishin to fix
FLUID_REALLOC macro.
* src/fluid_cmd.c: Ken Ellinwood's patch to add -verbose to "channels"
command, and print settings values with 3 decimal places.
* src/fluid_defsfont.c (fluid_defsfont_sfont_get_preset): Ken
Ellinwood's patch to initialize sfont field of preset.
* src/fluid_ramsfont.c (fluid_ramsfont_sfont_get_preset): Ken
Ellinwood's patch to initialize sfont field of preset.
* src/fluid_midi.c (fluid_midi_file_read_event): Fixed a crash bug with
zero length MIDI meta events that was pointed out by Sergey Pavlishin.
(delete_fluid_midi_event): Fixed a stack overflow problem pointed out
by Sergey Pavlishin that was caused by recursively deleting MIDI
event linked list, now just using a while loop.
2003-08-25 Josh Green <jgreen@users.sourceforge.net>
* src/fluidsynth.c: MIDI channels switch should be -K not -L as was
listed in "Usage" output, also -K was setting audio.channels for
non getopt case statement - changed to midi.channels. Added a new
option "-l, --disable-ladcca" to disable LADCCA server connection.
2003-08-25 Josh Green <jgreen@users.sourceforge.net>
Release version 1.0.3
* doc/fluidsynth.1: Applied typo patch from Eric Van Buggenhaut.
* TODO: Restructuring TODO file (removing old stuff).
* doc/Doxyfile: Disabled Tex doxygen generation and changed
OUTPUT_DIRECTORY to api/.
* doc/Makefile.am: Added an update-docs target and related for updating
developer doc and doxygen reference HTML. Also added update-docs to
dist-hook for updating before distribution packaging.
* include/fluidsynth/synth.h: Some fixes to doxygen documentation.
* fluidsynth.spec.in: New RPM spec file which is generated at configure
time.
* Makefile.am: Added fluidsynth.spec(.in) to EXTRA_DIST.
2003-08-19 Josh Green <jgreen@users.sourceforge.net>
* src/fluid_alsa.c: Added some calls to snd_strerror() to print out
details of ALSA routine failures.
* src/fluid_defsfont.c: Put a message about SoundFont loading code
being borrowed from Smurf SoundFont Editor.
* src/fluid_rev.c: Valgrind found that some values were being used
uninitialized because fluid_revmodel_update() was being called before
all reverb parameters were set, now setting manually and then calling
update routine.
* src/fluid_voice.c: Increased FLUID_MAX_AUDIBLE_FILTER_FC to minimize
clicks from filter toggling. Added a FLUID_MIN_VOLENVRELEASE constant
to set the minimum volume envelope release to minimize clicks.
2003-07-22 Josh Green <jgreen@users.sourceforge.net>
* src/fluid_midishare.c: Added include of header "config.h" as
per Albert Graef's request.
* src/fluid_voice.c (fluid_voice_optimize_sample): Moved a
variable declaration to the beginning of function, it was
causing problems with at least one user.
2003-06-28 Josh Green <jgreen@users.sourceforge.net>
* src/fluid_defsfont.c: Moved call to fluid_voice_optimize_sample
from fluid_inst_zone_import_sfont to fluid_defsfont_load. Also
reduced minimum sample size before rejection from 48 to 8 (could
be lower?).
* src/fluid_voice.c (fluid_voice_optimize_sample): Added a check
for sample->valid to ignore ROM samples which was causing a crash
with Vintage Dreams and other SoundFont files with ROM samples.
2003-06-17 Josh Green <jgreen@users.sourceforge.net>
Release version 1.0.2
Added Makefile.am files where lacking.
* Makefile.am: Fixes to "make dist" target by adding macbuild, sf2
and winbuild to SUBDIRS also removed acconfig.h from EXTRA_DIST.
* acinclude.m4: Removed AC_JACK, now using pkgconfig.
* configure.ac: Updated to version 1.0.2, Jack test now using
pkgconfig and built by default if found, coreaudio driver now built
by default if found.
* doc/Makefile.am: Added Doxyfile, example.c, example.sf2, fluidsynth.1
and fluidsynth-v10-devdoc.xml to EXTRA_DIST.
* src/Makefile.am: fluid_jack.c now conditionally built, fluid_sse.h
added to EXTRA_DIST.
* src/fluid_jack.c: #if JACK_SUPPORT removed as its not needed.
2003-06-15 Josh Green <jgreen@users.sourceforge.net>
* configure.ac: Fixed detection of CoreAudio by looking for
CoreAudio/AudioHardware.h.
* src/Makefile.am: Added COREAUDIO_CFLAGS and COREAUDIO_LIBS.
* src/fluid_coreaudio.c: Added CoreAudio prefix to #include headers
(fluid_core_audio_callback): Fixed declarition to match that of the
typedef in CoreAudio header to stop warnings.
* fluidsynth.c: Now including fluidsynth_priv.h to include the arch
specific definitions in there (perhaps should be done in configure
script though).
* fluidsynth_priv.h: Added "#define WITHOUT_SERVER 1" to Darwin build.
2003-06-12 Josh Green <jgreen@users.sourceforge.net>
* Makefile.am: Added autogen.sh to EXTRA_DIST
* acinclude.m4: Added AM_PATH_READLINE macro for readline detection
and prefix configuration.
* configure.ac: Support for MinGW32 build, Darwin build fixes,
configure CFLAGS input value now honored, fixes to CoreAudio support,
and better readline detection and config.
* src/Makefile.am: Now conditionally compiling CoreAudio and Windows
sources, added config_*.h files to EXTRA_DIST, some stuff for MinGW32
build, READLINE_LIBS and READLINE_CFLAGS now used.
* src/fluid_dsound.c: Fixed some warnings by adding "void" for
empty parameter procedure declarations.
* src/fluidsynth.c: Don't include config_win32.h if MinGW32.
* src/fluidsynth_priv.h: Stuff for MinGW32 and Darwin builds.
* doc/fluidsynth-v10-devdoc.xml: Applied a diff from
Alexandre Prokoudine.
2003-06-09 Josh Green <jgreen@users.sourceforge.net>
* src/fluid_alsa.c: Added calls to pthread_attr_setschedparam to
properly create SCHED_FIFO threads.
* src/fluid_oss.c: pthread_attr_setschedparam calls added.
* src/fluid_midishare.c: Patch update from Stephane Letz.
2003-05-29 root <mn@bongo>
* src/fluid_synth.c (fluid_synth_one_block): Added a mutex that provides a small degree of
protection against noteons / noteoffs, when the audio thread is working.
* src/fluid_synth.h (struct _fluid_synth_t):
* src/fluid_voice.c (fluid_voice_optimize_sample):
2003-05-29 Markus Nentwig <nentwig@users.sourceforge.net>
* include/fluidsynth/voice.h: added fluid_voice_gen_incr to api
* src/fluidsynth.c: Added error message for command line parameter handling
* src/fluid_voice.c (fluid_voice_optimize_sample): Removed loop peak detection
at run time, because it caused dropouts. Now the sound font loader or application
is responsible to call fluid_voice_optimize_sample (if it doesn't, the turnoff optimization is
simply disabled).
1999-11-30 Antoine Schmitt <as@gratin.org>
* src/fluid_defsfont.c: inst_zone lokey is now properly inialized to 0
(it was not, leading to random lost noteons depending on memory
initialization)
2003-04-03 Peter Hanappe <peter@hanappe.com>
* src/fluid_rev.c: reverb parameters are clipped to their valid
range.
* src/fluid_alsa.c: using fluid_alsa_audio_run_s16 as default
function. This reduces the high CPU usage.
* src/fluid_voice.c (fluid_voice_write): filter interpolation done
over only 1 buffer to avoid filter instability
* src/fluid_chan.c (fluid_channel_init): bank number set to 128
for the drum channel
* src/fluid_midi.c (fluid_midi_file_read_event): Correctly reading
pitchbend value
2003-02-27 Josh Green <jgreen@users.sourceforge.net>
Updated automake files (automake 1.6).
* configure.ac: New version autoconf variables which get substituted
into include/iiwusynth/version.h.in.
* include/iiwusynth/version.h.in: Version defines that are filled in
by autoconf.
* src/Makefile.am: Fixed SOURCES including removing headers that are
now in include/iiwusynth/, added missing sources (iiwu_ramsfont.[ch],
iiwu_sfont.h) and added iiwu_dsp_core.c to EXTRA_DIST.
* doc/Makefile.am: Added iiwusynth.1 to EXTRA_DIST.
* include/iiwusynth.h: Added version.h.
* iiwusynth/Makefile.am: Added version.h to the installed headers.
2003-02-08 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_ladspa.c: Added a very small signal at Nyquist
frequency. This fixes denormal number problems in some
plugins.
* src/iiwu_cmd.c (iiwu_shell_run): Now also invalid input lines
are added to the command line history. So the user can just scroll
up and fix them.
* src/iiwu_ladspa.c: Cleaned up error messages
* src/iiwu_dsp_core.c: Disabled SSE interpolation, because it is
slower than the normal code
* autogen.sh: Added a line, that checks for the presence of pkg-config in
autogen.sh.
Motivation: It took me some time to figure out what was wrong...
It produces some error message instead of an obscure error later
during ./configure, if pkg-config is not installed.
2003-02-07 Josh Green <jgreen@users.sourceforge.net>
Applied another Bob Ham LADCCA patch.
* src/iiwu_alsa.c: LADCCA patch: Now using a ladcca.enable setting.
* src/iiwu_jack.c: LADCCA patch: ladcca.enable setting and jack ports
are no longer auto connected unless audio.jack.autoconnect is set.
* src/iiwusynth.c: LADCCA patch: ladcca.enable and command line options
-j and --connect-jack-outputs to enable Jack autoconnect.
2003-02-05 Josh Green <jgreen@users.sourceforge.net>
Applied Bob Ham's LADCCA and pkgconfig patches.
* Makefile.am: pkgconfig patch.
* configure.ac: Renamed from configure.in as per new autoconf
standards. LADCCA configure switch and detection. FluidSynth.pc
pkgconfig file output.
* src/Makefile.am: LADCCA patch.
* src/iiwu_alsa.c [HAVE_LADCCA]: LADCCA patch: reports ALSA
sequencer client ID.
* src/iiwu_jack.c [HAVE_LADCCA]: LADCCA patch: reports JACK
client name.
* src/iiwusynth.c [HAVE_LADCCA]: LADCCA patch: connects to LADCCA
server, creates client thread, saves/restores SoundFont file state.
Used iiwu_sfont_get_name macro to get SoundFont file names contrary
to the patch. Should these macros be public? Included unistd.h
for usleep call (within HAVE_LADCCA).
2003-01-23 Josh Green <jgreen@users.sourceforge.net>
* src/iiwu_jack.c: Fixed a segfault bug caused by freeing jack
port names, when really only the port array should be freed,
jack reference docs are confusing on this matter!
* src/iiwu_voice.c (iiwu_voice_check_sample_sanity): Min loop size
and padding now set via constants IIWU_MIN_LOOP_SIZE and
IIWU_MIN_LOOP_PAD defined at top of iiwu_voice.c, and the values
were lowered to exceed SF spec requirements rather then just meet.
(iiwu_voice_write): Now using a constant IIWU_MAX_AUDIBLE_FILTER_FC
defined at the top of iiwu_voice.c to control the filter
cutoff optimization. Also added IIWU_MIN_AUDIBLE_FILTER_Q so
filter will only turn off if both cutoff and q are determined to be
inaudible. Filter optimization is much less noticeable when modulating.
2003-01-14 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_ladspa.c: Adapted new command handler
* src/iiwu_midi_router.c (midi_dump_prerouter): Added forgotten
'flush' for event dump 'fprintf's
2003-01-01 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_oss.c (new_iiwu_oss_audio_driver): Changed to callback function
* src/iiwu_alsa.c (new_iiwu_alsa_midi_driver): Changed to callback function
* src/iiwu_midishare.c (iiwu_midishare_midi_driver_receive): Partly done the same
* src/iiwu_winmidi.c (new_iiwu_winmidi_driver): To be done...
* src/iiwu_midi_router.c: Added
* src/iiwu_ladspa.c: Adapted to new settings system
* src/iiwu_adriver.c (iiwu_audio_driver_settings): Uses getint
instead of getnum for audio.period-size and audio.periods settings.
* src/iiwu_voice.c (iiwu_voice_write):
Ignore the valid flag for samples. Otherwise no sound is produced.
* src/iiwu_chan.c (iiwu_channel_cc): Fixed bank select (7-bit
instead of 8 bit)
2002-12-23 Peter Hanappe <peter@hanappe.com>
* src/iiwu_io.c (iiwu_istream_readline): new file (iiwu_io.c and
iiwu_io.c) to handle IO in the shell.
* src/iiwusynth.c (main): options to start TCP server.
* src/iiwu_cmd.c (new_iiwu_server): New structure and functions
(new_iiwu_shell): New structure and functions to improve command
interface.
(new_iiwu_cmd_handler): New structure and functions to improve command
interface.
* src/iiwu_sys.c (new_iiwu_server_socket): New structure and
functions
(new_iiwu_thread): New structure and
functions
2002-12-14 Peter Hanappe <peter@hanappe.com>
* src/iiwu_chan.c (iiwu_channel_cc): Handling NRPN messages (NRPN
system).
* src/iiwu_voice.c (iiwu_voice_update_param): Does more extensive
range checking because the NPRN system may produce out-of-range
values (NRPN system).
(iiwu_voice_set_param): New function to change
generator values (NRPN system).
* src/iiwusynth_priv.h (iiwu_clip): New macro
* src/iiwu_synth.c (iiwu_synth_set_gen): New function to change
generator values (NRPN system).
* src/iiwu_gen.c (iiwu_gen_map_nrpn): New function to map the NRPN
data input to the parameter range (NRPN system).
* src/iiwu_midi.c (iiwu_midi_file_read_event): Fixed metadata
buffer bug (alloc size 1 too small).
2002-12-10 Peter Hanappe <peter@hanappe.com>
* src/iiwu_dsound.c (iiwu_win32_destroy_window): Filled in the
empty lines...
* src/iiwusynth.h: Changes in the definition for iiwu_synth_sfload
and iiwu_synth_sfunload, New functions: iiwu_synth_sfreload,
iiwu_synth_get_sfont_by_id, and iiwu_list_insert_at. New 'id'
field in iiwu_font_t.
2002-12-08 Markus Nentwig <nentwig@users.sourceforge.net>
* src/Makefile.am: added iiwu_hash.c and iiwu_strtok.c to libiiwusynth_la_SOURCES
* src/iiwu_settings.c (iiwu_settings_init): Removed
multi_channel from the settings (replaced with audio_channels > 1)
* src/iiwu_settings.c (iiwu_settings_init): added audio_groups
setting. This is the number of individual channels generated from
the synth, and always equal to audio_channels, as long as the
LADSPA Fx unit is disabled. Otherwise it can be used (for
example) to separate even and odd MIDI channels, apply different Fx
and mix together to one stereo output.
src/iiwu_ladspa.c: Extended Fx unit to multigroup input, fx sends
and multiple audio output channels
2002-12-04 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.c (iiwu_midi_file_read_event): the metadata buffer
is now dynamically allocated. What! Dynamic memory management
already existed in the sixties!
* src/iiwu_cmd.c (iiwu_handle_reset): New shell command. Sends
system reset.
* src/iiwu_cmd.c (iiwu_expand_path): New function to handle
filenames starting with '~'.
* src/iiwu_cmd.c: Added commands for working with tunings. Added
'source' command.
* src/iiwu_chan.h (struct _iiwu_channel_t): added tuning
* src/iiwusynth.h: new tuning functions
* src/iiwu_synth.c (iiwu_synth_reset_tuning): new tuning functions
* src/iiwu_voice.c: Added tuning
2002-12-03 Peter Hanappe <peter@hanappe.com>
* doc/iiwusynth.1: new man page
* src/iiwu_midi.c (iiwu_player_load): the player now handles a
playlist.
* src/iiwusynth.h: 'iiwu_player_add' replaces 'iiwu_player_load'
* src/iiwusynth.c (main): iiwusynth can now play midifiles.
2002-12-02 Peter Hanappe <peter@hanappe.com>
* src/iiwu_sys.c (new_iiwu_timer): New argument 'auto_destroy' to
specify whether the timer should delete it's structure when the
timer is finished.
* src/iiwu_synth.c (iiwu_synth_sfunload): If the soundfont can not
be unloaded immediately, a timer thread is spinned of to unload it
later. On MacOS 9, the unload is tried at a subsequent 'load' or
'unload' request.
* src/iiwusynth.h (struct _iiwu_sample_t): Added 'refcount' field
to test when a soundfont can be unloaded.
* src/iiwu_synth.c (iiwu_synth_nwrite_float): New function
allowing multi-channel audio output.
(iiwu_synth_init): Fixed 'amount' for pan. Now set to 500.
* src/iiwu_cmd.c (iiwu_synth_cmdshell): Added little prompt.
* src/iiwusynth.c (print_welcome): iiwusynth prints out a welcome
message as an well-behaved, interactive application should.
* src/iiwu_synth.c (iiwu_synth_all_sounds_off): New function to
implement the 'All Sound Off' MIDI messages (CC 120).
(iiwu_synth_system_reset): This function now also resets the
default controller values on the MIDI channels, and clears the
reverb and chorus delay lines.
(iiwu_synth_count_midi_channels): New function to retreive the
number of available midi channels.
(iiwu_synth_count_audio_channels): New function to retreive the
number of available midi channels.
(iiwu_synth_count_effects_channels): New function to retreive the
number of available effects channels.
(iiwu_synth_get_cpu_load): New function to retreive an estimation
of the CPU load.
* src/iiwusynth.h: Added fields to handle multi-channel audio and
a variable number of midi-channels. The 'flags' has been
expanded/replaced with several variables.
* src/iiwu_chan.c (iiwu_channel_cc): Implemented the 'All Control
Off' MIDI message (CC 121).
* src/iiwu_chorus.c (iiwu_chorus_update): iiwu_chorus_update
(called after the iiwu_chorus_set_xxx function) no longer returns
an error of out-of-range values. It clips the value the the
[min-max] range.
2002-11-22 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c (iiwu_voice_write): Fixed compilation problem
without --enable-SSE (Pentium II and Mac)
2002-11-17 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c (iiwu_voice_write): Fixed nonlooped samples-bug.
* TODO (TODO): Updated
* src/iiwu_cmd.c (iiwu_handle_reverbsetlevel): Changed command
line command 'rev_setwet' to 'rev_setlevel'. Replaced the word 'wet' by
'level' in most places.
Added a command line option --dump, which provides
'machine-readable' output from stdout to hook up a user interface.
* src/iiwusynth.h: Moved the default values for gain, chorus and
reverb here. Might be useful as an example...
* src/iiwu_voice.c (iiwu_voice_calculate_runtime_synthesis_parameters):
Added 'scale tuning' modulator, centered around C3.
* src/iiwusynth.h: Added API functions to read the reverb state
Moved iiwu_synth_system_reset to the API
2002-11-08 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c (iiwu_voice_write): Fixed Volume envelope delay bug
* src/iiwu_voice.c (FILTER_TRANSITION_SAMPLES): Doubled filter
fading time
* src/iiwu_mod.c (iiwu_mod_get_value): Changed convex unipolar
negative definition
* src/iiwu_voice.c (iiwu_voice_off): Cleaned up a bit, uses now
calls to iiwu_voice_off, when a voice is finished.
* src/iiwu_midi.c (iiwu_midi_parser_parse): Reimplemented
New parser should be able to cope with realtime, system common
and resynchronize.
2002-10-31 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_alsa.c (iiwu_alsa_midi_run): Increased MIDI timeout
from 1 to 100 ms
* src/iiwu_dsp_core.c: Merged identical filter coefficients b0 and
b2 into b02
Implemented smooth filter transitions
* src/iiwu_sys.c (iiwu_check_fpe): Added verbose FPE reporting and
systematic FPE checks.
* src/iiwu_rev.c: Added a constant DC offset to avoid slowdown
caused by denormal numbers
* src/iiwu_synth.c (delete_iiwu_synth): Fixed segv during shutdown
* src/iiwu_dsp_core.c: Fixed buffer bug (aligned-unaligned)
* src/iiwu_synth.c (iiwu_synth_damp_voices): Commented out unused code
* src/iiwu_dsp_core.c: Optimized, added SSE code, which is
this time actually faster than the default code. Well. Part of it.
* src/iiwu_voice.c: Minor clean-up
* configure.in: Added switch --enable-longlong
* configure.in: Added switch --enable-SSE
* src/iiwu_phase.h: Added 64 bit operations, documented
* src/iiwu_sse.h: Check to avoid #including the file more than once
2002-10-29 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c: Added experimental SSE support for Pentium
III. Comment out #define SSE from iiwu_voice.c to get back to the standard version.
2002-10-26 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_seq.c: Fixed a couple of warnings
* src/iiwu_voice.c (new_iiwu_voice): Removed iiwu_voice_init.
* src/iiwu_dsp_core.c: New 7th order interpolation.
2002-10-24 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c(iiwu_voice_determine_amplitude_that_reaches_noise_floor_for_sample):
Added checking for invalid sample.
* src/iiwu_voice.c (iiwu_voice_write):
Moved the DSP core functions into iiwu_dsp_core.c.
Optimized, cleaned up, documented.
Amplitude scaling short => floating point is now done as the last
operation in the DSP loop (voice->amp does not include the scaling
factor anymore).
* src/iiwu_synth.c (iiwu_synth_one_block): Saved a couple of
multiplications per sample by moving the master gain into iiwu_voice_write
* src/iiwu_synth.c (iiwu_synth_free_voice_by_kill): Modified the algorithm
* src/iiwu_synth.c (iiwu_synth_alloc_voice): Noteon algorithm will
now turn off retriggered running voices ('sustain pedal problem')
2002-10-18 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_alsa.c (new_iiwu_alsa_midi_driver): Disabled
high-priority scheduling for the MIDI thread to get rid of audio dropouts.
* src/iiwu_synth.c (iiwu_synth_free_voice_by_kill): Modified voice
killing algorithm, so that recently started voices are not killed
* src/iiwu_voice.c (iiwu_voice_run_dsp): Changed some variable
names. Extensive loop point checking, when loop points are modulated.
* src/iiwusynth.h: Added functions to read the state of the
chorus.
* src/iiwu_chorus.c: Rewrote chorus setup logic (if a parameter is
out-of-range, all other parameter changes are discarded).
* src/iiwu_voice.c: Added caching for loop peak detection: The
amplitude of the loop is only detected once for each
sample. Exception only, if the resulting loop differs from the
original loop settings of the sample (in this case, the peak
detection is still run for each noteon event).
* src/iiwusynth.h (struct _iiwu_sample_t): Added 'amplitude_that_reaches_noise_floor_is_valid'
and 'amplitude_that_reaches_noise_floor'
* src/iiwu_voice.c(iiwu_voice_calculate_runtime_synthesis_parameters):
Renamed 'iiwu_voice_optimize'
2002-07-21 Peter Hanappe <peter@hanappe.com>
* src/Makefile.am (libiiwusynth_la_SOURCES): Followed Bob Ham's
suggestion for the Makefile.am to fix the problems with automake
1.6
1999-11-30 Tim Goetze <tim@quitte.de>
* src/iiwu_synth.c (iiwu_synth_alloc_voice): New algorithm for
voice allocation, when all voice processes are in use
1999-11-30 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_synth.c (iiwu_synth_alloc_voice): Applied above patch,
2002-07-08 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_synth.c (iiwu_synth_noteoff): Changed noteoff strategy:
Noteoff now turns off all voice processes with the same channel /
key, regardless of the voice ID (avoids stuck notes).
2002-07-13 Peter Hanappe <peter@hanappe.com>
* src/Makefile.am (EXTRA_libiiwusynth_la_SOURCES): Applied Takashi
Iwai's patch. The configure stuff in iiwusynth-0.2 cannot be
rebuilt with the latest automake 1.6. You cannot use substitution
for *_SOURCES in Makefile.am. This fixes this problem.
1999-11-30 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwusynth.h: Added documentation, removed GEN_CHANGED (it
was unused).
* src/iiwu_mod.c (iiwu_dump_modulator): Cleaned up
* src/iiwu_cmd.c (iiwu_handle_help): Restructured command line
help system
2002-06-14 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_chorus.c (iiwu_chorus_processmix): Turning off chorus now, when parameters are wrong (avoid FPE)
* src/iiwu_voice.c (iiwu_voice_write): Optimized turnoff condition for voice
2002-06-11 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c (iiwu_voice_add_mod): Fixed bug that prevented non-default modulators from being added.
(iiwu_voice_config): Added peak detection for the sample loop, and a condition turning off the voice,
if loop peak volume and amplitude envelope combined fall below the noise floor.
2002-06-06 Peter Hanappe <peter@hanappe.com>
* acinclude.m4: Fixed problems with enable/disable jack and
midishare
2002-06-06 Tim Goetze <tim@quitte.de>
* src/iiwu_synth.c (iiwu_synth_all_notes_off): Added handling of
all-notes-off midi message
2002-06-03 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_chorus.c: Fixed bug in initial phase calculation
2002-06-02 Peter Hanappe <peter@hanappe.com>
* src/iiwu_jack.c: updated for new JACK types.
2002-06-02 Bob Ham <node@users.sourceforge.net>
* acinclude.m4: Changed acinclude.m4 for configure to ignore jack.
2002-06-02 Markus Nentwig <nentwig@users.sourceforge.net>
* autogen.sh: Added libtoolize -f to prevent error message 'libtool: ltconfig version does not match ltmain.sh version ...'
* src/iiwusynth.h: Changed iiwu_voice_add_mod_t to iiwu_voice_add_mod
* src/iiwu_synth.c: Added NULL termination to list returned by iiwu_synth_get_voicelist
* src/iiwusynth.h: Added iiwu_synth_set_chorus (API function)
* src/iiwu_synth.c: Added iiwu_synth_set_(reverb|chorus)_on (API functions)
* src/iiwu_cmd.c: Added control commands for chorus (see help)
2002-05-26 Tim Goetze <tim@quitte.de>
* src/iiwu_voice.c (iiwu_voice_noteoff): Fixed conversion between
volenv-values from attack segment to later envelope segments
2002-05-22 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_voice.c (iiwu_voice_query_ID): Added, API function
(iiwu_voice_query_playing): Added, API function
(iiwu_voice_write): Fixed problem with filter caused 05-18
* src/iiwusynth.h: Moved iiwu_voice_update_param into the API
2002-05-19 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwusynth.h (iiwu_synth_get_voicelist): Added.
* src/iiwu_voice.c (iiwu_voice_noteoff): Added a conversion for linear to cB amplitude, when a note is turned off
during the attack phase of the volume envelope
* src/iiwu_gen.h: Moved the generator definition to API. Changed the fields to 'double'.
* src/iiwu_mod.c: Moved the modulator definitions to API. Changed the data type of amount to 'double'.
* src/iiwu_voice.c (iiwu_voice_write): The condition, that quits a voice, when the amplitude
falls below a threshold now uses only the volume envelope instead of the voice amplitude.
Previously, turning a volume pedal briefly to 0 would quit all voices playing.
* src/iiwu_rev.c (iiwu_revmodel_processreplace): Removed 'dry' path from reverb unit
Motivation: This saves a couple of multiplications, the dry signal goes through the ordinary output
anyway.
* src/iiwusynth.h (iiwu_synth_kill_by_exclusive_class): added to API
* src/iiwu_synth.c (iiwu_synth_kill_by_exclusive_class): Extended the exclusive class function to
work with stereo samples
(iiwu_synth_set_reverb): Renamed iwu_synth_set_reverb to iiwu_synth_set_reverb_preset
iiwu_synth_set_reverb is now an API function, that allows to set all reverb parameters.
2002-05-18 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_chorus.c: Implemented variable delay line with bandlimited interpolation. Documentation, error handling.
Removed unneeded and broken features
* src/iiwusynth_priv.h: Moved typedef struct iiwu_mod_t iiwu_mod_t into iiwusynth.h
* src/iiwusynth.h: Moved iiwu_voice_add_mod from iiwu_voice.h into iiwusynth.h (now API function).
* src/iiwu_voice.c (iiwu_voice_update_param): Inserted chorus send into DSP loop
(iiwu_voice_write): Added flag 'voice->update_filter'. Now Q can be modulated.
2002-05-12 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_synth.c (iiwu_synth_pitch_wheel_sens): added
* src/iiwu_chan.c (iiwu_channel_pitch_wheel_sens): added
* src/iiwu_cmd.c (iiwu_handle_reverbsetwidth): changed 'wet' to
* 'width'
2002-05-11 Markus Nentwig <nentwig@users.sourceforge.net>
* src/iiwu_conv.c (iiwu_tc2sec):
Added more conversion functions with range check for different ranges:
(iiwu_tc2sec_attack):
(iiwu_tc2sec_hold):
(iiwu_tc2sec_release):
* src/iiwu_voice.c (iiwu_voice_add_mod):
implemented modulator src 0 (constant mod offset)
* src/iiwu_voice.c (iiwu_voice_update_param):
sample-and envelope related voice parameters
are now handled together with other voice parameters.
Implemented generators:
GEN_KEYTOVOLENVDECAY
GEN_KEYTOVOLENVHOLD
GEN_KEYTOMODENVDECAY
GEN_KEYTOMODENVHOLD
2002-05-10 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_synth_start_voice): added
iiwu_synth_start_voice() to handle exclusive classes.
2002-05-09 Peter Hanappe <peter@hanappe.com>
* src/iiwu_conv.h: removed velocity to cB conversion. No longer
used.
* src/iiwu_synth.c (iiwu_synth_write_float): removed limiter
* src/iiwu_synth.h (IIWU_NUM_CHANNELS): set the number of channels
to 64.
* src/iiwu_synth.c (iiwu_synth_get_internal_bufsize): added
* src/iiwu_ladspa.h: lower-cased ladspa files
* src/iiwusynth.h: prefixed log levels with IIWU_... Updated all
references.
* src/iiwu_cmd.c (iiwu_handle_reverb): renamed 'rev_enable' to
'reverb' in correspondance with the long command line arguments
* src/iiwusynth.c (main): checking if files on command line are valid
* src/iiwuplay.c (main): checking if files on command line are valid
* src/iiwusynth.h: New log level for verbose messages: IIWU_INFO
2002-04-30 Markus Nentwig <nentwig@users.sourceforge.net>
* src: Added iiwu_LADSPA.c, iiwu_LADSPA.h (support for LADSPA effect plugins).
* src/iiwusynth.c (main): Changed default gain to 0.2.
* src/iiwu_voice.c: Restructured the voice initialization as follows:
(iiwu_voice_init): sample position, IIR filter history, envelopes etc. are reset.
(iiwu_voice_optimize): The generators (nominal value) have been set by the sound font.
Now each modulator is calculated once to obtain the 'final' initial value for each
generator, which consists of nominal value and modulator-contributed part.
(iiwu_voice_update_param): Calculates all voice parameters, which depend on one
particular generator. This is called once for each voice parameter during
voice_optimize and further each time, when a modulator changes a generator.
(iiwu_voice_update_param): Added a voice parameter filter_gain to avoid
recalculating the filter gain each time the center frequency changes (it depends
only on Q)
(iiwu_voice_write): Voice is now turned off, when the amplitude falls below -100 dB,
even during the sustain phase (happens, when holding a piano key for a very long time)
* src/iiwu_voice.c (iiwu_voice_noteoff): Moved voice->chan = NO_CHANNEL into iiwu_voice_off.
Previously a released note was not modulated anymore, for example pitch bend stopped working as soon
as the key was released.
* src/iiwu_voice.h: Changed _ON macro to figure out the state of a key from the position in
the envelope, instead of using a cleared channel number as indicator.
* src/iiwu_synth.c: Implemented all default modulators
Added LADSPA support.
Added digital clipping.
Moved master gain factor ahead of LADSPA Fx.
* src/iiwu_mod.c: 'Hardcoded' GM default modulator vel => filter.
Replaced 128 with 127 in (127-x)
* src/iiwu_midi.c: Fixed sysex for realtime MIDI. Fixed pitch bend bug.
* src/iiwu_gen.c (iiwu_gen_set_default_values): Using float instead of int for default values.
Added references to specifications (doc). Changed 'init array' function name to 'set_default' .
* src/iiwu_defsfont.c (iiwu_preset_zone_import_sfont): Import of modulators
(iiwu_inst_zone_import_sfont): Import of modulators
(iiwu_defpreset_noteon): Added modulators, fixed generator problem (local zone overwrites global zone, previously it added)
* src/iiwu_conv.c: Using now oncave / convex equation from SF specs.
Removed ct2hz functions and tables.
(iiwu_ct2hz): Limit checking
(iiwu_cb2amp): Removed 'magic number'
(iiwu_tc2sec): Avoided == for iiwu_real_t
* src/iiwu_cmd.c: Increased number of tokens. Using WORKLINELENGTH constant.
Changed max. gain to 5.
Added LADSPA commands.
Renamed misleading rev_bypass command to rev_enable
* src/iiwu_chan.c: Centered pitch wheel. Added 'expression' modulator (CC 11).
* configure.in: Added LADSPA support
2002-04-03 Peter Hanappe <peter@hanappe.com>
* src/iiwu_voice.c (iiwu_voice_run_dsp): Integrated Markus
Nentwig's new filter design
2002-03-12 Peter Hanappe <peter@hanappe.com>
* src/iiwusynth.h: the preset iteration in a soundfont now takes a
pointer to a preset structure
* src/iiwu_sys.c (iiwu_profile_data): added support for profiling
* src/iiwu_voice.c (iiwu_voice_write): turns off voice if
amplitude < -100 dB in release phase. Set filter gain back to old
value (0.25f * ...)
* src/iiwuplay.c (main): added gain, interactive, and reverb options
* src/iiwusynth.c (main): added gain and reverb options
* src/iiwu_synth.c (iiwu_synth_write_s16): added brickwall limiter for s16 samples
2002-01-29 Stephane Letz <letz@grame.fr>
* src/iiwu_midishare.c : Compilation on MacOSX, use a task for typeNote management
* src/iiwu_sys.c : Compilation on MacOSX
* src/iiwu_sys.h : Compilation on MacOSX
* src/iiwu_sfont.c : Use the flag MACINTOSH instead of MACOS
* config_macos.h : Cleanup
* config_macosx.h : New file, compilation on MacOSX
2002-01-21 Stephane Letz <letz@grame.fr>
* src/iiwu_midi.c (delete_iiwu_midi_handler): Desallocation of heap allocated strings
* src/iiwusynth_priv.h : Definition of strdup if not available (Macintosh)
2002-01-16 Peter Hanappe <peter@hanappe.com>
* src/iiwu_alsa.c (new_iiwu_alsa_seq_driver): Applied and adjusted
Bob Ham's patch: support for configurable ALSA sequencer client
name.
* src/iiwu_chan.c (iiwu_channel_cc): Applied Bob Ham's patch:
added bank select midi message.
2001-12-31 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_synth_damp_voices): Sustain messages are
now handled. Updated iiwu_channel and iiwu_voice.
(delete_iiwu_synth): SoundFonts are deleted.
2001-12-21 Stephane Letz <letz@grame.fr>
* src/iiwu_midishare.c (new_iiwu_midishare_midi_driver,
delete_iiwu_midishare_midi_driver):
Updated to be compiled either in driver or application mode
with the flag MIDISHARE_DRIVER.
2001-12-20 Stephane Letz <letz@grame.fr>
* src/iiwu_portaudio.c (iiwu_portaudio_run , new_iiwu_portaudio_driver):
Adaptation for new audio drivers
* src/iiwu_synth.c (audio driver definition):
Adaptation for PortAudio driver
* src/iiwu_sys.c (header): Adaptation for compilation on MacOS9
* src/iiwu_sys.h (header): Adaptation for compilation on MacOS9
2001-12-16 Peter Hanappe <peter@hanappe.com>
* src/iiwuplay.c (main): The .iiwusynth file is loaded *before*
the soundfonts on the command lines are loaded
* src/iiwusynth.c (main): idem.
2001-12-16 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.c (iiwu_player_callback): Fixed error in midi
timing after a tempo change
* src/iiwu_jack.c (new_iiwu_jack_audio_driver): Added first
version of JACK driver
2001-12-14 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_synth_noteoff): noteon/notoff events can
print a clear message, useful for debugging.
* src/iiwu_sys.c (struct _iiwu_timer_t ): timer moved from
iiwu_midi.c to iiwu_sys.c
* src/iiwusynth.h: New organization of settings; using bit flags;
added verbose option
* src/iiwusynth.c (main): Added the verbose option
* src/iiwuplay.c (main): Added the verbose option
2001-10-05 Stephane Letz <letz@grame.fr>
* src/iiwu_portaudio.c (new_iiwu_portaudio_driver): imported new
driver for the PortAudio library.
2001-10-04 Stephane Letz <letz@grame.fr>
* src/iiwu_synth.c (new_iiwu_synth): Fixed bug in synth initialisation
2001-10-02 Peter Hanappe <peter@hanappe.com>
* src/iiwu_cmd.c (iiwu_get_userconf): returns default user
configuration
(iiwu_get_sysconf): returns default system configuration
(iiwu_synth_cmdline): Fixed bug with argument offset. Empty lines
are skipped correctly.
* src/iiwusynth.c (main): loads the user or system config
* src/iiwuplay.c (main): loads the user or system config
* src/iiwu_synth.c (iiwu_sp_write): Using new envelope model for
modulation envelope
2001-09-29 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_sp_write): redesigned the envelopes.
2001-09-20 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_sp_write): redesigned the dsp loop. it's
faster and it sounds better (!)
2001-09-19 Peter Hanappe <peter@hanappe.com>
* src/iiwu_sfont.c (iiwu_sample_import_sfont): better checking for
minimum sample size, loop start and loop end offsets.
2001-09-17 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_sp_write): improved calculation of filter
coefficients
(new_iiwu_synth): using settings structure
2001-09-09 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.h (iiwu_phase_decr): fixed bug
* src/iiwu_synth.c (iiwu_synth_noteoff): noteoff now turns off the
oldest note only (instead of all notes with the given channel and
key)
2001-07-10 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.h: removed midi driver join function. updated all
structures, implementations and callers.
2001-07-04 Peter Hanappe <peter@hanappe.com>
* src/iiwuplay.c (print_help): corrected errors in the help and
usage display.
2001-06-29 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_synth_one_block): new function. fills the
buffer with fresh samples.
(iiwu_synth_write_lr): now calls iiwu_synth_one_block. the
synthesizer uses fixed synthesis buffer size, independent of the
requested buffer length passed to iiwu_synth_write_lr.
(iiwu_revmodel_processreplace): new uses fixed IIWU_BUFSIZE value
for buffer length.
(iiwu_revmodel_processmix): uses fixed IIWU_BUFSIZE value
2001-06-22 Peter Hanappe <peter@hanappe.com>
* src/iiwusynth.c (iiwu_handle_fonts): new shell command to list
the loaded fonts.
(iiwu_handle_mstat): new shell command to list the statistics of
the midi driver.
2001-06-19 Peter Hanappe <peter@hanappe.com>
* src/iiwusynth.c (main): Several command line options are
available to select the midi and audio driver and device. Using
the getopt function on posix machines.
2001-06-16 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.h: new iiwu_revmodel_presets_t structure to store
reverb presets (concert hall, room, ...)
* src/iiwu_synth.c (iiwu_synth_write_lr): now using 1 reverb for
all synthesis processes. the synthesis processes now receive a
left and right buffer, a reverb buffer, a chorus buffer, and a
monobuffer for their temporarry storage. reverb now always on.
(new_iiwu_sp): no longer allocating a reverb module nor a
monobuf. only one reverb model and monobuffer allocated by the
synth object (read: much less memory usage).
* src/iiwu_midi.c (iiwu_player_callback): fixed timing
errors. midi should play correctly now.
2001-06-09 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_sp_write_lr): now using a 64-bits
fixed-point number to calculate the phase of the
wavetable. because of rounding erros, the float value I used
before gave terrible tuning problems. I updated all the
intepolation macros.
* src/iiwusynth_priv.h: included the iiwu_phase_t data type. This
type represents a 64-bits fixed-point number. It's used to hold
the phase in the wavetable.
2001-06-08 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.c (new_iiwu_midi_handler): Better support for
runtime selection of the MIDI driver (using the
iiwu_mdriver_definition_t structure)
* src/iiwu_auport.c (new_iiwu_auport): Better support for runtime
selection of the audio driver (using the iiwu_adriver_definition_t
structure)
2001-06-07 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_sp_write_lr): rewrote the dsp function to
accept a seperate left and right channel buffer.
(iiwu_sp_write_lr): using cubic hermite interpolation by default.
(iiwu_synth_write_lr): added a dsp function to accept a seperate
left and right channel buffer.
2001-05-26 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.c (iiwu_midi_parser_parse): Fixed a bug in the
midi parser (running status should not be split in a status and
channel part for system messages).
(iiwu_midi_send_event): pitch bend events are now handled
2001-05-25 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.c (iiwu_midi_file_getc): Fixed bug when pushed
back byte equals zero (mf->c >= 0)
* src/iiwu_midi.c (iiwu_midi_file_getc): Fixed bug when pushed
back byte equals zero (mf->c >= 0)
2001-05-24 Peter Hanappe <peter@hanappe.com>
* src/iiwusynth.c: added the stupidly simple interpreter
* src/iiwu_synth.c: removed all param strcutures.
* src/iiwu_synth.c (iiwu_channel_get_banknum): new function
2001-05-23 Peter Hanappe <peter@hanappe.com>
* src/iiwu_synth.c (iiwu_sp_write): Fixed devide by zero in filter
* src/smurf.c (gerr): applied Josh's patch: using va_list now (as
it should).
2001-05-22 Peter Hanappe <peter@hanappe.com>
* src/iiwu_midi.c: the midi handler is now devided in a dummy
iiwu_midi_handler_t and a "low level" driver. This allows for
multiple midi drivers to be compiled in.
* src/iiwusynth.h: renamed iiwu_midi_driver_t to iiwu_midi_handler_t
* src/iiwu_auport.c (new_iiwu_auport): new "driver" argument to
select between alsa, oss, midishare, directx, ...
* configure.in: preparing for the first pre-release, version 0.0.1