--- web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.html 2005/07/21 09:36:52 709 +++ web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.html 2006/12/15 21:46:48 974 @@ -3,128 +3,159 @@ - - + + -
 TOC 
+
 TOC 
- - + +
LinuxSampler DevelopersC. Schoenebeck
Internet-DraftInteressengemeinschaft Software
Expires: January 22, 2006Engineering e. V.
 July 21, 2005
Intended status: Standards TrackEngineering e. V.
Expires: June 18, 2007December 15, 2006
-

LinuxSampler Control Protocol
-

LSCP 1.1
+


LinuxSampler Control Protocol
LSCP 1.2

Status of this Memo

-This document is an Internet-Draft and is -in full conformance with all provisions of Section 10 of RFC 2026.

+By submitting this Internet-Draft, +each author represents that any applicable patent or other IPR claims of which +he or she is aware have been or will be disclosed, +and any of which he or she becomes aware will be disclosed, +in accordance with Section 6 of BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. @@ -142,11 +173,11 @@ The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.

-This Internet-Draft will expire on January 22, 2006.

+This Internet-Draft will expire on June 18, 2007.

Copyright Notice

-Copyright © The Internet Society (2005). All Rights Reserved.

+Copyright © The Internet Society (2006).

Abstract

@@ -169,155 +200,189 @@ Focus of this protocol
5.  Communication Overview
-    5.1  +    5.1.  Request/response communication method
-        5.1.1  +        5.1.1.  Result format
-    5.2  +    5.2.  Subscribe/notify communication method
6.  Description for control commands
-    6.1  +    6.1.  Ignored lines and comments
-    6.2  +    6.2.  Configuring audio drivers
-        6.2.1  +        6.2.1.  Getting amount of available audio output drivers
-        6.2.2  +        6.2.2.  Getting all available audio output drivers
-        6.2.3  +        6.2.3.  Getting information about a specific audio output driver
-        6.2.4  +        6.2.4.  Getting information about specific audio output driver parameter
-        6.2.5  +        6.2.5.  Creating an audio output device
-        6.2.6  +        6.2.6.  Destroying an audio output device
-        6.2.7  +        6.2.7.  Getting all created audio output device count
-        6.2.8  +        6.2.8.  Getting all created audio output device list
-        6.2.9  +        6.2.9.  Getting current settings of an audio output device
-        6.2.10  +        6.2.10.  Changing settings of audio output devices
-        6.2.11  +        6.2.11.  Getting information about an audio channel
-        6.2.12  +        6.2.12.  Getting information about specific audio channel parameter
-        6.2.13  +        6.2.13.  Changing settings of audio output channels
-    6.3  +    6.3.  Configuring MIDI input drivers
-        6.3.1  +        6.3.1.  Getting amount of available MIDI input drivers
-        6.3.2  +        6.3.2.  Getting all available MIDI input drivers
-        6.3.3  +        6.3.3.  Getting information about a specific MIDI input driver
-        6.3.4  +        6.3.4.  Getting information about specific MIDI input driver parameter
-        6.3.5  +        6.3.5.  Creating a MIDI input device
-        6.3.6  +        6.3.6.  Destroying a MIDI input device
-        6.3.7  +        6.3.7.  Getting all created MIDI input device count
-        6.3.8  +        6.3.8.  Getting all created MIDI input device list
-        6.3.9  +        6.3.9.  Getting current settings of a MIDI input device
-        6.3.10  +        6.3.10.  Changing settings of MIDI input devices
-        6.3.11  +        6.3.11.  Getting information about a MIDI port
-        6.3.12  +        6.3.12.  Getting information about specific MIDI port parameter
-        6.3.13  +        6.3.13.  Changing settings of MIDI input ports
-    6.4  +    6.4.  Configuring sampler channels
-        6.4.1  +        6.4.1.  Loading an instrument
-        6.4.2  +        6.4.2.  Loading a sampler engine
-        6.4.3  +        6.4.3.  Getting all created sampler channel count
-        6.4.4  +        6.4.4.  Getting all created sampler channel list
-        6.4.5  +        6.4.5.  Adding a new sampler channel
-        6.4.6  +        6.4.6.  Removing a sampler channel
-        6.4.7  +        6.4.7.  Getting amount of available engines
-        6.4.8  +        6.4.8.  Getting all available engines
-        6.4.9  +        6.4.9.  Getting information about an engine
-        6.4.10  +        6.4.10.  Getting sampler channel information
-        6.4.11  +        6.4.11.  Current number of active voices
-        6.4.12  +        6.4.12.  Current number of active disk streams
-        6.4.13  +        6.4.13.  Current fill state of disk stream buffers
-        6.4.14  +        6.4.14.  Setting audio output device
-        6.4.15  +        6.4.15.  Setting audio output type
-        6.4.16  +        6.4.16.  Setting audio output channel
-        6.4.17  +        6.4.17.  Setting MIDI input device
-        6.4.18  +        6.4.18.  Setting MIDI input type
-        6.4.19  +        6.4.19.  Setting MIDI input port
-        6.4.20  +        6.4.20.  Setting MIDI input channel
-        6.4.21  +        6.4.21.  Setting channel volume
-        6.4.22  +        6.4.22.  Muting a sampler channel
-        6.4.23  +        6.4.23.  Soloing a sampler channel
-        6.4.24  +        6.4.24.  +Assigning a MIDI instrument map to a sampler channel
+        6.4.25.  Resetting a sampler channel
-    6.5  +    6.5.  Controlling connection
-        6.5.1  +        6.5.1.  Register front-end for receiving event messages
-        6.5.2  +        6.5.2.  Unregister front-end for not receiving event messages
-        6.5.3  +        6.5.3.  Enable or disable echo of commands
-        6.5.4  +        6.5.4.  Close client connection
-    6.6  +    6.6.  Global commands
-        6.6.1  +        6.6.1.  +Current number of active voices
+        6.6.2.  +Maximum amount of active voices
+        6.6.3.  Reset sampler
-        6.6.2  +        6.6.4.  General sampler informations
+    6.7.  +MIDI Instrument Mapping
+        6.7.1.  +Create a new MIDI instrument map
+        6.7.2.  +Delete one particular or all MIDI instrument maps
+        6.7.3.  +Get amount of existing MIDI instrument maps
+        6.7.4.  +Getting all created MIDI instrument maps
+        6.7.5.  +Getting MIDI instrument map information
+        6.7.6.  +Renaming a MIDI instrument map
+        6.7.7.  +Create or replace a MIDI instrument map entry
+        6.7.8.  +Getting ammount of MIDI instrument map entries
+        6.7.9.  +Getting indeces of all entries of a MIDI instrument map
+        6.7.10.  +Remove an entry from the MIDI instrument map
+        6.7.11.  +Get current settings of MIDI instrument map entry
+        6.7.12.  +Clear MIDI instrument map
7.  Command Syntax
8.  Events
-    8.1  +    8.1.  Number of sampler channels changed
-    8.2  +    8.2.  Number of active voices changed
-    8.3  +    8.3.  Number of active disk streams changed
-    8.4  +    8.4.  Disk stream buffer fill state changed
-    8.5  +    8.5.  Channel information changed
-    8.6  +    8.6.  +Total number of active voices changed
+    8.7.  Miscellaneous and debugging events
9.  Security Considerations
@@ -333,13 +398,14 @@


-
 TOC 
-

1. Requirements notation

+
 TOC 
+

1.  +Requirements notation

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as - described in [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” 1997.). + described in [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” 1997.).

This protocol is always case-sensitive if not explicitly claimed the opposite. @@ -359,7 +425,7 @@

   "another line"

- +

must actually be interpreted as client sending the following message: @@ -371,7 +437,7 @@ line<CR><LF>"

- +

where <CR> symbolizes the carriage return character and <LF> the line feed character as defined in the ASCII @@ -386,7 +452,7 @@

S: "abcd"

- +

could also happen to be sent in three messages like in the following sequence scenario: @@ -409,20 +475,21 @@ "<LF>"

- +

where again <CR> and <LF> symbolize the carriage return and line feed characters respectively.



-
 TOC 
-

2. Versioning of this specification

+
 TOC 
+

2.  +Versioning of this specification

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: - +

@@ -430,7 +497,7 @@

"1.2"

- +

In this example the major version number would be "1" and the minor @@ -440,7 +507,7 @@ 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 rules: - +

Compatibility:

@@ -454,18 +521,19 @@ the sampler's LSCP minor version.

- +

Compatibility can only be claimed if both rules are true. The frontend can use the - "GET SERVER INFO" (General sampler informations) command to + "GET SERVER INFO" (General sampler informations) command to get the version of the LSCP specification the sampler complies with. - +



-
 TOC 
-

3. Introduction

+
 TOC 
+

3.  +Introduction

LinuxSampler is a so called software sampler application capable to playback audio samples from a computer's Random @@ -485,8 +553,9 @@ there.



-
 TOC 
-

4. Focus of this protocol

+
 TOC 
+

4.  +Focus of this protocol

Main focus of this protocol is to provide a way to configure a running LinuxSampler instance and to retrieve information @@ -497,8 +566,9 @@ via MIDI System Exclusive Messages.



-
 TOC 
-

5. Communication Overview

+
 TOC 
+

5.  +Communication Overview

There are two distinct methods of communication between a running instance of LinuxSampler and one or more control @@ -511,10 +581,13 @@ implemented in the front-end application. The two communication methods will be described next.

-

5.1 Request/response communication method

+

+
 TOC 
+

5.1.  +Request/response communication method

This simple communication method is based on - TCP (Defense Advanced Research Projects Agency, “TRANSMISSION CONTROL PROTOCOL,” 1981.)[RFC793]. The + TCP (Defense Advanced Research Projects Agency, “TRANSMISSION CONTROL PROTOCOL,” 1981.) [RFC793]. 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 @@ -554,7 +627,10 @@ processed in the order they were received and result sets MUST be sent back in the same order.

-

5.1.1 Result format

+

+
 TOC 
+

5.1.1.  +Result format

Result set could be one of the following types:

