Parent Directory
|
Revision Log
Links to HEAD: | (view) (download) (annotate) |
Sticky Revision: |
engine stats (amount and type of available sampler engines) are not hard coded anymore
just some refactoring work: - renamed class LinuxSamplerException -> Exception - encapsulated LS API relevant files into LS namespace - removed unnecessary header inclusions
* fixed concurrency problems between the main thread doing lscp notifications and the lscp thread * bug fix: the LFOs were not properly initialized
* fixed some invalid iterator errors
ifdef MSG_NOSIGNAL
* fixed the notification messages delay due to lack of network activity (fixes bug #26)
Added new LSCP commands: GET TOTAL_VOICE_COUNT, GET TOTAL_VOICE_COUNT_MAX, SUBSCRIBE/UNSUBSCRIBE TOTAL_VOICE_COUNT
* Fixed app exit on Broken pipe error (Fixes bug #20)
* support for muting sampler channels and solo mode of the same, two new LSCP commands ("SET CHANNEL MUTE" and "SET CHANNEL SOLO") and two new fields ("MUTE" and "SOLO") for command "GET CHANNEL INFO" were introduced for this (patch by Grigor Iliev, a bit adjusted)
* 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
* added cmdline options for lscp address and port
* LSCP server: fixed LSCP event "CHANNEL_INFO" notification (e.g. did not notify on volume changes)
* fixed some crashs in LSCP server (patch by Grigor Iliev, fixes #19)
* 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)
added field "PROTOCOL_VERSION" to LSCP command "GET SERVER INFO"
* (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
* Little LSCP API change: renamed events "CHANNELS" -> "CHANNEL_COUNT" and "INFO" -> "CHANNEL_INFO" to be more meaningful (patch by Grigor Iliev).
* [bug #9] Fixed for a LSCP command syntax convention consistency, regarding the enumeration of available sampler engines, Audio and MIDI drivers; this has affected the semantics of the following commands: GET AVAILABLE_ENGINES GET AVAILABLE_AUDIO_DRIVERS GET AVAILABLE_MIDI_DRIVERS which are now returning an integer count of engines and drivers, respectively, while the following new commands are now being introduced: LIST AVAILABLE_ENGINES LIST AVAILABLE_AUDIO_DRIVERS LIST AVAILABLE_MIDI_DRIVERS taking on the previous functionality, returning a comma separated list of names. * LinuxSampler version bumped to 0.3.1.
* 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)
* 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)
* fixed build failure if libsqlite3 is not installed
removed debug from previous checkin.
* Added first cut of instrument database query support.
* fixed possibility that memory got not locked * immediately set instrument status when calling LOAD INSTUMENT NON_MODAL
* lscpserver: we now only use one instrument loader thread; commands for loading instruments in the background wait in a queue to be processed one by one to avoid possible race conditions and to improve I/O efficiency * fixed possible race condition while streaming with multiple disk threads by using an own decompression buffer for each disk thread * libgig: fixed some memory leaks caused by non virtual base constructors
* Added INSTRUMENT_NAME to GET CHANNEL INFO command result set
* JACK audio driver: added device creation parameter 'NAME' which can be used to assign an arbitrary name to the JACK client, it's now possible to create multiple JACK audio output devices simultaniously for LS * src/network/lscpserver.cpp: fixed little bug in 'SET CHANNEL AUDIO_OUTPUT_CHANNEL' (altering of audio routing) implementation, cleanup of error messages
* Updated implementation for real time notify messages: VOICE_COUNT, STREAM_COUNT, BUFFER_FILL
* Fix for a core. SET CHANNEL AUDIO_OUTPUT_CHANNEL needs to check if audio output device exists.
* MidiInputPort: fixed dispatching of MIDI events to engines which are listening to all MIDI channels * switched MIDI channel indexing to low level indexing (means 0..15 now)
* ALSA audio driver: bugfix in device parameter 'CARD' which caused an error message if used in conjunction with 'CREATE AUDIO_OUTPUT_DEVICE' LSCP command * JACK audio driver: fixed minor JACK port name issue and the device was not activated by default on creation which caused it to render solely silence * src/network/lscpserver.cpp: retry to bind socket for 3 minutes if bind failed
* ALSA MIDI driver: create one MIDI port by default, implemented parameter info for parameter 'ALSA_SEQ_BINDINGS' * ALSA audio driver: implemented parameter info for driver parameters 'FRAGMENTS' and 'FRAGMENTSIZE' * JACK audio driver: fixed creation of channels on device creation, channel parameter 'NAME' now actually updates the respective JACK port name, implemented channel parameter 'JACK_BINDINGS' (as well as its parameter info) * src/network/lscpserver.cpp: fixed commands "GET MIDI_INPUT_DRIVER_PARAMETER INFO" and "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO", fixed backward compatibility for "SET AUDIO_OUTPUT_TYPE" and "SET MIDI_INPUT_TYPE" commands * src/networ/lscp.y: added comma character (',') to symbol 'char' * src/drivers/DeviceParameter.cpp: fixed methods RangeMin(), RangeMax() in class DeviceCreationParameterInt which returned wrong values
* set default volume to 1.0 in Gigasampler engine (was 0.0) * implemented "SET CHANNEL AUDIO_OUTPUT_CHANNEL" LSCP command * fixed "GET ENGINE INFO" LSCP command * fixed "GET CHANNEL INFO" LSCP command * src/network/lscp.y: fixed 'stringval' rule (returned string with formal apostrophes), fixed 'dotnum' rule (ignored position after decimal point)
* bug fixes in LSCP server (returned '1'/'0' instead of 'true'/'false' for binary fields, spuriously created new elements in maps while trying to find map members)
* 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")
* completely removed the lex scanner and replaced it by pure yacc rules for all terminal symbols (that is command keywords and variables) to avoid misunderstandings while parsing (e.g. recognition of command keywords in string arguments) * src/drivers/audio/AudioChannel.cpp: changed channel parameter 'Name' to 'NAME' as defined in the LSCP documentation
* 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/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")
* implemented "SET ECHO" LSCP command
* 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')
* Get rid of the timeout on select()
* GET MIDI_INPUT_PORT_PARAMETER INFO command
* Added MISCELLANEOUS event to help debugging client/server interaction. It spits out every line received by the server.
* moved ToString to common * Implemented handling of multiple connections * Implemented guts for event subscription/unsubscription * Illustrated event notification sending by sending MISC events when connections are established or terminated.
* 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
* SET CHANNEL AUDIO_OUTPUT_TYPE <chan> <driver> command is back! creates an audio output device instance of the given driver type ('Jack' or 'Alsa') with default parameters if none exists, otherwise it just picks the first available device and assign it to the intended sampler channel. * The AudioOutputDevice class get's a new pure virtual method, Driver(), which is implemented on both of the existing inherited classes, AudioOutputDeviceAlsa and AudioOutputDeviceJack, with the sole purpose to return the driver type name as a String ('Alsa' and 'Jack', respectively). * The quoting on the filename argument for the LOAD INSTRUMENT command has been made optional; you can have both ways, with single quotes or none, keeping compability with older LSCP specification. * An additional sanity check is made on LOAD INSTRUMENT, whether the sampler channel has an audio output device assigned, thus preventing the server from crashing on instrument file load. * The GET AUDIO_OUTPUT_DEVICE INFO now includes the missing 'driver' item, as predicted by the draft protocol document.
* Added implementation for SET CHANNEL AUDIO_OUTPUT_DEVICE
* Fix for CREATE_AUDIO_OUTPUT_DEVICE with all default params * Fix for GET AUDIO_OUTPUT_DEVICES resultset * Support for BACKGROUND loading
* Changed LSCPServer::LoadInstrument() signature, which adds a new boolean argument (bool bBackground) where the loading mode maybe selected, whether modal (the default), or modeless (in background).
* Update parser to comply with the latest spec
* Load Instrument patch applied; this patch makes the LOAD INSTRUMENT command to return immediately, almost/always with an OK response, while spawning the proper instrument file loading in the background. * New INSTRUMENT_STATUS field on GET CHANNEL INFO result set; the instrument status value holds the load progress percentage if positive, otherwise a negative value is evidence of a load exception error. * VERSION is now set to 0.2.
Small change to generate "NA" resultset using resultset class.
* 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
typo in case statement (while doing string replace forgot to add breaks)
* Error handling in resultset class, rewrite lscpserver to use resultset.
Updated GET CHANNEL INFO to send uninitialized params with "NONE"/0
* Added LSCP command GET CHANNEL INFO
* Fixed SET CHANNEL MIDI_INPUT_CHANNEL lscp command.
* Adding LSCP command SET CHANNEL MIDI_INPUT_PORT. First attempt.
* 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')
updated copyright header for 2004
* 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
* 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
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 |