CVS log for linuxsampler/src/Sampler.cpp |
|
Help |
Request diff between arbitrary revisions
* bugfix: don't allow to change the audio output device, MIDI input device or MIDI input port when using a host plugin implementation (e.g VST, AU, DSSI, LV2) as this would go terribly wrong
* bugfix: don't allow to create or destroy audio devices and MIDI devices of host plugin implementations (e.g VST, AU, DSSI, LV2) on their own, as they only exist in the context of the plugin instance and would otherwise crash the application
* Windows: look for editor plugins and Fantasia using base directory of liblinuxsampler dll * lscp bugfix: SET CHANNEL MIDI_INPUT_TYPE didn't work with the MME driver
* 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
* notification events for stream/voice count statistics are now sent only when there are actual changes * use atomic_t for stream/voice count statistics
* added experimental support for running LinuxSampler as a DSSI, LV2 and VST plugin
* 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 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
* added new LSCP event "DEVICE_MIDI" which can be used by frontends to react on MIDI data arriving on certain MIDI input devices (so far only Note-On and Note-Off events are sent via this LSCP event) * bumped version to 0.5.1.4cvs
* added new LSCP event "CHANNEL_MIDI" which can be used by frontends to react on MIDI data arriving on certain sampler channels (so far only Note-On and Note-Off events are sent via this LSCP event) * bumped LSCP compliance version to 1.4 * bumped LS version to 0.5.1.3cvs
- 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)
* 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 a crash which occurs when reassigning the same engine on a sampler channel with connected MIDI device
* 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
* delete all MIDI instrument maps when a sampler-reset is issued (i.e. on a "RESET" LSCP command)
* Added new notification events for tracking audio/MIDI device changes, MIDI instrument map changes and MIDI instrument changes
- fixed crash occurring on certain LSCP scripts (Bug 39)
* 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)
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.
* 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
* fix of silly bug introduced in recent memory fix: all devices were destroyed instead of just the one asked for in the Sampler::Destroy functions
* fixed some memory management errors
Added new LSCP commands: GET TOTAL_VOICE_COUNT, GET TOTAL_VOICE_COUNT_MAX, SUBSCRIBE/UNSUBSCRIBE TOTAL_VOICE_COUNT
* Added CHANNEL_INFO notification when engine is assigned to sampler channel with no midi and audio device set (Fixes bug #22)
* update MIDI channel info on program change
* LSCP server: fixed LSCP event "CHANNEL_INFO" notification (e.g. did not notify on volume changes)
* Little LSCP API change: renamed events "CHANNELS" -> "CHANNEL_COUNT" and "INFO" -> "CHANNEL_INFO" to be more meaningful (patch by Grigor Iliev).
* Implemented MIDI program change as general, engine independant solution. The program number will determine the sampler channel to which the MIDI device will be connected to and the given MIDI channel defines on which MIDI channel that sampler channel should listen to. Also the program change will disconnect probably established connection from the previous program change event.
* 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)
* Added implementation for NOTIFY:CHANNELS event
* Fixes for engine reloading. Fixed streaming bugs in some cases only, most probably not all yet.
* src/drivers/midi/MidiInputDeviceAlsa.cpp: implemented port parameter "NAME" which now updates the registered ALSA seq port name as well, fixed port parameter "ALSA_SEQ_BINDINGS" to allow more than one binding * src/network/lscp.y: fixed symbol STRINGVAL (that is strings encapsulated into apostrophes) which didn't allow space characters * changed all driver names and driver paramaters to upper case * fixed typo in LSCP documentation (section 5.3.12, was: "SET MIDI_INPUT_PORT PARAMETER", should be: "SET MIDI_INPUT_PORT_PARAMETER")
* introduced and implemented new LSCP command "RESET" which resets the whole sampler instance * src/drivers/audio/AudioOutputDeviceAlsa.cpp: parameter 'card' now returns all available sound cards as possibility, added dependency to parameter 'card' to parameters 'fragments' and 'fragmentsize' * src/drivers/DeviceParameter.cpp: fixed return value(s) for classes 'DeviceCreationParameterString' and 'DeviceCreationParameterStrings' which returned the default value(s) not encapsulated into apostrophes * src/network/lscpserver.cpp: fixed implementation of LSCP commands "GET MIDI_INPUT_DRIVER_PARAMETER INFO" and "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"
* src/Sampler.cpp: changed sampler channel index allocation from consistent channel index allocation to incrementing channel index allocation, that is it doesn't fill channel index gaps anymore (to avoid race conditions) * implemented "LIST CHANNELS" LSCP command
forgot to change some things which was mandatory due to the recent
directory movements ('/src/audiodriver' -> '/src/drivers/audio',
'/src/mididriver' -> '/src/drivers/midi')
This goes with the previous commit. Forgot to commit this file previously.
* Unconsolidaded MIDI input related channel commands are back: SET CHANNEL MIDI_INPUT_DEVICE <chan> <midi-device> SET CHANNEL MIDI_INPUT_PORT <chan> <midi-port> SET CHANNEL MIDI_INPUT_CHANNEL <chan> <midi-chan> * Still useful for compability with legacy clients, an almost deprecated command gets re-implemented: SET CHANNEL MIDI_INPUT_TYPE <chan> <midi-driver> * Optional parameter list on MIDI input device creation fixed, but not quite fully effective yet: CREATE MIDI_INPUT_DEVICE <midi-driver> [<key>=<val>...]
* Updated parser, lscp server and sampler class for new MIDI_INPUT * Minor fixes (and major new bugs) here and there * Consolidated 3 SET CHANNEL MIDI_xxx commands into one: SET CHANNEL MIDI_INPUT
* 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
fix small make problem when jack is not installed
* src/Sampler.cpp: fixed 3 stupid but fatal bugs that left in the rush (in
method SamplerChannels(), CreateAudioOutputDevice() and
CreateMidiInputDevice())
* src/network/lscpserver.cpp: implemented LSCP command
'SET CHANNEL MIDI_INPUT_CHANNEL'
* src/Sampler.h: moved enums 'audio_output_type_t', 'midi_input_type_t'
and 'engine_type_t' into the respective base classes
('AudioOutputDevice', 'MidiInputDevice', 'Engine')
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
| LinuxSampler Developers |
Powered by ViewCVS |