Parent Directory
|
Revision Log
Links to HEAD: | (view) (download) (annotate) |
Sticky Revision: |
* fix for building with bison 3.0 (#202)
* Added LSCP commands "SUBSCRIBE EFFECT_INSTANCE_COUNT", "SUBSCRIBE EFFECT_INSTANCE_INFO", "SUBSCRIBE SEND_EFFECT_CHAIN_COUNT", "SUBSCRIBE SEND_EFFECT_CHAIN_INFO"
* raised limit of program change queue from 100 to 512 (as suggested by Alex Stone) * removed limit of maximum amount of MIDI ports per MIDI device, since there is no reason for this limit * minor syntax simplification regarding 2 new LSCP commands: changed "SET FX_SEND SEND_EFFECT"" to "SET FX_SEND EFFECT" and changed "REMOVE FX_SEND SEND_EFFECT"" to "REMOVE FX_SEND EFFECT", also changed the respective category field of command "GET FX_SEND INFO" from "SEND_EFFECT" to "EFFECT" * updated LSCP specification document * bumped version to 1.0.0.cvs10
* revised previously added new LSCP commands regarding effect handling: renamed "master effects" to "send effects", since this is the actual correct common term for those effects * also corrected the names regarding "send effects" in the respective methods of the "FxSsnd" class and "AudioOutputDevice" class of the sampler's C++ API, the old methods are still available but marked as deprecated and scheduled for removal * added LSCP command "SET FX_SEND SEND_EFFECT <sampler_channel> <fx_send_id> <effect_chain> <chain_pos>" * added LSCP command "REMOVE FX_SEND SEND_EFFECT <sampler_channel> <fx_send_id>" * added a list of common known LADSPA paths (for Windows and POSIX) which will be automatically checked for being used as LADSPA plugin directory (if the user did not set the LADSPA_PATH environment variable explicitly) * bumped version to 1.0.0.cvs8
* added and implemented a set of 19 new LSCP commands for controlling internal effects: - added LSCP command "GET AVAILABLE_EFFECTS" - added LSCP command "LIST AVAILABLE_EFFECTS" - added LSCP command "GET EFFECT INFO <effect-index>" - added LSCP command "CREATE EFFECT_INSTANCE <effect-index>" - added LSCP command "CREATE EFFECT_INSTANCE <effect-system> <module> <effect-name>" - added LSCP command "DESTROY EFFECT_INSTANCE <effect-instance>" - added LSCP command "GET EFFECT_INSTANCES" - added LSCP command "LIST EFFECT_INSTANCES" - added LSCP command "GET EFFECT_INSTANCE INFO <effect-instance>" - added LSCP command "GET EFFECT_INSTANCE_INPUT_CONTROL INFO <effect-instance> <input-control>" - added LSCP command "SET EFFECT_INSTANCE_INPUT_CONTROL <effect-instance> <input-control> <value>" - added LSCP command "GET MASTER_EFFECT_CHAINS <audio-device>" - added LSCP command "LIST MASTER_EFFECT_CHAINS <audio-device>" - added LSCP command "ADD MASTER_EFFECT_CHAIN <audio-device>" - added LSCP command "REMOVE MASTER_EFFECT_CHAIN <audio-device> <effect-chain>" - added LSCP command "GET MASTER_EFFECT_CHAIN INFO <audio-device> <effect-chain>" - added LSCP command "APPEND MASTER_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance>" - added LSCP command "INSERT MASTER_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance> <effect-chain-pos>" - added LSCP command "REMOVE MASTER_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance>" * bumped version to 1.0.0.cvs7
* fixes for building with newer MinGW versions * fix for building with bison 2.4 (#111) * fix for crash when running gigedit as a plugin
* maximum voices and disk streams can now be altered at runtime (added new LSCP commands "GET VOICES", "SET VOICES", "GET STREAMS", "SET STREAMS" and accordingly new LSCP events "GLOBAL_INFO:VOICES" and "GLOBAL_INFO:STREAMS") * bumped version to 0.5.1.8cvs
* Implemented option for adding instruments in separate directories in the instruments database (patch by Chris Cherrett & Andrew Williams, a bit adjusted)
* added new LSCP command: SEND CHANNEL MIDI_DATA which can be used by frontends to send MIDI messages to specific sampler channel * added two additional fields to GET FILE INSTRUMENT INFO command - KEY_BINDINGS and KEYSWITCH_BINDINGS * InstrumentResourceManager::GetInstrumentInfo now scans the specified instrument file only if it is not loaded in the instrument manager
* 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
* added support for handling lost files in the instruments database * added new LSCP commands: FIND LOST DB_INSTRUMENT_FILES and SET DB_INSTRUMENT FILE_PATH
* 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)
* LSCP: added new LSCP commands: "GET FILE INSTRUMENTS <file>", "LIST FILE INSTRUMENTS <file>" and "GET FILE INSTRUMENT INFO <file> <index>" for retrieving informations about an arbitrary instrument file on the system where the sampler is running on (LSCP specs yet to be updated!) * bumped version to 0.5.0.1cvs * bumped LSCP compliance to LSCP version 1.3
* win32 port work in progress: * - implemented win32 support in the following classes: * Thread, Condition, Mutex, Path, LscpServer * - lscp.y use DONTCARE instead of VOID * (a win32 symbol defined) * - completed win32 editor plugin loader
* LSCP server: added support for Windows style path / filenames, however with forward slash path separators instead of backslash (i.e. "C:/foo/bar.gig")
* slightly renamed recently added "EDIT INSTRUMENT <sampler-chan>" LSCP command to "EDIT CHANNEL INSTRUMENT <sampler-chan>"
* the following LSCP command return escape sequences in at least one of their LSCP response fields: "GET ENGINE INFO", "GET CHANNEL INFO", "GET MIDI_INSTRUMENT INFO", "GET MIDI_INSTRUMENT_MAP INFO", "GET FX_SEND INFO", "GET SERVER INFO" * listed all LSCP commands in the LSCP specs which may use escape sequences in at least on of their response fields * hide instrument editor related debug messages in the gig::Engine when using the default debug level (which is 1) * bumped version to 0.4.0.8cvs
* the following LSCP commands now also support escape sequences for at least one of their text-based arguments (i.e. name, description): "ADD MIDI_INSTRUMENT_MAP", "SET MIDI_INSTRUMENT_MAP NAME", "SET FX_SEND NAME", "CREATE FX_SEND" * the LSCP spec doc now lists all LSCP commands which support escape sequences as one of their arguments
* The <name> argument of MAP MIDI_INSTRUMENT command now supports escape sequences
* bugfix in LSCP parser: all comma separated lists of strings were treated as being one string containing commas, this affected device parameter LSCP commands (fixes #57) * minor code refactoring regarding DB paths in src/network/lscp.y
* added new LSCP command: FORMAT INSTRUMENTS_DB
* made sure that LSCP syntax is not affected by gigedit locale settings
* added support for escape sequences to the instruments database
* bugfix: files with slash in their path or filename could not be loaded
* bugfix: The previous bindings were not been disconnected when altering the ALSA_SEQ_BINDINGS parameter. * Introduced a NONE keyword for unsubscribing from all bindings (e.g. SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE).
- minor bugfix regarding recent commit batch
* LSCP server returns verbose syntax errors (line and column where syntax error occured, the unexpected character and the actually expected, possible character(s), the latter only if less than 5 possibilities)
* filename arguments in LSCP commands now allow to use escape sequences, that is directly literal as one of: \', \", \\, \n, \r, \f, \t, \v, or as octal ASCII code value like \132, or as hex ASCII code value like \xf2) (fixes bug #24) * parser now supports extended ASCII character set (up to ASCII code 255, i.e. includes now umlauts and accents) * LSCP parser C++ files are now automatically regenerated when yacc input source file (lscp.y) was modified
* 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 instrument scanning in background and commands for monitoring the scan progress
* updated instruments db support * added transactions for improving the db performance * added commands for copying and finding instruments and directories
* Implemented instruments database
* Added new LSCP command - SET FX_SEND NAME * The default map is now the first available map
* Added new notification events for tracking effect send changes and global volume changes
* by default now all "MAP MIDI_INSTRUMENT" LSCP commands (also the "PERSISTENT" ones) block until the respective mapping is completely established in the sampler, added a new argument though to allow explicit mapping in the background ("MAP MIDI_INSTRUMENT NON_MODAL") * LSCP documentation updated
* extended response of LSCP command "GET FX_SEND INFO" to return the FX Send's MIDI controller and current send level and added two new LSCP commands "SET FX_SEND MIDI_CONTROLLER" and "SET FX_SEND LEVEL" respectively
* 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)
* Added new notification events for tracking audio/MIDI device changes, MIDI instrument map changes and MIDI instrument changes
* revised and extended MIDI instrument mapping feature to allow managing arbitrary amount of maps and assigning each sampler channel individually to one map (this commit batch includes LSCP spec document update and respective implementation on LS side)
* implemented MIDI instrument mapping according to latest LSCP draft
* 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
Added new LSCP commands: GET TOTAL_VOICE_COUNT, GET TOTAL_VOICE_COUNT_MAX, SUBSCRIBE/UNSUBSCRIBE TOTAL_VOICE_COUNT
* 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)
command syntax (BNF) of LSCP specification is now auto generated
* (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).
* tiny fix in LSCP parser; returned prefix "Err" instead of "ERR" on syntax errors (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.
* JACK audio driver: fixed handling of channel parameter 'JACK_BINDINGS' * fixed parser bug of multiplicity parameters
* 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 first cut of instrument database query support.
* 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)
* src/network/lscp.y: fixed symbol 'midi_input_channel_index' to allow keyword 'ALL' for the respective LSCP commands
* 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)
* 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
* 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
* 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"
* 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
* GET MIDI_INPUT_PORT_PARAMETER INFO command
* 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.
* LOAD INSTRUMENT NON_MODAL
* Fix for CREATE_AUDIO_OUTPUT_DEVICE with all default params * Fix for GET AUDIO_OUTPUT_DEVICES resultset * Support for BACKGROUND loading
* Update parser to comply with the latest spec
* 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
* LSCP allows now comment lines, that is lines starting with a hash ('#') character * src/engines/gig/Voice.cpp: fixed "SET CHANNEL VOLUME" bug
* 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 |