--- linuxsampler/trunk/ChangeLog 2010/01/09 09:37:01 2043 +++ linuxsampler/trunk/ChangeLog 2011/12/12 09:20:00 2300 @@ -1,8 +1,48 @@ Version CVS HEAD (?) - * General changes: + * plugin changes: + - LV2 Persist + Files support (patch by David Robillard) + + * packaging changes: + - fixed building with newer MinGW-w64 + - Mac OS X: support the new dir for Core Audio SDK + - Mac OS X: fixed building outside source directory + - made sure all source files for hostplugins are included when + doing "make dist" + - removed empty directories left from the cvs to svn migration + - fixed compilation with gcc 4.6.1 + - another "make dist" fix, for the LV2 plugin + - made --enable-pthread-testcancel default on Mac OS X + - minor Makefile fix for building lscpparser when build and source + directories are separate + - Mac OS X: made it possible to specify plugin installation dir to + configure + - Mac OS X: Makefile fix for the install-strip target + + * general changes: - Refactoring: moved the independent code from the Gigasampler format engine to base classes + - command line option '--profile' is currently disabled, since the + respective profiling code is currently broken + - Introduced support for optional environment variable + "LINUXSAMPLER_PLUGIN_DIR" which allows to override the directory + where the sampler shall look for instrument editor plugins + (patch by Luis Garrido, slightly modified). + - implemented Roland GS NRPN 1ArrH which allows to set volume per note + - implemented Roland GS NRPN 1CrrH which allows to set pan per note + - implemented Roland GS NRPN 1DrrH which allows to set reverb send per + note (in this implementation of the sampler its simply hard routed to + the 1st effect send of the sampler channel, no matter what the actual + effect type is) + - implemented Roland GS NRPN 1ErrH which allows to set chorus send per + note (in this implementation of the sampler its simply hard routed to + the 2nd effect send of the sampler channel, no matter what the actual + effect type is) + - implemented support for internal LADSPA effects + - raised limit of program change queue from 100 to 512 + (as suggested by Alex Stone) + - implemented sine LFO, pulse LFO and saw LFO + - experimental support for per voice equalization * Gigasampler format engine: - implemented the "round robin keyboard" dimension @@ -11,26 +51,252 @@ - made round robin use a counter for each region instead of each key - * SFZ format engine + * SFZ format engine: - Initial implementation (not usable yet) + - added support for v2 multiple stage envelope generators + - added a fine-tuned v1 envelope generator instead of using the + one from the gig engine + - fixed memory leak and memory handling errors + - added support for trigger=first, trigger=legato and sw_previous + - allow non-numerical key values ("C#4" for example) + - "key" opcode now sets pitch_keycenter too + - fixed error when unloading instrument with same sample used by + multiple regions + - added some opcode aliases, like loopmode for loop_mode, to be + more compatible + - added support for trigger=release and rt_decay + - added support for off_mode=normal + - added support for random, seq_position, seq_length and volume + - added v1 LFO opcodes to parser (no support in engine yet) + - added support for amp_veltrack and amp_velcurve_N + - fine-tuned the default velocity curve + - added support for transpose + - fixed crash when using sw_down/up + - improved logic for sw_lokey/hikey/up/down/last + - added more v1 aliases to parser + - reduced memory usage for sfz data + - RT-safeness: avoid malloc in audio thread + - fixed a bug that could cause voice stealing to fail + - optimized sample lookup + - improved support for exclusive groups (group, off_by and + off_mode) + - added support for controller triggered regions (on_locc/on_hicc) + - added support for loop_mode=one_shot + - fixed playback of 16 bit wav files on big endian CPUs + - added support for Ogg Vorbis sample files + - use loop markers from sample file if loop_start and loop_end are + not set in sfz file + - implemeted filters. Filter types: lowpass, bandpass, bandreject + and highpass. 1, 2, 4 and 6 pole filters. Opcodes: fil_type, + cutoff, resonance, fil_veltrack, fil_keytrack, fil_keycenter, + cutoff_cc, cutoff_chanaft. + - bugfix: zero ampeg_sustain didn't work + - added support for velocity effect on amplifier envelope time + (ampeg_vel2attack, ampeg_vel2decay, ampeg_vel2sustain and + ampeg_vel2release) + - added support for EG hold (ampeg_hold) + - added support for sample offset (offset) + - use the newly introduced signal units model + - implemented opcodes lfoN_delay, + lfoN_freq, lfoN_pan, lfoN_cutoff, lfoN_resonance + - implemented opcodes ampeg_delay, ampeg_vel2delay + pitcheg_delay, pitcheg_start, pitcheg_attack, pitcheg_hold, + pitcheg_decay, pitcheg_sustain, pitcheg_release, pitcheg_vel2delay, + pitcheg_vel2attack, pitcheg_vel2hold, pitcheg_vel2decay, + pitcheg_vel2sustain, pitcheg_vel2release, pitcheg_depth + - implemented opcodes pitchlfo_delay, pitchlfo_freq, + pitchlfo_depth, fillfo_delay, fillfo_freq, fillfo_depth, + amplfo_delay, amplfo_freq, amplfo_depth + - implemented opcodes fileg_delay, fileg_start, fileg_attack, + fileg_hold, fileg_decay, fileg_sustain, fileg_release, fileg_vel2delay, + fileg_vel2attack, fileg_vel2hold, fileg_vel2decay, fileg_vel2sustain, + fileg_vel2release + - implemented opcode lfoN_wave + - implemented opcode pitchlfo_depthccN + - implemented opcodes lfoN_phase, lfoN_phase_onccX, + lfoN_pitch, lfoN_pitch_onccX + - implemented opcodes pitchlfo_fade, + fillfo_fade, amplfo_fade, lfoN_fade, lfoN_fade_onccX + - implemented opcodes fillfo_freqccN, + pitchlfo_freqccN, amplfo_freqccN, lfoN_freq_onccX + - implemented opcodes ampeg_delayccN, ampeg_startccN, + ampeg_attackccN, ampeg_holdccN, ampeg_decayccN, ampeg_sustainccN, + ampeg_releaseccN, egN_timeX_onccY, egN_levelX_onccY + - lfoN_* and egN_* opcodes defined in group sections + are now taken into account + - implemented curves + - implemented opcodes volume_onccN, volume_curveccN + - implemented opcode volume_smoothccN + - implemented opcodes fillfo_depthccN, amplfo_depthccN, + lfoN_volume, lfoN_volume_onccX, lfoN_volume_smoothccX, + lfoN_freq_smoothccX, lfoN_pitch_smoothccX, lfoN_pan_onccX, + lfoN_pan_smoothccX, lfoN_cutoff_onccX, lfoN_cutoff_smoothccX, + lfoN_resonance_onccX, lfoN_resonance_smoothccX, lfoN_delay_onccX + - implemented opcode end + - implemented opcodes egN_amplitude_onccX, + egN_volume, egN_volume_onccX, egN_cutoff, egN_cutoff_onccX, + egN_pitch, egN_pitch_onccX, egN_resonance, egN_resonance_onccX + - implemented opcodes xfin_lokey, xfin_hikey, + xfout_lokey, xfout_hikey, xf_keycurve, xfin_lovel, xfin_hivel, + xfout_lovel, xfout_hivel, xf_velcurve, xfin_loccN, xfin_hiccN, + xfout_loccN, xfout_hiccN, xf_cccurve + - implemented opcodes pan_onccN, pan_smoothccN, + pan_curveccN, egN_pan, egN_pan_curve, egN_pan_onccX, + egN_pan_curveccX, pitch_veltrack + - when failed to parse a sfz file + print the line number on which the error occurs + - use common pool of CC objects to minimize RAM usage + - implemented opcodes amplfo_delay_onccN, + amplfo_fade_onccN, fillfo_delay_onccN, fillfo_fade_onccN, + pitchlfo_delay_onccN, pitchlfo_fade_onccN + - implemented opcodes fileg_delay_onccN, + fileg_start_onccN, fileg_attack_onccN, fileg_hold_onccN, + fileg_decay_onccN, fileg_sustain_onccN, fileg_release_onccN, + fileg_depth_onccN, pitcheg_delay_onccN, pitcheg_start_onccN, + pitcheg_attack_onccN, pitcheg_hold_onccN, pitcheg_decay_onccN, + pitcheg_sustain_onccN, pitcheg_release_onccN, pitcheg_depth_onccN + - implemented automatic aliasing *ccN <-> *_onccN + - *lfo_freqccN wasn't working when the respective *lfo_freq + was not set or was set to zero + - lfoN_freq_onccX wasn't working when lfoN_freq + was not set or was set to zero + - implemented opcodes resonance_onccN, resonance_smoothccN, + resonance_curveccN, cutoff_smoothccN, cutoff_curveccN + - implemented opcodes fillfo_depthchanaft, + fillfo_freqchanaft, amplfo_depthchanaft, amplfo_freqchanaft, + pitchlfo_depthchanaft, pitchlfo_freqchanaft + - implemented opcodes pitch_onccN, + pitch_curveccN, pitch_smoothccN, pitch_stepccN + - implemented opcodes volume_stepccN, pan_stepccN, + cutoff_stepccN, resonance_stepccN, lfoN_freq_stepccX, + lfoN_volume_stepccX, lfoN_pitch_stepccX, lfoN_pan_stepccX, + lfoN_cutoff_stepccX, lfoN_resonance_stepccX + - implemented opcodes eq1_freq, eq2_freq, eq3_freq, + eq1_freqccN, eq2_freqccN, eq3_freqccN, eq1_bw, eq2_bw, eq3_bw, + eq1_bwccN, eq2_bwccN, eq3_bwccN, eq1_gain, eq2_gain, eq3_gain, + eq1_gainccN, eq2_gainccN, eq3_gainccN + - implemented opcodes delay, delay_onccN, delay_random, + delay_samples, delay_samples_onccN + - implemented opcodes egN_eq1gain, egN_eq2gain, egN_eq3gain, + egN_eq1gain_onccX, egN_eq2gain_onccX, egN_eq3gain_onccX, egN_eq1freq, + egN_eq2freq, egN_eq3freq, egN_eq1freq_onccX, egN_eq2freq_onccX, + egN_eq3freq_onccX, egN_eq1bw, egN_eq2bw, egN_eq3bw, egN_eq1bw_onccX, + egN_eq2bw_onccX, egN_eq3bw_onccX, lfoN_eq1gain, lfoN_eq2gain, + lfoN_eq3gain, lfoN_eq1gain_onccX, lfoN_eq2gain_onccX, lfoN_eq3gain_onccX, + lfoN_eq1gain_smoothccX, lfoN_eq2gain_smoothccX, lfoN_eq3gain_smoothccX, + lfoN_eq1gain_stepccX, lfoN_eq2gain_stepccX, lfoN_eq3gain_stepccX, + lfoN_eq1freq, lfoN_eq2freq, lfoN_eq3freq, lfoN_eq1freq_onccX, + lfoN_eq2freq_onccX, lfoN_eq3freq_onccX, lfoN_eq1freq_smoothccX, + lfoN_eq2freq_smoothccX, lfoN_eq3freq_smoothccX, lfoN_eq1freq_stepccX, + lfoN_eq2freq_stepccX, lfoN_eq3freq_stepccX, lfoN_eq1bw, lfoN_eq2bw, + lfoN_eq3bw, lfoN_eq1bw_onccX, lfoN_eq2bw_onccX, lfoN_eq3bw_onccX, + lfoN_eq1bw_smoothccX, lfoN_eq2bw_smoothccX, lfoN_eq3bw_smoothccX, + lfoN_eq1bw_stepccX, lfoN_eq2bw_stepccX, lfoN_eq3bw_stepccX + - implemented opcodes eq1_vel2freq, eq2_vel2freq, + eq3_vel2freq, eq1_vel2gain, eq2_vel2gain, eq3_vel2gain - * SoundFont format engine + * SoundFont format engine: - Initial implementation (not usable yet) + - RT-safeness: avoid malloc in audio thread + - fixed a bug that could cause voice stealing to fail + - fine-tuned amplitude EG (by switching from gig to sfz EG) + - initial implementation of Vibrato LFO and Modulation LFO + - initial implementation of cutoff filter + + * Gigasampler format engine: + - bugfix: pitch LFO controller "internal+aftertouch" was broken + - bugfix: filter keyboard tracking was broken + - filter performance fix (an unnecessary copy was made of the + filter parameters in each sub fragment) * Host plugins: - AU bugfix: failed to destroy its audio/MIDI devices - Listen to all interfaces on Mac OS X (INADDR_ANY) + - VST bugfix: If the host called resume() before and after + changing sample rate or block size, the number of channels was + incorrectly set to two. This caused silence in Cubase 5. + - save engine type (gig, sfz or sf2) in plugin state + - VST: when opening Fantasia, look for both 32 and 64 bit Java on + 64 bit Windows + - AU: changed number of output channels from one stereo to 16 + stereo + - VST: made it possible to build the VST plugin for Mac + - AU: link AU plugin dynamically if --disable-shared isn't + specified * MIDI driver: - ALSA MIDI driver supports now "NAME" device parameter, for overriding the ALSA sequencer client name + - removed limit of maximum amount of MIDI ports per MIDI device, since + there is no reason for this limit + + * audio driver: + - ASIO driver fixes for newer gcc versions (fix from PortAudio) * LSCP server: - added support for sending MIDI CC messages via LSCP command "SEND CHANNEL MIDI_DATA CC " + - added LSCP command "GET AVAILABLE_EFFECTS" + - added LSCP command "LIST AVAILABLE_EFFECTS" + - added LSCP command "GET EFFECT INFO " + - added LSCP command "CREATE EFFECT_INSTANCE " + - added LSCP command + "CREATE EFFECT_INSTANCE " + - added LSCP command "DESTROY EFFECT_INSTANCE " + - added LSCP command "GET EFFECT_INSTANCES" + - added LSCP command "LIST EFFECT_INSTANCES" + - added LSCP command "GET EFFECT_INSTANCE INFO " + - added LSCP command + "GET EFFECT_INSTANCE_INPUT_CONTROL INFO " + - added LSCP command "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE + " + - added LSCP command "GET SEND_EFFECT_CHAINS " + - added LSCP command "LIST SEND_EFFECT_CHAINS " + - added LSCP command "ADD SEND_EFFECT_CHAIN " + - added LSCP command + "REMOVE SEND_EFFECT_CHAIN " + - added LSCP command + "GET SEND_EFFECT_CHAIN INFO " + - added LSCP command "APPEND SEND_EFFECT_CHAIN EFFECT + " + - added LSCP command "INSERT SEND_EFFECT_CHAIN EFFECT + " + - added LSCP command "REMOVE SEND_EFFECT_CHAIN EFFECT + " + - added LSCP command "SET FX_SEND EFFECT + " + - added LSCP command "REMOVE FX_SEND EFFECT " + - added LSCP commands "SUBSCRIBE EFFECT_INSTANCE_COUNT", + "SUBSCRIBE EFFECT_INSTANCE_INFO", "SUBSCRIBE SEND_EFFECT_CHAIN_COUNT", + "SUBSCRIBE SEND_EFFECT_CHAIN_INFO" * Bug fixes: - Fixed crash which may occur when MIDI key + transpose is out of range + - minor valgrind fixes + - fixed crash which occurred when changing an already deployed sampler + channel to a different engine type + - fixed crash when deleting a sampler channel or changing engine + type while an instrument load was in progress + - bugfix: playing a note while changing the instrument could cause + a crash, or give "Handing back unknown region" error messages + - bugfix: calling SET VOICES (which Fantasia does on start and + refresh) could cause instruments to be unloaded + - Mac OS X: fixed name collision of enum in EffectControl and + wrong name of destructor in AudioOutputDeviceCoreAudio.cpp + - Mac OS X: fixed hanging threads + - Windows: disabled the previous thread fix on non-Mac systems, as + it caused hanging threads on Windows + - Fixed possible crashes due to corrupted MIDI/audio device list + after MIDI/audio device creation failure + - When creating MIDI instrument map entries with "PERSISTENT" type, the + instruments were uselessly precached with zero samples, however it still + took the full preloading time and on 1st program change the respective + instrument was completely reloaded again. + - fixed handling of rapid bank select and program change messages + sent to the same sampler channel (patch from the Open Octave + project, slightly adjusted) + - fixed crash when trying to create an effect instance with controls + which min and/or max values depend on the sample rate Version 1.0.0 (31 July 2009)