--- linuxsampler/trunk/Documentation/lscp.xml 2004/08/21 11:35:50 222 +++ linuxsampler/trunk/Documentation/lscp.xml 2005/05/23 17:41:34 571 @@ -31,16 +31,16 @@ schoenebeck at software minus engineering dot org - + LinuxSampler Developers LSCP The LinuxSampler Control Protocol (LSCP) is an application-level protocol primarily intended for local and - remote controlling the LinuxSampler main application, which is a - sophisticated console application essentially playing back audio - samples and manipulating the samples in real time to certain - extent. + remote controlling the LinuxSampler backend application, which is a + sophisticated server-like console application essentially playing + back audio samples and manipulating the samples in real time to + certain extent. @@ -112,6 +112,43 @@ return and line feed characters respectively. +
+ LSCP will certainly be extended and enhanced by-and-by. Each official + release of the LSCP specification will be tagged with a unique version + tuple. The version tuple consists at least of a major and minor version + number like: + + + + "1.2" + + + + In this example the major version number would be "1" and the minor + version number would be "2". Note that the version tuple might also + have more than two elements. The major version number defines a + group of backward compatible versions. That means a frontend is + compatible to the connected sampler if and only if the LSCP versions + to which each of the two parties complies to, match both of the + following rule: + + Compatibility: + + + The frontend's LSCP major version and the sampler's LSCP + major version are exactly equal. + The frontend's LSCP minor version is less or equal than + the sampler's LSCP minor version. + + + + Compatibility can only be claimed if both rules are true. + The frontend can use the + "GET SERVER INFO" command to + get the version of the LSCP specification the sampler complies with. + +
+
LinuxSampler is a so called software sampler application capable to playback audio samples from a computer's Random @@ -124,7 +161,7 @@ arbitrary MIDI input method and arbitrary MIDI channel (e.g. sampler channel 17 could be connected to an ALSA sequencer device 64:0 and listening to MIDI channel 1 there). Each sampler - engine will be assigned an own instance of one of the available + channel will be associated with an instance of one of the available sampler engines (e.g. GigEngine, DLSEngine). The audio output of each sampler channel can be routed to an arbitrary audio output method (ALSA / JACK) and an arbitrary audio output channel @@ -154,7 +191,8 @@ methods will be described next.
- This simple communication method is based on TCP. The + This simple communication method is based on + TCP. The front-end application establishes a TCP connection to the LinuxSampler instance on a certain host system. Then the front-end application will send certain ASCII based commands @@ -216,6 +254,25 @@ <warning-message> and <error-message> are human readable descriptions of the warning or error respectively. + Examples: + + + C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0 + S: "WRN:32:This is a 24 bit patch which is not supported natively yet." + + + + + C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR" + S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'." + + + + + C: "GET AUDIO_OUTPUT_DEVICE INFO 123456" + S: "ERR:9:There is no audio output device with index 123456." + + Normal result sets could be: @@ -234,6 +291,13 @@ "OK" + Example: + + + C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4" + S: "OK" + + Single line result sets are command specific. One example of a single line result set is an empty line. Multi-line result sets are command specific and may @@ -244,6 +308,20 @@ "." + Example: + + + C: "GET AUDIO_OUTPUT_DEVICE INFO 0" + S: "DRIVER: ALSA" +    "CHANNELS: 2" +    "SAMPLERATE: 44100" +    "ACTIVE: true" +    "FRAGMENTS: 2" +    "FRAGMENTSIZE: 128" +    "CARD: '0,0'" +    "." + + In addition to above mentioned formats, warnings and empty result sets MAY be indexed. In this case, they have the following formats respectively: @@ -258,6 +336,19 @@ related to or other integer value. Each line of the result set MUST end with <CRLF>. + Examples: + + + C: "ADD CHANNEL" + S: "OK[12]" + + + + + C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000" + S: "WRN[0]:32:Sample rate not supported, using 44100 instead." + +
@@ -326,7 +417,7 @@ where <event-id> will be replace by the respective event that client is no longer interested in receiving. For - a list of supported events see chapter 6. + a list of supported events see . Example: the fill states of disk stream buffers have changed on sampler channel 4 and the LinuxSampler instance @@ -375,7 +466,8 @@
This chapter will describe the available control commands that can be sent on the TCP connection in detail. Some certain - commands (e.g. "GET CHANNEL INFO" or "GET ENGINE INFO") lead to + commands (e.g. "GET CHANNEL INFO" + or "GET ENGINE INFO") lead to multiple-line responses. In this case LinuxSampler signals the end of the response by a "." (single dot) line. @@ -419,13 +511,38 @@ what parameters drivers are offering, how to retrieve their possible values, etc. -
+
+ Use the following command to get the number of + audio output drivers currently available for the + LinuxSampler instance: + + + GET AVAILABLE_AUDIO_OUTPUT_DRIVERS + + + Possible Answers: + + + LinuxSampler will answer by sending the + number of audio output drivers. + + + Example: + + + C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS" + S: "2" + + +
+ +
Use the following command to list all audio output drivers currently available for the LinuxSampler instance: - GET AVAILABLE_AUDIO_OUTPUT_DRIVERS + LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS Possible Answers: @@ -439,14 +556,14 @@ Example: - C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS" + C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" S: "ALSA,JACK"
+ output driver" anchor="GET AUDIO_OUTPUT_DRIVER INFO"> Use the following command to get detailed information about a specific audio output driver: @@ -456,8 +573,8 @@ Where <audio-output-driver> is the name of the - audio output driver, returned by the "GET - AVAILABLE_AUDIO_OUTPUT_DRIVERS" command. + audio output driver, returned by the + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" command. Possible Answers: @@ -519,7 +636,7 @@
+ output driver parameter" anchor="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"> Use the following command to get detailed information about a specific audio output driver parameter: @@ -528,9 +645,11 @@ Where <audio> is the name of the audio output - driver as returned by the "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS" command, + driver as returned by the + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" command, <prm> a specific parameter name for which information should be - obtained (as returned by the "GET AUDIO_OUTPUT_DRIVER INFO" command) and + obtained (as returned by the + "GET AUDIO_OUTPUT_DRIVER INFO" command) and <deplist> is an optional list of parameters on which the sought parameter <prm> depends on, <deplist> is a list of key-value pairs in form of "key1=val1 key2=val2 ...", where character string values @@ -542,7 +661,7 @@ LinuxSampler will answer by sending a - &lz;CRLF> separated list. + <CRLF> separated list. Each answer line begins with the information category name followed by a colon and then a space character <SP> and finally @@ -577,8 +696,8 @@ either true or false, defines if this parameter must be given when the device is to be created with the - 'CREATE AUDIO_OUTPUT_DEVICE' command - (always returned, no matter which driver parameter) + 'CREATE AUDIO_OUTPUT_DEVICE' + command (always returned, no matter which driver parameter) @@ -586,8 +705,8 @@ either true or false, if false then this parameter can be changed at any time, once the device is created by - the 'CREATE AUDIO_OUTPUT_DEVICE' command - (always returned, no matter which driver parameter) + the 'CREATE AUDIO_OUTPUT_DEVICE' + command (always returned, no matter which driver parameter) @@ -602,7 +721,7 @@ DEPENDS - - comma separated list of paramters this parameter depends + comma separated list of parameters this parameter depends on, means the values for fields 'DEFAULT', 'RANGE_MIN', 'RANGE_MAX' and 'POSSIBILITIES' might depend on these listed parameters, for example assuming that an audio @@ -619,7 +738,8 @@ reflects the default value for this parameter which is used when the device is created and not explicitly - given with the 'CREATE AUDIO_OUTPUT_DEVICE' command, + given with the + 'CREATE AUDIO_OUTPUT_DEVICE' command, in case of MULTIPLCITY=true, this is a comma separated list, that's why character strings are encapsulated into apostrophes (') @@ -647,7 +767,7 @@ - POSSIBILITES - + POSSIBILITIES - comma separated list of possible values for this parameter, character strings are encapsulated into @@ -670,7 +790,7 @@    "FIX: true"    "MULTIPLICITY: false"    "DEFAULT: '0,0'" -    "POSSIBILITES: '0,0','1,0','2,0'" +    "POSSIBILITIES: '0,0','1,0','2,0'"    "." @@ -704,7 +824,7 @@
-
+
Use the following command to create a new audio output device for the desired audio output system: @@ -714,7 +834,9 @@ Where <audio-output-driver> should be replaced by the desired audio - output system and <param-list> by an optional list of driver + output system as returned by the + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" + command and <param-list> by an optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where character string values should be encapsulated into apostrophes ('). Note that there might be drivers which require parameter(s) to be @@ -762,7 +884,7 @@
-
+
Use the following command to destroy a created output device: @@ -770,8 +892,10 @@ Where <device-id> should be replaced by the numerical ID of the - audio output device as given by the "CREATE AUDIO_OUTPUT_DEVICE" or - "GET AUDIO_OUTPUT_DEVICES" command. + audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command. Possible Answers: @@ -806,7 +930,7 @@
-
+
Use the following command to count all created audio output devices: @@ -829,7 +953,7 @@
-
+
Use the following command to list all created audio output devices: @@ -852,16 +976,16 @@
-
+
Use the following command to get current settings of a specific, created audio output device: GET AUDIO_OUTPUT_DEVICE INFO <device-id> - Where <device-id> should be replaced by be numerical ID + Where <device-id> should be replaced by numerical ID of the audio output device as e.g. returned by the - "GET AUDIO_OUTPUT_DEVICES" command. + "LIST AUDIO_OUTPUT_DEVICES" command. Possible Answers: LinuxSampler will answer by sending a <CRLF> separated list. Each answer line begins with the information category name @@ -875,7 +999,9 @@ DRIVER - identifier of the used audio output driver, as also - returned by the "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS" + returned by the + + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" command @@ -904,8 +1030,8 @@ order. The fields above are only those fields which are returned by all audio output devices. Every audio output driver might have its own, additional driver specific parameters (see - "GET AUDIO_OUTPUT_DRIVER INFO" command) which are also returned - by this command. + ) + which are also returned by this command. Example: @@ -923,7 +1049,7 @@
-
+
Use the following command to alter a specific setting of a created audio output device: @@ -931,7 +1057,10 @@ Where <device-id> should be replaced by the numerical ID of the - audio output device, <key> by the name of the parameter to change + audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command, <key> by the name of the parameter to change and <value> by the new value for this parameter. Possible Answers: @@ -965,15 +1094,17 @@
-
+
Use the following command to get information about an audio channel: GET AUDIO_OUTPUT_CHANNEL INFO <device-id> <audio-chan> - Where <device-id> is the numerical ID of the audio output device - and <audio-chan> the audio channel number. + Where <device-id> is the numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command and <audio-chan> the audio channel number. Possible Answers: @@ -1003,7 +1134,8 @@ MIX_CHANNEL_DESTINATION - - reflects the real audio channel (of the same audio + numerical ID (positive integer including 0) + which reflects the real audio channel (of the same audio output device) this mix channel refers to, means where the audio signal actually will be routed / added to (only returned in case the audio channel is mix channel) @@ -1062,7 +1194,7 @@
-
+
Use the following command to get detailed information about specific audio channel parameter: @@ -1071,10 +1203,13 @@ - Where <dev-id> is the numerical ID of the audio output device as returned - by the "GET AUDIO_OUTPUT_DEVICES" command, <chan> the audio channel number + Where <dev-id> is the numerical ID of the audio output device as returned by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command, <chan> the audio channel number and <param> a specific channel parameter name for which information should - be obtained (as returned by the "GET AUDIO_OUTPUT_CHANNEL INFO" command). + be obtained (as returned by the + "GET AUDIO_OUTPUT_CHANNEL INFO" command). Possible Answers: @@ -1137,7 +1272,7 @@ parameter) - POSSIBILITES - + POSSIBILITIES - comma separated list of possible values for this parameter, character strings are encapsulated into @@ -1159,21 +1294,23 @@    "TYPE: STRING"    "FIX: false"    "MULTIPLICITY: true" -    "POSSIBILITES: 'PCM:0','PCM:1','ardour:0','ardour:1'" +    "POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"    "."
-
+
Use the following command to alter a specific setting of an audio output channel: SET AUDIO_OUTPUT_CHANNEL_PARAMETER <dev-id> <chn> <key>=<value> - Where <dev-id> should be replaced by the numerical ID of the audio - device, <chn> by the audio channel number, <key> by the name of the + Where <dev-id> should be replaced by the numerical ID of the audio output device as returned by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command, <chn> by the audio channel number, <key> by the name of the parameter to change and <value> by the new value for this parameter. Possible Answers: @@ -1241,12 +1378,37 @@ showing how to retrieve what parameters drivers are offering, how to retrieve their possible values, etc. -
+
+ Use the following command to get the number of + MIDI input drivers currently available for the + LinuxSampler instance: + + + GET AVAILABLE_MIDI_INPUT_DRIVERS + + + Possible Answers: + + + LinuxSampler will answer by sending the + number of available MIDI input drivers. + + + Example: + + + C: "GET AVAILABLE_MIDI_INPUT_DRIVERS" + S: "2" + + +
+ +
Use the following command to list all MIDI input drivers currently available for the LinuxSampler instance: - GET AVAILABLE_MIDI_INPUT_DRIVERS + LIST AVAILABLE_MIDI_INPUT_DRIVERS Possible Answers: @@ -1259,20 +1421,22 @@ Example: - C: "GET AVAILABLE_MIDI_INPUT_DRIVERS" + C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS" S: "ALSA,JACK"
-
+
Use the following command to get detailed information about a specific MIDI input driver: GET MIDI_INPUT_DRIVER INFO <midi-input-driver> - Where <midi-input-driver> is the name of the MIDI input driver. + Where <midi-input-driver> is the name of the MIDI input driver as returned + by the + "LIST AVAILABLE_MIDI_INPUT_DRIVERS" command. Possible Answers: @@ -1319,7 +1483,7 @@
-
+
Use the following command to get detailed information about a specific parameter of a specific MIDI input driver: @@ -1327,10 +1491,12 @@ - Where <midi-t> is the name of the MIDI input driver as returned - by the "GET AVAILABLE_MIDI_INPUT_DRIVERS" command, <param> a specific + Where <midit> is the name of the MIDI input driver as returned + by the + "LIST AVAILABLE_MIDI_INPUT_DRIVERS" command, <param> a specific parameter name for which information should be obtained (as returned by the - "GET MIDI_INPUT_DRIVER INFO" command) and <deplist> is an optional list + + "GET MIDI_INPUT_DRIVER INFO" command) and <deplist> is an optional list of parameters on which the sought parameter <param> depends on, <deplist> is a key-value pair list in form of "key1=val1 key2=val2 ...", where character string values are encapsulated into apostrophes ('). Arguments @@ -1371,7 +1537,8 @@ either true or false, defines if this parameter must be given when the device is to be created with the - 'CREATE MIDI_INPUT_DEVICE' command + + 'CREATE MIDI_INPUT_DEVICE' command (always returned, no matter which driver parameter) @@ -1380,7 +1547,8 @@ either true or false, if false then this parameter can be changed at any time, once the device is created by - the 'CREATE MIDI_INPUT_DEVICE' command + the + 'CREATE MIDI_INPUT_DEVICE' command (always returned, no matter which driver parameter) @@ -1396,7 +1564,7 @@ DEPENDS - - comma separated list of paramters this parameter depends + comma separated list of parameters this parameter depends on, means the values for fields 'DEFAULT', 'RANGE_MIN', 'RANGE_MAX' and 'POSSIBILITIES' might depend on these listed parameters, for example assuming that an audio @@ -1413,7 +1581,8 @@ reflects the default value for this parameter which is used when the device is created and not explicitly - given with the 'CREATE MIDI_INPUT_DEVICE' command, + given with the + 'CREATE MIDI_INPUT_DEVICE' command, in case of MULTIPLCITY=true, this is a comma separated list, that's why character strings are encapsulated into apostrophes (') @@ -1441,7 +1610,7 @@ - POSSIBILITES - + POSSIBILITIES - comma separated list of possible values for this parameter, character strings are encapsulated into @@ -1469,7 +1638,7 @@
-
+
Use the following command to create a new MIDI input device for the desired MIDI input system: @@ -1477,7 +1646,9 @@ - Where <midi-input-driver> should be replaced by the desired MIDI input system and <param-list> by an + Where <midi-input-driver> should be replaced by the desired MIDI input system as returned + by the + "LIST AVAILABLE_MIDI_INPUT_DRIVERS" command and <param-list> by an optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where character string values should be encapsulated into apostrophes ('). Note that there might be drivers which require parameter(s) to be @@ -1517,14 +1688,17 @@
-
+
Use the following command to destroy a created MIDI input device: DESTROY MIDI_INPUT_DEVICE <device-id> - Where <device-id> should be replaced by the device's numerical ID. + Where <device-id> should be replaced by the device's numerical ID as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" + command. Possible Answers: @@ -1556,7 +1730,7 @@
-
+
Use the following command to count all created MIDI input devices: @@ -1580,7 +1754,7 @@
-
+
Use the following command to list all created MIDI input devices: @@ -1609,14 +1783,17 @@
-
+
Use the following command to get current settings of a specific, created MIDI input device: GET MIDI_INPUT_DEVICE INFO <device-id> - Where <device-id> is the numerical ID of the MIDI input device. + Where <device-id> is the numerical ID of the MIDI input device as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" + command. Possible Answers: @@ -1633,7 +1810,8 @@ DRIVER - identifier of the used MIDI input driver, as e.g. - returned by the "GET AVAILABLE_MIDI_INPUT_DRIVERS" + returned by the + "LIST AVAILABLE_MIDI_INPUT_DRIVERS" command @@ -1656,7 +1834,8 @@ order. The fields above are only those fields which are returned by all MIDI input devices. Every MIDI input driver might have its own, additional driver specific parameters (see - "GET MIDI_INPUT_DRIVER INFO" command) which are also returned + + "GET MIDI_INPUT_DRIVER INFO" command) which are also returned by this command. Example: @@ -1670,7 +1849,7 @@
-
+
Use the following command to alter a specific setting of a created MIDI input device: @@ -1679,7 +1858,10 @@ Where <device-id> should be replaced by the numerical ID of the - MIDI input device, <key> by the name of the parameter to change and + MIDI input device as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" + command, <key> by the name of the parameter to change and <value> by the new value for this parameter. Possible Answers: @@ -1707,21 +1889,23 @@ Example: - C: "SET MIDI_INPUT_DEVICE PARAMETER 0 ACTIVE=false" + C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false" S: "OK"
-
+
Use the following command to get information about a MIDI port: GET MIDI_INPUT_PORT INFO <device-id> <midi-port> - Where <device-id> is the numerical ID of the MIDI input device - and <midi-port> the MIDI input port number. + Where <device-id> is the numerical ID of the MIDI input device as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" + command and <midi-port> the MIDI input port number. Possible Answers: @@ -1755,7 +1939,7 @@
-
+
Use the following command to get detailed information about specific MIDI port parameter: @@ -1763,10 +1947,13 @@ - Where <dev-id> is the numerical ID of the MIDI input device as returned - by the "GET MIDI_INPUT_DEVICES" command, <port> the MIDI port number and + Where <dev-id> is the numerical ID of the MIDI input device as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" + command, <port> the MIDI port number and <param> a specific port parameter name for which information should be - obtained (as returned by the "GET MIDI_INPUT_PORT INFO" command). + obtained (as returned by the + "GET MIDI_INPUT_PORT INFO" command). Possible Answers: @@ -1829,7 +2016,7 @@ parameter) - POSSIBILITES - + POSSIBILITIES - comma separated list of possible values for this parameter, character strings are encapsulated into @@ -1851,13 +2038,13 @@    "TYPE: STRING"    "FIX: false"    "MULTIPLICITY: true" -    "POSSIBILITES: '64:0','68:0','68:1'" +    "POSSIBILITIES: '64:0','68:0','68:1'"    "."
-
+
Use the following command to alter a specific setting of a MIDI input port: @@ -1866,7 +2053,10 @@ Where <device-id> should be replaced by the numerical ID of the - MIDI device, <port> by the MIDI port number, <key> by the name of + MIDI device as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" + command, <port> by the MIDI port number, <key> by the name of the parameter to change and <value> by the new value for this parameter. @@ -1902,10 +2092,11 @@
- The following commands describe how to add and remove sampler channels, deploy - sampler engines, load instruments and connect sampler channels to MIDI and audio devices. + The following commands describe how to add and remove sampler channels, associate a + sampler channel with a sampler engine, load instruments and connect sampler channels to + MIDI and audio devices. -
+
An instrument file can be loaded and assigned to a sampler channel by one of the following commands: @@ -1923,7 +2114,8 @@ is that the regular command returns OK only after the instrument has been fully loaded and the channel is ready to be used while NON_MODAL version returns immediately and a background process is launched to load the instrument - on the channel. GET CHANNEL INFO command can be used to obtain loading + on the channel. The GET CHANNEL INFO + command can be used to obtain loading progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks such as making sure that the file could be read and it is of a proper format and SHOULD return ERR and SHOULD not launch the background process should any @@ -1961,8 +2153,8 @@
-
- A sample engine can be deployed and assigned to a specific sampler +
+ A sampler engine type can be associated to a specific sampler channel by the following command: @@ -1970,11 +2162,20 @@ - Where <engine-name> is usually the C++ class name of the engine - implementation and <sampler-channel> the sampler channel the - deployed engine should be assigned to. Even if the respective - sampler channel has already a deployed engine with that engine - name, a new engine instance will be assigned to the sampler channel. + Where <engine-name> is an engine name as obtained by the + + "LIST AVAILABLE_ENGINES" command and <sampler-channel> + the sampler channel as returned by the + "ADD CHANNEL" or + "LIST CHANNELS" command where + the engine type should be assigned to. This command should be issued + after adding a new sampler channel and before any other control + commands on the new sampler channel. It can also be used to change + the engine type of a sampler channel. This command has (currently) no + way to define or force if a new engine instance should be created and + assigned to the given sampler channel or if an already existing + instance of that engine type, shared with other sampler channels, + should be used. Possible Answers: @@ -2007,7 +2208,7 @@
-
+
The number of sampler channels can change on runtime. To get the current amount of sampler channels, the front-end can send the following command: @@ -2031,7 +2232,7 @@
-
+
The number of sampler channels can change on runtime. To get the current list of sampler channels, the front-end can send the following command: @@ -2056,7 +2257,7 @@
-
+
A new sampler channel can be added to the end of the sampler channel list by sending the following command: @@ -2080,8 +2281,8 @@ in case a new sampler channel could be added, where <sampler-channel> reflects the channel number of the new - created sampler channel which should the be used to set up - the sampler channel by sending subsequent intialization + created sampler channel which should be used to set up + the sampler channel by sending subsequent initialization commands @@ -2108,7 +2309,7 @@
-
+
A sampler channel can be removed by sending the following command: @@ -2116,9 +2317,12 @@ - This will decrement the sampler channel count by one and also - decrement the channel numbers of all subsequent sampler channels by - one. + Where <sampler-channel> should be replaced by the + number of the sampler channel as given by the + "ADD CHANNEL" + or "LIST CHANNELS" + command. The channel numbers of all subsequent sampler channels + remain the same. Possible Answers: @@ -2151,8 +2355,8 @@
-
- The front-end can ask for all available engines by sending the following command: +
+ The front-end can ask for the number of available engines by sending the following command: GET AVAILABLE_ENGINES @@ -2161,20 +2365,44 @@ Possible Answers: - LinuxSampler will answer by sending a comma separated character - string of the engines' C++ class names. + LinuxSampler will answer by sending the number of available engines. Example: C: "GET AVAILABLE_ENGINES" - S: "GigEngine,AkaiEngine,DLSEngine,JoesCustomEngine" + S: "4" + + +
+ +
+ The front-end can ask for a list of all available engines by sending the following command: + + + LIST AVAILABLE_ENGINES + + + Possible Answers: + + + LinuxSampler will answer by sending a comma separated list + of the engines' names encapsulated into apostrophes ('). + Engine names can consist of lower and upper cases, + digits and underlines ("_" character). + + + Example: + + + C: "LIST AVAILABLE_ENGINES" + S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
-
+
The front-end can ask for information about a specific engine by sending the following command: @@ -2182,11 +2410,13 @@ GET ENGINE INFO <engine-name> - Where <engine-name> is usually the C++ class name of the engine implementation. + Where <engine-name> is an engine name as obtained by the + + "LIST AVAILABLE_ENGINES" command. Possible Answers: - LinuxSampler will answer by sending <> separated list. + 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 info category. At the moment @@ -2222,7 +2452,7 @@
-
+
The front-end can ask for the current settings of a sampler channel by sending the following command: @@ -2230,7 +2460,9 @@ GET CHANNEL INFO <sampler-channel> - Where <sampler-channel> is the sampler channel number the front-end is interested in. + Where <sampler-channel> is the sampler channel number the front-end is interested in + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command. Possible Answers: @@ -2244,8 +2476,8 @@ ENGINE_NAME - - name of the engine that is deployed on the sampler - channel, "NONE" if there's no engine deployed yet for + name of the engine that is associated with the sampler + channel, "NONE" if there's no engine associated yet for this sampler channel @@ -2286,6 +2518,11 @@ the instrument index number of the loaded instrument + INSTRUMENT_NAME - + + the instrument name of the loaded instrument + + INSTRUMENT_STATUS - integer values 0 to 100 indicating loading progress percentage for the instrument. Negative @@ -2336,6 +2573,7 @@    "AUDIO_OUTPUT_ROUTING: 0,1"    "INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"    "INSTRUMENT_NR: 0" +    "INSTRUMENT_NAME: Fazioli Piano"    "INSTRUMENT_STATUS: 100"    "MIDI_INPUT_DEVICE: 0"    "MIDI_INPUT_PORT: 0" @@ -2345,7 +2583,7 @@
-
+
The front-end can ask for the current number of active voices on a sampler channel by sending the following command: @@ -2353,7 +2591,9 @@ GET CHANNEL VOICE_COUNT <sampler-channel> - Where <sampler-channel> is the sampler channel number the front-end is interested in. + Where <sampler-channel> is the sampler channel number the front-end is interested in + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command. Possible Answers: @@ -2370,7 +2610,7 @@
-
+
The front-end can ask for the current number of active disk streams on a sampler channel by sending the following command: @@ -2378,7 +2618,9 @@ GET CHANNEL STREAM_COUNT <sampler-channel> - Where <sampler-channel> is the sampler channel number the front-end is interested in. + Where <sampler-channel> is the sampler channel number the front-end is interested in + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command. Possible Answers: @@ -2397,7 +2639,7 @@
-
+
The front-end can ask for the current fill state of all disk streams on a sampler channel by sending the following command: @@ -2412,7 +2654,9 @@ to get the fill state in percent, where <sampler-channel> is the - sampler channel number the front-end is interested in. + sampler channel number the front-end is interested in + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command. Possible Answers: @@ -2448,7 +2692,7 @@
-
+
The front-end can set the audio output device on a specific sampler channel by sending the following command: @@ -2456,9 +2700,13 @@ SET CHANNEL AUDIO_OUTPUT_DEVICE <sampler-channel> <audio-device-id> - Where <audio-device-id> is the numerical ID of the audio output - device and <sampler-channel> is the respective sampler channel - number. + Where <sampler-channel> is the respective sampler channel + number as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command and + <audio-device-id> is the numerical ID of the audio output device as given by the + "CREATE AUDIO_OUTPUT_DEVICE" + or "LIST AUDIO_OUTPUT_DEVICES" + command. Possible Answers: @@ -2490,7 +2738,7 @@
-
+
DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON! The front-end can alter the audio output type on a specific sampler @@ -2533,7 +2781,7 @@
-
+
The front-end can alter the audio output channel on a specific sampler channel by sending the following command: @@ -2541,9 +2789,11 @@ SET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-chan> <audio-out> <audio-in> - Where <sampler-chan> is the sampler channel, <audio-out> is the - sampler channel's audio output channel which should be - rerouted and <audio-in> the audio channel of the selected audio + Where <sampler-chan> is the sampler channel number + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command, <audio-out> is the + numerical ID of the sampler channel's audio output channel which should be + rerouted and <audio-in> is the numerical ID of the audio channel of the selected audio output device where <audio-out> should be routed to. Possible Answers: @@ -2576,7 +2826,7 @@
-
+
The front-end can set the MIDI input device on a specific sampler channel by sending the following command: @@ -2584,7 +2834,12 @@ SET CHANNEL MIDI_INPUT_DEVICE <sampler-channel> <midi-device-id> - + Where <sampler-channel> is the sampler channel number + as returned by the "ADD CHANNEL" + or "LIST CHANNELS" command + and <midi-device-id> is the numerical ID of the MIDI input device as returned by the + "CREATE MIDI_INPUT_DEVICE" + or "LIST MIDI_INPUT_DEVICES" command. Possible Answers: @@ -2616,7 +2871,7 @@
-
+
DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON! The front-end can alter the MIDI input type on a specific sampler @@ -2659,8 +2914,8 @@
-
- The front-end can alter the input MIDI port on a specific sampler +
+ The front-end can alter the MIDI input port on a specific sampler channel by sending the following command: @@ -2688,7 +2943,7 @@ "ERR:<error-code>:<error-message>" - - in case it failed, providing an appropriate error code and error messag + in case it failed, providing an appropriate error code and error message @@ -2701,7 +2956,7 @@
-
+
The front-end can alter the MIDI channel a sampler channel should listen to by sending the following command: @@ -2709,7 +2964,7 @@ SET CHANNEL MIDI_INPUT_CHANNEL <sampler-channel> <midi-input-chan> - Where <midi-input-chan> is the new MIDI input channel where + Where <midi-input-chan> is the number of the new MIDI input channel where <sampler-channel> should listen to or "ALL" to listen on all 16 MIDI channels. @@ -2743,7 +2998,7 @@
-
+
The front-end can alter the volume of a sampler channel by sending the following command: @@ -2786,7 +3041,7 @@
-
+
The front-end can reset a particular sampler channel by sending the following command: @@ -2834,7 +3089,7 @@
The following commands are used to control the connection to LinuxSampler. -
+
The front-end can register itself to the LinuxSampler application to be informed about noteworthy events by sending this command: @@ -2876,7 +3131,7 @@
-
+
The front-end can unregister itself if it doesn't want to receive event messages anymore by sending the following command: @@ -2918,7 +3173,7 @@
-
+
To enable or disable back sending of commands to the client the following command can be used: @@ -2956,7 +3211,7 @@
-
+
The client can close its network connection to LinuxSampler by sending the following command: @@ -2971,7 +3226,7 @@
The following commands have global impact on the sampler. -
+
The front-end can reset the whole sampler by sending the following command: @@ -2996,37 +3251,80 @@
+ +
+ The client can ask for general informations about the LinuxSampler + instance by sending the following command: + + + GET SERVER INFO + + + Possible Answers: + + + LinuxSampler will answer by sending a <CRLF> separated list. + Each answer line begins with the settings 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: + + + + DESCRIPTION - + + arbitrary textual description about the sampler + + + VERSION - + + version of the sampler + + + PROTOCOL_VERSION - + + version of the LSCP specification the sampler + complies with (see for details) + + + + + + + The mentioned fields above don't have to be in particular order. + Other fields might be added in future. +
-
+
TODO: will soon automatically included from src/network/lscp.y, meanwhile have a look at that file to get the exact definition of the command syntax.
-
+
This chapter will describe all currently defined events supported by LinuxSampler. -
+
Client may want to be notified when the total number of channels on the back-end changes by issuing the following command: - SUBSCRIBE CHANNELS + SUBSCRIBE CHANNEL_COUNT Server will start sending the following notification messages: - "NOTIFY:CHANNELS:<channels>" + "NOTIFY:CHANNEL_COUNT:<channels>" where <channels> will be replaced by the new number of sampler channels.
-
+
Client may want to be notified when the number of voices on the back-end changes by issuing the following command: @@ -3037,15 +3335,15 @@ Server will start sending the following notification messages: - "NOTIFY:VOICE_COUNT:<sampler-channel> <voices>> + "NOTIFY:VOICE_COUNT:<sampler-channel> <voices> where <sampler-channel> will be replaced by the sampler channel the - voice count change occurred and <voices>> by the new number of + voice count change occurred and <voices> by the new number of active voices on that channel.
-
+
Client may want to be notified when the number of streams on the back-end changes by issuing the following command: SUBSCRIBE STREAM_COUNT @@ -3064,9 +3362,9 @@ active disk streams on that channel.
-
- Client may want to be notified when the number of streams on the back-end - changes by issuing the following command: +
+ Client may want to be notified when the buffer fill state of a disk stream + on the back-end changes by issuing the following command: SUBSCRIBE BUFFER_FILL @@ -3079,23 +3377,24 @@ where <sampler-channel> will be replaced by the sampler channel the - buffer fill state change occurred and <fill-data> will be replaced by the - buffer fill data for this channel as described in 4.4.12 as if the - "GET CHANNEL BUFFER_FILL PERCENTAGE" was issued on this channel. + buffer fill state change occurred on and <fill-data> will be replaced by the + buffer fill data for this channel as described in + as if the + "GET CHANNEL BUFFER_FILL PERCENTAGE" command was issued on this channel.
-
+
Client may want to be notified when changes were made to sampler channels on the - back-end changes by issuing the following command: + back-end by issuing the following command: - SUBSCRIBE INFO + SUBSCRIBE CHANNEL_INFO Server will start sending the following notification messages: - "NOTIFY:INFO:<sampler-channel>" + "NOTIFY:CHANNEL_INFO:<sampler-channel>" where <sampler-channel> will be replaced by the sampler channel the @@ -3106,7 +3405,7 @@ message is sufficient here.
-
+
Client may want to be notified of miscellaneous and debugging events occurring at the server by issuing the following command: @@ -3142,6 +3441,7 @@ Rui Nuno Capela Vladimir Senkov Mark Knecht + Grigor Iliev
@@ -3149,7 +3449,30 @@ - &rfc2119; + + + + Key words for use in RFCs to Indicate Requirement Levels + + Harvard University + + + + + + + + + TRANSMISSION CONTROL PROTOCOL + + Defense Advanced Research Projects Agency + + + + + + +