CVS log for linuxsampler/src/Sampler.cpp |
|
Help |
Request diff between arbitrary revisions / Display revisions graphically
* 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 |