Parent Directory | Revision Log
Links to HEAD: | (view) (download) (annotate) |
Sticky Revision: |
* Reload instrument script automatically after being modified by an instrument editor. * Bumped version (2.0.0.svn8).
* All engines: Implemented scheduler for delayed MIDI events and for suspended real-time instrument scripts. * Real-Time instrument scripts: Implemented support for built-in "wait()" function's "duration-us" argument, thus scripts using this function are now correctly resumed after the requested amount of microseconds. * Real-Time instrument scripts: Implemented support for built-in "play_note()" function's "duration-us" argument, thus notes triggered with this argument are now correctly released after the requested amount of microseconds. * Real-Time instrument scripts: Fixed crash which happened when trying to reference an undeclared script variable. * Real-Time instrument scripts: Script events were not cleared when engine channel was reset, potentially causing undefined behavior. * All engines: Attempt to partly fix resetting engine channels vs. resetting engine, an overall cleanup of the Reset*(), ConnectAudioDevice(), DisconnectAudioDevice() API methods would still be desirable though, because the current situation is still inconsistent and error prone. * Bumped version (2.0.0.svn2).
* Fixed silence and another crash. * Bumped version (1.0.0.svn49).
* Fixed crashes when exiting the sampler. * Bumped version (1.0.0.svn47).
* Fixed crash when loading an instrument script. * Fixed "init" script handler only to be executed once: when the script was loaded. * Fixed aftertouch script event which always had value zero and controller number was set to aftertouch value instead. * gig Engine: Fixed handling of "smartmidi" dimension, which was recognized as "unknown" dimension. * Fixed script function gig_set_dim_zone(): was accessing wrong event. * ls_instr_script command line tool: is now not limited to core language scripts, but can now also parse sampler format dependent instrument scripts, with the respective specific built-in script variables and functions. * ScriptVM: Fixed runtime behavior of "and" and "or" binary script expressions, which also evaluated the right hand side of the expression even if the left hand side already failed the overall expression semantic to become true. * Bumped version (1.0.0.svn46).
* ScriptVM (WIP): started to integrate real-time instrument script support into the sampler engine implementations. The code is shared among all sampler engines, however currently only the gig file format supports storing instrument scripts (as LinuxSampler extension to the original GigaStudio 4 file format). * gig engine: Added support for loading instrument scripts from .gig files. * ScriptVM (WIP): Implemented built-in script variables %CC, $CC_NUM, $EVENT_NOTE, $EVENT_VELOCITY, $VCC_MONO_AT, $VCC_PITCH_BEND. * ScriptVM (WIP): Implemented execution of script event handler "init". * ScriptVM (WIP): Implemented execution of script event handler "controller". * Bumped version (1.0.0.svn42).
* Introduced new C++ API method EngineChannel::InstrumentFileName(int index) allowing to retrieve the whole list of files used for the loaded instrument on an engine channel (a.k.a. part). Some GigaStudio instruments for example are splitted over several files like "Foo.gig", "Foo.gx01", "Foo.gx02", ... * Bumped version to 1.0.0.svn18
* 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 deleting a sampler channel or changing engine type while an instrument load was in progress
* sfz engine: improved support for exclusive groups (group, off_by and off_mode) * minor valgrind fixes
* gig engine: implemented the "round robin keyboard" dimension * gig engine: fixed round robin and random dimensions for cases when number of dimension zones is not a power of two * gig engine: made round robin use a counter for each region instead of each key * fixed building with libgig installed in a non-standard directory
* Refactoring: moved the independent code from the Gigasampler format engine to base classes * SFZ format engine: experimental code (not usable yet) * SoundFont format engine: experimental code (not usable yet) * Fixed crash which may occur when MIDI key + transpose is out of range
* made program change handling in MIDI thread real-time safe by moving the logic to a non-RT thread
* fixed crash when changing the audio output device of a sampler channel with loaded instrument and start playing notes
* fixed crash when removing channel with active voices (#116)
* fixed orphaned pointers when setting maximum voices limit (bug #118)
* Adapted drivers/Plugin class to be used as a base class for the AudioUnit plugin and fixed orphaned pointers when deleting PluginGlobal * Fixed possible iterator invalidations when resetting the sampler * Fixed memory leaks when issuing the following LSCP commands: GET AUDIO_OUTPUT_DRIVER INFO GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO GET MIDI_INPUT_DRIVER INFO GET MIDI_INPUT_DRIVER_PARAMETER INFO * Fixed possible compilation error when sqlite is not present
* fixed a crash which occurs when removing a sampler channel with instrument loading in progress (bug #113)
* fixed a crash which occurs when removing a sampler channel waiting to start instrument loading after another channel
* allow pan control of engine channels on C++ API level * export denormals-are-zero mode feature to C++ API
* 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
* added support for notifying instrument editors on note-on / note-off events (e.g. to highlight the pressed keys on the virtual keyboard of gigedit) * fixed return value of recently added Thread::TestCancel() method * be verbose on DLL load errors (on Linux)
* made it possible to load an instrument even if the audio thread isn't running
* code cleanup: - global.h now only covers global definitions that are needed for the C++ API header files, all implementation internal global definitions are now in global_private.h - atomic.h is not exposed to the C++ API anymore (replaced the references in SynchronizedConfig.h for this with local definitions) - no need to include config.h anymore for using LS's API header files - DB instruments classes are not exposed to the C++ API - POSIX callback functions of Thread.h are hidden - the (optional) gig Engine benchmark compiles again - updated Doxyfile.in - fixed warnings in API doc generation * preparations for release 0.5.0
* A notification event is now sent when the instrument loading on a sampler channel failed
* ensure that a notification event is sent when already loaded instrument is assigned to another sampler channel
* A notification event is now sent when altering audio output channel on a sampler channel
* added highly experimental support for on-the-fly instrument editing within the sampler's process (by using instrument editor plugins), you'll notice the new "Registered instrument editors:" message on startup, the plugin path can be overridden at compile time with ./configure --enable-plugin-dir=/some/dir * added a new LSCP command "EDIT INSTRUMENT <sampler-channel>" to spawn a matching instrument editor for the instrument on the given sampler channel (LSCP command syntax might be subject to change soon) * config.h is not going to be installed along with liblinuxsampler's API header files anymore (not necessary anymore) * take care of $(DESTDIR) when creating the instruments DB on 'make install' rule (needed for packaging and cross compilation) * bumped version to 0.4.0.5cvs
* Implemented new, improved notification system
* Added new notification events for tracking effect send changes and global volume changes
* 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
* bugfix: sampler crashed when trying to persistently map a not existent or corrupt .gig file ("MAP MIDI_INSTRUMENT ... PERSISTENT") * behavior fix: reset FX send levels i.e. when receiving a MIDI "reset all controllers" message * bumped version to 0.4.0.3cvs
* EG fix: a release value of zero could cause noises or crash * fix of previous thread safety fix, which in some cases locked the engine
* 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"
* global volume can now be altered at runtime (added two new LSCP commands for this, LSCP specs updated)
* 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: - renamed class LinuxSamplerException -> Exception - encapsulated LS API relevant files into LS namespace - removed unnecessary header inclusions
* 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.
* 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)
* fixed event handling bug which was introduced by the recent synthesis optimizations (events were only processed for the first active voice) * added global volume attenuation of -9 dB (0.35f) to prevent clipping which can be overridden with --enable-global-attenuation
* 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)
* 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.
* 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)
* 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
* implemented MIDI Control Change 7 (Volume) * implemented MIDI Control Change 10 (Panpot)
* fixed some segfaults (which occured on EngineChannel destruction) * InstrumentResourceManager: recache small samples if their current number of silence sample points are not sufficient enough for the used audio output device * src/linuxsampler.cpp: voice / streams statistics on the console is back again (can be turned on with command line switch --statistics)
* 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 |