Parent Directory | Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
* the promised "cleanup": rewrote virtual MIDI device's notification a bit (using now a safe double buffer approach using "SynchronizedConfig" instead of the Trylock() approach previously to synchronize the list of virtual MIDI devices) * bumped version to 0.5.1.2cvs
* added support for triggering notes by instrument editors (still some cleanup / refactoring ahead, but it should work) * bumped version to 0.5.1.1cvs
* made it possible to load an instrument even if the audio thread isn't running
* handle MIDI coarse tuning messages (MIDI RPN #0 MSB, #2 LSB), currently lazy implementation, transpose value is simply added on the note on/off values instead only at the mandatory places, thus when altering transpose while playing, voices can unintendedly survive
* 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
* MIDI driver API extension for MIDI drivers which already supply exact time stamps for events (i.e. for offline rendering based MIDI drivers)
* real support for 24 bit samples - samples are not truncated to 16 bits anymore * support for aftertouch (channel pressure, not polyphonic aftertouch)
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
* sample loop parameters are now taken from the DimensionRegion instead of the wave chunk * fixed keyswitching for v3 gigs with a number of keyswitch splits not equal to a power of two
* 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
* 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)
* 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)
* update MIDI channel info on program change
* don't reset volume, pan, pitch and MIDI controller values on instrument or audio output device change * send 'CHANNEL_INFO' LSCP event on MIDI program change messages
* LSCP server: fixed LSCP event "CHANNEL_INFO" notification (e.g. did not notify on volume changes)
* (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
* implemented progress indicator for loading instruments (can be polled with "GET CHANNEL INFO", field "INSTRUMENT_STATUS")
* 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)
* implemented MIDI Control Change 7 (Volume) * implemented MIDI Control Change 10 (Panpot)
* 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)
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 |