@@ -568,7 +644,7 @@
  • Error
  • - +

    Warning and Error result sets MUST be single line and have the following format: @@ -581,7 +657,7 @@

  • "ERR:<error-code>:<error-message>"
  • - +

    Where <warning-code> and <error-code> are numeric unique identifiers of the warning or error and @@ -599,7 +675,7 @@

    S: "WRN:32:This is a 24 bit patch which is not supported natively yet."

    - +

    @@ -609,7 +685,7 @@

    S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."

    - +

    @@ -619,7 +695,7 @@

    S: "ERR:9:There is no audio output device with index 123456."

    - +

    Normal result sets could be:

    @@ -633,7 +709,7 @@
  • Multi-line
  • - +

    Empty result set is issued when the server only needed to acknowledge the fact that the request was @@ -647,7 +723,7 @@

    "OK"

    - +

    Example:

    @@ -659,7 +735,7 @@

    S: "OK"

    - +

    Single line result sets are command specific. One example of a single line result set is an empty line. @@ -673,7 +749,7 @@

    "."

    - +

    Example:

    @@ -699,7 +775,7 @@

       "."

    - +

    In addition to above mentioned formats, warnings and empty result sets MAY be indexed. In this case, they @@ -713,7 +789,7 @@

  • "OK[<index>]"
  • - +

    where <index> is command specific and is used to indicate channel number that the result set was @@ -732,7 +808,7 @@

    S: "OK[12]"

    - +

    @@ -742,9 +818,12 @@

    S: "WRN[0]:32:Sample rate not supported, using 44100 instead."

    - +

    -

    5.2 Subscribe/notify communication method

    +

    +
     TOC 
    +

    5.2.  +Subscribe/notify communication method

    This more sophisticated communication method is actually only an extension of the simple request/response @@ -762,7 +841,7 @@

    SUBSCRIBE <event-id>

    - +

    where <event-id> will be replaced by the respective event that client wants to subscribe to. Upon receiving such @@ -779,7 +858,7 @@

    NOTIFY:<event-id>:<custom-event-data>

    - +

    where <event-id> uniquely identifies the event that has occurred and <custom-event-data> is event @@ -805,7 +884,7 @@ response.

    - +

    If the client is not interested in a particular event anymore it MAY issue UNSUBSCRIBE command using the following @@ -817,11 +896,11 @@

    UNSUBSCRIBE <event-id>

    - +

    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 Section 8 (Events). + a list of supported events see Section 8 (Events).

    Example: the fill states of disk stream buffers have changed on sampler channel 4 and the LinuxSampler instance @@ -834,7 +913,7 @@

    NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%

    - +

    Which means there are currently three active streams on sampler channel 4, where the stream with ID "35" is filled @@ -867,17 +946,21 @@ it wants to receive.



    -
     TOC 
    -

    6. Description for control commands

    +
     TOC 
    +

    6.  +Description for control commands

    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" (Getting sampler channel information) - or "GET ENGINE INFO" (Getting information about an engine)) lead to + commands (e.g. "GET CHANNEL INFO" (Getting sampler channel information) + or "GET ENGINE INFO" (Getting information about an engine)) lead to multiple-line responses. In this case LinuxSampler signals the end of the response by a "." (single dot) line.

    -

    6.1 Ignored lines and comments

    +

    +
     TOC 
    +

    6.1.  +Ignored lines and comments

    White lines, that is lines which only contain space and tabulator characters, and lines that start with a "#" @@ -885,7 +968,10 @@ group commands and to place comments in a LSCP script file.

    -

    6.2 Configuring audio drivers

    +

    +
     TOC 
    +

    6.2.  +Configuring audio drivers

    Instances of drivers in LinuxSampler are called devices. You can use multiple audio devices simultaneously, e.g. to @@ -918,7 +1004,10 @@ what parameters drivers are offering, how to retrieve their possible values, etc.

    -

    6.2.1 Getting amount of available audio output drivers

    +

    +
     TOC 
    +

    6.2.1.  +Getting amount of available audio output drivers

    Use the following command to get the number of audio output drivers currently available for the @@ -930,7 +1019,7 @@

    GET AVAILABLE_AUDIO_OUTPUT_DRIVERS

    - +

    Possible Answers:

    @@ -941,7 +1030,7 @@ number of audio output drivers.

    - +

    Example:

    @@ -953,9 +1042,12 @@

    S: "2"

    - +

    -

    6.2.2 Getting all available audio output drivers

    +

    +
     TOC 
    +

    6.2.2.  +Getting all available audio output drivers

    Use the following command to list all audio output drivers currently available for the LinuxSampler @@ -967,7 +1059,7 @@

    LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS

    - +

    Possible Answers:

    @@ -979,7 +1071,7 @@ audio output driver.

    - +

    Example:

    @@ -991,10 +1083,13 @@

    S: "ALSA,JACK"

    - +

    -

    6.2.3 Getting information about a specific audio - output driver

    +

    +
     TOC 
    +

    6.2.3.  +Getting information about a specific audio + output driver

    Use the following command to get detailed information about a specific audio output driver: @@ -1006,11 +1101,11 @@ <audio-output-driver>

    - +

    Where <audio-output-driver> is the name of the audio output driver, returned by the - "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all available audio output drivers) command. + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all available audio output drivers) command.

    Possible Answers:

    @@ -1035,18 +1130,18 @@

    character string describing the audio output driver

    -

    + + -

    VERSION -

    character string reflecting the driver's version

    -

    + + -

    PARAMETERS -

    @@ -1057,17 +1152,17 @@ and 'active' are offered by all audio output drivers

    -

    + + -

    -

    + + -

    The mentioned fields above don't have to be in particular order.

    - +

    Example:

    @@ -1088,10 +1183,13 @@

       "."

    - +

    -

    6.2.4 Getting information about specific audio - output driver parameter

    +

    +
     TOC 
    +

    6.2.4.  +Getting information about specific audio + output driver parameter

    Use the following command to get detailed information about a specific audio output driver parameter: @@ -1102,13 +1200,13 @@

    GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO <audio> <prm> [<deplist>]

    - +

    Where <audio> is the name of the audio output - driver as returned by the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all available audio output drivers) command, + driver as returned by the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all 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" (Getting information about a specific audio output driver) command) and + "GET AUDIO_OUTPUT_DRIVER INFO" (Getting information about a specific audio output driver) 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 @@ -1134,7 +1232,7 @@ the moment the following information categories are defined:

    - +

    @@ -1148,40 +1246,40 @@ character string(s) (always returned, no matter which driver parameter)

    -

    + + -

    DESCRIPTION -

    arbitrary text describing the purpose of the parameter (always returned, no matter which driver parameter)

    -

    + + -

    MANDATORY -

    either true or false, defines if this parameter must be given when the device is to be created with the - 'CREATE AUDIO_OUTPUT_DEVICE' (Creating an audio output device) + 'CREATE AUDIO_OUTPUT_DEVICE' (Creating an audio output device) command (always returned, no matter which driver parameter)

    -

    + + -

    FIX -

    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' (Creating an audio output device) + the 'CREATE AUDIO_OUTPUT_DEVICE' (Creating an audio output device) command (always returned, no matter which driver parameter)

    -

    + + -

    MULTIPLICITY -

    @@ -1190,9 +1288,9 @@ multiple values and false only a single value allowed (always returned, no matter which driver parameter)

    -

    + + -

    DEPENDS -

    @@ -1207,23 +1305,23 @@ chosen by the 'card' parameter (optionally returned, dependent to driver parameter)

    -

    + + -

    DEFAULT -

    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' (Creating an audio output device) command, + given with the 'CREATE AUDIO_OUTPUT_DEVICE' (Creating an audio output device) command, in case of MULTIPLCITY=true, this is a comma separated list, that's why character strings are encapsulated into apostrophes (') (optionally returned, dependent to driver parameter)

    -

    + + -

    RANGE_MIN -

    @@ -1233,9 +1331,9 @@ with RANGE_MAX, but may also appear without (optionally returned, dependent to driver parameter)

    -

    + + -

    RANGE_MAX -

    @@ -1245,9 +1343,9 @@ RANGE_MIN, but may also appear without (optionally returned, dependent to driver parameter)

    -

    + + -

    POSSIBILITIES -

    @@ -1256,11 +1354,11 @@ apostrophes (optionally returned, dependent to driver parameter)

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular order.

    @@ -1288,7 +1386,7 @@

       "."

    - +

    @@ -1312,7 +1410,7 @@

       "."

    - +

    @@ -1340,9 +1438,12 @@

       "."

    - +

    -

    6.2.5 Creating an audio output device

    +

    +
     TOC 
    +

    6.2.5.  +Creating an audio output device

    Use the following command to create a new audio output device for the desired audio output system:

    @@ -1352,11 +1453,11 @@

    CREATE AUDIO_OUTPUT_DEVICE <audio-output-driver> [<param-list>]

    - +

    Where <audio-output-driver> should be replaced by the desired audio output system as returned by the - "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all available audio output drivers) + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all 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 ('). @@ -1375,9 +1476,9 @@

    in case the device was successfully created, where <device-id> is the numerical ID of the new device

    -

    + + -

    "WRN[<device-id>]:<warning-code>:<warning-message>" -

    @@ -1388,19 +1489,19 @@ fall-back values), providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -1412,7 +1513,7 @@

    S: "OK[0]"

    - +

    @@ -1422,9 +1523,12 @@

    S: "OK[1]"

    - +

    -

    6.2.6 Destroying an audio output device

    +

    +
     TOC 
    +

    6.2.6.  +Destroying an audio output device

    Use the following command to destroy a created output device:

    @@ -1434,12 +1538,12 @@

    DESTROY AUDIO_OUTPUT_DEVICE <device-id>

    - +

    Where <device-id> should be replaced by the numerical ID of the audio output device as given by the - "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) - or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) + "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) + or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) command.

    Possible Answers: @@ -1452,9 +1556,9 @@

    in case the device was successfully destroyed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -1464,20 +1568,20 @@ informed about this situation), providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -1489,9 +1593,12 @@

    S: "OK"

    - +

    -

    6.2.7 Getting all created audio output device count

    +

    +
     TOC 
    +

    6.2.7.  +Getting all created audio output device count

    Use the following command to count all created audio output devices:

    @@ -1501,7 +1608,7 @@

    GET AUDIO_OUTPUT_DEVICES

    - +

    Possible Answers:

    @@ -1512,7 +1619,7 @@ audio output devices.

    - +

    Example:

    @@ -1524,9 +1631,12 @@

    S: "4"

    - +

    -

    6.2.8 Getting all created audio output device list

    +

    +
     TOC 
    +

    6.2.8.  +Getting all created audio output device list

    Use the following command to list all created audio output devices:

    @@ -1536,7 +1646,7 @@

    LIST AUDIO_OUTPUT_DEVICES

    - +

    Possible Answers:

    @@ -1547,7 +1657,7 @@ the numerical IDs of all audio output devices.

    - +

    Example:

    @@ -1559,9 +1669,12 @@

    S: "0,1,4,5"

    - +

    -

    6.2.9 Getting current settings of an audio output device

    +

    +
     TOC 
    +

    6.2.9.  +Getting current settings of an audio output device

    Use the following command to get current settings of a specific, created audio output device:

    @@ -1571,11 +1684,11 @@

    GET AUDIO_OUTPUT_DEVICE INFO <device-id>

    - +

    Where <device-id> should be replaced by numerical ID of the audio output device as e.g. returned by the - "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) command. + "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) command.

    Possible Answers:

    @@ -1595,29 +1708,29 @@

    identifier of the used audio output driver, as also returned by the - "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all available audio output drivers) + "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Getting all available audio output drivers) command

    -

    + + -

    CHANNELS -

    amount of audio output channels this device currently offers

    -

    + + -

    SAMPLERATE -

    playback sample rate the device uses

    -

    + + -

    ACTIVE -

    @@ -1626,17 +1739,17 @@ sampler channels connected to this audio device render any audio

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular 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 - Section 6.2.3 (Getting information about a specific audio output driver)) + Section 6.2.3 (Getting information about a specific audio output driver)) which are also returned by this command.

    Example: @@ -1663,9 +1776,12 @@

       "."

    - +

    -

    6.2.10 Changing settings of audio output devices

    +

    +
     TOC 
    +

    6.2.10.  +Changing settings of audio output devices

    Use the following command to alter a specific setting of a created audio output device:

    @@ -1675,12 +1791,12 @@

    SET AUDIO_OUTPUT_DEVICE_PARAMETER <device-id> <key>=<value>

    - +

    Where <device-id> should be replaced by the numerical ID of the audio output device as given by the - "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) - or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) + "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) + or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) command, <key> by the name of the parameter to change and <value> by the new value for this parameter.

    @@ -1694,9 +1810,9 @@

    in case setting was successfully changed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -1704,20 +1820,20 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -1729,9 +1845,12 @@

    S: "OK"

    - +

    -

    6.2.11 Getting information about an audio channel

    +

    +
     TOC 
    +

    6.2.11.  +Getting information about an audio channel

    Use the following command to get information about an audio channel:

    @@ -1741,11 +1860,11 @@

    GET AUDIO_OUTPUT_CHANNEL INFO <device-id> <audio-chan>

    - +

    Where <device-id> is the numerical ID of the audio output device as given by the - "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) - or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) + "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) + or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) command and <audio-chan> the audio channel number.

    Possible Answers: @@ -1768,9 +1887,9 @@

    arbitrary character string naming the channel, which doesn't have to be unique (always returned by all audio channels)

    -

    + + -

    IS_MIX_CHANNEL -

    @@ -1781,9 +1900,9 @@ channels than the used audio system might be able to offer (always returned by all audio channels)

    -

    + + -

    MIX_CHANNEL_DESTINATION -

    @@ -1793,14 +1912,14 @@ the audio signal actually will be routed / added to (only returned in case the audio channel is mix channel)

    -

    + + -

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular order. The fields above are only those fields which are @@ -1823,7 +1942,7 @@

       "."

    - +

    @@ -1837,7 +1956,7 @@

       "."

    - +

    @@ -1853,7 +1972,7 @@

       "."

    - +

    @@ -1869,9 +1988,12 @@

       "."

    - +

    -

    6.2.12 Getting information about specific audio channel parameter

    +

    +
     TOC 
    +

    6.2.12.  +Getting information about specific audio channel parameter

    Use the following command to get detailed information about specific audio channel parameter:

    @@ -1881,14 +2003,14 @@

    GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO <dev-id> <chan> <param>

    - +

    Where <dev-id> is the numerical ID of the audio output device as returned by the - "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) - or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) + "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) + or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) 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" (Getting information about an audio channel) command). + be obtained (as returned by the "GET AUDIO_OUTPUT_CHANNEL INFO" (Getting information about an audio channel) command).

    Possible Answers:

    @@ -1915,17 +2037,17 @@ character string(s) (always returned)

    -

    + + -

    DESCRIPTION -

    arbitrary text describing the purpose of the parameter (always returned)

    -

    + + -

    FIX -

    @@ -1933,9 +2055,9 @@ read only, thus cannot be altered (always returned)

    -

    + + -

    MULTIPLICITY -

    @@ -1944,9 +2066,9 @@ multiple values and false only a single value allowed (always returned)

    -

    + + -

    RANGE_MIN -

    @@ -1957,9 +2079,9 @@ (optionally returned, dependent to driver and channel parameter)

    -

    + + -

    RANGE_MAX -

    @@ -1970,9 +2092,9 @@ (optionally returned, dependent to driver and channel parameter)

    -

    + + -

    POSSIBILITIES -

    @@ -1982,16 +2104,16 @@ (optionally returned, dependent to driver and channel parameter)

    -

    + + -

    -

    + + -

    The mentioned fields above don't have to be in particular order.

    - +

    Example:

    @@ -2013,9 +2135,12 @@

       "."

    - +

    -

    6.2.13 Changing settings of audio output channels

    +

    +
     TOC 
    +

    6.2.13.  +Changing settings of audio output channels

    Use the following command to alter a specific setting of an audio output channel:

    @@ -2025,11 +2150,11 @@

    SET AUDIO_OUTPUT_CHANNEL_PARAMETER <dev-id> <chn> <key>=<value>

    - +

    Where <dev-id> should be replaced by the numerical ID of the audio output device as returned by the - "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) - or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) + "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) + or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) 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.

    @@ -2043,9 +2168,9 @@

    in case setting was successfully changed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -2053,20 +2178,20 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -2078,7 +2203,7 @@

    S: "OK"

    - +

    @@ -2088,9 +2213,12 @@

    S: "OK"

    - +

    -

    6.3 Configuring MIDI input drivers

    +

    +
     TOC 
    +

    6.3.  +Configuring MIDI input drivers

    Instances of drivers in LinuxSampler are called devices. You can use multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as @@ -2118,7 +2246,10 @@ showing how to retrieve what parameters drivers are offering, how to retrieve their possible values, etc.

    -

    6.3.1 Getting amount of available MIDI input drivers

    +

    +
     TOC 
    +

    6.3.1.  +Getting amount of available MIDI input drivers

    Use the following command to get the number of MIDI input drivers currently available for the @@ -2130,7 +2261,7 @@

    GET AVAILABLE_MIDI_INPUT_DRIVERS

    - +

    Possible Answers:

    @@ -2141,7 +2272,7 @@ number of available MIDI input drivers.

    - +

    Example:

    @@ -2153,9 +2284,12 @@

    S: "2"

    - +

    -

    6.3.2 Getting all available MIDI input drivers

    +

    +
     TOC 
    +

    6.3.2.  +Getting all available MIDI input drivers

    Use the following command to list all MIDI input drivers currently available for the LinuxSampler instance: @@ -2166,7 +2300,7 @@

    LIST AVAILABLE_MIDI_INPUT_DRIVERS

    - +

    Possible Answers:

    @@ -2177,7 +2311,7 @@ strings, each symbolizing a MIDI input driver.

    - +

    Example:

    @@ -2189,9 +2323,12 @@

    S: "ALSA,JACK"

    - +

    -

    6.3.3 Getting information about a specific MIDI input driver

    +

    +
     TOC 
    +

    6.3.3.  +Getting information about a specific MIDI input driver

    Use the following command to get detailed information about a specific MIDI input driver:

    @@ -2201,10 +2338,10 @@

    GET MIDI_INPUT_DRIVER INFO <midi-input-driver>

    - +

    Where <midi-input-driver> is the name of the MIDI input driver as returned - by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all available MIDI input drivers) command. + by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all available MIDI input drivers) command.

    Possible Answers:

    @@ -2225,32 +2362,32 @@

    arbitrary description text about the MIDI input driver

    -

    + + -

    VERSION -

    arbitrary character string regarding the driver's version

    -

    + + -

    PARAMETERS -

    comma separated list of all parameters available for the given MIDI input driver

    -

    + + -

    -

    + + -

    The mentioned fields above don't have to be in particular order.

    - +

    Example:

    @@ -2268,9 +2405,12 @@

       "."

    - +

    -

    6.3.4 Getting information about specific MIDI input driver parameter

    +

    +
     TOC 
    +

    6.3.4.  +Getting information about specific MIDI input driver parameter

    Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:

    @@ -2280,12 +2420,12 @@

    GET MIDI_INPUT_DRIVER_PARAMETER INFO <midit> <param> [<deplist>]

    - +

    Where <midit> is the name of the MIDI input driver as returned - by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all available MIDI input drivers) command, <param> a specific + by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all 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" (Getting information about a specific MIDI input driver) command) and <deplist> is an optional list + "GET MIDI_INPUT_DRIVER INFO" (Getting information about a specific MIDI input driver) 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 @@ -2315,40 +2455,40 @@ character string(s) (always returned, no matter which driver parameter)

    -

    + + -

    DESCRIPTION -

    arbitrary text describing the purpose of the parameter (always returned, no matter which driver parameter)

    -

    + + -

    MANDATORY -

    either true or false, defines if this parameter must be given when the device is to be created with the - 'CREATE MIDI_INPUT_DEVICE' (Creating a MIDI input device) command + 'CREATE MIDI_INPUT_DEVICE' (Creating a MIDI input device) command (always returned, no matter which driver parameter)

    -

    + + -

    FIX -

    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' (Creating a MIDI input device) command + the 'CREATE MIDI_INPUT_DEVICE' (Creating a MIDI input device) command (always returned, no matter which driver parameter)

    -

    + + -

    MULTIPLICITY -

    @@ -2357,9 +2497,9 @@ multiple values and false only a single value allowed (always returned, no matter which driver parameter)

    -

    + + -

    DEPENDS -

    @@ -2374,23 +2514,23 @@ chosen by the 'card' parameter (optionally returned, dependent to driver parameter)

    -

    + + -

    DEFAULT -

    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' (Creating a MIDI input device) command, + given with the 'CREATE MIDI_INPUT_DEVICE' (Creating a MIDI input device) command, in case of MULTIPLCITY=true, this is a comma separated list, that's why character strings are encapsulated into apostrophes (') (optionally returned, dependent to driver parameter)

    -

    + + -

    RANGE_MIN -

    @@ -2400,9 +2540,9 @@ with RANGE_MAX, but may also appear without (optionally returned, dependent to driver parameter)

    -

    + + -

    RANGE_MAX -

    @@ -2412,9 +2552,9 @@ RANGE_MIN, but may also appear without (optionally returned, dependent to driver parameter)

    -

    + + -

    POSSIBILITIES -

    @@ -2423,11 +2563,11 @@ apostrophes (optionally returned, dependent to driver parameter)

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular order.

    @@ -2453,9 +2593,12 @@

       "."

    - +

    -

    6.3.5 Creating a MIDI input device

    +

    +
     TOC 
    +

    6.3.5.  +Creating a MIDI input device

    Use the following command to create a new MIDI input device for the desired MIDI input system:

    @@ -2465,10 +2608,10 @@

    CREATE MIDI_INPUT_DEVICE <midi-input-driver> [<param-list>]

    - +

    Where <midi-input-driver> should be replaced by the desired MIDI input system as returned - by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all available MIDI input drivers) command and <param-list> by an + by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all 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 @@ -2486,9 +2629,9 @@

    in case the device was successfully created, where <device-id> is the numerical ID of the new device

    -

    + + -

    "WRN[<device-id>]:<warning-code>:<warning-message>" -

    @@ -2497,19 +2640,19 @@ there are noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -2521,9 +2664,12 @@

    S: "OK[0]"

    - +

    -

    6.3.6 Destroying a MIDI input device

    +

    +
     TOC 
    +

    6.3.6.  +Destroying a MIDI input device

    Use the following command to destroy a created MIDI input device:

    @@ -2533,11 +2679,11 @@

    DESTROY MIDI_INPUT_DEVICE <device-id>

    - +

    Where <device-id> should be replaced by the device's numerical ID as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) command.

    Possible Answers: @@ -2550,9 +2696,9 @@

    in case the device was successfully destroyed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -2560,19 +2706,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -2584,9 +2730,12 @@

    S: "OK"

    - +

    -

    6.3.7 Getting all created MIDI input device count

    +

    +
     TOC 
    +

    6.3.7.  +Getting all created MIDI input device count

    Use the following command to count all created MIDI input devices:

    @@ -2596,7 +2745,7 @@

    GET MIDI_INPUT_DEVICES

    - +

    Possible Answers:

    @@ -2607,7 +2756,7 @@ MIDI input devices.

    - +

    Example:

    @@ -2619,9 +2768,12 @@

    S: "3"

    - +

    -

    6.3.8 Getting all created MIDI input device list

    +

    +
     TOC 
    +

    6.3.8.  +Getting all created MIDI input device list

    Use the following command to list all created MIDI input devices:

    @@ -2631,7 +2783,7 @@

    LIST MIDI_INPUT_DEVICES

    - +

    Possible Answers:

    @@ -2642,7 +2794,7 @@ with the numerical Ids of all created MIDI input devices.

    - +

    Examples:

    @@ -2654,7 +2806,7 @@

    S: "0,1,2"

    - +

    @@ -2664,9 +2816,12 @@

    S: "1,3"

    - +

    -

    6.3.9 Getting current settings of a MIDI input device

    +

    +
     TOC 
    +

    6.3.9.  +Getting current settings of a MIDI input device

    Use the following command to get current settings of a specific, created MIDI input device:

    @@ -2676,11 +2831,11 @@

    GET MIDI_INPUT_DEVICE INFO <device-id>

    - +

    Where <device-id> is the numerical ID of the MIDI input device as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) command.

    Possible Answers: @@ -2703,14 +2858,14 @@

    identifier of the used MIDI input driver, as e.g. - returned by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all available MIDI input drivers) + returned by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Getting all available MIDI input drivers) command

    -

    + + -

    -

    -

    + +

    ACTIVE -

    @@ -2720,20 +2875,20 @@ and thus doesn't forward them to connected sampler channels

    -

    + + -

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular 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" (Getting information about a specific MIDI input driver) command) which are also returned + "GET MIDI_INPUT_DRIVER INFO" (Getting information about a specific MIDI input driver) command) which are also returned by this command.

    Example: @@ -2750,9 +2905,12 @@

       "."

    - +

    -

    6.3.10 Changing settings of MIDI input devices

    +

    +
     TOC 
    +

    6.3.10.  +Changing settings of MIDI input devices

    Use the following command to alter a specific setting of a created MIDI input device:

    @@ -2762,12 +2920,12 @@

    SET MIDI_INPUT_DEVICE_PARAMETER <device-id> <key>=<value>

    - +

    Where <device-id> should be replaced by the numerical ID of the MIDI input device as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) command, <key> by the name of the parameter to change and <value> by the new value for this parameter.

    @@ -2781,9 +2939,9 @@

    in case setting was successfully changed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -2791,19 +2949,19 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -2815,9 +2973,12 @@

    S: "OK"

    - +

    -

    6.3.11 Getting information about a MIDI port

    +

    +
     TOC 
    +

    6.3.11.  +Getting information about a MIDI port

    Use the following command to get information about a MIDI port:

    @@ -2827,11 +2988,11 @@

    GET MIDI_INPUT_PORT INFO <device-id> <midi-port>

    - +

    Where <device-id> is the numerical ID of the MIDI input device as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) command and <midi-port> the MIDI input port number.

    Possible Answers: @@ -2850,11 +3011,11 @@

    arbitrary character string naming the port

    -

    + + -

    - +

    The field above is only the one which is returned by all MIDI ports regardless of the MIDI driver and port. Every MIDI port @@ -2875,9 +3036,12 @@

       "."

    - +

    -

    6.3.12 Getting information about specific MIDI port parameter

    +

    +
     TOC 
    +

    6.3.12.  +Getting information about specific MIDI port parameter

    Use the following command to get detailed information about specific MIDI port parameter:

    @@ -2887,14 +3051,14 @@

    GET MIDI_INPUT_PORT_PARAMETER INFO <dev-id> <port> <param>

    - +

    Where <dev-id> is the numerical ID of the MIDI input device as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) 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" (Getting information about a MIDI port) command). + obtained (as returned by the "GET MIDI_INPUT_PORT INFO" (Getting information about a MIDI port) command).

    Possible Answers:

    @@ -2918,18 +3082,18 @@ character string(s) (always returned)

    -

    + + -

    DESCRIPTION -

    arbitrary text describing the purpose of the parameter (always returned)

    -

    + + -

    FIX -

    @@ -2937,9 +3101,9 @@ read only, thus cannot be altered (always returned)

    -

    + + -

    MULTIPLICITY -

    @@ -2948,9 +3112,9 @@ multiple values and false only a single value allowed (always returned)

    -

    + + -

    RANGE_MIN -

    @@ -2961,9 +3125,9 @@ (optionally returned, dependent to driver and port parameter)

    -

    + + -

    RANGE_MAX -

    @@ -2974,9 +3138,9 @@ (optionally returned, dependent to driver and port parameter)

    -

    + + -

    POSSIBILITIES -

    @@ -2986,11 +3150,11 @@ (optionally returned, dependent to device and port parameter)

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular order.

    @@ -3014,9 +3178,12 @@

       "."

    - +

    -

    6.3.13 Changing settings of MIDI input ports

    +

    +
     TOC 
    +

    6.3.13.  +Changing settings of MIDI input ports

    Use the following command to alter a specific setting of a MIDI input port:

    @@ -3026,12 +3193,12 @@

    SET MIDI_INPUT_PORT_PARAMETER <device-id> <port> <key>=<value>

    - +

    Where <device-id> should be replaced by the numerical ID of the MIDI device as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) 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. @@ -3046,9 +3213,9 @@

    in case setting was successfully changed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -3056,19 +3223,19 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -3078,15 +3245,21 @@

    - +

    -

    6.4 Configuring sampler channels

    +

    +
     TOC 
    +

    6.4.  +Configuring sampler channels

    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.

    -

    6.4.1 Loading an instrument

    +

    +
     TOC 
    +

    6.4.1.  +Loading an instrument

    An instrument file can be loaded and assigned to a sampler channel by one of the following commands:

    @@ -3096,7 +3269,7 @@

    LOAD INSTRUMENT [NON_MODAL] '<filename>' <instr-index> <sampler-channel>

    - +

    Where <filename> is the name of the instrument file on the LinuxSampler instance's host system, <instr-index> the index of the @@ -3108,7 +3281,7 @@ 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. The GET CHANNEL INFO (Getting sampler channel information) + on the channel. The GET CHANNEL INFO (Getting sampler channel information) 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 @@ -3125,9 +3298,9 @@

    in case the instrument was successfully loaded

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -3137,19 +3310,19 @@ instrument file), providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -3159,9 +3332,12 @@

    - +

    -

    6.4.2 Loading a sampler engine

    +

    +
     TOC 
    +

    6.4.2.  +Loading a sampler engine

    A sampler engine type can be associated to a specific sampler channel by the following command: @@ -3172,13 +3348,13 @@

    LOAD ENGINE <engine-name> <sampler-channel>

    - +

    Where <engine-name> is an engine name as obtained by the - "LIST AVAILABLE_ENGINES" (Getting all available engines) command and <sampler-channel> + "LIST AVAILABLE_ENGINES" (Getting all available engines) command and <sampler-channel> the sampler channel as returned by the - "ADD CHANNEL" (Adding a new sampler channel) or - "LIST CHANNELS" (Getting all created sampler channel list) command where + "ADD CHANNEL" (Adding a new sampler channel) or + "LIST CHANNELS" (Getting all created sampler channel list) 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 @@ -3198,9 +3374,9 @@

    in case the engine was successfully deployed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -3208,20 +3384,20 @@ are noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -3231,9 +3407,12 @@

    - +

    -

    6.4.3 Getting all created sampler channel count

    +

    +
     TOC 
    +

    6.4.3.  +Getting all created sampler channel count

    The number of sampler channels can change on runtime. To get the current amount of sampler channels, the front-end can send the @@ -3245,7 +3424,7 @@

    GET CHANNELS

    - +

    Possible Answers:

    @@ -3255,7 +3434,7 @@

    LinuxSampler will answer by returning the current number of sampler channels.

    - +

    Example:

    @@ -3267,9 +3446,12 @@

    S: "12"

    - +

    -

    6.4.4 Getting all created sampler channel list

    +

    +
     TOC 
    +

    6.4.4.  +Getting all created sampler channel list

    The number of sampler channels can change on runtime. To get the current list of sampler channels, the front-end can send the @@ -3281,7 +3463,7 @@

    LIST CHANNELS

    - +

    Possible Answers:

    @@ -3292,7 +3474,7 @@ with all sampler channels numerical IDs.

    - +

    Example:

    @@ -3304,9 +3486,12 @@

    S: "0,1,2,3,4,5,6,9,10,11,15,20"

    - +

    -

    6.4.5 Adding a new sampler channel

    +

    +
     TOC 
    +

    6.4.5.  +Adding a new sampler channel

    A new sampler channel can be added to the end of the sampler channel list by sending the following command: @@ -3317,7 +3502,7 @@

    ADD CHANNEL

    - +

    This will increment the sampler channel count by one and the new sampler channel will be appended to the end of the sampler channel @@ -3343,9 +3528,9 @@ the sampler channel by sending subsequent initialization commands

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -3353,20 +3538,20 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -3376,9 +3561,12 @@

    - +

    -

    6.4.6 Removing a sampler channel

    +

    +
     TOC 
    +

    6.4.6.  +Removing a sampler channel

    A sampler channel can be removed by sending the following command:

    @@ -3388,12 +3576,12 @@

    REMOVE CHANNEL <sampler-channel>

    - +

    Where <sampler-channel> should be replaced by the number of the sampler channel as given by the - "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) + "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command. The channel numbers of all subsequent sampler channels remain the same.

    @@ -3407,9 +3595,9 @@

    in case the given sampler channel could be removed

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -3417,20 +3605,20 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Example:

    @@ -3440,9 +3628,12 @@

    - +

    -

    6.4.7 Getting amount of available engines

    +

    +
     TOC 
    +

    6.4.7.  +Getting amount of available engines

    The front-end can ask for the number of available engines by sending the following command:

    @@ -3452,7 +3643,7 @@

    GET AVAILABLE_ENGINES

    - +

    Possible Answers:

    @@ -3462,7 +3653,7 @@

    LinuxSampler will answer by sending the number of available engines.

    - +

    Example:

    @@ -3474,9 +3665,12 @@

    S: "4"

    - +

    -

    6.4.8 Getting all available engines

    +

    +
     TOC 
    +

    6.4.8.  +Getting all available engines

    The front-end can ask for a list of all available engines by sending the following command:

    @@ -3486,7 +3680,7 @@

    LIST AVAILABLE_ENGINES

    - +

    Possible Answers:

    @@ -3499,7 +3693,7 @@ digits and underlines ("_" character).

    - +

    Example:

    @@ -3511,9 +3705,12 @@

    S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"

    - +

    -

    6.4.9 Getting information about an engine

    +

    +
     TOC 
    +

    6.4.9.  +Getting information about an engine

    The front-end can ask for information about a specific engine by sending the following command: @@ -3524,10 +3721,10 @@

    GET ENGINE INFO <engine-name>

    - +

    Where <engine-name> is an engine name as obtained by the - "LIST AVAILABLE_ENGINES" (Getting all available engines) command. + "LIST AVAILABLE_ENGINES" (Getting all available engines) command.

    Possible Answers:

    @@ -3548,22 +3745,22 @@

    arbitrary description text about the engine

    -

    + + -

    VERSION -

    arbitrary character string regarding the engine's version

    -

    + + -

    -

    + + -

    - +

    The mentioned fields above don't have to be in particular order.

    @@ -3581,9 +3778,12 @@

       "."

    - +

    -

    6.4.10 Getting sampler channel information

    +

    +
     TOC 
    +

    6.4.10.  +Getting sampler channel information

    The front-end can ask for the current settings of a sampler channel by sending the following command: @@ -3594,11 +3794,11 @@

    GET CHANNEL INFO <sampler-channel>

    - +

    Where <sampler-channel> is the sampler channel number the front-end is interested in - as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command. + as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command.

    Possible Answers:

    @@ -3621,9 +3821,9 @@ channel, "NONE" if there's no engine associated yet for this sampler channel

    -

    + + -

    AUDIO_OUTPUT_DEVICE -

    @@ -3632,18 +3832,18 @@ the audio signal, "NONE" if there's no device connected to this sampler channel

    -

    + + -

    AUDIO_OUTPUT_CHANNELS -

    number of output channels the sampler channel offers (dependent to used sampler engine and loaded instrument)

    -

    + + -

    AUDIO_OUTPUT_ROUTING -

    @@ -3655,9 +3855,9 @@ channel 1 is routed to the channel 3 of the audio output device

    -

    + + -

    INSTRUMENT_FILE -

    @@ -3665,25 +3865,25 @@ there's no instrument yet loaded for this sampler channel

    -

    + + -

    INSTRUMENT_NR -

    the instrument index number of the loaded instrument

    -

    + + -

    INSTRUMENT_NAME -

    the instrument name of the loaded instrument

    -

    + + -

    INSTRUMENT_STATUS -

    @@ -3691,9 +3891,9 @@ value indicates a loading exception. Value of 100 indicates that the instrument is fully loaded.

    -

    + + -

    MIDI_INPUT_DEVICE -

    @@ -3702,26 +3902,26 @@ MIDI input commands, "NONE" if there's no device connected to this sampler channel

    -

    + + -

    MIDI_INPUT_PORT -

    port number of the MIDI input device

    -

    + + -

    MIDI_INPUT_CHANNEL -

    the MIDI input channel number this sampler channel should listen to or "ALL" to listen on all MIDI channels

    -

    + + -

    VOLUME -

    @@ -3729,9 +3929,9 @@ (where a value < 1.0 means attenuation and a value > 1.0 means amplification)

    -

    + + -

    MUTE -

    @@ -3741,23 +3941,34 @@ presence of a solo channel and will be unmuted when there are no solo channels left

    -

    + + -

    SOLO -

    Determines whether this is a solo channel, "true" if the channel is a solo channel; "false" otherwise

    -

    + + +

    MIDI_INSTRUMENT_MAP - +

    +
    +

    Determines to which MIDI instrument map this sampler + channel is assigned to. Read chapter + "SET CHANNEL MIDI_INSTRUMENT_MAP" (Assigning a MIDI instrument map to a sampler channel) + for a list of possible values.

    -

    + + -

    -

    + + +

    +

    The mentioned fields above don't have to be in particular order.

    @@ -3792,12 +4003,23 @@

       "MIDI_INPUT_CHANNEL: 5"

    +

       "VOLUME: 1.0" +

    +

       "MUTE: false" +

    +

       "SOLO: false" +

    +

       "MIDI_INSTRUMENT_MAP: NONE" +

       "."

    - +

    -

    6.4.11 Current number of active voices

    +

    +
     TOC 
    +

    6.4.11.  +Current number of active voices

    The front-end can ask for the current number of active voices on a sampler channel by sending the following command: @@ -3808,11 +4030,11 @@

    GET CHANNEL VOICE_COUNT <sampler-channel>

    - +

    Where <sampler-channel> is the sampler channel number the front-end is interested in - as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command. + as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command.

    Possible Answers:

    @@ -3823,7 +4045,7 @@ voices on that channel.

    - +

    Example:

    @@ -3833,9 +4055,12 @@

    - +

    -

    6.4.12 Current number of active disk streams

    +

    +
     TOC 
    +

    6.4.12.  +Current number of active disk streams

    The front-end can ask for the current number of active disk streams on a sampler channel by sending the following command: @@ -3846,11 +4071,11 @@

    GET CHANNEL STREAM_COUNT <sampler-channel>

    - +

    Where <sampler-channel> is the sampler channel number the front-end is interested in - as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command. + as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command.

    Possible Answers:

    @@ -3863,7 +4088,7 @@ return "NA" for not available.

    - +

    Example:

    @@ -3873,9 +4098,12 @@

    - +

    -

    6.4.13 Current fill state of disk stream buffers

    +

    +
     TOC 
    +

    6.4.13.  +Current fill state of disk stream buffers

    The front-end can ask for the current fill state of all disk streams on a sampler channel by sending the following command: @@ -3886,7 +4114,7 @@

    GET CHANNEL BUFFER_FILL BYTES <sampler-channel>

    - +

    to get the fill state in bytes or

    @@ -3896,12 +4124,12 @@

    GET CHANNEL BUFFER_FILL PERCENTAGE <sampler-channel>

    - +

    to get the fill state in percent, where <sampler-channel> is the sampler channel number the front-end is interested in - as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command. + as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command.

    Possible Answers:

    @@ -3920,7 +4148,7 @@ to sort them by itself if necessary.

    - +

    Examples:

    @@ -3948,9 +4176,12 @@

    S: ""

    - +

    -

    6.4.14 Setting audio output device

    +

    +
     TOC 
    +

    6.4.14.  +Setting audio output device

    The front-end can set the audio output device on a specific sampler channel by sending the following command: @@ -3961,14 +4192,14 @@

    SET CHANNEL AUDIO_OUTPUT_DEVICE <sampler-channel> <audio-device-id>

    - +

    Where <sampler-channel> is the respective sampler channel - number as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command and + number as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command and <audio-device-id> is the numerical ID of the audio output device as given by the - "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) - or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) + "CREATE AUDIO_OUTPUT_DEVICE" (Creating an audio output device) + or "LIST AUDIO_OUTPUT_DEVICES" (Getting all created audio output device list) command.

    Possible Answers: @@ -3981,9 +4212,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -3991,19 +4222,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4013,9 +4244,12 @@

    - +

    -

    6.4.15 Setting audio output type

    +

    +
     TOC 
    +

    6.4.15.  +Setting audio output type

    DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!

    @@ -4028,7 +4262,7 @@

    SET CHANNEL AUDIO_OUTPUT_TYPE <sampler-channel> <audio-output-type>

    - +

    Where <audio-output-type> is currently either "ALSA" or "JACK" and <sampler-channel> is the respective sampler channel number. @@ -4043,9 +4277,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4053,19 +4287,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4075,9 +4309,12 @@

    - +

    -

    6.4.16 Setting audio output channel

    +

    +
     TOC 
    +

    6.4.16.  +Setting audio output channel

    The front-end can alter the audio output channel on a specific sampler channel by sending the following command: @@ -4088,11 +4325,11 @@

    SET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-chan> <audio-out> <audio-in>

    - +

    Where <sampler-chan> is the sampler channel number - as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command, <audio-out> is the + as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) 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. @@ -4107,9 +4344,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4117,19 +4354,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4139,9 +4376,12 @@

    - +

    -

    6.4.17 Setting MIDI input device

    +

    +
     TOC 
    +

    6.4.17.  +Setting MIDI input device

    The front-end can set the MIDI input device on a specific sampler channel by sending the following command: @@ -4152,14 +4392,14 @@

    SET CHANNEL MIDI_INPUT_DEVICE <sampler-channel> <midi-device-id>

    - +

    Where <sampler-channel> is the sampler channel number - as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command + as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command and <midi-device-id> is the numerical ID of the MIDI input device as returned by the - "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) - or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) command. + "CREATE MIDI_INPUT_DEVICE" (Creating a MIDI input device) + or "LIST MIDI_INPUT_DEVICES" (Getting all created MIDI input device list) command.

    Possible Answers:

    @@ -4171,9 +4411,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4181,19 +4421,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4203,9 +4443,12 @@

    - +

    -

    6.4.18 Setting MIDI input type

    +

    +
     TOC 
    +

    6.4.18.  +Setting MIDI input type

    DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!

    @@ -4218,7 +4461,7 @@

    SET CHANNEL MIDI_INPUT_TYPE <sampler-channel> <midi-input-type>

    - +

    Where <midi-input-type> is currently only "ALSA" and <sampler-channel> is the respective sampler channel number. @@ -4233,9 +4476,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4243,19 +4486,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4265,9 +4508,12 @@

    - +

    -

    6.4.19 Setting MIDI input port

    +

    +
     TOC 
    +

    6.4.19.  +Setting MIDI input port

    The front-end can alter the MIDI input port on a specific sampler channel by sending the following command: @@ -4278,7 +4524,7 @@

    SET CHANNEL MIDI_INPUT_PORT <sampler-channel> <midi-input-port>

    - +

    Where <midi-input-port> is a MIDI input port number of the MIDI input device connected to the sampler channel given by @@ -4294,9 +4540,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4304,19 +4550,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4326,9 +4572,12 @@

    - +

    -

    6.4.20 Setting MIDI input channel

    +

    +
     TOC 
    +

    6.4.20.  +Setting MIDI input channel

    The front-end can alter the MIDI channel a sampler channel should listen to by sending the following command: @@ -4339,7 +4588,7 @@

    SET CHANNEL MIDI_INPUT_CHANNEL <sampler-channel> <midi-input-chan>

    - +

    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 @@ -4355,9 +4604,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4365,19 +4614,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4387,9 +4636,12 @@

    - +

    -

    6.4.21 Setting channel volume

    +

    +
     TOC 
    +

    6.4.21.  +Setting channel volume

    The front-end can alter the volume of a sampler channel by sending the following command: @@ -4400,7 +4652,7 @@

    SET CHANNEL VOLUME <sampler-channel> <volume>

    - +

    Where <volume> is an optionally dotted positive number (a value smaller than 1.0 means attenuation, whereas a value greater than @@ -4417,9 +4669,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4427,19 +4679,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4449,9 +4701,12 @@

    - +

    -

    6.4.22 Muting a sampler channel

    +

    +
     TOC 
    +

    6.4.22.  +Muting a sampler channel

    The front-end can mute/unmute a specific sampler channel by sending the following command: @@ -4462,11 +4717,11 @@

    SET CHANNEL MUTE <sampler-channel> <mute>

    - +

    Where <sampler-channel> is the respective sampler channel - number as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command and + number as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command and <mute> should be replaced either by "1" to mute the channel or "0" to unmute the channel.

    @@ -4480,9 +4735,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4490,19 +4745,19 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4512,9 +4767,12 @@

    - +

    -

    6.4.23 Soloing a sampler channel

    +

    +
     TOC 
    +

    6.4.23.  +Soloing a sampler channel

    The front-end can solo/unsolo a specific sampler channel by sending the following command: @@ -4525,11 +4783,11 @@

    SET CHANNEL SOLO <sampler-channel> <solo>

    - +

    Where <sampler-channel> is the respective sampler channel - number as returned by the "ADD CHANNEL" (Adding a new sampler channel) - or "LIST CHANNELS" (Getting all created sampler channel list) command and + number as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command and <solo> should be replaced either by "1" to solo the channel or "0" to unsolo the channel.

    @@ -4543,9 +4801,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4553,19 +4811,117 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    +
    + +

    + +

    +

    Examples: +

    +

    +

    +
    +

    +

    +

    + +

    +

    +
     TOC 
    +

    6.4.24.  +Assigning a MIDI instrument map to a sampler channel

    + +

    The front-end can assign a MIDI instrument map to a specific sampler channel + by sending the following command: +

    +

    +

    +
    +

    SET CHANNEL MIDI_INSTRUMENT_MAP <sampler-channel> <map> +

    +

    + +

    +

    Where <sampler-channel> is the respective sampler channel + number as returned by the "ADD CHANNEL" (Adding a new sampler channel) + or "LIST CHANNELS" (Getting all created sampler channel list) command and + <map> can have the following possibilites: +

    +

    +

    +
    +

    "NONE" - +

    +
    +

    This is the default setting. In this case + the sampler channel is not assigned any MIDI + instrument map and thus will ignore all MIDI + program change messages. +

    +
    + +

    "DEFAULT" - +

    +
    +

    The sampler channel will always use the + default MIDI instrument map to handle MIDI + program change messages. +

    +
    + + +

    numeric ID - +

    +
    +

    You can assign a specific MIDI instrument map + by replacing <map> with the respective numeric + ID of the MIDI instrument map as returned by the + "LIST MIDI_INSTRUMENT_MAPS" (Getting all created MIDI instrument maps) + command. Once that map will be deleted, the sampler + channel would fall back to "NONE".

    +
    + +

    + +

    +

    Read chapter "MIDI Instrument Mapping" (MIDI Instrument Mapping) + for details regarding MIDI instrument mapping. +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK" - +

    +
    +

    on success +

    +
    + +

    "ERR:<error-code>:<error-message>" - +

    +
    +

    in case it failed, providing an appropriate error code and error message +

    +
    + + +

    +

    Examples:

    @@ -4575,9 +4931,12 @@

    - +

    -

    6.4.24 Resetting a sampler channel

    +

    +
     TOC 
    +

    6.4.25.  +Resetting a sampler channel

    The front-end can reset a particular sampler channel by sending the following command:

    @@ -4587,7 +4946,7 @@

    RESET CHANNEL <sampler-channel>

    - +

    Where <sampler-channel> defines the sampler channel to be reset. @@ -4605,9 +4964,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4615,20 +4974,20 @@ related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4638,13 +4997,19 @@

    - +

    -

    6.5 Controlling connection

    +

    +
     TOC 
    +

    6.5.  +Controlling connection

    The following commands are used to control the connection to LinuxSampler.

    -

    6.5.1 Register front-end for receiving event messages

    +

    +
     TOC 
    +

    6.5.1.  +Register front-end for receiving event messages

    The front-end can register itself to the LinuxSampler application to be informed about noteworthy events by sending this command: @@ -4655,7 +5020,7 @@

    SUBSCRIBE <event-id>

    - +

    where <event-id> will be replaced by the respective event that client wants to subscribe to. @@ -4670,9 +5035,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4680,20 +5045,20 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4703,9 +5068,12 @@

    - +

    -

    6.5.2 Unregister front-end for not receiving event messages

    +

    +
     TOC 
    +

    6.5.2.  +Unregister front-end for not receiving event messages

    The front-end can unregister itself if it doesn't want to receive event messages anymore by sending the following command: @@ -4716,7 +5084,7 @@

    UNSUBSCRIBE <event-id>

    - +

    Where <event-id> will be replaced by the respective event that client doesn't want to receive anymore. @@ -4731,9 +5099,9 @@

    on success

    -

    + + -

    "WRN:<warning-code>:<warning-message>" -

    @@ -4741,20 +5109,20 @@ issue(s) related, providing an appropriate warning code and warning message

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    in case it failed, providing an appropriate error code and error message

    -

    + + -

    - +

    Examples:

    @@ -4764,9 +5132,12 @@

    - +

    -

    6.5.3 Enable or disable echo of commands

    +

    +
     TOC 
    +

    6.5.3.  +Enable or disable echo of commands

    To enable or disable back sending of commands to the client the following command can be used:

    @@ -4776,7 +5147,7 @@

    SET ECHO <value>

    - +

    Where <value> should be replaced either by "1" to enable echo mode or "0" to disable echo mode. When echo mode is enabled, all @@ -4796,19 +5167,19 @@

    usually

    -

    + + -

    "ERR:<error-code>:<error-message>" -

    on syntax error, e.g. non boolean value

    -

    + + -

    - +

    Examples:

    @@ -4818,9 +5189,12 @@

    - +

    -

    6.5.4 Close client connection

    +

    +
     TOC 
    +

    6.5.4.  +Close client connection

    The client can close its network connection to LinuxSampler by sending the following command:

    @@ -4830,16 +5204,76 @@

    QUIT

    - +

    This is probably more interesting for manual telnet connections to LinuxSampler than really useful for a front-end implementation.

    -

    6.6 Global commands

    +

    +
     TOC 
    +

    6.6.  +Global commands

    The following commands have global impact on the sampler.

    -

    6.6.1 Reset sampler

    +

    +
     TOC 
    +

    6.6.1.  +Current number of active voices

    + +

    The front-end can ask for the current number of active voices on + the sampler by sending the following command: +

    +

    +

    +
    +

    GET TOTAL_VOICE_COUNT +

    +

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    LinuxSampler will answer by returning the number of all active + voices on the sampler. +

    +

    + +

    +

    +
     TOC 
    +

    6.6.2.  +Maximum amount of active voices

    + +

    The front-end can ask for the maximum number of active voices + by sending the following command: +

    +

    +

    +
    +

    GET TOTAL_VOICE_COUNT_MAX +

    +

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    LinuxSampler will answer by returning the maximum number + of active voices. +

    +

    + +

    +

    +
     TOC 
    +

    6.6.3.  +Reset sampler

    The front-end can reset the whole sampler by sending the following command:

    @@ -4849,7 +5283,7 @@

    RESET

    - +

    Possible Answers:

    @@ -4861,11 +5295,11 @@

    always

    -

    + + -

    - +

    Examples:

    @@ -4875,9 +5309,12 @@

    - +

    -

    6.6.2 General sampler informations

    +

    +
     TOC 
    +

    6.6.4.  +General sampler informations

    The client can ask for general informations about the LinuxSampler instance by sending the following command: @@ -4888,7 +5325,7 @@

    GET SERVER INFO

    - +

    Possible Answers:

    @@ -4900,7 +5337,7 @@ 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: - +

    @@ -4910,52 +5347,1049 @@

    arbitrary textual description about the sampler

    -

    + + -

    VERSION -

    version of the sampler

    -

    + + -

    PROTOCOL_VERSION -

    version of the LSCP specification the sampler - complies with (see Section 2 (Versioning of this specification) for details) + complies with (see Section 2 (Versioning of this specification) for details) +

    +
    + + + + + +

    + +

    +

    The mentioned fields above don't have to be in particular order. + Other fields might be added in future. +

    +

    +
     TOC 
    +

    6.7.  +MIDI Instrument Mapping

    + +

    The MIDI protocol provides a way to switch between instruments + by sending so called MIDI bank select and MIDI program change + messages which are essentially just numbers. The following commands + allow to actually map arbitrary MIDI bank select / program change + numbers with real instruments. +

    +

    The sampler allows to manage an arbitrary amount of MIDI + instrument maps which define which instrument to load on + which MIDI program change message. +

    +

    By default, that is when the sampler is launched, there is no + map, thus the sampler will simply ignore all program change + messages. The front-end has to explicitly create at least one + map, add entries to the map and tell the respective sampler + channel(s) which MIDI instrument map to use, so the sampler + knows how to react on a given program change message on the + respective sampler channel, that is by switching to the + respectively defined engine type and loading the respective + instrument. See command + "SET CHANNEL MIDI_INSTRUMENT_MAP" (Assigning a MIDI instrument map to a sampler channel) + for how to assign a MIDI instrument map to a sampler channel. +

    +

    Also note per MIDI specification a bank select message does not + cause to switch to another instrument. Instead when receiving a + bank select message the bank value will be stored and a subsequent + program change message (which may occur at any time) will finally + cause the sampler to switch to the respective instrument as + reflected by the current MIDI instrument map. +

    +

    +
     TOC 
    +

    6.7.1.  +Create a new MIDI instrument map

    + +

    The front-end can add a new MIDI instrument map by sending + the following command: +

    +

    +

    +
    +

    ADD MIDI_INSTRUMENT_MAP [<name>] +

    +

    + +

    +

    Where <name> is an optional argument allowing to + assign a custom name to the new map. MIDI instrument Map + names do not have to be unique. +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK[<map>]" - +

    +
    +

    in case a new MIDI instrument map could + be added, where <map> reflects the + unique ID of the newly created MIDI + instrument map +

    +
    + + +

    "ERR:<error-code>:<error-message>" - +

    +
    +

    when a new map could not be created, which + might never occur in practice +

    +
    + + +

    + +

    +

    Examples: +

    +

    +

    +
    +

    C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'" +

    +

    S: "OK[0]" +

    +

    + +

    +

    +

    +
    +

    C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'" +

    +

    S: "OK[1]" +

    +

    + +

    +

    +

    +
    +

    C: "ADD MIDI_INSTRUMENT_MAP" +

    +

    S: "OK[5]" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.2.  +Delete one particular or all MIDI instrument maps

    + +

    The front-end can delete a particular MIDI instrument map + by sending the following command: +

    +

    +

    +
    +

    REMOVE MIDI_INSTRUMENT_MAP <map> +

    +

    + +

    +

    Where <map> reflects the unique ID of the map to delete + as returned by the "LIST MIDI_INSTRUMENT_MAPS" (Getting all created MIDI instrument maps) + command. +

    +

    The front-end can delete all MIDI instrument maps by + sending the following command: +

    +

    +

    +
    +

    REMOVE MIDI_INSTRUMENT_MAP ALL +

    +

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK" - +

    +
    +

    in case the map(s) could be deleted +

    +
    + + +

    "ERR:<error-code>:<error-message>" - +

    +
    +

    when the given map does not exist +

    +
    + + +

    + +

    +

    Examples: +

    +

    +

    +
    +

    C: "REMOVE MIDI_INSTRUMENT_MAP 0" +

    +

    S: "OK" +

    +

    + +

    +

    +

    +
    +

    C: "REMOVE MIDI_INSTRUMENT_MAP ALL" +

    +

    S: "OK" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.3.  +Get amount of existing MIDI instrument maps

    + +

    The front-end can retrieve the current amount of MIDI + instrument maps by sending the following command: +

    +

    +

    +
    +

    GET MIDI_INSTRUMENT_MAPS +

    +

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    The sampler will answer by returning the current + number of MIDI instrument maps. +

    +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "GET MIDI_INSTRUMENT_MAPS" +

    +

    S: "2"

    + +

    +

    +
     TOC 
    +

    6.7.4.  +Getting all created MIDI instrument maps

    +

    The number of MIDI instrument maps can change on runtime. To get the + current list of MIDI instrument maps, the front-end can send the + following command: +

    +

    +

    +
    +

    LIST MIDI_INSTRUMENT_MAPS

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    The sampler will answer by returning a comma separated list + with all MIDI instrument maps' numerical IDs. +

    +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "LIST MIDI_INSTRUMENT_MAPS" +

    +

    S: "0,1,5,12" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.5.  +Getting MIDI instrument map information

    +

    The front-end can ask for the current settings of a MIDI + instrument map by sending the following command: +

    +

    +

    +
    +

    GET MIDI_INSTRUMENT_MAP INFO <map>

    + +

    +

    Where <map> is the numerical ID of the map the + front-end is interested in as returned by the + "LIST MIDI_INSTRUMENT_MAPS" (Getting all created MIDI instrument maps) + command. +

    +

    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 setting category. At the + moment the following categories are defined: +

    +

    +

    +
    +

    NAME - +

    +
    +

    custom name of the given map, + which does not have to be unique +

    +
    + + +
    + +

    +

    The mentioned fields above don't have to be in particular order. - Other fields might be added in future. +

    +

    Example: +

    +

    +

    +
    +

    C: "GET MIDI_INSTRUMENT_MAP INFO 0" +

    +

    S: "NAME: Standard Map" +

    +

       "." +

    +

    + +

    +

    +
     TOC 
    +

    6.7.6.  +Renaming a MIDI instrument map

    + +

    The front-end can alter the custom name of a MIDI + instrument map by sending the following command: +

    +

    +

    +
    +

    SET MIDI_INSTRUMENT_MAP NAME <map> <name> +

    +

    + +

    +

    Where <map> is the numerical ID of the map and + <name> the new custom name of the map, which does not + have to be unique. +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK" - +

    +
    +

    on success +

    +
    + + +

    "ERR:<error-code>:<error-message>" - +

    +
    +

    in case the given map does not exist +

    +
    + + +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'" +

    +

    S: "OK" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.7.  +Create or replace a MIDI instrument map entry

    + +

    The front-end can create a new or replace an existing entry + in a sampler's MIDI instrument map by sending the following + command: +

    +

    +

    +
    +

    MAP MIDI_INSTRUMENT <map> + <midi_bank> <midi_prog> <engine_name> + <filename> <instrument_index> <volume_value> + [<instr_load_mode>] [<name>] +

    +

    + +

    +

    Where <map> is the numeric ID of the map to alter, + <midi_bank> is an integer value between + 0..16383 reflecting the MIDI bank select index, + <midi_prog> an + integer value between 0..127 reflecting the MIDI program change + index, <engine_name> a sampler engine name as returned by + the "LIST AVAILABLE_ENGINES" (Getting all available engines) + command (not encapsulated into apostrophes), <filename> the name + of the instrument's file to be deployed (encapsulated into apostrophes), + <instrument_index> the index (integer value) of the instrument + within the given file, <volume_value> reflects the master + volume of the instrument as optionally dotted number (where a + value < 1.0 means attenuation and a value > 1.0 means + amplification). This parameter easily allows to adjust the + volume of all intruments within a custom instrument map + without having to adjust their instrument files. The + OPTIONAL <instr_load_mode> argument defines the life + time of the instrument, that is when the instrument should + be loaded, when freed and has exactly the following + possibilities: +

    +

    +

    +
    +

    "ON_DEMAND" - +

    +
    +

    The instrument will be loaded when needed, + that is when demanded by at least one sampler + channel. It will immediately be freed from memory + when not needed by any sampler channel anymore. +

    +
    + + +

    "ON_DEMAND_HOLD" - +

    +
    +

    The instrument will be loaded when needed, + that is when demanded by at least one sampler + channel. It will be kept in memory even when + not needed by any sampler channel anymore. + Instruments with this mode are only freed + when the sampler is reset or all mapping + entries with this mode (and respective + instrument) are explicitly changed to + "ON_DEMAND" and no sampler channel is using + the instrument anymore. +

    +
    + + +

    "PERSISTENT" - +

    +
    +

    The instrument will immediately be loaded + into memory in the background when this mapping + command is sent and the instrument is kept all + the time. Instruments with this mode are + only freed when the sampler is reset or all + mapping entries with this mode (and + respective instrument) are explicitly + changed to "ON_DEMAND" and no sampler + channel is using the instrument anymore. +

    +
    + + +

    not supplied - +

    +
    +

    In case there is no <instr_load_mode> + argument given, it will be up to the + InstrumentManager to decide which mode to use. + Usually it will use "ON_DEMAND" if an entry + for the given instrument does not exist in + the InstrumentManager's list yet, otherwise + if an entry already exists, it will simply + stick with the mode currently reflected by + the already existing entry, that is it will + not change the mode. +

    +
    + + +

    + +

    +

    + The <instr_load_mode> argument thus allows to define an + appropriate strategy (low memory consumption vs. fast + instrument switching) for each instrument individually. Note, the + following restrictions apply to this argument: "ON_DEMAND_HOLD" and + "PERSISTENT" have to be supported by the respective sampler engine + (which is technically the case when the engine provides an + InstrumentManager for its format). If this is not the case the + argument will automatically fall back to the default value + "ON_DEMAND". Also the load mode of one instrument may + automatically change the laod mode of other instrument(s), i.e. + because the instruments are part of the same file and the + engine does not allow a way to manage load modes for them + individually. Due to this, in case the frontend shows the + load modes of entries, the frontend should retrieve the actual + mode by i.e. sending + "GET MIDI_INSTRUMENT INFO" (Get current settings of MIDI instrument map entry) + command(s). Finally the OPTIONAL <name> argument allows to + set a custom name (encapsulated into apostrophes) for the mapping + entry, useful for frontends for displaying an appropriate name for + mapped instruments (using + "GET MIDI_INSTRUMENT INFO" (Get current settings of MIDI instrument map entry)). + +

    +

    + The "MAP MIDI_INSTRUMENT" command + will immediately return, thus it will not block when an + instrument is to be loaded due to a "PERSISTENT" type + entry as instruments are loaded in the background. As a + consequence this command may not necessarily return an error + i.e. when the given instrument file does not exist or may + turn out to be corrupt. + +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK" - +

    +
    +

    usually +

    +
    + + +

    "ERR:<error-code>:<error-message>" - +

    +
    +

    when the given map or engine does not exist or a value + is out of range +

    +
    + + +

    + +

    +

    Examples: +

    +

    +

    +
    +

    C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT" +

    +

    S: "OK" +

    +

    + +

    +

    +

    +
    +

    C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0" +

    +

    S: "OK" +

    +

    + +

    +

    +

    +
    +

    C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'" +

    +

    S: "OK" +

    +

    C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'" +

    +

    S: "OK" +

    +

    + +

    +

    +

    +
    +

    C: "MAP MIDI_INSTRUMENT 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'" +

    +

    S: "OK" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.8.  +Getting ammount of MIDI instrument map entries

    + +

    The front-end can query the amount of currently existing + entries in a MIDI instrument map by sending the following + command: +

    +

    +

    +
    +

    GET MIDI_INSTRUMENTS <map> +

    +

    + +

    +

    The front-end can query the amount of currently existing + entries in all MIDI instrument maps by sending the following + command: +

    +

    +

    +
    +

    GET MIDI_INSTRUMENTS ALL +

    +

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    The sampler will answer by sending the current number of + entries in the MIDI instrument map(s). +

    +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "GET MIDI_INSTRUMENTS 0" +

    +

    S: "234" +

    +

    + +

    +

    +

    +
    +

    C: "GET MIDI_INSTRUMENTS ALL" +

    +

    S: "954" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.9.  +Getting indeces of all entries of a MIDI instrument map

    + +

    The front-end can query a list of all currently existing + entries in a certain MIDI instrument map by sending the following + command: +

    +

    +

    +
    +

    LIST MIDI_INSTRUMENTS <map> +

    +

    + +

    +

    Where <map> is the numeric ID of the MIDI instrument map. +

    +

    The front-end can query a list of all currently existing + entries of all MIDI instrument maps by sending the following + command: +

    +

    +

    +
    +

    LIST MIDI_INSTRUMENTS ALL +

    +

    + +

    +

    Possible Answers: +

    +

    +

    +
    +

    The sampler will answer by sending a comma separated + list of map ID - MIDI bank - MIDI program triples, where + each triple is encapsulated into curly braces. The + list is returned in one single line. Each triple + just reflects the key of the respective map entry, + thus subsequent + "GET MIDI_INSTRUMENT INFO" (Get current settings of MIDI instrument map entry) + command(s) are necessary to retrieve detailed informations + about each entry. +

    +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "LIST MIDI_INSTRUMENTS 0" +

    +

    S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.10.  +Remove an entry from the MIDI instrument map

    + +

    The front-end can delete an entry from a MIDI instrument + map by sending the following command: +

    +

    +

    +
    +

    UNMAP MIDI_INSTRUMENT <map> <midi_bank> <midi_prog> +

    +

    + +

    +

    + Where <map> is the numeric ID of the MIDI instrument map, + <midi_bank> is an integer value between 0..16383 + reflecting the MIDI bank value and + <midi_prog> an integer value between + 0..127 reflecting the MIDI program value of the map's entrie's key + index triple. + +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK" - +

    +
    +

    usually +

    +
    + + +

    "ERR:<error-code>:<error-message>" - +

    +
    +

    when index out of bounds +

    +
    + + +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "UNMAP MIDI_INSTRUMENT 0 2 127" +

    +

    S: "OK" +

    +

    + +

    +

    +
     TOC 
    +

    6.7.11.  +Get current settings of MIDI instrument map entry

    + +

    The front-end can retrieve the current settings of a certain + instrument map entry by sending the following command: +

    +

    +

    +
    +

    GET MIDI_INSTRUMENT INFO <map> <midi_bank> <midi_prog> +

    +

    + +

    +

    + Where <map> is the numeric ID of the MIDI instrument map, + <midi_bank> is an integer value between 0..16383 + reflecting the MIDI bank value, <midi_bank> + and <midi_prog> an integer value between + 0..127 reflecting the MIDI program value of the map's entrie's key + index triple. + +

    +

    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 info category. At the moment + the following categories are defined: +

    +

    "NAME" - +

    +
    +

    Name for this MIDI instrument map entry (if defined). + This name shall be used by frontends for displaying a + name for this mapped instrument. It can be set and + changed with the + "MAP MIDI_INSTRUMENT" (Create or replace a MIDI instrument map entry) + command and does not have to be unique. +

    +
    + + +

    "ENGINE_NAME" - +

    +
    +

    Name of the engine to be deployed for this + instrument. +

    +
    + + +

    "INSTRUMENT_FILE" - +

    +
    +

    File name of the instrument. +

    +
    + + +

    "INSTRUMENT_NR" - +

    +
    +

    Index of the instrument within the file. +

    +
    + + +

    "INSTRUMENT_NAME" - +

    +
    +

    Name of the loaded instrument as reflected by its file. + In contrast to the "NAME" field, the "INSTRUMENT_NAME" field + cannot be changed. +

    +
    + + +

    "LOAD_MODE" - +

    +
    +

    Life time of instrument + (see "MAP MIDI_INSTRUMENT" (Create or replace a MIDI instrument map entry) for details about this setting). +

    +
    + + +

    "VOLUME" - +

    +
    +

    master volume of the instrument as optionally + dotted number (where a value < 1.0 means attenuation + and a value > 1.0 means amplification) +

    +
    + + +

    The mentioned fields above don't have to be in particular order. +

    +

    + +

    +

    Example: +

    +

    +

    +
    +

    C: "GET MIDI_INSTRUMENT INFO 1 45 120" +

    +

    S: "NAME: Drums for Foo Song" +

    +

       "ENGINE_NAME: GigEngine" +

    +

       "INSTRUMENT_FILE: /usr/share/joesdrumkit.gig" +

    +

       "INSTRUMENT_NR: 0" +

    +

       "INSTRUMENT_NAME: Joe's Drumkit" +

    +

       "LOAD_MODE: PERSISTENT" +

    +

       "VOLUME: 1.0" +

    +

       "." +

    +

    + +

    +

    +
     TOC 
    +

    6.7.12.  +Clear MIDI instrument map

    + +

    The front-end can clear a whole MIDI instrument map, that + is delete all its entries by sending the following command: +

    +

    +

    +
    +

    CLEAR MIDI_INSTRUMENTS <map> +

    +

    + +

    +

    Where <map> is the numeric ID of the map to clear. +

    +

    The front-end can clear all MIDI instrument maps, that + is delete all entries of all maps by sending the following + command: +

    +

    +

    +
    +

    CLEAR MIDI_INSTRUMENTS ALL +

    +

    + +

    +

    The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the + maps, only their entries, thus the map's settings like + custom name will be preservevd. +

    +

    Possible Answers: +

    +

    +

    +
    +

    "OK" - +

    +
    +

    always +

    +
    + + +

    + +

    +

    Examples: +

    +

    +

    +
    +

    C: "CLEAR MIDI_INSTRUMENTS 0" +

    +

    S: "OK" +

    +

    + +

    +

    +

    +
    +

    C: "CLEAR MIDI_INSTRUMENTS ALL" +

    +

    S: "OK" +

    +

    +



    -
     TOC 
    -

    7. Command Syntax

    +
     TOC 
    +

    7.  +Command Syntax

    -

    The grammar of the control protocol as descibed in Section 6 (Description for control commands) - is defined below using Backus-Naur Form (BNF as described in [RFC2234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications,” 1997.)) +

    The grammar of the control protocol as descibed in Section 6 (Description for control commands) + is defined below using Backus-Naur Form (BNF as described in [RFC2234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications,” 1997.)) where applicable. - +

    input =

    line LF - +

    / line CR LF - +

    @@ -4964,16 +6398,16 @@

    /* epsilon (empty line ignored) */ - +

    / comment - +

    / command - +

    / error - +

    @@ -4982,19 +6416,19 @@

    '#' - +

    / comment '#' - +

    / comment SP - +

    / comment number - +

    / comment string - +

    @@ -5002,48 +6436,72 @@

    command =

    -

    ADD SP CHANNEL - +

    ADD SP add_instruction + +

    +

    / MAP SP map_instruction + +

    +

    / UNMAP SP unmap_instruction +

    / GET SP get_instruction - +

    / CREATE SP create_instruction - +

    / DESTROY SP destroy_instruction - +

    / LIST SP list_instruction - +

    / LOAD SP load_instruction - +

    -

    / REMOVE SP CHANNEL SP sampler_channel - +

    / REMOVE SP remove_instruction +

    / SET SP set_instruction - +

    / SUBSCRIBE SP subscribe_event - +

    / UNSUBSCRIBE SP unsubscribe_event - +

    / SELECT SP text - +

    -

    / RESET SP CHANNEL SP sampler_channel - +

    / RESET SP reset_instruction + +

    +

    / CLEAR SP clear_instruction +

    / RESET - +

    / QUIT + +

    +

    +

    add_instruction = +

    +
    +

    CHANNEL + +

    +

    / MIDI_INSTRUMENT_MAP + +

    +

    / MIDI_INSTRUMENT_MAP SP map_name + +

    @@ -5051,22 +6509,25 @@

    CHANNEL_COUNT - +

    / VOICE_COUNT - +

    / STREAM_COUNT - +

    / BUFFER_FILL - +

    / CHANNEL_INFO - +

    / MISCELLANEOUS - + +

    +

    / TOTAL_VOICE_COUNT +

    @@ -5075,23 +6536,68 @@

    CHANNEL_COUNT - +

    / VOICE_COUNT - +

    / STREAM_COUNT - +

    / BUFFER_FILL - +

    / CHANNEL_INFO - +

    / MISCELLANEOUS + +

    +

    / TOTAL_VOICE_COUNT + +

    +

    + +

    +

    map_instruction = +

    +
    +

    MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value + +

    +

    / MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode + +

    +

    / MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name + +

    +

    / MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name + +

    +

    +

    unmap_instruction = +

    +
    +

    MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog + +

    +

    + +

    +

    remove_instruction = +

    +
    +

    CHANNEL SP sampler_channel + +

    +

    / MIDI_INSTRUMENT_MAP SP midi_map + +

    +

    / MIDI_INSTRUMENT_MAP SP ALL + +

    @@ -5099,76 +6605,97 @@

    AVAILABLE_ENGINES - +

    / AVAILABLE_MIDI_INPUT_DRIVERS - +

    / MIDI_INPUT_DRIVER SP INFO SP string - +

    / MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string - +

    / MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list - +

    / AVAILABLE_AUDIO_OUTPUT_DRIVERS - +

    / AUDIO_OUTPUT_DRIVER SP INFO SP string - +

    / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string - +

    / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list - +

    / AUDIO_OUTPUT_DEVICES - +

    / MIDI_INPUT_DEVICES - +

    / AUDIO_OUTPUT_DEVICE SP INFO SP number - +

    / MIDI_INPUT_DEVICE SP INFO SP number - +

    / MIDI_INPUT_PORT SP INFO SP number SP number - +

    / MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string - +

    / AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number - +

    / AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string - +

    / CHANNELS - +

    / CHANNEL SP INFO SP sampler_channel - +

    / CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel - +

    / CHANNEL SP STREAM_COUNT SP sampler_channel - +

    / CHANNEL SP VOICE_COUNT SP sampler_channel - +

    / ENGINE SP INFO SP engine_name - +

    / SERVER SP INFO - + +

    +

    / TOTAL_VOICE_COUNT + +

    +

    / TOTAL_VOICE_COUNT_MAX + +

    +

    / MIDI_INSTRUMENTS SP midi_map + +

    +

    / MIDI_INSTRUMENTS SP ALL + +

    +

    / MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog + +

    +

    / MIDI_INSTRUMENT_MAPS + +

    +

    / MIDI_INSTRUMENT_MAP SP INFO SP midi_map +

    @@ -5177,22 +6704,25 @@

    AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list - +

    / AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list - +

    / MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list - +

    / MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list - +

    / CHANNEL SP set_chan_instruction - + +

    +

    / MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name +

    / ECHO SP boolean - +

    @@ -5201,17 +6731,38 @@

    AUDIO_OUTPUT_DEVICE SP string SP key_val_list - +

    / AUDIO_OUTPUT_DEVICE SP string - +

    / MIDI_INPUT_DEVICE SP string SP key_val_list - +

    / MIDI_INPUT_DEVICE SP string + +

    +

    + +

    +

    reset_instruction = +

    +
    +

    CHANNEL SP sampler_channel + +

    +

    +

    clear_instruction = +

    +
    +

    MIDI_INSTRUMENTS SP midi_map + +

    +

    / MIDI_INSTRUMENTS SP ALL + +

    @@ -5219,10 +6770,10 @@

    AUDIO_OUTPUT_DEVICE SP number - +

    / MIDI_INPUT_DEVICE SP number - +

    @@ -5231,10 +6782,10 @@

    INSTRUMENT SP load_instr_args - +

    / ENGINE SP load_engine_args - +

    @@ -5243,37 +6794,46 @@

    AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index - +

    / AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index - +

    / AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name - +

    / MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index - +

    / MIDI_INPUT_DEVICE SP sampler_channel SP device_index - +

    / MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index - +

    / MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index - +

    / MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name - +

    / VOLUME SP sampler_channel SP volume_value - +

    / MUTE SP sampler_channel SP boolean - +

    / SOLO SP sampler_channel SP boolean - + +

    +

    / MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map + +

    +

    / MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE + +

    +

    / MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT +

    @@ -5282,10 +6842,10 @@

    string '=' param_val_list - +

    / key_val_list SP string '=' param_val_list - +

    @@ -5294,10 +6854,10 @@

    BYTES - +

    / PERCENTAGE - +

    @@ -5306,22 +6866,31 @@

    AUDIO_OUTPUT_DEVICES - +

    / MIDI_INPUT_DEVICES - +

    / CHANNELS - +

    / AVAILABLE_ENGINES - +

    / AVAILABLE_MIDI_INPUT_DRIVERS - +

    / AVAILABLE_AUDIO_OUTPUT_DRIVERS - + +

    +

    / MIDI_INSTRUMENTS SP midi_map + +

    +

    / MIDI_INSTRUMENTS SP ALL + +

    +

    / MIDI_INSTRUMENT_MAPS +

    @@ -5330,10 +6899,10 @@

    filename SP instrument_index SP sampler_channel - +

    / NON_MODAL SP filename SP instrument_index SP sampler_channel - +

    @@ -5342,8 +6911,23 @@

    engine_name SP sampler_channel + +

    +

    +

    instr_load_mode = +

    +
    +

    ON_DEMAND + +

    +

    / ON_DEMAND_HOLD + +

    +

    / PERSISTENT + +

    @@ -5351,7 +6935,7 @@

    number - +

    @@ -5360,7 +6944,7 @@

    number - +

    @@ -5369,7 +6953,7 @@

    string - +

    @@ -5378,7 +6962,7 @@

    number - +

    @@ -5387,10 +6971,10 @@

    number - +

    / ALL - +

    @@ -5399,8 +6983,35 @@

    string + +

    +

    + +

    +

    midi_map = +

    +
    +

    number + +

    +

    +

    midi_bank = +

    +
    +

    number + +

    +

    + +

    +

    midi_prog = +

    +
    +

    number + +

    @@ -5408,10 +7019,10 @@

    dotnum - +

    / number - +

    @@ -5420,7 +7031,7 @@

    number - +

    @@ -5429,7 +7040,7 @@

    number - +

    @@ -5438,7 +7049,7 @@

    string - +

    @@ -5447,8 +7058,26 @@

    stringval + +

    +

    +

    map_name = +

    +
    +

    stringval + +

    +

    + +

    +

    entry_name = +

    +
    +

    stringval + +

    @@ -5456,10 +7085,10 @@

    param_val - +

    / param_val_list','param_val - +

    @@ -5468,30 +7097,31 @@

    string - -

    -

    / '\'' string '\'' - +

    -

    / '\"' string '\"' - +

    / stringval +

    / number - +

    / dotnum - +



    -
     TOC 
    -

    8. Events

    +
     TOC 
    +

    8.  +Events

    This chapter will describe all currently defined events supported by LinuxSampler.

    -

    8.1 Number of sampler channels changed

    +

    +
     TOC 
    +

    8.1.  +Number of sampler channels changed

    Client may want to be notified when the total number of channels on the back-end changes by issuing the following command: @@ -5502,7 +7132,7 @@

    SUBSCRIBE CHANNEL_COUNT

    - +

    Server will start sending the following notification messages:

    @@ -5512,12 +7142,15 @@

    "NOTIFY:CHANNEL_COUNT:<channels>"

    - +

    where <channels> will be replaced by the new number of sampler channels.

    -

    8.2 Number of active voices changed

    +

    +
     TOC 
    +

    8.2.  +Number of active voices changed

    Client may want to be notified when the number of voices on the back-end changes by issuing the following command: @@ -5528,7 +7161,7 @@

    SUBSCRIBE VOICE_COUNT

    - +

    Server will start sending the following notification messages:

    @@ -5538,13 +7171,16 @@

    "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 active voices on that channel.

    -

    8.3 Number of active disk streams changed

    +

    +
     TOC 
    +

    8.3.  +Number of active disk streams changed

    Client may want to be notified when the number of streams on the back-end changes by issuing the following command: SUBSCRIBE STREAM_COUNT @@ -5555,7 +7191,7 @@

    SUBSCRIBE STREAM_COUNT

    - +

    Server will start sending the following notification messages:

    @@ -5565,13 +7201,16 @@

    "NOTIFY:STREAM_COUNT:<sampler-channel> <streams>"

    - +

    where <sampler-channel> will be replaced by the sampler channel the stream count change occurred and <streams> by the new number of active disk streams on that channel.

    -

    8.4 Disk stream buffer fill state changed

    +

    +
     TOC 
    +

    8.4.  +Disk stream buffer fill state changed

    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: @@ -5582,7 +7221,7 @@

    SUBSCRIBE BUFFER_FILL

    - +

    Server will start sending the following notification messages:

    @@ -5592,14 +7231,17 @@

    "NOTIFY:BUFFER_FILL:<sampler-channel> <fill-data>"

    - +

    where <sampler-channel> will be replaced by the sampler channel the buffer fill state change occurred on and <fill-data> will be replaced by the - buffer fill data for this channel as described in Section 6.4.13 (Current fill state of disk stream buffers) - as if the "GET CHANNEL BUFFER_FILL PERCENTAGE" (Current fill state of disk stream buffers) command was issued on this channel. + buffer fill data for this channel as described in Section 6.4.13 (Current fill state of disk stream buffers) + as if the "GET CHANNEL BUFFER_FILL PERCENTAGE" (Current fill state of disk stream buffers) command was issued on this channel.

    -

    8.5 Channel information changed

    +

    +
     TOC 
    +

    8.5.  +Channel information changed

    Client may want to be notified when changes were made to sampler channels on the back-end by issuing the following command: @@ -5610,7 +7252,7 @@

    SUBSCRIBE CHANNEL_INFO

    - +

    Server will start sending the following notification messages:

    @@ -5620,7 +7262,7 @@

    "NOTIFY:CHANNEL_INFO:<sampler-channel>"

    - +

    where <sampler-channel> will be replaced by the sampler channel the channel info change occurred. The front-end will have to send @@ -5629,7 +7271,39 @@ time events happening on the server, it is believed that an empty notification message is sufficient here.

    -

    8.6 Miscellaneous and debugging events

    +

    +
     TOC 
    +

    8.6.  +Total number of active voices changed

    + +

    Client may want to be notified when the total number of voices on the + back-end changes by issuing the following command: +

    +

    +

    +
    +

    SUBSCRIBE TOTAL_VOICE_COUNT +

    +

    + +

    +

    Server will start sending the following notification messages: +

    +

    +

    +
    +

    "NOTIFY:TOTAL_VOICE_COUNT:<voices> +

    +

    + +

    +

    where <voices> will be replaced by the new number of + all currently active voices. +

    +

    +
     TOC 
    +

    8.7.  +Miscellaneous and debugging events

    Client may want to be notified of miscellaneous and debugging events occurring at the server by issuing the following command: @@ -5640,7 +7314,7 @@

    SUBSCRIBE MISCELLANEOUS

    - +

    Server will start sending the following notification messages:

    @@ -5650,15 +7324,16 @@

    "NOTIFY:MISCELLANEOUS:<string>"

    - +

    where <string> will be replaced by whatever data server wants to send to the client. Client MAY display this data to the user AS IS to facilitate debugging.



    -
     TOC 
    -

    9. Security Considerations

    +
     TOC 
    +

    9.  +Security Considerations

    As there is so far no method of authentication and authorization defined and so not required for a client applications to succeed to @@ -5666,8 +7341,9 @@ system the LinuxSampler instance is running on.



    -
     TOC 
    -

    10. Acknowledgments

    +
     TOC 
    +

    10.  +Acknowledgments

    This document has benefited greatly from the comments of the following people, discussed on the LinuxSampler developer's mailing @@ -5685,10 +7361,10 @@

    Grigor Iliev

    - +



    -
     TOC 
    +
     TOC 

    11. References

    @@ -5700,7 +7376,7 @@
    [RFC2119]


    -
     TOC 
    +
     TOC 

    Author's Address

    @@ -5718,58 +7394,53 @@
     schoenebeck at software minus engineering dot org


    -
     TOC 
    -

    Intellectual Property Statement

    +
     TOC 
    +

    Full Copyright Statement

    +Copyright © The Internet Society (2006).

    -

    Full Copyright Statement

    +This document is subject to the rights, +licenses and restrictions contained in BCP 78, +and except as set forth therein, +the authors retain all their rights.

    +This document and the information contained herein are provided +on an “AS IS” basis and THE CONTRIBUTOR, +THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), +THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM +ALL WARRANTIES, +EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE +INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED +WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    +

    Intellectual Property

    +The IETF takes no position regarding the validity or scope of any +Intellectual Property Rights or other rights that might be claimed +to pertain to the implementation or use of the technology +described in this document or the extent to which any license +under such rights might or might not be available; nor does it +represent that it has made any independent effort to identify any +such rights. +Information on the procedures with respect to +rights in RFC documents can be found in BCP 78 and BCP 79.

    +Copies of IPR disclosures made to the IETF Secretariat and any +assurances of licenses to be made available, +or the result of an attempt made to obtain a general license or +permission for the use of such proprietary rights by implementers or +users of this specification can be obtained from the IETF on-line IPR +repository at http://www.ietf.org/ipr.

    +The IETF invites any interested party to bring to its attention +any copyrights, +patents or patent applications, +or other +proprietary rights that may cover technology that may be required +to implement this standard. +Please address the information to the IETF at ietf-ipr@ietf.org.

    Acknowledgment

    +Funding for the RFC Editor function is provided by +the IETF Administrative Support Activity (IASA).