/[svn]/linuxsampler/trunk/Documentation/lscp.xml
ViewVC logotype

Diff of /linuxsampler/trunk/Documentation/lscp.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 534 by schoenebeck, Mon May 9 17:40:33 2005 UTC revision 944 by schoenebeck, Sun Nov 26 16:29:57 2006 UTC
# Line 13  Line 13 
13  <?rfc iprnotified="no" ?>  <?rfc iprnotified="no" ?>
14  <?rfc strict="yes" ?>  <?rfc strict="yes" ?>
15    
16  <rfc category="std" ipr="full2026" docName="lscp.txt">  <rfc category="std" ipr="full2026" docName="LSCP 1.2">
17      <front>      <front>
18          <title>LinuxSampler Control Protocol</title>          <title>LinuxSampler Control Protocol</title>
19          <author initials='C.S.' surname="Schoenebeck" fullname='C.          <author initials='C.S.' surname="Schoenebeck" fullname='C.
# Line 31  Schoenebeck'> Line 31  Schoenebeck'>
31                  <email>schoenebeck at software minus engineering dot org</email>                  <email>schoenebeck at software minus engineering dot org</email>
32              </address>              </address>
33          </author>          </author>
34          <date month="May" year="2005"/>          <date month="November" year="2006"/>
35          <workgroup>LinuxSampler Developers</workgroup>          <workgroup>LinuxSampler Developers</workgroup>
36          <keyword>LSCP</keyword>          <keyword>LSCP</keyword>
37          <abstract>          <abstract>
38              <t>The LinuxSampler Control Protocol (LSCP) is an              <t>The LinuxSampler Control Protocol (LSCP) is an
39              application-level protocol primarily intended for local and              application-level protocol primarily intended for local and
40              remote controlling the LinuxSampler main application, which is a              remote controlling the LinuxSampler backend application, which is a
41              sophisticated console application essentially playing back audio              sophisticated server-like console application essentially playing
42              samples and manipulating the samples in real time to certain              back audio samples and manipulating the samples in real time to
43              extent.</t>              certain extent.</t>
44          </abstract>          </abstract>
45      </front>      </front>
46    
# Line 112  Schoenebeck'> Line 112  Schoenebeck'>
112              return and line feed characters respectively.</t>              return and line feed characters respectively.</t>
113          </section>          </section>
114    
115            <section title="Versioning of this specification" anchor="LSCP versioning">
116                <t>LSCP will certainly be extended and enhanced by-and-by. Each official
117                release of the LSCP specification will be tagged with a unique version
118                tuple. The version tuple consists at least of a major and minor version
119                number like:
120                </t>
121                <t>
122                    <list>
123                        <t>"1.2"</t>
124                    </list>
125                </t>
126                <t>
127                In this example the major version number would be "1" and the minor
128                version number would be "2". Note that the version tuple might also
129                have more than two elements. The major version number defines a
130                group of backward compatible versions. That means a frontend is
131                compatible to the connected sampler if and only if the LSCP versions
132                to which each of the two parties complies to, match both of the
133                following rules:
134                </t>
135                <t>Compatibility:</t>
136                <t>
137                    <list style="numbers">
138                        <t>The frontend's LSCP major version and the sampler's LSCP
139                        major version are exactly equal.</t>
140                        <t>The frontend's LSCP minor version is less or equal than
141                        the sampler's LSCP minor version.</t>
142                    </list>
143                </t>
144                <t>
145                Compatibility can only be claimed if both rules are true.
146                The frontend can use the
147                <xref target="GET SERVER INFO">"GET SERVER INFO"</xref> command to
148                get the version of the LSCP specification the sampler complies with.
149                </t>
150            </section>
151    
152          <section title="Introduction">          <section title="Introduction">
153              <t>LinuxSampler is a so called software sampler application              <t>LinuxSampler is a so called software sampler application
154              capable to playback audio samples from a computer's Random              capable to playback audio samples from a computer's Random
# Line 124  Schoenebeck'> Line 161  Schoenebeck'>
161              arbitrary MIDI input method and arbitrary MIDI channel (e.g.              arbitrary MIDI input method and arbitrary MIDI channel (e.g.
162              sampler channel 17 could be connected to an ALSA sequencer              sampler channel 17 could be connected to an ALSA sequencer
163              device 64:0 and listening to MIDI channel 1 there). Each sampler              device 64:0 and listening to MIDI channel 1 there). Each sampler
164              engine will be assigned an own instance of one of the available              channel will be associated with an instance of one of the available
165              sampler engines (e.g. GigEngine, DLSEngine). The audio output of              sampler engines (e.g. GigEngine, DLSEngine). The audio output of
166              each sampler channel can be routed to an arbitrary audio output              each sampler channel can be routed to an arbitrary audio output
167              method (ALSA / JACK) and an arbitrary audio output channel              method (ALSA / JACK) and an arbitrary audio output channel
# Line 154  Schoenebeck'> Line 191  Schoenebeck'>
191              methods will be described next.</t>              methods will be described next.</t>
192    
193              <section title="Request/response communication method">              <section title="Request/response communication method">
194                  <t>This simple communication method is based on TCP. The                  <t>This simple communication method is based on
195                    <xref target="RFC793">TCP</xref>. The
196                  front-end application establishes a TCP connection to the                  front-end application establishes a TCP connection to the
197                  LinuxSampler instance on a certain host system. Then the                  LinuxSampler instance on a certain host system. Then the
198                  front-end application will send certain ASCII based commands                  front-end application will send certain ASCII based commands
# Line 425  Schoenebeck'> Line 463  Schoenebeck'>
463              </section>              </section>
464          </section>          </section>
465    
466          <section title="Description for control commands">          <section title="Description for control commands" anchor="control_commands">
467              <t>This chapter will describe the available control commands              <t>This chapter will describe the available control commands
468              that can be sent on the TCP connection in detail. Some certain              that can be sent on the TCP connection in detail. Some certain
469              commands (e.g. <xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref>              commands (e.g. <xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref>
# Line 683  Schoenebeck'> Line 721  Schoenebeck'>
721    
722                              <t>DEPENDS -                              <t>DEPENDS -
723                                <list>                                <list>
724                                  <t>comma separated list of paramters this parameter depends                                  <t>comma separated list of parameters this parameter depends
725                                  on, means the values for fields 'DEFAULT', 'RANGE_MIN',                                  on, means the values for fields 'DEFAULT', 'RANGE_MIN',
726                                  'RANGE_MAX' and 'POSSIBILITIES' might depend on these                                  'RANGE_MAX' and 'POSSIBILITIES' might depend on these
727                                  listed parameters, for example assuming that an audio                                  listed parameters, for example assuming that an audio
# Line 796  Schoenebeck'> Line 834  Schoenebeck'>
834                      </t>                      </t>
835    
836                      <t>Where &lt;audio-output-driver&gt; should be replaced by the desired audio                      <t>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
837                      output system and &lt;param-list&gt; by an optional list of driver                      output system as returned by the
838                        <xref target="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"</xref>
839                        command and &lt;param-list&gt; by an optional list of driver
840                      specific parameters in form of "key1=val1 key2=val2 ...", where                      specific parameters in form of "key1=val1 key2=val2 ...", where
841                      character string values should be encapsulated into apostrophes (').                      character string values should be encapsulated into apostrophes (').
842                      Note that there might be drivers which require parameter(s) to be                      Note that there might be drivers which require parameter(s) to be
# Line 1017  Schoenebeck'> Line 1057  Schoenebeck'>
1057                          </list>                          </list>
1058                      </t>                      </t>
1059                      <t>Where &lt;device-id&gt; should be replaced by the numerical ID of the                      <t>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1060                      audio output device, &lt;key&gt; by the name of the parameter to change                      audio output device as given by the
1061                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
1062                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
1063                        command, &lt;key&gt; by the name of the parameter to change
1064                      and &lt;value&gt; by the new value for this parameter.</t>                      and &lt;value&gt; by the new value for this parameter.</t>
1065                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1066                      <t>                      <t>
# Line 1058  Schoenebeck'> Line 1101  Schoenebeck'>
1101                              <t>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;</t>                              <t>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;</t>
1102                          </list>                          </list>
1103                      </t>                      </t>
1104                      <t>Where &lt;device-id&gt; is the numerical ID of the audio output device                      <t>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1105                      and &lt;audio-chan&gt; the audio channel number.</t>                      <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
1106                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
1107                        command and &lt;audio-chan&gt; the audio channel number.</t>
1108                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1109                      <t>                      <t>
1110                          <list>                          <list>
# Line 1158  Schoenebeck'> Line 1203  Schoenebeck'>
1203                          </list>                          </list>
1204                      </t>                      </t>
1205    
1206                      <t>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned                      <t>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
1207                      by the <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>                      <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
1208                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
1209                      command, &lt;chan&gt; the audio channel number                      command, &lt;chan&gt; the audio channel number
1210                      and &lt;param&gt; a specific channel parameter name for which information should                      and &lt;param&gt; a specific channel parameter name for which information should
1211                      be obtained (as returned by the <xref target="GET AUDIO_OUTPUT_CHANNEL INFO">                      be obtained (as returned by the <xref target="GET AUDIO_OUTPUT_CHANNEL INFO">
# Line 1261  Schoenebeck'> Line 1307  Schoenebeck'>
1307                              <t>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;</t>                              <t>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;</t>
1308                          </list>                          </list>
1309                      </t>                      </t>
1310                      <t>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio                      <t>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
1311                      device, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the                      <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
1312                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
1313                        command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
1314                      parameter to change and &lt;value&gt; by the new value for this parameter.</t>                      parameter to change and &lt;value&gt; by the new value for this parameter.</t>
1315                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1316                      <t>                      <t>
# Line 1386  Schoenebeck'> Line 1434  Schoenebeck'>
1434                              <t>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;</t>                              <t>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;</t>
1435                          </list>                          </list>
1436                      </t>                      </t>
1437                      <t>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver.</t>                      <t>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
1438                        by the <xref target="LIST AVAILABLE_MIDI_INPUT_DRIVERS">
1439                        "LIST AVAILABLE_MIDI_INPUT_DRIVERS"</xref> command.</t>
1440                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1441                      <t>                      <t>
1442                          <list>                          <list>
# Line 1441  Schoenebeck'> Line 1491  Schoenebeck'>
1491                          </list>                          </list>
1492                      </t>                      </t>
1493    
1494                      <t>Where &lt;midi-t&gt; is the name of the MIDI input driver as returned                      <t>Where &lt;midit&gt; is the name of the MIDI input driver as returned
1495                      by the <xref target="LIST AVAILABLE_MIDI_INPUT_DRIVERS">                      by the <xref target="LIST AVAILABLE_MIDI_INPUT_DRIVERS">
1496                      "LIST AVAILABLE_MIDI_INPUT_DRIVERS"</xref> command, &lt;param&gt; a specific                      "LIST AVAILABLE_MIDI_INPUT_DRIVERS"</xref> command, &lt;param&gt; a specific
1497                      parameter name for which information should be obtained (as returned by the                      parameter name for which information should be obtained (as returned by the
# Line 1514  Schoenebeck'> Line 1564  Schoenebeck'>
1564    
1565                              <t>DEPENDS -                              <t>DEPENDS -
1566                                <list>                                <list>
1567                                  <t>comma separated list of paramters this parameter depends                                  <t>comma separated list of parameters this parameter depends
1568                                  on, means the values for fields 'DEFAULT', 'RANGE_MIN',                                  on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1569                                  'RANGE_MAX' and 'POSSIBILITIES' might depend on these                                  'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1570                                  listed parameters, for example assuming that an audio                                  listed parameters, for example assuming that an audio
# Line 1596  Schoenebeck'> Line 1646  Schoenebeck'>
1646                          </list>                          </list>
1647                      </t>                      </t>
1648    
1649                      <t>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system and &lt;param-list&gt; by an                      <t>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
1650                        by the <xref target="LIST AVAILABLE_MIDI_INPUT_DRIVERS">
1651                        "LIST AVAILABLE_MIDI_INPUT_DRIVERS"</xref> command and &lt;param-list&gt; by an
1652                      optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where                      optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
1653                      character string values should be encapsulated into apostrophes (').                      character string values should be encapsulated into apostrophes (').
1654                      Note that there might be drivers which require parameter(s) to be                      Note that there might be drivers which require parameter(s) to be
# Line 1643  Schoenebeck'> Line 1695  Schoenebeck'>
1695                              <t>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;</t>                              <t>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;</t>
1696                          </list>                          </list>
1697                      </t>                      </t>
1698                      <t>Where &lt;device-id&gt; should be replaced by the device's numerical ID.</t>                      <t>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
1699                        <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
1700                        or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
1701                        command.</t>
1702                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1703                      <t>                      <t>
1704                          <list>                          <list>
# Line 1735  Schoenebeck'> Line 1790  Schoenebeck'>
1790                              <t>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;</t>                              <t>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;</t>
1791                          </list>                          </list>
1792                      </t>                      </t>
1793                      <t>Where &lt;device-id&gt; is the numerical ID of the MIDI input device.</t>                      <t>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
1794                        <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
1795                        or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
1796                        command.</t>
1797                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1798                      <t>                      <t>
1799                          <list>                          <list>
# Line 1800  Schoenebeck'> Line 1858  Schoenebeck'>
1858                      </t>                      </t>
1859    
1860                      <t>Where &lt;device-id&gt; should be replaced by the numerical ID of the                      <t>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1861                      MIDI input device, &lt;key&gt; by the name of the parameter to change and                      MIDI input device as returned by the
1862                        <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
1863                        or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
1864                        command, &lt;key&gt; by the name of the parameter to change and
1865                      &lt;value&gt; by the new value for this parameter.</t>                      &lt;value&gt; by the new value for this parameter.</t>
1866    
1867                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
# Line 1841  Schoenebeck'> Line 1902  Schoenebeck'>
1902                              <t>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;</t>                              <t>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;</t>
1903                          </list>                          </list>
1904                      </t>                      </t>
1905                      <t>Where &lt;device-id&gt; is the numerical ID of the MIDI input device                      <t>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
1906                      and &lt;midi-port&gt; the MIDI input port number.</t>                      <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
1907                        or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
1908                        command and &lt;midi-port&gt; the MIDI input port number.</t>
1909                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
1910                      <t>                      <t>
1911                          <list>                          <list>
# Line 1884  Schoenebeck'> Line 1947  Schoenebeck'>
1947                          </list>                          </list>
1948                      </t>                      </t>
1949    
1950                      <t>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned                      <t>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
1951                      by the <xref target="LIST MIDI_INPUT_DEVICES">                      <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
1952                      "LIST MIDI_INPUT_DEVICES"</xref> command, &lt;port&gt; the MIDI port number and                      or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
1953                        command, &lt;port&gt; the MIDI port number and
1954                      &lt;param&gt; a specific port parameter name for which information should be                      &lt;param&gt; a specific port parameter name for which information should be
1955                      obtained (as returned by the <xref target="GET MIDI_INPUT_PORT INFO">                      obtained (as returned by the <xref target="GET MIDI_INPUT_PORT INFO">
1956                      "GET MIDI_INPUT_PORT INFO"</xref> command).</t>                      "GET MIDI_INPUT_PORT INFO"</xref> command).</t>
# Line 1989  Schoenebeck'> Line 2053  Schoenebeck'>
2053                      </t>                      </t>
2054    
2055                      <t>Where &lt;device-id&gt; should be replaced by the numerical ID of the                      <t>Where &lt;device-id&gt; should be replaced by the numerical ID of the
2056                      MIDI device, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of                      MIDI device as returned by the
2057                        <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
2058                        or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
2059                        command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
2060                      the parameter to change and &lt;value&gt; by the new value for this                      the parameter to change and &lt;value&gt; by the new value for this
2061                      parameter.</t>                      parameter.</t>
2062    
# Line 2025  Schoenebeck'> Line 2092  Schoenebeck'>
2092              </section>              </section>
2093    
2094              <section title="Configuring sampler channels">              <section title="Configuring sampler channels">
2095                  <t>The following commands describe how to add and remove sampler channels, deploy                  <t>The following commands describe how to add and remove sampler channels, associate a
2096                  sampler engines, load instruments and connect sampler channels to MIDI and audio devices.</t>                  sampler channel with a sampler engine, load instruments and connect sampler channels to
2097                    MIDI and audio devices.</t>
2098    
2099                  <section title="Loading an instrument" anchor="LOAD INSTRUMENT">                  <section title="Loading an instrument" anchor="LOAD INSTRUMENT">
2100                      <t>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:</t>                      <t>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:</t>
# Line 2086  Schoenebeck'> Line 2154  Schoenebeck'>
2154                  </section>                  </section>
2155    
2156                  <section title="Loading a sampler engine" anchor="LOAD ENGINE">                  <section title="Loading a sampler engine" anchor="LOAD ENGINE">
2157                      <t>A sample engine can be deployed and assigned to a specific sampler                      <t>A sampler engine type can be associated to a specific sampler
2158                      channel by the following command:</t>                      channel by the following command:</t>
2159                      <t>                      <t>
2160                          <list>                          <list>
# Line 2096  Schoenebeck'> Line 2164  Schoenebeck'>
2164    
2165                      <t>Where &lt;engine-name&gt; is an engine name as obtained by the                      <t>Where &lt;engine-name&gt; is an engine name as obtained by the
2166                      <xref target="LIST AVAILABLE_ENGINES">                      <xref target="LIST AVAILABLE_ENGINES">
2167                      "LIST AVAILABLE_ENGINES"</xref> command and &lt;sampler-channel&gt; the sampler channel the                      "LIST AVAILABLE_ENGINES"</xref> command and &lt;sampler-channel&gt;
2168                      deployed engine should be assigned to. Even if the respective                      the sampler channel as returned by the
2169                      sampler channel has already a deployed engine with that engine                      <xref target="ADD CHANNEL">"ADD CHANNEL"</xref> or
2170                      name, a new engine instance will be assigned to the sampler channel.</t>                      <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command where
2171                        the engine type should be assigned to. This command should be issued
2172                        after adding a new sampler channel and before any other control
2173                        commands on the new sampler channel. It can also be used to change
2174                        the engine type of a sampler channel. This command has (currently) no
2175                        way to define or force if a new engine instance should be created and
2176                        assigned to the given sampler channel or if an already existing
2177                        instance of that engine type, shared with other sampler channels,
2178                        should be used.</t>
2179    
2180                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2181                      <t>                      <t>
# Line 2205  Schoenebeck'> Line 2281  Schoenebeck'>
2281                                  <list>                                  <list>
2282                                      <t>in case a new sampler channel could be added, where                                      <t>in case a new sampler channel could be added, where
2283                                      &lt;sampler-channel&gt; reflects the channel number of the new                                      &lt;sampler-channel&gt; reflects the channel number of the new
2284                                      created sampler channel which should the be used to set up                                      created sampler channel which should be used to set up
2285                                      the sampler channel by sending subsequent intialization                                      the sampler channel by sending subsequent initialization
2286                                      commands</t>                                      commands</t>
2287                                  </list>                                  </list>
2288                              </t>                              </t>
# Line 2241  Schoenebeck'> Line 2317  Schoenebeck'>
2317                          </list>                          </list>
2318                      </t>                      </t>
2319    
2320                      <t>This will decrement the sampler channel count by one and also                      <t>Where &lt;sampler-channel&gt; should be replaced by the
2321                      decrement the channel numbers of all subsequent sampler channels by                      number of the sampler channel as given by the
2322                      one.</t>                      <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2323                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref>
2324                        command. The channel numbers of all subsequent sampler channels
2325                        remain the same.</t>
2326    
2327                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2328                      <t>                      <t>
# Line 2308  Schoenebeck'> Line 2387  Schoenebeck'>
2387                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2388                      <t>                      <t>
2389                          <list>                          <list>
2390                              <t>LinuxSampler will answer by sending a comma separated character                              <t>LinuxSampler will answer by sending a comma separated list
2391                              string of the engines' names. Engine names can consist of lower and                              of the engines' names encapsulated into apostrophes (').
2392                              upper cases, digits and underlines ("_" character).</t>                              Engine names can consist of lower and upper cases,
2393                                digits and underlines ("_" character).</t>
2394                          </list>                          </list>
2395                      </t>                      </t>
2396                      <t>Example:</t>                      <t>Example:</t>
2397                      <t>                      <t>
2398                          <list>                          <list>
2399                              <t>C: "LIST AVAILABLE_ENGINES"</t>                              <t>C: "LIST AVAILABLE_ENGINES"</t>
2400                              <t>S: "GigEngine,AkaiEngine,DLSEngine,JoesCustomEngine"</t>                              <t>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"</t>
2401                          </list>                          </list>
2402                      </t>                      </t>
2403                  </section>                  </section>
# Line 2380  Schoenebeck'> Line 2460  Schoenebeck'>
2460                              <t>GET CHANNEL INFO &lt;sampler-channel&gt;</t>                              <t>GET CHANNEL INFO &lt;sampler-channel&gt;</t>
2461                          </list>                          </list>
2462                      </t>                      </t>
2463                      <t>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in.</t>                      <t>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
2464                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2465                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command.</t>
2466                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2467                      <t>                      <t>
2468                          <list>                          <list>
# Line 2394  Schoenebeck'> Line 2476  Schoenebeck'>
2476                                  <list>                                  <list>
2477                                      <t>ENGINE_NAME -                                      <t>ENGINE_NAME -
2478                                          <list>                                          <list>
2479                                              <t>name of the engine that is deployed on the sampler                                              <t>name of the engine that is associated with the sampler
2480                                              channel, "NONE" if there's no engine deployed yet for                                              channel, "NONE" if there's no engine associated yet for
2481                                              this sampler channel</t>                                              this sampler channel</t>
2482                                          </list>                                          </list>
2483                                      </t>                                      </t>
# Line 2474  Schoenebeck'> Line 2556  Schoenebeck'>
2556                                              1.0 means amplification)</t>                                              1.0 means amplification)</t>
2557                                          </list>                                          </list>
2558                                      </t>                                      </t>
2559                                        <t>MUTE -
2560                                            <list>
2561                                                <t>Determines whether the channel is muted, "true" if the
2562                                                channel is muted, "false" if the channel is not muted, and
2563                                                "MUTED_BY_SOLO" if the channel is muted because of the
2564                                                presence of a solo channel and will be unmuted when
2565                                                there are no solo channels left</t>
2566                                            </list>
2567                                        </t>
2568                                        <t>SOLO -
2569                                            <list>
2570                                                <t>Determines whether this is a solo channel, "true" if
2571                                                the channel is a solo channel; "false" otherwise</t>
2572                                            </list>
2573                                        </t>
2574                                  </list>                                  </list>
2575                              </t>                              </t>
2576                          </list>                          </list>
# Line 2509  Schoenebeck'> Line 2606  Schoenebeck'>
2606                              <t>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;</t>                              <t>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;</t>
2607                          </list>                          </list>
2608                      </t>                      </t>
2609                      <t>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in.</t>                      <t>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
2610                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2611                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command.</t>
2612    
2613                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2614                      <t>                      <t>
# Line 2534  Schoenebeck'> Line 2633  Schoenebeck'>
2633                              <t>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;</t>                              <t>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;</t>
2634                          </list>                          </list>
2635                      </t>                      </t>
2636                      <t>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in.</t>                      <t>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
2637                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2638                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command.</t>
2639    
2640                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2641                      <t>                      <t>
# Line 2568  Schoenebeck'> Line 2669  Schoenebeck'>
2669                          </list>                          </list>
2670                      </t>                      </t>
2671                      <t>to get the fill state in percent, where &lt;sampler-channel&gt; is the                      <t>to get the fill state in percent, where &lt;sampler-channel&gt; is the
2672                      sampler channel number the front-end is interested in.</t>                      sampler channel number the front-end is interested in
2673                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2674                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command.</t>
2675    
2676                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2677                      <t>                      <t>
# Line 2612  Schoenebeck'> Line 2715  Schoenebeck'>
2715                              <t>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;</t>                              <t>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;</t>
2716                          </list>                          </list>
2717                      </t>                      </t>
2718                      <t>Where &lt;audio-device-id&gt; is the numerical ID of the audio output                      <t>Where &lt;sampler-channel&gt; is the respective sampler channel
2719                      device and &lt;sampler-channel&gt; is the respective sampler channel                      number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2720                      number.</t>                      or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command and
2721                        &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
2722                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
2723                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
2724                        command.</t>
2725    
2726                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2727                      <t>                      <t>
# Line 2697  Schoenebeck'> Line 2804  Schoenebeck'>
2804                              <t>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;</t>                              <t>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;</t>
2805                          </list>                          </list>
2806                      </t>                      </t>
2807                      <t>Where &lt;sampler-chan&gt; is the sampler channel number, &lt;audio-out&gt; is the                      <t>Where &lt;sampler-chan&gt; is the sampler channel number
2808                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2809                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command, &lt;audio-out&gt; is the
2810                      numerical ID of the sampler channel's audio output channel which should be                      numerical ID of the sampler channel's audio output channel which should be
2811                      rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio                      rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
2812                      output device where &lt;audio-out&gt; should be routed to.</t>                      output device where &lt;audio-out&gt; should be routed to.</t>
# Line 2740  Schoenebeck'> Line 2849  Schoenebeck'>
2849                              <t>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;</t>                              <t>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;</t>
2850                          </list>                          </list>
2851                      </t>                      </t>
2852                      <t>Where &lt;sampler-channel&gt; is the sampler channel number and &lt;midi-device-id&gt; is the                      <t>Where &lt;sampler-channel&gt; is the sampler channel number
2853                      the numerical ID of the MIDI input device.</t>                      as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
2854                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command
2855                        and &lt;midi-device-id&gt; is  the numerical ID of the MIDI input device as returned by the
2856                        <xref target="CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"</xref>
2857                        or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref> command.</t>
2858    
2859                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2860                      <t>                      <t>
# Line 2845  Schoenebeck'> Line 2958  Schoenebeck'>
2958                              </t>                              </t>
2959                              <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -                              <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2960                                  <list>                                  <list>
2961                                      <t>in case it failed, providing an appropriate error code and error messag</t>                                      <t>in case it failed, providing an appropriate error code and error message</t>
2962                                  </list>                                  </list>
2963                              </t>                              </t>
2964                          </list>                          </list>
# Line 2943  Schoenebeck'> Line 3056  Schoenebeck'>
3056                      </t>                      </t>
3057                  </section>                  </section>
3058    
3059                    <section title="Muting a sampler channel" anchor="SET CHANNEL MUTE">
3060                        <t>The front-end can mute/unmute a specific sampler
3061                        channel by sending the following command:</t>
3062                        <t>
3063                            <list>
3064                                <t>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;</t>
3065                            </list>
3066                        </t>
3067                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3068                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3069                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command and
3070                        &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
3071                        to unmute the channel.</t>
3072    
3073                        <t>Possible Answers:</t>
3074                        <t>
3075                            <list>
3076                                <t>"OK" -
3077                                    <list>
3078                                        <t>on success</t>
3079                                    </list>
3080                                </t>
3081                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3082                                    <list>
3083                                        <t>if the channel was muted/unmuted, but there are noteworthy
3084                                        issue(s) related, providing an appropriate warning code and
3085                                        warning message</t>
3086                                    </list>
3087                                </t>
3088                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3089                                    <list>
3090                                        <t>in case it failed, providing an appropriate error code and error message</t>
3091                                    </list>
3092                                </t>
3093                            </list>
3094                        </t>
3095                        <t>Examples:</t>
3096                        <t>
3097                            <list>
3098                                <t></t>
3099                            </list>
3100                        </t>
3101                    </section>
3102    
3103                    <section title="Soloing a sampler channel" anchor="SET CHANNEL SOLO">
3104                        <t>The front-end can solo/unsolo a specific sampler channel
3105                        by sending the following command:</t>
3106                        <t>
3107                            <list>
3108                                <t>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;</t>
3109                            </list>
3110                        </t>
3111                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3112                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3113                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command and
3114                        &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
3115                        to unsolo the channel.</t>
3116    
3117                        <t>Possible Answers:</t>
3118                        <t>
3119                            <list>
3120                                <t>"OK" -
3121                                    <list>
3122                                        <t>on success</t>
3123                                    </list>
3124                                </t>
3125                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3126                                    <list>
3127                                        <t>if the channel was soloed/unsoloed, but there are noteworthy
3128                                        issue(s) related, providing an appropriate warning code and
3129                                        warning message</t>
3130                                    </list>
3131                                </t>
3132                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3133                                    <list>
3134                                        <t>in case it failed, providing an appropriate error code and error message</t>
3135                                    </list>
3136                                </t>
3137                            </list>
3138                        </t>
3139                        <t>Examples:</t>
3140                        <t>
3141                            <list>
3142                                <t></t>
3143                            </list>
3144                        </t>
3145                    </section>
3146    
3147                  <section title="Resetting a sampler channel" anchor="RESET CHANNEL">                  <section title="Resetting a sampler channel" anchor="RESET CHANNEL">
3148                      <t>The front-end can reset a particular sampler channel by sending the following command:</t>                      <t>The front-end can reset a particular sampler channel by sending the following command:</t>
3149                      <t>                      <t>
# Line 3128  Schoenebeck'> Line 3329  Schoenebeck'>
3329              <section title="Global commands">              <section title="Global commands">
3330                  <t>The following commands have global impact on the sampler.</t>                  <t>The following commands have global impact on the sampler.</t>
3331    
3332                    <section title="Current number of active voices" anchor="GET TOTAL_VOICE_COUNT">
3333                        <t>The front-end can ask for the current number of active voices on
3334                        the sampler by sending the following command:</t>
3335                        <t>
3336                            <list>
3337                                <t>GET TOTAL_VOICE_COUNT</t>
3338                            </list>
3339                        </t>
3340    
3341                        <t>Possible Answers:</t>
3342                        <t>
3343                            <list>
3344                                <t>LinuxSampler will answer by returning the number of all active
3345                                voices on the sampler.</t>
3346                            </list>
3347                        </t>
3348                    </section>
3349    
3350                    <section title="Maximum amount of active voices" anchor="GET TOTAL_VOICE_COUNT_MAX">
3351                        <t>The front-end can ask for the maximum number of active voices
3352                        by sending the following command:</t>
3353                        <t>
3354                            <list>
3355                                <t>GET TOTAL_VOICE_COUNT_MAX</t>
3356                            </list>
3357                        </t>
3358    
3359                        <t>Possible Answers:</t>
3360                        <t>
3361                            <list>
3362                                <t>LinuxSampler will answer by returning the maximum number
3363                                of active voices.</t>
3364                            </list>
3365                        </t>
3366                    </section>
3367    
3368                  <section title="Reset sampler" anchor="RESET">                  <section title="Reset sampler" anchor="RESET">
3369                      <t>The front-end can reset the whole sampler by sending the following command:</t>                      <t>The front-end can reset the whole sampler by sending the following command:</t>
3370                      <t>                      <t>
# Line 3153  Schoenebeck'> Line 3390  Schoenebeck'>
3390                          </list>                          </list>
3391                      </t>                      </t>
3392                  </section>                  </section>
3393    
3394                    <section title="General sampler informations" anchor="GET SERVER INFO">
3395                        <t>The client can ask for general informations about the LinuxSampler
3396                           instance by sending the following command:</t>
3397                        <t>
3398                            <list>
3399                                <t>GET SERVER INFO</t>
3400                            </list>
3401                        </t>
3402                        <t>Possible Answers:</t>
3403                        <t>
3404                            <list>
3405                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3406                                   Each answer line begins with the information category name
3407                                   followed by a colon and then a space character &lt;SP&gt; and finally
3408                                   the info character string to that information category. At the
3409                                   moment the following categories are defined:
3410                                </t>
3411                                <t>
3412                                    <list>
3413                                        <t>DESCRIPTION -
3414                                            <list>
3415                                                <t>arbitrary textual description about the sampler</t>
3416                                            </list>
3417                                        </t>
3418                                        <t>VERSION -
3419                                            <list>
3420                                                <t>version of the sampler</t>
3421                                            </list>
3422                                        </t>
3423                                        <t>PROTOCOL_VERSION -
3424                                            <list>
3425                                                <t>version of the LSCP specification the sampler
3426                                                complies with (see <xref target="LSCP versioning" /> for details)</t>
3427                                            </list>
3428                                        </t>
3429                                    </list>
3430                                </t>
3431                            </list>
3432                        </t>
3433                        <t>The mentioned fields above don't have to be in particular order.
3434                        Other fields might be added in future.</t>
3435                    </section>
3436                </section>
3437    
3438    
3439                <section title="MIDI Instrument Mapping">
3440                    <t>The MIDI protocol provides a way to switch between instruments
3441                    by sending so called MIDI bank select and MIDI program change
3442                    messages which are essentially just numbers. The following commands
3443                    allow to actually map arbitrary MIDI bank select / program change
3444                    numbers with real instruments.</t>
3445                    <t>By default, that is when the sampler is launched, this map will
3446                    be empty, thus the sampler will simply ignore all program change
3447                    messages. The front-end has to explicitly add entries to the map
3448                    so the sampler knows how to react on a given program change
3449                    message, that is by switching to the respectively defined engine
3450                    type and loading the respective instrument.</t>
3451                    <t>Also note per MIDI specification a bank select message does not
3452                    cause to switch to another instrument. Instead when receiving a
3453                    bank select message the bank value will be stored and a subsequent
3454                    program change message (which may occur at any time) will finally
3455                    cause the sampler to switch to the respective instrument as
3456                    reflected by the current MIDI instrument map.</t>
3457    
3458                    <section title="Create or replace a MIDI instrument map entry" anchor="MAP MIDI_INSTRUMENT">
3459                        <t>The front-end can create a new or replace an existing entry
3460                        in the sampler's MIDI instrument map by sending the following
3461                        command:</t>
3462                        <t>
3463                            <list>
3464                                <t>MAP MIDI_INSTRUMENT &lt;midi_bank_msb&gt;
3465                                &lt;midi_bank_lsb&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
3466                                &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
3467                                [&lt;instr_load_mode&gt;] [&lt;name&gt;]</t>
3468                            </list>
3469                        </t>
3470                        <t>Where &lt;midi_bank_msb&gt; is an integer value between
3471                        0..127 reflecting the MIDI bank select MSB (coarse) index,
3472                        &lt;midi_bank_lsb&gt; an integer value between 0..127 reflecting
3473                        the MIDI bank select LSB (fine) index, &lt;midi_prog&gt; an
3474                        integer value between 0..127 reflecting the MIDI program change
3475                        index, &lt;engine_name&gt; a sampler engine name as returned by
3476                        the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>
3477                        command (not encapsulated into apostrophes), &lt;filename&gt; the name
3478                        of the instrument's file to be deployed (encapsulated into apostrophes), &lt;instrument_index&gt; the index (integer value) of the instrument
3479                        within the given file, &lt;volume_value&gt; reflects the master
3480                        volume of the instrument as optionally dotted number (where a
3481                        value < 1.0 means attenuation and a value > 1.0 means
3482                        amplification). This parameter easily allows to adjust the
3483                        volume of all intruments within a custom instrument map
3484                        without having to adjust their instrument files. The
3485                        OPTIONAL &lt;instr_load_mode&gt; argument defines the life
3486                        time of the instrument, that is when the instrument should
3487                        be loaded, when freed and has exactly the following
3488                        possibilities:</t>
3489                        <t>
3490                            <list>
3491                                <t>"ON_DEMAND" -
3492                                    <list>
3493                                        <t>The instrument will be loaded when needed,
3494                                        that is when demanded by at least one sampler
3495                                        channel. It will immediately be freed from memory
3496                                        when not needed by any sampler channel anymore.</t>
3497                                    </list>
3498                                </t>
3499                                <t>"ON_DEMAND_HOLD" -
3500                                    <list>
3501                                        <t>The instrument will be loaded when needed,
3502                                        that is when demanded by at least one sampler
3503                                        channel. It will be kept in memory even when
3504                                        not needed by any sampler channel anymore.
3505                                        Instruments with this mode are only freed
3506                                        when the sampler is reset or all mapping
3507                                        entries with this mode (and respective
3508                                        instrument) are explicitly changed to
3509                                        "ON_DEMAND" and no sampler channel is using
3510                                        the instrument anymore.</t>
3511                                    </list>
3512                                </t>
3513                                <t>"PERSISTENT" -
3514                                    <list>
3515                                        <t>The instrument will immediately be loaded
3516                                        into memory in the background when this mapping
3517                                        command is sent and the instrument is kept all
3518                                        the time. Instruments with this mode are
3519                                        only freed when the sampler is reset or all
3520                                        mapping entries with this mode (and
3521                                        respective instrument) are explicitly
3522                                        changed to "ON_DEMAND" and no sampler
3523                                        channel is using the instrument anymore.</t>
3524                                    </list>
3525                                </t>
3526                                <t>not supplied -
3527                                    <list>
3528                                        <t>In case there is no &lt;instr_load_mode&gt;
3529                                        argument given, it will be up to the
3530                                        InstrumentManager to decide which mode to use.
3531                                        Usually it will use "ON_DEMAND" if an entry
3532                                        for the given instrument does not exist in
3533                                        the InstrumentManager's list yet, otherwise
3534                                        if an entry already exists, it will simply
3535                                        stick with the mode currently reflected by
3536                                        the already existing entry, that is it will
3537                                        not change the mode.</t>
3538                                    </list>
3539                                </t>
3540                            </list>
3541                        </t>
3542                        <t>
3543                        The &lt;instr_load_mode&gt; argument thus allows to define an
3544                        appropriate strategy (low memory consumption vs. fast
3545                        instrument switching) for each instrument individually. Note, the
3546                        following restrictions apply to this argument: "ON_DEMAND_HOLD" and
3547                        "PERSISTENT" have to be supported by the respective sampler engine
3548                        (which is technically the case when the engine provides an
3549                        InstrumentManager for its format). If this is not the case the
3550                        argument will automatically fall back to the default value
3551                        "ON_DEMAND". Also the load mode of one instrument may
3552                        automatically change the laod mode of other instrument(s), i.e.
3553                        because the instruments are part of the same file and the
3554                        engine does not allow a way to manage load modes for them
3555                        individually. Due to this, in case the frontend shows the
3556                        load modes of entries, the frontend should retrieve the actual
3557                        mode by i.e. sending
3558                        <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
3559                        command(s). Finally the OPTIONAL &lt;name&gt; argument allows to
3560                        set a custom name (encapsulated into apostrophes) for the mapping
3561                        entry, useful for frontends for displaying an appropriate name for
3562                        mapped instruments (using
3563                        <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).
3564                        </t>
3565                        <t>
3566                        The "MAP MIDI_INSTRUMENT" command
3567                        will immediately return, thus it will not block when an
3568                        instrument is to be loaded due to a "PERSISTENT" type
3569                        entry as instruments are loaded in the background. As a
3570                        consequence this command may not necessarily return an error
3571                        i.e. when the given instrument file does not exist or may
3572                        turn out to be corrupt.
3573                        </t>
3574    
3575                        <t>Possible Answers:</t>
3576                        <t>
3577                            <list>
3578                                <t>"OK" -
3579                                    <list>
3580                                        <t>usually</t>
3581                                    </list>
3582                                </t>
3583                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3584                                    <list>
3585                                        <t>when the given engine does not exist or a value
3586                                        is out of range</t>
3587                                    </list>
3588                                </t>
3589                            </list>
3590                        </t>
3591    
3592                        <t>Examples:</t>
3593                        <t>
3594                            <list>
3595                                <t>C: "MAP MIDI_INSTRUMENT 3 0 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"</t>
3596                                <t>S: "OK"</t>
3597                            </list>
3598                        </t>
3599                        <t>
3600                            <list>
3601                                <t>C: "MAP MIDI_INSTRUMENT 127 4 50 gig '/home/john/foostrings.gig' 7 1.0"</t>
3602                                <t>S: "OK"</t>
3603                            </list>
3604                        </t>
3605                        <t>
3606                            <list>
3607                                <t>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"</t>
3608                                <t>S: "OK"</t>
3609                                <t>C: "MAP MIDI_INSTRUMENT 1 0 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"</t>
3610                                <t>S: "OK"</t>
3611                            </list>
3612                        </t>
3613                        <t>
3614                            <list>
3615                                <t>C: "MAP MIDI_INSTRUMENT 99 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"</t>
3616                                <t>S: "OK"</t>
3617                            </list>
3618                        </t>
3619                    </section>
3620    
3621                    <section title="Getting ammount of MIDI instrument map entries" anchor="GET MIDI_INSTRUMENTS">
3622                        <t>The front-end can query the amount of currently existing MIDI
3623                        instrument map entries by sending the following
3624                        command:</t>
3625                        <t>
3626                            <list>
3627                                <t>GET MIDI_INSTRUMENTS</t>
3628                            </list>
3629                        </t>
3630                        <t>Possible Answers:</t>
3631                        <t>
3632                            <list>
3633                                <t>LinuxSampler will answer by sending the current number of
3634                                entries in the sampler's MIDI instrument map.</t>
3635                            </list>
3636                        </t>
3637    
3638                        <t>Example:</t>
3639                        <t>
3640                            <list>
3641                                <t>C: "GET MIDI_INSTRUMENTS"</t>
3642                                <t>S: "634"</t>
3643                            </list>
3644                        </t>
3645                    </section>
3646    
3647                    <section title="Getting indeces of all MIDI instrument map entries" anchor="LIST MIDI_INSTRUMENTS">
3648                        <t>The front-end can query a list of all currently existing MIDI
3649                        instrument map entries by sending the following command:</t>
3650                        <t>
3651                            <list>
3652                                <t>LIST MIDI_INSTRUMENTS</t>
3653                            </list>
3654                        </t>
3655                        <t>Possible Answers:</t>
3656                        <t>
3657                            <list>
3658                                <t>LinuxSampler will answer by sending a comma separated
3659                                list of MIDI bank MSB (coarse) - MIDI bank LSB (fine) -
3660                                MIDI program triples, where each triple is encapsulated
3661                                into curly braces. The list is returned in one single
3662                                line. Each triple just reflects the key of the respective
3663                                map entry, thus subsequent
3664                                <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
3665                                command(s) are necessary to retrieve detailed informations
3666                                about each entry.</t>
3667                            </list>
3668                        </t>
3669    
3670                        <t>Example:</t>
3671                        <t>
3672                            <list>
3673                                <t>C: "LIST MIDI_INSTRUMENTS"</t>
3674                                <t>S: "{0,0,0},{0,0,1},{120,0,3},{120,0,4},{23,127,127}"</t>
3675                            </list>
3676                        </t>
3677                    </section>
3678    
3679                    <section title="Remove an entry from the MIDI instrument map" anchor="UNMAP MIDI_INSTRUMENT">
3680                        <t>The front-end can delete an entry from the MIDI instrument
3681                        map by sending the following command:</t>
3682                        <t>
3683                            <list>
3684                                <t>UNMAP MIDI_INSTRUMENT &lt;midi_bank_msb&gt; &lt;midi_bank_lsb&gt; &lt;midi_prog&gt;</t>
3685                            </list>
3686                        </t>
3687                        <t>
3688                        Where &lt;midi_bank_msb&gt; is an integer value between 0..127
3689                        reflecting the MIDI bank MSB (coarse) value, &lt;midi_bank_lsb&gt;
3690                        an integer value between 0..127 reflecting the MIDI bank LSB
3691                        (fine) value and &lt;midi_prog&gt; an integer value between
3692                        0..127 reflecting the MIDI program value of the map entrie's key
3693                        index triple.
3694                        </t>
3695    
3696                        <t>Possible Answers:</t>
3697                        <t>
3698                            <list>
3699                                <t>"OK" -
3700                                    <list>
3701                                        <t>usually</t>
3702                                    </list>
3703                                </t>
3704                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3705                                    <list>
3706                                        <t>when index out of bounds</t>
3707                                    </list>
3708                                </t>
3709                            </list>
3710                        </t>
3711    
3712                        <t>Example:</t>
3713                        <t>
3714                            <list>
3715                                <t>C: "UNMAP MIDI_INSTRUMENT 2 40 127"</t>
3716                                <t>S: "OK"</t>
3717                            </list>
3718                        </t>
3719                    </section>
3720    
3721                    <section title="Get current settings of MIDI instrument map entry" anchor="GET MIDI_INSTRUMENT INFO">
3722                        <t>The front-end can retrieve the current settings of a certain
3723                        instrument map entry by sending the following command:</t>
3724                        <t>
3725                            <list>
3726                                <t>GET MIDI_INSTRUMENT INFO &lt;midi_bank_msb&gt; &lt;midi_bank_lsb&gt; &lt;midi_prog&gt;</t>
3727                            </list>
3728                        </t>
3729                        <t>
3730                        Where &lt;midi_bank_msb&gt; is an integer value between 0..127
3731                        reflecting the MIDI bank MSB (coarse) value, &lt;midi_bank_lsb&gt;
3732                        an integer value between 0..127 reflecting the MIDI bank LSB
3733                        (fine) value and &lt;midi_prog&gt; an integer value between
3734                        0..127 reflecting the MIDI program value of the map entrie's key
3735                        index triple.
3736                        </t>
3737    
3738                        <t>Possible Answers:</t>
3739                        <t>
3740                            <list>
3741                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt;
3742                                separated list. Each answer line begins with the
3743                                information category name followed by a colon and then
3744                                a space character &lt;SP&gt; and finally the info
3745                                character string to that info category. At the moment
3746                                the following categories are defined:</t>
3747                                <t>"NAME" -
3748                                    <list>
3749                                        <t>Name for this MIDI instrument map entry (if defined).
3750                                        This name shall be used by frontends for displaying a
3751                                        name for this mapped instrument. It can be set and
3752                                        changed with the
3753                                        <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>
3754                                        command and does not have to be unique.</t>
3755                                    </list>
3756                                </t>
3757                                <t>"ENGINE_NAME" -
3758                                    <list>
3759                                        <t>Name of the engine to be deployed for this
3760                                        instrument.</t>
3761                                    </list>
3762                                </t>
3763                                <t>"INSTRUMENT_FILE" -
3764                                    <list>
3765                                        <t>File name of the instrument.</t>
3766                                    </list>
3767                                </t>
3768                                <t>"INSTRUMENT_NR" -
3769                                    <list>
3770                                        <t>Index of the instrument within the file.</t>
3771                                    </list>
3772                                </t>
3773                                <t>"INSTRUMENT_NAME" -
3774                                    <list>
3775                                        <t>Name of the loaded instrument as reflected by its file.
3776                                        In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
3777                                        cannot be changed.</t>
3778                                    </list>
3779                                </t>
3780                                <t>"LOAD_MODE" -
3781                                    <list>
3782                                        <t>Life time of instrument
3783                                        (see <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref> for details about this setting).</t>
3784                                    </list>
3785                                </t>
3786                                <t>"VOLUME" -
3787                                    <list>
3788                                        <t>master volume of the instrument as optionally
3789                                        dotted number (where a value < 1.0 means attenuation
3790                                        and a value > 1.0 means amplification)</t>
3791                                    </list>
3792                                </t>
3793                                <t>The mentioned fields above don't have to be in particular order.</t>
3794                            </list>
3795                        </t>
3796    
3797                        <t>Example:</t>
3798                        <t>
3799                            <list>
3800                                <t>C: "GET MIDI_INSTRUMENT INFO 3 45 120"</t>
3801                                <t>S: "NAME: Drums for Foo Song"</t>
3802                                <t>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"</t>
3803                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"</t>
3804                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"</t>
3805                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"</t>
3806                                <t>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"</t>
3807                                <t>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"</t>
3808                                <t>&nbsp;&nbsp;&nbsp;"."</t>
3809                            </list>
3810                        </t>
3811                    </section>
3812    
3813                    <section title="Clear MIDI instrument map" anchor="CLEAR MIDI_INSTRUMENTS">
3814                        <t>The front-end can clear the whole MIDI instrument map, that
3815                        is delete all entries by sending the following command:</t>
3816                        <t>
3817                            <list>
3818                                <t>CLEAR MIDI_INSTRUMENTS</t>
3819                            </list>
3820                        </t>
3821    
3822                       <t>Possible Answers:</t>
3823                        <t>
3824                            <list>
3825                                <t>"OK" -
3826                                    <list>
3827                                        <t>always</t>
3828                                    </list>
3829                                </t>
3830                            </list>
3831                        </t>
3832    
3833                        <t>Example:</t>
3834                        <t>
3835                           <list>
3836                                <t>C: "CLEAR MIDI_INSTRUMENTS"</t>
3837                                <t>S: "OK"</t>
3838                            </list>
3839                        </t>
3840                    </section>
3841              </section>              </section>
3842    
3843          </section>          </section>
3844    
3845    
3846          <section title="Command Syntax" anchor="command_syntax">          <section title="Command Syntax" anchor="command_syntax">
3847              <t>TODO: will soon automatically included from src/network/lscp.y,              <t>The grammar of the control protocol as descibed in <xref target="control_commands"/>
3848              meanwhile have a look at that file to get the exact definition of              is defined below using Backus-Naur Form (BNF as described in <xref target="RFC2234"/>)
3849              the command syntax.</t>              where applicable.
3850                </t>
3851                <!--
3852                    This section is automatically generated by scripts/update_grammar.pl
3853                    from src/network/lscp.y (yacc input file). Do not modify this section
3854                    manually !
3855                -->
3856                <!-- GRAMMAR_BNF_BEGIN - do NOT delete or modify this line !!! -->
3857    
3858    <t>input =
3859            <list>
3860                    <t>line LF
3861                    </t>
3862                    <t>/ line CR LF
3863                    </t>
3864            </list>
3865    </t>
3866    <t>line =
3867            <list>
3868                    <t>/* epsilon (empty line ignored) */
3869                    </t>
3870                    <t>/ comment
3871                    </t>
3872                    <t>/ command
3873                    </t>
3874                    <t>/ error
3875                    </t>
3876            </list>
3877    </t>
3878    <t>comment =
3879            <list>
3880                    <t>'#'
3881                    </t>
3882                    <t>/ comment '#'
3883                    </t>
3884                    <t>/ comment SP
3885                    </t>
3886                    <t>/ comment number
3887                    </t>
3888                    <t>/ comment string
3889                    </t>
3890            </list>
3891    </t>
3892    <t>command =
3893            <list>
3894                    <t>ADD SP CHANNEL
3895                    </t>
3896                    <t>/ MAP SP map_instruction
3897                    </t>
3898                    <t>/ UNMAP SP unmap_instruction
3899                    </t>
3900                    <t>/ GET SP get_instruction
3901                    </t>
3902                    <t>/ CREATE SP create_instruction
3903                    </t>
3904                    <t>/ DESTROY SP destroy_instruction
3905                    </t>
3906                    <t>/ LIST SP list_instruction
3907                    </t>
3908                    <t>/ LOAD SP load_instruction
3909                    </t>
3910                    <t>/ REMOVE SP remove_instruction
3911    
3912                    </t>
3913                    <t>/ SET SP set_instruction
3914                    </t>
3915                    <t>/ SUBSCRIBE SP subscribe_event
3916                    </t>
3917                    <t>/ UNSUBSCRIBE SP unsubscribe_event
3918                    </t>
3919                    <t>/ SELECT SP text
3920                    </t>
3921                    <t>/ RESET SP reset_instruction
3922                    </t>
3923                    <t>/ CLEAR SP clear_instruction
3924                    </t>
3925                    <t>/ RESET
3926                    </t>
3927                    <t>/ QUIT
3928                    </t>
3929            </list>
3930    </t>
3931    <t>subscribe_event =
3932            <list>
3933                    <t>CHANNEL_COUNT
3934                    </t>
3935                    <t>/ VOICE_COUNT
3936                    </t>
3937                    <t>/ STREAM_COUNT
3938                    </t>
3939                    <t>/ BUFFER_FILL
3940                    </t>
3941                    <t>/ CHANNEL_INFO
3942                    </t>
3943                    <t>/ MISCELLANEOUS
3944                    </t>
3945                    <t>/ TOTAL_VOICE_COUNT
3946                    </t>
3947            </list>
3948    </t>
3949    <t>unsubscribe_event =
3950            <list>
3951                    <t>CHANNEL_COUNT
3952                    </t>
3953                    <t>/ VOICE_COUNT
3954                    </t>
3955                    <t>/ STREAM_COUNT
3956                    </t>
3957                    <t>/ BUFFER_FILL
3958                    </t>
3959                    <t>/ CHANNEL_INFO
3960                    </t>
3961                    <t>/ MISCELLANEOUS
3962                    </t>
3963                    <t>/ TOTAL_VOICE_COUNT
3964                    </t>
3965            </list>
3966    </t>
3967    <t>map_instruction =
3968            <list>
3969                    <t>MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
3970                    </t>
3971                    <t>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
3972                    </t>
3973                    <t>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
3974                    </t>
3975                    <t>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name
3976                    </t>
3977            </list>
3978    </t>
3979    <t>unmap_instruction =
3980            <list>
3981                    <t>MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog
3982                    </t>
3983            </list>
3984    </t>
3985    <t>remove_instruction =
3986            <list>
3987                    <t>CHANNEL SP sampler_channel
3988                    </t>
3989            </list>
3990    </t>
3991    <t>get_instruction =
3992            <list>
3993                    <t>AVAILABLE_ENGINES
3994                    </t>
3995                    <t>/ AVAILABLE_MIDI_INPUT_DRIVERS
3996                    </t>
3997                    <t>/ MIDI_INPUT_DRIVER SP INFO SP string
3998                    </t>
3999                    <t>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
4000                    </t>
4001                    <t>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
4002                    </t>
4003                    <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
4004                    </t>
4005                    <t>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
4006                    </t>
4007                    <t>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
4008                    </t>
4009                    <t>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
4010                    </t>
4011                    <t>/ AUDIO_OUTPUT_DEVICES
4012                    </t>
4013                    <t>/ MIDI_INPUT_DEVICES
4014                    </t>
4015                    <t>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
4016                    </t>
4017                    <t>/ MIDI_INPUT_DEVICE SP INFO SP number
4018                    </t>
4019                    <t>/ MIDI_INPUT_PORT SP INFO SP number SP number
4020                    </t>
4021                    <t>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
4022                    </t>
4023                    <t>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
4024                    </t>
4025                    <t>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
4026                    </t>
4027                    <t>/ CHANNELS
4028                    </t>
4029                    <t>/ CHANNEL SP INFO SP sampler_channel
4030                    </t>
4031                    <t>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
4032                    </t>
4033                    <t>/ CHANNEL SP STREAM_COUNT SP sampler_channel
4034                    </t>
4035                    <t>/ CHANNEL SP VOICE_COUNT SP sampler_channel
4036                    </t>
4037                    <t>/ ENGINE SP INFO SP engine_name
4038                    </t>
4039                    <t>/ SERVER SP INFO
4040                    </t>
4041                    <t>/ TOTAL_VOICE_COUNT
4042                    </t>
4043                    <t>/ TOTAL_VOICE_COUNT_MAX
4044                    </t>
4045                    <t>/ MIDI_INSTRUMENTS
4046                    </t>
4047                    <t>/ MIDI_INSTRUMENT SP INFO SP midi_bank_msb SP midi_bank_lsb SP midi_prog
4048                    </t>
4049            </list>
4050    </t>
4051    <t>set_instruction =
4052            <list>
4053                    <t>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
4054                    </t>
4055                    <t>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
4056                    </t>
4057                    <t>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
4058                    </t>
4059                    <t>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
4060                    </t>
4061                    <t>/ CHANNEL SP set_chan_instruction
4062                    </t>
4063                    <t>/ ECHO SP boolean
4064                    </t>
4065            </list>
4066    </t>
4067    <t>create_instruction =
4068            <list>
4069                    <t>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
4070                    </t>
4071                    <t>/ AUDIO_OUTPUT_DEVICE SP string
4072                    </t>
4073                    <t>/ MIDI_INPUT_DEVICE SP string SP key_val_list
4074                    </t>
4075                    <t>/ MIDI_INPUT_DEVICE SP string
4076                    </t>
4077            </list>
4078    </t>
4079    <t>reset_instruction =
4080            <list>
4081                    <t>CHANNEL SP sampler_channel
4082                    </t>
4083            </list>
4084    </t>
4085    <t>clear_instruction =
4086            <list>
4087                    <t>MIDI_INSTRUMENTS
4088                    </t>
4089            </list>
4090    </t>
4091    <t>destroy_instruction =
4092            <list>
4093                    <t>AUDIO_OUTPUT_DEVICE SP number
4094                    </t>
4095                    <t>/ MIDI_INPUT_DEVICE SP number
4096                    </t>
4097            </list>
4098    </t>
4099    <t>load_instruction =
4100            <list>
4101                    <t>INSTRUMENT SP load_instr_args
4102                    </t>
4103                    <t>/ ENGINE SP load_engine_args
4104                    </t>
4105            </list>
4106    </t>
4107    <t>set_chan_instruction =
4108            <list>
4109                    <t>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
4110                    </t>
4111                    <t>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
4112                    </t>
4113                    <t>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
4114                    </t>
4115                    <t>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
4116                    </t>
4117                    <t>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
4118                    </t>
4119                    <t>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
4120                    </t>
4121                    <t>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
4122                    </t>
4123                    <t>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
4124                    </t>
4125                    <t>/ VOLUME SP sampler_channel SP volume_value
4126                    </t>
4127                    <t>/ MUTE SP sampler_channel SP boolean
4128                    </t>
4129                    <t>/ SOLO SP sampler_channel SP boolean
4130                    </t>
4131            </list>
4132    </t>
4133    <t>key_val_list =
4134            <list>
4135                    <t>string '=' param_val_list
4136                    </t>
4137                    <t>/ key_val_list SP string '=' param_val_list
4138                    </t>
4139            </list>
4140    </t>
4141    <t>buffer_size_type =
4142            <list>
4143                    <t>BYTES
4144                    </t>
4145                    <t>/ PERCENTAGE
4146                    </t>
4147            </list>
4148    </t>
4149    <t>list_instruction =
4150            <list>
4151                    <t>AUDIO_OUTPUT_DEVICES
4152                    </t>
4153                    <t>/ MIDI_INPUT_DEVICES
4154                    </t>
4155                    <t>/ CHANNELS
4156                    </t>
4157                    <t>/ AVAILABLE_ENGINES
4158                    </t>
4159                    <t>/ AVAILABLE_MIDI_INPUT_DRIVERS
4160                    </t>
4161                    <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
4162                    </t>
4163                    <t>/ MIDI_INSTRUMENTS
4164                    </t>
4165            </list>
4166    </t>
4167    <t>load_instr_args =
4168            <list>
4169                    <t>filename SP instrument_index SP sampler_channel
4170                    </t>
4171                    <t>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
4172                    </t>
4173            </list>
4174    </t>
4175    <t>load_engine_args =
4176            <list>
4177                    <t>engine_name SP sampler_channel
4178                    </t>
4179            </list>
4180    </t>
4181    <t>instr_load_mode =
4182            <list>
4183                    <t>ON_DEMAND
4184                    </t>
4185                    <t>/ ON_DEMAND_HOLD
4186                    </t>
4187                    <t>/ PERSISTENT
4188                    </t>
4189            </list>
4190    </t>
4191    <t>device_index =
4192            <list>
4193                    <t>number
4194                    </t>
4195            </list>
4196    </t>
4197    <t>audio_channel_index =
4198            <list>
4199                    <t>number
4200                    </t>
4201            </list>
4202    </t>
4203    <t>audio_output_type_name =
4204            <list>
4205                    <t>string
4206                    </t>
4207            </list>
4208    </t>
4209    <t>midi_input_port_index =
4210            <list>
4211                    <t>number
4212                    </t>
4213            </list>
4214    </t>
4215    <t>midi_input_channel_index =
4216            <list>
4217                    <t>number
4218                    </t>
4219                    <t>/ ALL
4220                    </t>
4221            </list>
4222    </t>
4223    <t>midi_input_type_name =
4224            <list>
4225                    <t>string
4226                    </t>
4227            </list>
4228    </t>
4229    <t>midi_bank_msb =
4230            <list>
4231                    <t>number
4232                    </t>
4233            </list>
4234    </t>
4235    <t>midi_bank_lsb =
4236            <list>
4237                    <t>number
4238                    </t>
4239            </list>
4240    </t>
4241    <t>midi_prog =
4242            <list>
4243                    <t>number
4244                    </t>
4245            </list>
4246    </t>
4247    <t>volume_value =
4248            <list>
4249                    <t>dotnum
4250                    </t>
4251                    <t>/ number
4252                    </t>
4253            </list>
4254    </t>
4255    <t>sampler_channel =
4256            <list>
4257                    <t>number
4258                    </t>
4259            </list>
4260    </t>
4261    <t>instrument_index =
4262            <list>
4263                    <t>number
4264                    </t>
4265            </list>
4266    </t>
4267    <t>engine_name =
4268            <list>
4269                    <t>string
4270                    </t>
4271            </list>
4272    </t>
4273    <t>filename =
4274            <list>
4275                    <t>stringval
4276                    </t>
4277            </list>
4278    </t>
4279    <t>entry_name =
4280            <list>
4281                    <t>stringval
4282                    </t>
4283            </list>
4284    </t>
4285    <t>param_val_list =
4286            <list>
4287                    <t>param_val
4288                    </t>
4289                    <t>/ param_val_list','param_val
4290                    </t>
4291            </list>
4292    </t>
4293    <t>param_val =
4294            <list>
4295                    <t>string
4296                    </t>
4297                    <t>/ stringval
4298                    </t>
4299                    <t>/ number
4300                    </t>
4301                    <t>/ dotnum
4302                    </t>
4303            </list>
4304    </t>
4305    
4306                <!-- GRAMMAR_BNF_END - do NOT delete or modify this line !!! -->
4307          </section>          </section>
4308    
4309          <section title="Events" anchor="events">          <section title="Events" anchor="events">
# Line 3170  Schoenebeck'> Line 4314  Schoenebeck'>
4314                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
4315                  <t>                  <t>
4316                      <list>                      <list>
4317                          <t>SUBSCRIBE CHANNELS</t>                          <t>SUBSCRIBE CHANNEL_COUNT</t>
4318                      </list>                      </list>
4319                  </t>                  </t>
4320                  <t>Server will start sending the following notification messages:</t>                  <t>Server will start sending the following notification messages:</t>
4321                  <t>                  <t>
4322                      <list>                      <list>
4323                          <t>"NOTIFY:CHANNELS:&lt;channels&gt;"</t>                          <t>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"</t>
4324                      </list>                      </list>
4325                  </t>                  </t>
4326                  <t>where &lt;channels&gt; will be replaced by the new number                  <t>where &lt;channels&gt; will be replaced by the new number
# Line 3244  Schoenebeck'> Line 4388  Schoenebeck'>
4388    
4389              <section title="Channel information changed" anchor="SUBSCRIBE INFO">              <section title="Channel information changed" anchor="SUBSCRIBE INFO">
4390                  <t>Client may want to be notified when changes were made to sampler channels on the                  <t>Client may want to be notified when changes were made to sampler channels on the
4391                  back-end changes by issuing the following command:</t>                  back-end by issuing the following command:</t>
4392                  <t>                  <t>
4393                      <list>                      <list>
4394                          <t>SUBSCRIBE INFO</t>                          <t>SUBSCRIBE CHANNEL_INFO</t>
4395                      </list>                      </list>
4396                  </t>                  </t>
4397                  <t>Server will start sending the following notification messages:</t>                  <t>Server will start sending the following notification messages:</t>
4398                  <t>                  <t>
4399                      <list>                      <list>
4400                          <t>"NOTIFY:INFO:&lt;sampler-channel&gt;"</t>                          <t>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"</t>
4401                      </list>                      </list>
4402                  </t>                  </t>
4403                  <t>where &lt;sampler-channel&gt; will be replaced by the sampler channel the                  <t>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
# Line 3264  Schoenebeck'> Line 4408  Schoenebeck'>
4408                  message is sufficient here.</t>                  message is sufficient here.</t>
4409              </section>              </section>
4410    
4411                <section title="Total number of active voices changed" anchor="SUBSCRIBE TOTAL_VOICE_COUNT">
4412                    <t>Client may want to be notified when the total number of voices on the
4413                    back-end changes by issuing the following command:</t>
4414                    <t>
4415                        <list>
4416                            <t>SUBSCRIBE TOTAL_VOICE_COUNT</t>
4417                        </list>
4418                    </t>
4419                    <t>Server will start sending the following notification messages:</t>
4420                    <t>
4421                        <list>
4422                            <t>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;</t>
4423                        </list>
4424                    </t>
4425                    <t>where &lt;voices&gt; will be replaced by the new number of
4426                    all currently active voices.</t>
4427                </section>
4428    
4429              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">
4430                  <t>Client may want to be notified of miscellaneous and debugging events occurring at                  <t>Client may want to be notified of miscellaneous and debugging events occurring at
4431                  the server by issuing the following command:</t>                  the server by issuing the following command:</t>
# Line 3300  Schoenebeck'> Line 4462  Schoenebeck'>
4462                      <t>Rui Nuno Capela</t>                      <t>Rui Nuno Capela</t>
4463                      <t>Vladimir Senkov</t>                      <t>Vladimir Senkov</t>
4464                      <t>Mark Knecht</t>                      <t>Mark Knecht</t>
4465                        <t>Grigor Iliev</t>
4466                  </list>                  </list>
4467              </t>              </t>
4468          </section>          </section>
# Line 3307  Schoenebeck'> Line 4470  Schoenebeck'>
4470      </middle>      </middle>
4471    
4472      <back>      <back>
4473          <references>&rfc2119;</references>          <references>
4474                <reference anchor="RFC2119">
4475                    <front>
4476                        <title>Key words for use in RFCs to Indicate Requirement Levels</title>
4477                        <author initials="S." surname="Bradner" fullname="Scott Bradner">
4478                            <organization>Harvard University</organization>
4479                        </author>
4480                        <date year="1997"></date>
4481                    </front>
4482                    <seriesInfo name="RFC" value="2119" />
4483                </reference>
4484                <reference anchor="RFC793">
4485                    <front>
4486                        <title>TRANSMISSION CONTROL PROTOCOL</title>
4487                        <author>
4488                            <organization>Defense Advanced Research Projects Agency</organization>
4489                        </author>
4490                        <date year="1981"></date>
4491                    </front>
4492                    <seriesInfo name="RFC" value="793" />
4493                </reference>
4494                <reference anchor="RFC2234">
4495                    <front>
4496                        <title>Augmented BNF for Syntax Specifications</title>
4497                        <author initials="D.H." surname="Crocker" fullname="David H. Crocker">
4498                            <organization>Internet Mail Consortium</organization>
4499                        </author>
4500                        <author initials="P." surname="Overell" fullname="Paul Overell">
4501                            <organization>Demon Internet Ltd</organization>
4502                        </author>
4503                        <date year="1997"></date>
4504                    </front>
4505                    <seriesInfo name="RFC" value="2234" />
4506                </reference>
4507             </references>
4508      </back>      </back>
4509    
4510  </rfc>  </rfc>

Legend:
Removed from v.534  
changed lines
  Added in v.944

  ViewVC Help
Powered by ViewVC