Parent Directory
|
Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
* 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"
* Fixed a memory leak due to EngineFactory::Destroy() not doing it as an actual destructor and just removing the engine instance from factory stock and all instances allocated via EngineFactory::Create() never got delete'd and thus their destructors never called. This bug was evident while having many mapped instruments and querying the instrument status via GET MIDI_INSTRUMENT INFO command, eating up system memory very quickly and never let it go.
* implemented effect sends (also added new LSCP commands for this feature, updated LSCP spec document along with this commit batch as well)
* fixed crash occuring in conjunction with the new 'MAP MIDI_INSTRUMENT' LSCP command (cause: RingBuffer was not able to do deep copies)
* implemented MIDI instrument mapping according to latest LSCP draft
just some refactoring work, moved the following files: - src/engines/common/Engine.h -> src/engines/Engine.h, - src/engines/common/EngineChannel.h -> src/engines/EngineChannel.h, - src/engines/common/EngineChannel.cpp -> src/engines/EngineChannel.cpp
* more thread safety fixes: another fix for lscp "load engine" and midi thread. Sysex midi protected against lscp. Instrument loader thread protected against lscp thread.
* 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 support for sostenuto pedal
* 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)
* fixed little inconsistency: LSCP commands 'LIST AVAILABLE_ENGINES' and 'GET CHANNEL INFO' returned different names for the gig::Engine, returning now only 'GIG'
* fixed a key group bug which caused undefined behavior in conjunction with stolen voices (this case was usually followed by a "killed voice survived" or "voice stealing didn't work out" error message)
* another voice stealing fix (endless loop occured when voices were stolen from other engine channels)
* don't reset scale tuning on instrument or audio output device change
* revised voice stealing (fixes crash caused by voice stealing)
* volume of release triggered samples now depends on note-on velocity, note length and gig parameter "release trigger decay" instead of note-off velocity.
* 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
* fixed segmentation fault on "GET CHANNEL INFO" commands which occured when an engine type was selected but no audio device connected yet to the sampler channel (fixes bug #4)
* fixed event leak (events sent to inactive keys were not freed) * implemented MIDI channel mode messages "All Sound Off", "Reset All Controller", "All Notes Off" (fixes bug #5)
* 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)
* 24-bit decompression now supports the 20 and 18 bit formats * support for "random" and "round robin" dimensions * removed a warning printout for empty samples during instrument loading
* gig::Engine: fixed silence (engine channels' events were not imported into the engine, fixed undesired creation of new gig::Engine instances (and disk threads) * AudioOutputDevice: reverted behavior to render per Engine instance (and not per EngineChannel instance)
* 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)
* fixed possibility that memory got not locked * immediately set instrument status when calling LOAD INSTUMENT NON_MODAL
* Added INSTRUMENT_NAME to GET CHANNEL INFO command result set
* support for keyswitching * ignore if no sample was defined for region(s) or dimension region(s) (patch by Andreas Persson)
* 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)
* 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
* gcc-c++ 3.4.1 compability fixes.
* added first two experimental voice stealing algorithms ('oldestkey' - which just steals the oldest voice on the oldest key and 'keymask' - which tries to pick the oldest voice on the same key where the new voice should be spawned, if it fails it behaves like 'oldestkey'), the desired algorithm can be selected at compile time (see Engine.h) will be configurable via LSCP soon though
* added support for scale tuning via MIDI GS system exclusive message
* 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 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)
* Load Instrument patch applied; this patch makes the LOAD INSTRUMENT command to return immediately, almost/always with an OK response, while spawning the proper instrument file loading in the background. * New INSTRUMENT_STATUS field on GET CHANNEL INFO result set; the instrument status value holds the load progress percentage if positive, otherwise a negative value is evidence of a load exception error. * VERSION is now set to 0.2.
* Added methods for CHANNEL_INFO command
* 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 |