Parent Directory
|
Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
* added highly experimental code for synchronizing instrument editors hosted in the sampler's process to safely edit instruments while playing without a crash (hopefully) by either suspending single regions wherever possible or - if unavoidable - whole engine(s) * disk thread: queue sizes are now proportional to CONFIG_MAX_STREAMS instead of fix values * removed legacy Makefiles in meanwhile deleted src/lib directory and its subdirectories * bumped version to 0.4.0.7cvs
* playback is no longer disabled during instrument loading * all notes playing on a channel that changes its instrument keep playing with the old instrument until they get a note off command * new thread safety fix for lscp "load engine" and "set channel audio output device"
* new filter implementation, which is more accurate and supports all filter types including bandreject and lowpass turbo
* fixed some concurrency problems between the lscp thread and the audio/midi threads for these commands: load engine, set channel audio output device, set channel midi input device/port/channel and remove channel. Thanks to Vincent Bongiorno for bug reports and testing. * removed an autotools warning * fixed an iterator bug * minor code clean-ups
* added smoothing of volume changes caused by control change messages * fine tuning of the crossfade volume curve
* fixed global pan (CC10) which hasn't been working for a while * fine tuning of the curves for volume (CC7) and pan (CC10 and gig parameter) * added support for the "attenuation controller threshold" gig parameter
* added linear interpolation of volume modulation inside a subfragment; this prevents clicks during voice stealing. Can be switched off with the --disable-interpolate-volume configure option.
* implemented portamento mode and solo mode (a.k.a 'mono mode'): all modes can be altered via standard GM messages, that is CC5 for altering portamento time, CC65 for enabling / disabling portamento mode, CC126 for enabling solo mode and CC127 for disabling solo mode * fixed EG3 (pitch envelope) synthesis which was neutral all the time * configure.in: do not automatically pick optimized gcc flags if the user already provided some on his own (as CXXFLAGS)
* EG fixes: the length of "attack hold" stage was wrong. Release stage can now start before attack stage ends. Cancel release didn't work when sustain was zero.
* synthesis core optimizations
* extensive synthesis optimization: reimplementation of EGs and LFO(s), removed synthesis parameter prerendering and the synthesis parameter matrix in general, splitting each audio fragment into subfragments now where each subfragment uses constant synthesis parameters (everything's still very buggy ATM)
* improved filter cutoff calculation by adding support for the following gig parameters: Cutoff freq (used when no cutoff controller is defined), Control invert, Minimum cutoff, Velocity curve and Velocity range. The keyboard tracking now also scales cutoff frequency, not just resonance.
* minor efficiency fix (LFO preprocessing was performed even though the respective LFO was disabled by the instrument patch)
* fixed minor issue with null/silence samples (those stole voices even though they don't need a voice at all which resulted in "voice stealing didn't work out" messages)
* another voice stealing fix (endless loop occured when voices were stolen from other engine channels)
* (re)implemented voice stealing algorithm "oldestvoiceonkey" and made it the default voice stealing algorithm * added new LSCP command "GET SERVER INFO" which currently returns description and version about this sampler * added some API documentation comments * minor cleanup
* All compile time options are now centrally alterable as arguments to the ./configure script. All options are C Macros beginning with CONFIG_ prefix and will be placed into auto generated config.h file.
fixed libgig include rules
Fix destructor
* spawning layered voices now within a loop instead of recursively (fixes segmentation fault under heavy voice count load and reduces stress on the stack) * voice stealing operates on all engine channels now * limit voice stealing to MAX_AUDIO_VOICES thefts per audio fragment cycle * fixed keygroup handling (layered voices could kill each other)
* design change: using now one sampler engine instance and one disk thread instance for all sampler channels that are connected to the same audio output device (and are using the same engine type of course) * added EngineFactory / EngineChannelFactory to remove the annoying build dependencies e.g. of the lscpserver to the actual sampler engine implementations * bumped version to 0.3.0 (current CVS state is still quite broken, previous, stable CVS version was tagged as "v0_2_0" and is also available as source tarball)
* another crossfade fix (honoring AttenuationController for case 0,0,0,0, fixed cases in_start = in_end = CrossfadeControllerValue, fixed curve for cases out_start < CrossfadeControllerValue < out_end, honoring InvertAttenuationController parameter) * support for up to 8 dimensions as introduced by Gig V3 (patch by Andreas Persson)
* libgig: fixed vcf_type_lowpassturbo value, fixed crossfade points order * gig::Voice: fixed special crossfade case 0,0,0,0 which actually means no crossfade defined
* fixed endless loop at the end of sample playback (patch by Andreas Persson)
* Added some profiling capabilities, bugs.
* introduced 'synthesis mode' to reduce the amount of code and conditionals for the current synthesis case in the main synthesis loop * support for MMX and SSE(1) in the core synthesis algorithms (CPU feature detection at runtime, only x86 so far)
* fixed segfault which occured whenever a voice stole a voice and was in turn killed in the same audio fragment, to fix that the MIDI key informations are now updated only after all voices were processed
* bunch of bugfixes (e.g. segfault on voice stealing)
forgot to modify include for Pool.h
* libgig: fixed panorama value in DimensionRegion (invalid conversion from signed 7 bit to signed 8 bit) * src/linuxsampler.cpp: stacktrace is now automatically shown on fatal errors (that is segmentation faults, etc.), gdb should be installed for this to work * gig::Voice: tiny accuracy fix of pan calculation * replaced old pool classes by completely new ones which now offer Iterator abstraction
* support patch panorama info
* added support for release trigger dimension (that is voices which are spawned when a key was released) * libgig: bugfix in dimension region switching
* implemented key groups (a.k.a exclusive groups) which is important for drum patches and monphonic instruments * src/engines/gig/Engine.cpp: bugfix in ProcessNoteOn() - did not always stick the note on event to the respective key's own event list although e.g. the EGADRS expects it to find there
* added support for crossfades * support sample playback start offset
* added support for layers * fixed initial pitch calculation which did not honor the sample's own sample rate
* set default volume to 1.0 in Gigasampler engine (was 0.0) * implemented "SET CHANNEL AUDIO_OUTPUT_CHANNEL" LSCP command * fixed "GET ENGINE INFO" LSCP command * fixed "GET CHANNEL INFO" LSCP command * src/network/lscp.y: fixed 'stringval' rule (returned string with formal apostrophes), fixed 'dotnum' rule (ignored position after decimal point)
forgot to change some things which was mandatory due to the recent directory movements ('/src/audiodriver' -> '/src/drivers/audio', '/src/mididriver' -> '/src/drivers/midi')
* Do polynomial interpolation computation in float
* src/engines/gig/Voice.h: fixed bug which caused to hear only one audio channel
* biquad filter parameters are now calculated outside the interpolate loop for better performance * couple of loop unroll optimizations * filter is now enabled by default * cubic interpolation is now enabled by default * reduced debug level to 1 to lower verbosity * raised default limit for voices to 128 * raised default limit for streams to 150 * added some compiler optimization flags (-ffast-math -march -mcpu)
updated copyright header for 2004
* completely restructured source tree * implemented multi channel support * implemented instrument manager, which controls sharing of instruments between multiple sampler engines / sampler channels * created abstract classes 'AudioOutputDevice' and 'MidiInputDevice' for convenient implementation of further audio output driver and MIDI input driver for LinuxSampler * implemented following LSCP commands: 'SET CHANNEL MIDI INPUT TYPE', 'LOAD ENGINE', 'GET CHANNELS', 'ADD CHANNEL', 'REMOVE CHANNEL', 'SET CHANNEL AUDIO OUTPUT TYPE' * temporarily removed all command line options * LSCP server is now launched by default
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
ViewVC Help | |
Powered by ViewVC |