CVS log for linuxsampler/src/linuxsampler.cpp |
|
Help |
Request diff between arbitrary revisions
* command line option '--profile' is currently disabled, since the respective profiling code is currently broken
* VST: avoid opening Fantasia more than once for each VST instance * VST: export main function as "main" on Linux too (fix for energyXT) * VST: prepare code for multiple output channels * work-around for missing fnmatch function on Windows to make instrument database compilable
* fixes for using large audio device buffers * VST: added support for sample rate and buffer size changes * VST: close editor (Fantasia) when the VST is removed * minor fix in configure for mmsystem.h detection on MinGW * removed warnings from gcc 4.4 and valgrind
* applied old fixes from Benno to the ASIO driver that were included in the previous binary release but accidentally never committed to CVS (fixes #117)
* automatic stacktrace mechanism is now turned off by default and can be switched on by command line option "--stacktrace" (the automatic stacktrace mechanism seems to be broken on most systems at the moment) * bumped version to 0.5.1.9cvs
* refactoring: extracted lscp notification from main() to a separate function * added helper function MidiInputPort::DispatchRaw for midi device implementations with raw byte data * fixed a win32 build error (atomic.h is working on windows too) * code cleanup: moved lscp classes into LinuxSampler namespace
* fixed memory leaks that occurred when liblinuxsampler was unloaded * fixed a memory leak that could happen when a channel was deleted while notes were playing * fixed memory management bug in ASIO driver * optimized the SynchronizedConfig class so it doesn't wait unnecessarily long after an update
- Added support for monitoring the total number of active disk streams (new LSCP commands: GET TOTAL_STREAM_COUNT, SUBSCRIBE TOTAL_STREAM_COUNT, UNSUBSCRIBE TOTAL_STREAM_COUNT)
* made signal handling a bit more robust
* win32 port, work in progress: added autoconf checks for Windows - win32 additions in linuxsampler.cpp
* 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
* code refactoring, moved the following files from src/engines/ -> src/plugins/ : InstrumentEditor.h , InstrumentEditor.cpp , InstrumentEditorFactory.h , InstrumentEditorFactory.cpp
* fixed egoistic --instruments-db-location command line switch ;-) which caused all subsequent command line switches to be ignored * the default location of the instruments DB file can now be overridden with ./configure --enable-default-instruments-db-location=/foo/bar.db * instruments DB feature can be disabled at compile time with ./configure --disable-instruments-db (i.e. for cross compilation) * in case instruments DB feature is disable at compile time, don't actually compile the instruments DB source files and don't install the instruments DB API header files either
* bugfix: the active stream/voice count statistic was incorrect
* fixed some minor memory leaks
* 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
* added --instruments-db-location command line switch * fixed bug regarding the scanning progress notifications * directories containing no instrument files are now not re-created in the instruments databese when recursive scan is performed
* updated instruments db support * added transactions for improving the db performance * added commands for copying and finding instruments and directories
* Implemented instruments database
* Implemented new, improved notification system
* 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.
* src/Sampler.h, src/Sampler.cpp: allow 3rd party applications to retrieve available drivers and sampler engines * src/linuxsampler.cpp: show available engines on startup (on the console)
* 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
* bugfix in LSCP parser which was confused by space(s) within device parameters (e.g. "SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 SOMEPARAM='foo bar'") * changed version to 0.3.3cvs
change kill statement to use pid rather than thread id
Added new LSCP commands: GET TOTAL_VOICE_COUNT, GET TOTAL_VOICE_COUNT_MAX, SUBSCRIBE/UNSUBSCRIBE TOTAL_VOICE_COUNT
* synthesis core optimizations
* added cmdline options for lscp address and port
* src/network/lscpserver.cpp: fixed segfault (patch by Grigor Iliev, fixes #17) * added man page * final preparations for the first official release (which will be 0.3.1)
* (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
* fixed a bug that sometimes caused clicks at the beginning of samples * added denormal number elimination for CPUs with SSE2 support
* 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)
* 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)
* bunch of fixes for OSX (patch by Stephane Letz)
* Updated implementation for real time notify messages: VOICE_COUNT, STREAM_COUNT, BUFFER_FILL
* architecture independence fixes, should now compile again for non x86 systems * tiny fix of command line switch --version
* 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)
* 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
* src/drivers/DeviceParameter.cpp: fixed return values for classes 'DeviceRuntimeParameterString' and 'DeviceCreationParameterString' which returned their values without being encapsulated into apostrophes, fixed return values for 'DeviceRuntimeParameterBool' and 'DeviceCreationParameterBool' to be returned in lower case (as defined in the LSCP documentation) * src/network/lscp.y: key value pairs now also allow strings (without spaces) to be not encapsulated into apostrophes (e.g. foo=bar instead of foo='bar') * src/linuxsampler.cpp: show on the console which TCP port the LSCP server is using
* src/linuxsampler.cpp: tidied up a bit, "initialization completed" message shown only after the server is actually running * src/testcases/: print the name of each test suite before running the tests of the suite, added first tests against the LSCP server using a socket connection to the LSCP server (tests for the following LSCP commands: "ADD CHANNEL", "GET CHANNELS", "REMOVE CHANNEL")
* src/linuxsampler.cpp: print out LinuxSampler version and show all registered MIDI input drivers * renamed class 'InputOutputDevice' -> 'Device'
forgot to change some things which was mandatory due to the recent
directory movements ('/src/audiodriver' -> '/src/drivers/audio',
'/src/mididriver' -> '/src/drivers/midi')
* src/common: added template class 'optional<>' which can be used e.g. as return type whenever a value might be returned, but don't has to; this template class pretty much acts like a pointer of the given type, but is much more safer than a simple pointer * src/audiodriver: added static class AudioDeviceFactory to create audio devices at runtime by using a string and to obtain driver informations of drivers at runtime, driver classes should simply use the macro REGISTER_AUDIO_OUTPUT_DRIVER(DriverName,DriverClass) in their cpp file to register the driver to LinuxSampler (no changes needed anymore in the LS code to add a new audio output driver) * src/drivers: added classes to dynamically manage driver parameters; there are two different kinds of parameters: parameters which are need to create a new device (DeviceCreationParameterX) used to e.g. create an audio output device or a MIDI input device and parameters which are only available at runtime, means when a device is already created (DeviceRuntimeParameterX) which will be e.g. used as audio channel parameters and MIDI port parameters * src/linuxsampler.cpp: all registered audio output drivers will be shown on the console on startup * src/network: implemented configuration of audio output devices via LSCP
forgot to update copyright header for 2004 for following files: src/linuxsampler.cpp, src/Sampler.h, src/Sampler.cpp, src/network/lscpscanner.cpp
* 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
removed unnecessary dependencies
* implemented parser for the LinuxSampler control protocol (LSCP) by using flex / bison (where src/network/lscp.l is the input file for lex / flex and src/network/lscp.y is the input file for yacc / bison), parser and scanner can be regenerated by 'make parser' * implemented LSCP network server (only single threaded so far), LSCP server will be launched if LinuxSampler was started with "--server" flag, implemented the following LSCP commands so far: "LOAD INSTRUMENT", "GET CHANNEL VOICE_COUNT", "GET CHANNEL STREAM_COUNT", "GET CHANNEL BUFFER_FILL", "SET CHANNEL VOLUME" and "RESET CHANNEL" * disk thread now started within the engine
* implemented bidirectional voice state transition, means voice state can
switch arbitrary times between 'Sustained'<-->'Released' within it's life
time, thus the release process of a voice can be cancelled
* src/eg_vca.cpp: extended envelope generator by additional states
('Attack_Hold', 'Decay_1' and 'Decay_2')
* applied patch from Vladimir Senkov which adds new command line parameters
('--jackout', '--alsaout' and '--samplerate')
* configure.in: fixed compiler warning
* Added JACK support: Audio rendering process is now callback based and independant of used audio output system. Interfaces to other audio output systems can be added by creating a class derived from abstract base class 'AudioIO' and embedding the new class into linuxsampler.cpp. * src/audiothread.cpp: applied patch from Vladimir Senkov which fixes hanging notes in conjunction with the sustain pedal
* added command line switch --volume to set the global volume level * added command line switch --inputclient to connect to an Alsa sequencer input client on startup (e.g. a MIDI port with a keyboard) * added command line switch --instrument to select an instrument in case the instrument file provides more than one instrument
* src/audioio.cpp: added support for Alsa 1.0.0 * src/audiothread.cpp: fixed several bugs in sustain pedal handling * src/diskthread.cpp: fixed several bugs which occured under extreme conditions (endless loop in audiothread, freezing the whole application, outage of available disk streams) * src/voice.cpp: fixed cubic interpolation (disabled by default; you can enable it by setting USE_LINEAR_INTERPOLATION to 0 in src/voice.h) * src/configure.in: added check for Alsa version
* src/voice.cpp: fixed bug which caused a voice not free it's disk stream when the whole sample was already played back and the voice was going to free itself resulting in outage of unused disk streams after a while * src/audioio.cpp: implemented automatic fallback to ALSA plughw when the sound card doesn't support one of the hardware parameters * src/linuxsampler.cpp: solved segmentation fault issue when receiving a SIGINT which was caused due to the fact that all threads entered the signal handler (there still seems to occur a segfault on some certain circumstances though) * added print out of all-time maximum usage of voices and streams and the current number of unused streams * src/thread.cpp: the StopThread() method will now block until the associated thread actually stopped it's execution
* src/gig.cpp: fixed bug in decompression algorithm which caused it not to detect the end of a stream and let the disk streams reload forever also resulting in strange sounds at the end of disk voices (concerned only playback of compressed gig files) * src/audiothread.cpp: deallocation of voices when they reached the end of playback (thus e.g. when sustain pedal is pressed and a disk stream reached it's end) * various endian corrections needed for non intel systems * introduced debug level, you can set the debug level and thus the verbosity of LinuxSampler in src/global.h
* src/audiothread.cpp, src/audiothread.h: added Sustain Pedal support implemented by postponing note-offs and leting multiple voices play on the same MIDI key. * added the RTELMemoryPool Class which is a fast RT-safe memory allocator and list manger * src/linuxsampler.cpp: added a voice and stream counter debug message
* transition from plain Makefile to autotools, source files moved to src/ * configure.in: added test for x86 architecture * src/voice.h: x86 specific asm optimization for double to int casts only if compiling for x86 architecture
| LinuxSampler Developers |
Powered by ViewCVS |