--- linuxsampler/trunk/Documentation/lscp.xml 2010/10/04 12:20:23 2137 +++ linuxsampler/trunk/Documentation/lscp.xml 2010/10/04 22:11:53 2138 @@ -34,7 +34,7 @@ schoenebeck at software minus engineering dot org - + LinuxSampler Developers LSCP @@ -3495,7 +3495,21 @@ channel 1 is routed to the channel 3 of the audio output device (see "SET FX_SEND AUDIO_OUTPUT_CHANNEL" - for details) + for details), if an internal send + effect is assigned to the effect + send, then this setting defines the + audio channel routing to that + effect instance respectively + + + SEND_EFFECT - + + destination send effect chain ID + and destination effect chain + position, separated by comma in the + form "<effect-chain>,<chain-pos>" + or "NONE" if there is no send effect + assigned to the effect send @@ -3578,7 +3592,9 @@ <audio-src> is the numerical ID of the effect send's audio channel which should be rerouted and <audio-dst> is the numerical ID of the audio channel of the selected audio output device where <audio-src> - should be routed to. + should be routed to. If an internal send effect is assigned + to the effect send, then this setting defines the audio + channel routing to that effect instance respectively. Note that effect sends can only route audio to the same audio output device as assigned to the effect send's sampler channel. Also note that an @@ -3621,6 +3637,98 @@ +
+ The front-end can (re-)assign a destination effect to an + effect send by sending the following command: + + + SET FX_SEND SEND_EFFECT <sampler-chan> <fx-send-id> <effect-chain> <chain-pos> + + + Where <sampler-chan> is the sampler channel number + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command, + <fx-send-id> reflects the numerical ID of the effect send entity + as returned by the "CREATE FX_SEND" + or "LIST FX_SENDS" command, + <effect-chain> by the numerical ID of the destination + effect chain as returned by the + "ADD SEND_EFFECT_CHAIN" + or + "LIST SEND_EFFECT_CHAINS" + command and <chain-pos> reflects the exact effect + chain position in the effect chain which hosts the actual + destination effect. + + Possible Answers: + + + "OK" - + + on success + + + "ERR:<error-code>:<error-message>" - + + in case it failed, providing an appropriate error code and error message + + + + + Example: + + + C: "SET FX_SEND SEND_EFFECT 0 0 2 5" + S: "OK" + + +
+ +
+ The front-end can (re-)assign a destination effect to an + effect send by sending the following command: + + + REMOVE FX_SEND SEND_EFFECT <sampler-chan> <fx-send-id> + + + Where <sampler-chan> is the sampler channel number + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command, + <fx-send-id> reflects the numerical ID of the effect send entity + as returned by the "CREATE FX_SEND" + or "LIST FX_SENDS" command. + + After the destination effect has been removed from the + effect send, the audio signal of the effect send will be + routed directly to the audio output device, according to the + audio channel routing setting of the effect send. + + + Possible Answers: + + + "OK" - + + on success + + + "ERR:<error-code>:<error-message>" - + + in case it failed, providing an appropriate error code and error message + + + + + Example: + + + C: "REMOVE FX_SEND SEND_EFFECT 0 0" + S: "OK" + + +
+
The front-end can alter the MIDI controller of an effect send entity by sending the following command: @@ -6554,6 +6662,1025 @@
+
+ Audio effects (e.g. reverb, delay, compression) can be + applied to the audio signals generated by the sampler. The + sampler usually provides a set of internal audio effects for + this task. The exact set of effects depends on the availability + of third party effect plugins installed on the system where the + sampler runs on. + At the moment only "send effects" are supported. Support for + "insert effects" and "master effects" is planned to be added at + a later point. + The following commands allow to retrieve the set of internal + effects available to the sampler, detailed informations about + those effects and to create and destroy instances of such + effects. After an instance of an effect is created, the effect + instance can be inserted into the audio signal path of the + sampler, e.g. as send effect. + The sampler allows to create an arbitrary amount of so called + send effect chains. Each effect chain can host an arbitrary + amount of effect instances. The output of the first effect + instance in an effect chain is fed to the input of the second + effect instance of the chain and so on. So effects in one chain + are processed sequentially. Send effect chains however are + processed in parallel to other send effect chains. Audio signals + of sampler channels are fed to send effects by creating FX sends + to the respective sampler channel and assigning a destination + send effect to that FX by using the + "SET FX_SEND SEND_EFFECT" + command. The latter allows to route the FX send to the beginning + of a send effect chain, as well as directly to any other + position of the send effect chain. + +
+ The front-end can retrieve the amount of internal + effects, available to the sampler by sending + the following command: + + + GET AVAILABLE_EFFECTS + + + + Possible Answers: + + + The sampler will answer by returning the current + number of effects available to the sampler. + + + + Examples: + + + C: "GET AVAILABLE_EFFECTS" + S: "129" + + +
+ +
+ The set of available internal effects can change at + runtime. The front-end can retrieve the list of internal + effects, available to the sampler by sending the following + command: + + + LIST AVAILABLE_EFFECTS + + + + Possible Answers: + + + The sampler will answer by returning a comma + separated list with numerical IDs of effects. Note: + the numercial ID of an effect is generated by the + sampler for the current moment. The numerical ID of + the same effect can change at runtime, e.g. when the + user requests a rescan of available effect plugins. + + + + Example: + + + C: "LIST AVAILABLE_EFFECTS" + S: "5,6,7,120,121,122,123,124" + + +
+ +
+ The front-end can ask for general informations about an + effect by sending the following command: + + + GET EFFECT INFO <effect-index> + + + Where <effect-index> is the numerical ID of an + effect as returned by the + "LIST AVAILABLE_EFFECTS" + command. + Possible Answers: + + + LinuxSampler will answer by sending a <CRLF> separated list. + Each answer line begins with the effect information + category name, followed by a colon and then a space + character <SP> and finally the info character + string to that effect information category. At the + moment the following categories are defined: + + + SYSTEM - + + name of the effect plugin system + the effect is based on + (e.g. "LADSPA") + + + MODULE - + + module of the effect plugin + system that contains this effect, + the module is usually the + dynamic-linked library (DLL) + filename of the effect plugin, + including full path (note that this + filename may contain + escape sequences) + + + NAME - + + character string defining the + unique name of the effect within its + module (note that the character + string may contain + escape sequences) + + + DESCRIPTION - + + human readable name of the + effect, intended to be displayed in + user interfaces (note that the + character string may contain + escape sequences) + + + + + + + The mentioned fields above don't have to be in particular order. + + Example: + + + C: "GET EFFECT INFO 121" + S: "SYSTEM: LADSPA" +    "MODULE: /usr/lib/ladspa/lowpass_iir_1891.so" +    "NAME: lowpass_iir" +    "DESCRIPTION: Glame Lowpass Filter" +    "." + + +
+ +
+ The front-end can spawn an instance of the desired + effect by sending the following command: + + + CREATE EFFECT_INSTANCE <effect-system> <module> <effect-name> + + + Where <effect-system> is the "SYSTEM" field, + <module> the "MODULE" field and <effect-name> + the "NAME" field as returned by the + "GET EFFECT INFO" + command. The filename of argument <module> and the + character string of argument <effect-name> may contain + escape sequences. + + The sampler will try to load the requested effect and to + create an instance of it. To allow loading the same effect + on a different machine, probably even running a completely + different operating system (e.g. Linux vs. Windows), the + sampler tries to match <module> "softly". That means + it first tries to find an effect that exactly matches the + given <module> argument. If there is no exact match, + the sampler will try to lower the restrictions on matching + the <module> argument more and more, e.g. by ignoring + upper / lower case differences and by ignoring the path of + the DLL filename and file extension. If there is still no + match at the end, the sampler will try to ignore the + <module> argument completely and as a last resort + search for an effect that only matches the given + <effect-system> and <effect-name> arguments. + + Possible Answers: + + + "OK[<effect-instance>]" - + + in case the effect instance was + successfully created, where + <effect-instance> is the numerical ID + of the new effect instance + + + "WRN:<warning-code>:<warning-message>" - + + in case the effect instance was spawned + successfully, but there are noteworthy + issue(s) related, providing an appropriate + warning code and warning message + + + "ERR:<error-code>:<error-message>" - + + if the effect could not be instantiated + + + + + + Examples: + + + C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'" + S: "OK[0]" + + +
+ +
+ The front-end can spawn an instance of the desired + effect by sending the following command: + + + CREATE EFFECT_INSTANCE <effect-index> + + + Where <effect-index> is the numerical ID of the + effect as returned by the + "LIST AVAILABLE_EFFECTS" + command. + + The sampler will try to load the requested effect and to + create an instance of it. + + Note: Since the numerical ID of a certain effect can + change at any time, you should not use this command in + LSCP files to restore a certain effect at a later time! To + store a sampler session including all its effects, use the + portable text-based + version of "CREATE EFFECT_INSTANCE" instead! This + allows to restore a sampler session with all its effects + also on other machines, possibly even running a completely + different operating system (e.g. Linux vs. Windows), with + different plugin directories or plugin DLL names. + + Possible Answers: + + + "OK[<effect-instance>]" - + + in case the effect instance was + successfully created, where + <effect-instance> is the numerical ID + of the new effect instance + + + "WRN:<warning-code>:<warning-message>" - + + in case the effect instance was spawned + successfully, but there are noteworthy + issue(s) related, providing an appropriate + warning code and warning message + + + "ERR:<error-code>:<error-message>" - + + if the effect could not be instantiated + + + + + + Examples: + + + C: "CREATE EFFECT_INSTANCE 72" + S: "OK[5]" + + +
+ +
+ The front-end can destroy an unusued effect instance and + thus freeing it from memory by sending the following command: + + + DESTROY EFFECT_INSTANCE <effect-instance> + + + Where <effect-instance> is the numerical ID of the + effect instance as returned by the + "CREATE EFFECT_INSTANCE" or + "LIST EFFECT_INSTANCES" + command. + + The effect instance can only be destroyed if it's not + used in any part of the sampler's audio signal path anymore. + If the effect instance is still in use somewhere, trying to + destroy the effect instance will result in an error + message. + + Possible Answers: + + + "OK" - + + in case the effect instance was successfully destroyed + + + "ERR:<error-code>:<error-message>" - + + in case it failed, providing an appropriate error code and + error message + + + + + + Examples: + + + C: "DESTROY EFFECT_INSTANCE 5" + S: "OK" + + +
+ +
+ The front-end can retrieve the current amount of effect + instances by sending the following command: + + + GET EFFECT_INSTANCES + + + + Possible Answers: + + + The sampler will answer by returning the current + number of effect instances created and not yet + destroyed in the current sampler session. + + + + Examples: + + + C: "GET EFFECT_INSTANCES" + S: "14" + + +
+ +
+ The front-end can retrieve the current list of effect + instances by sending the following command: + + + LIST EFFECT_INSTANCES + + + + Possible Answers: + + + The sampler will answer by returning a comma + separated list with numerical IDs of effects + instances. + + + + Example: + + + C: "LIST EFFECT_INSTANCES" + S: "9,11,14,15,16,17,25" + + +
+ +
+ The front-end can ask for the current informations about + a particular effect instance by sending the following command: + + + GET EFFECT_INSTANCE INFO <effect-instance> + + + Where <effect-instance> is the numerical ID of an + effect instance as returned by the + "CREATE EFFECT_INSTANCE" + or + "LIST EFFECT_INSTANCES" + command. + + Possible Answers: + + + LinuxSampler will answer by sending a <CRLF> separated list. + Each answer line begins with the information + category name, followed by a colon and then a space + character <SP> and finally the info character + string to that information category. At the + moment the following categories are defined: + + + SYSTEM - + + name of the effect plugin system + the effect is based on + (e.g. "LADSPA") + + + MODULE - + + module of the effect plugin + system that contains this effect, + the module is usually the + dynamic-linked library (DLL) + filename of the effect plugin, + including full path (note that this + filename may contain + escape sequences) + + + NAME - + + character string defining the + unique name of the effect within its + module (note that the character + string may contain + escape sequences) + + + DESCRIPTION - + + human readable name of the + effect, intended to be displayed in + user interfaces (note that the + character string may contain + escape sequences) + + + INPUT_CONTROLS - + + amount of input controls the + effect instance provides, to allow + controlling the effect parameters in + realtime + + + + + + + The mentioned fields above don't have to be in particular order. + + Example: + + + C: "GET EFFECT_INSTANCE INFO 3" + S: "SYSTEM: LADSPA" +    "MODULE: /usr/lib/ladspa/mod_delay_1419.so" +    "NAME: modDelay" +    "DESCRIPTION: Modulatable delay" +    "INPUT_CONTROLS: 1" +    "." + + +
+ +
+ Effects typically provide a certain set of effect + parameters which can be altered by the user in realtime + (e.g. depth of a reverb effect, duration of a delay effect, + dry / wet signal ratio). Those controllable effect parameters + are called "input controls". The front-end can ask for the + current informations of an effect instance's input control + by sending the following command: + + + GET EFFECT_INSTANCE_INPUT_CONTROL INFO <effect-instance> <input-control> + + + Where <effect-instance> is the numerical ID of an + effect instance as returned by the + "CREATE EFFECT_INSTANCE" + or + "LIST EFFECT_INSTANCES" + command and <input-control> is the index of the input + control within the numerical bounds as returned by the + "INPUT_CONTROLS" field of the + "GET EFFECT_INSTANCE INFO" + command. + + Possible Answers: + + + LinuxSampler will answer by sending a <CRLF> separated list. + Each answer line begins with the information + category name, followed by a colon and then a space + character <SP> and finally the info character + string to that information category. There are + information categories which are always returned, + independent of the respective effect parameter and + there are optional information categories + which are only shown for certain effect parameters. + At the moment the following categories are defined: + + + DESCRIPTION - + + (always returned) + human readable name of the + effect parameter, intended to be + displayed in user interfaces (note + that the character string may + contain escape sequences) + + + VALUE - + + + (always returned) + current (optional dotted) + floating point value of this effect + parameter + + + RANGE_MIN - + + + (optionally returned) + minimum allowed value for this + effect parameter + + + RANGE_MAX - + + + (optionally returned) + maximum allowed value for this + effect parameter + + + POSSIBILITIES - + + + (optionally returned) + comma separated list of + (optional dotted) floating point + numbers, reflecting the exact set of + possible values for this effect + parameter + + + DEFAULT - + + + (optionally returned) + default value of this effect + parameter + + + + + + + The mentioned fields above don't have to be in particular order. + + Example: + + + C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0" + S: "SYSTEM: LADSPA" +    "DESCRIPTION: Base delay (s)" +    "VALUE: 0.500" +    "RANGE_MIN: 0.000" +    "." + + +
+ +
+ The front-end can alter the current value of an effect + parameter by sending the following command: + + + SET EFFECT_INSTANCE_INPUT_CONTROL VALUE <effect-instance> <input-control> <value> + + + Where <effect-instance> is the numerical ID of the + effect instance as returned by the + "CREATE EFFECT_INSTANCE" or + "LIST EFFECT_INSTANCES" + command, <input-control> is the index of the input + control within the numerical bounds as returned by the + "INPUT_CONTROLS" field of the + "GET EFFECT_INSTANCE INFO" + command and <value> is the new (optional dotted) + floating point value for this effect parameter. + + Possible Answers: + + + "OK" - + + in case the effect was altered successfully + + + "ERR:<error-code>:<error-message>" - + + in case it failed, providing an appropriate error code and + error message + + + + + + Examples: + + + C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5" + S: "OK" + + +
+ +
+ The front-end can retrieve the current amount of send + effect chains of an audio output device by sending the + following command: + + + GET SEND_EFFECT_CHAINS <audio-device> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command. + + Possible Answers: + + + The sampler will answer by returning the current + number of send effect chains of the supplied audio + output device. + + + + Examples: + + + C: "GET SEND_EFFECT_CHAINS 0" + S: "4" + + +
+ +
+ The front-end can retrieve the current list of send + effect chains of an audio output device by sending the + following command: + + + LIST SEND_EFFECT_CHAINS <audio-device> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command. + + Possible Answers: + + + The sampler will answer by returning a comma + separated list with numerical IDs of send effect + chains of the supplied audio output device. + + + + + Examples: + + + C: "LIST SEND_EFFECT_CHAINS 0" + S: "3,4,7" + + +
+ +
+ The front-end can add a send effect chain by sending the + following command: + + + ADD SEND_EFFECT_CHAIN <audio-device> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command. + + Possible Answers: + + + "OK[<effect-chain>]" - + + in case the send effect chain was + added successfully, where + <effect-chain> is the numerical ID + of the new send effect chain + + + "ERR:<error-code>:<error-message>" - + + if the send effect chain could not be added + + + + + + Examples: + + + C: "ADD SEND_EFFECT_CHAIN 0" + S: "OK[2]" + + +
+ +
+ The front-end can remove a send effect chain by sending + the following command: + + + REMOVE SEND_EFFECT_CHAIN <audio-device> <effect-chain> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command and <effect-chain> by the numerical ID as + returned by the + "ADD SEND_EFFECT_CHAIN" + or + "LIST SEND_EFFECT_CHAINS" + command. + + Possible Answers: + + + "OK" - + + in case the send effect chain was + removed successfully + + + "ERR:<error-code>:<error-message>" - + + if the send effect chain could not be removed + + + + + + Examples: + + + C: "REMOVE SEND_EFFECT_CHAIN 0 2" + S: "OK" + + +
+ +
+ The front-end can ask for informations of a send effect + chain by sending the following command: + + + GET SEND_EFFECT_CHAIN INFO <audio-device> <effect-chain> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command and <effect-chain> by the numerical ID as + returned by the + "ADD SEND_EFFECT_CHAIN" + or + "LIST SEND_EFFECT_CHAINS" + command. + + Possible Answers: + + + LinuxSampler will answer by sending a <CRLF> separated list. + Each answer line begins with the information + category name, followed by a colon and then a space + character <SP> and finally the info character + string to that information category. + At the moment the following categories are defined: + + + EFFECT_COUNT - + + amount of effects in this send + effect chain + + + EFFECT_SEQUENCE - + + comma separated list of the + numerical IDs of the effect + instances in this send effect chain, + in the order as they are procssed in + the effect chain + + + + + + + The mentioned fields above don't have to be in particular order. + + Example: + + + C: "GET SEND_EFFECT_CHAIN INFO 0 2" + S: "EFFECT_COUNT: 3" +    "EFFECT_SEQUENCE: 31,4,7" +    "." + + +
+ +
+ The front-end can add an unused effect instance to the + end of a send effect chain by sending the following command: + + + APPEND SEND_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command and <effect-chain> by the numerical ID as + returned by the + "ADD SEND_EFFECT_CHAIN" + or + "LIST SEND_EFFECT_CHAINS" + command and <effect-instance> as returned by the + "CREATE EFFECT_INSTANCE" or + "LIST EFFECT_INSTANCES" + command. + Only unused effect instances can be added to the effect + chain. Trying to add an effect instance which is already in + use somewhere in the audio signal path of the sampler will + result in an error. + + Possible Answers: + + + "OK" - + + in case the effect instance was + added successfully to the chain + + + "ERR:<error-code>:<error-message>" - + + if the effect instance could not be added + + + + + + Examples: + + + C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38" + S: "OK" + + +
+ +
+ The front-end can add an unused effect instance to a + certain position of a send effect chain by sending the + following command: + + + INSERT SEND_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <chain-pos> <effect-instance> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command, <effect-chain> by the numerical ID as + returned by the + "ADD SEND_EFFECT_CHAIN" + or + "LIST SEND_EFFECT_CHAINS" + command, <effect-instance> as returned by the + "CREATE EFFECT_INSTANCE" or + "LIST EFFECT_INSTANCES" + command and <chain-pos> the exact position of the + effect chain where the supplied effect shall be inserted + to. + Only unused effect instances can be added to the effect + chain. Trying to add an effect instance which is already in + use somewhere in the audio signal path of the sampler will + result in an error. + + Possible Answers: + + + "OK" - + + in case the effect instance was + added successfully to the chain + + + "ERR:<error-code>:<error-message>" - + + if the effect instance could not be added + + + + + + Examples: + + + C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38" + S: "OK" + + +
+ +
+ The front-end can remove an effect instance from a + certain position of a send effect chain by sending the + following command: + + + REMOVE SEND_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <chain-pos> + + + Where <audio-device> should be replaced by the + numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command, <effect-chain> by the numerical ID as + returned by the + "ADD SEND_EFFECT_CHAIN" + or + "LIST SEND_EFFECT_CHAINS" + command and <chain-pos> the exact position of the + effect instance to be removed from the effect chain. + + Possible Answers: + + + "OK" - + + in case the effect instance was + removed successfully + + + "ERR:<error-code>:<error-message>" - + + if the effect instance could not be removed + + + + + + Examples: + + + C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4" + S: "OK" + + +
+ +
@@ -7520,6 +8647,9 @@ "GET FILE INSTRUMENTS" "LIST FILE INSTRUMENTS" "GET FILE INSTRUMENT INFO" + "GET EFFECT INFO" + "GET EFFECT_INSTANCE INFO" + "CREATE EFFECT_INSTANCE" Note that the forward slash character ('/') has a special meaning in filename / path based arguments: it acts as separator of the nodes in @@ -7564,6 +8694,9 @@ "SET DB_INSTRUMENT NAME" "SET DB_INSTRUMENT DESCRIPTION" "FIND DB_INSTRUMENTS" + "GET EFFECT INFO" + "GET EFFECT_INSTANCE INFO" + "CREATE EFFECT_INSTANCE" Please note that these lists are manually maintained. If you find a command that also supports escape sequences we forgot to