/[svn]/web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.html
ViewVC logotype

Annotation of /web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 708 - (hide annotations) (download) (as text)
Thu Jul 21 09:18:40 2005 UTC (18 years, 8 months ago) by schoenebeck
File MIME type: text/html
File size: 190430 byte(s)
- two new LSCP commands ("SET CHANNEL MUTE" and "SET CHANNEL SOLO")
- bumped LSCP spec version to 1.1

1 senoner 542 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2     <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4     <meta name="description" content="LinuxSampler Control Protocol">
5     <meta name="keywords" content="LSCP">
6 schoenebeck 708 <meta name="generator" content="xml2rfc v1.29 (http://xml.resource.org/)">
7 senoner 542 <style type='text/css'>
8     <!--
9     body {
10     font-family: verdana, charcoal, helvetica, arial, sans-serif;
11     margin: 2em;
12     font-size: small ; color: #000000 ; background-color: #ffffff ; }
13     .title { color: #990000; font-size: x-large ;
14     font-weight: bold; text-align: right;
15     font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
16     background-color: transparent; }
17     .filename { color: #666666; font-size: 18px; line-height: 28px;
18     font-weight: bold; text-align: right;
19     font-family: helvetica, arial, sans-serif;
20     background-color: transparent; }
21 schoenebeck 708 td.rfcbug { background-color: #000000 ; width: 30px ; height: 30px ;
22 senoner 542 text-align: justify; vertical-align: middle ; padding-top: 2px ; }
23     td.rfcbug span.RFC { color: #666666; font-weight: bold; text-decoration: none;
24     background-color: #000000 ;
25     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
26     font-size: x-small ; }
27     td.rfcbug span.hotText { color: #ffffff; font-weight: normal; text-decoration: none;
28     text-align: center ;
29     font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
30     font-size: x-small ; background-color: #000000; }
31     /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
32     div#counter{margin-top: 100px}
33    
34     a.info{
35     position:relative; /*this is the key*/
36     z-index:24;
37     text-decoration:none}
38    
39     a.info:hover{z-index:25; background-color:#990000 ; color: #ffffff ;}
40    
41     a.info span{display: none}
42    
43 schoenebeck 708 a.info:hover span.info{ /*the span will display just on :hover state*/
44 senoner 542 display:block;
45     position:absolute;
46     font-size: smaller ;
47     top:2em; left:2em; width:15em;
48     padding: 2px ;
49     border:1px solid #333333;
50     background-color:#eeeeee; color:#990000;
51     text-align: left ;}
52    
53     A { font-weight: bold; }
54     A:link { color: #990000; background-color: transparent ; }
55     A:visited { color: #333333; background-color: transparent ; }
56     A:active { color: #333333; background-color: transparent ; }
57    
58     p { margin-left: 2em; margin-right: 2em; }
59     p.copyright { font-size: x-small ; }
60     p.toc { font-size: small ; font-weight: bold ; margin-left: 3em ;}
61    
62     span.emph { font-style: italic; }
63     span.strong { font-weight: bold; }
64 schoenebeck 708 span.verb, span.vbare { font-family: "Courier New", Courier, monospace ; }
65 senoner 542
66 schoenebeck 708 span.vemph { font-style: italic; font-family: "Courier New", Courier, monospace ; }
67     span.vstrong { font-weight: bold; font-family: "Courier New", Courier, monospace ; }
68     span.vdeluxe { font-weight: bold; font-style: italic; font-family: "Courier New", Courier, monospace ; }
69    
70 senoner 542 ol.text { margin-left: 2em; margin-right: 2em; }
71     ul.text { margin-left: 2em; margin-right: 2em; }
72     li { margin-left: 3em; }
73    
74     pre { margin-left: 3em; color: #333333; background-color: transparent;
75     font-family: "Courier New", Courier, monospace ; font-size: small ;
76 schoenebeck 708 text-align: left;
77 senoner 542 }
78    
79     h3 { color: #333333; font-size: medium ;
80     font-family: helvetica, arial, sans-serif ;
81     background-color: transparent; }
82     h4 { font-size: small; font-family: helvetica, arial, sans-serif ; }
83    
84     table.bug { width: 30px ; height: 15px ; }
85     td.bug { color: #ffffff ; background-color: #990000 ;
86     text-align: center ; width: 30px ; height: 15px ;
87     }
88     td.bug A.link2 { color: #ffffff ; font-weight: bold;
89     text-decoration: none;
90     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
91     font-size: x-small ; background-color: transparent }
92    
93     td.header { color: #ffffff; font-size: x-small ;
94     font-family: arial, helvetica, sans-serif; vertical-align: top;
95     background-color: #666666 ; width: 33% ; }
96     td.author { font-weight: bold; margin-left: 4em; font-size: x-small ; }
97     td.author-text { font-size: x-small; }
98     table.data { vertical-align: top ; border-collapse: collapse ;
99     border-style: solid solid solid solid ;
100     border-color: black black black black ;
101     font-size: small ; text-align: center ; }
102     table.data th { font-weight: bold ;
103     border-style: solid solid solid solid ;
104     border-color: black black black black ; }
105     table.data td {
106     border-style: solid solid solid solid ;
107     border-color: #333333 #333333 #333333 #333333 ; }
108    
109     hr { height: 1px }
110     -->
111     </style>
112     </head>
113     <body>
114     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
115     <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
116     <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
117     <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
118 schoenebeck 708 <tr><td class="header">Expires: November 2, 2005</td><td class="header">Engineering e. V.</td></tr>
119     <tr><td class="header">&nbsp;</td><td class="header">May 2005</td></tr>
120 senoner 542 </table></td></tr></table>
121     <div align="right"><span class="title"><br />LinuxSampler Control Protocol</span></div>
122 schoenebeck 708 <div align="right"><span class="title"><br />LSCP 1.1</span></div>
123 senoner 542
124     <h3>Status of this Memo</h3>
125     <p>
126     This document is an Internet-Draft and is
127 schoenebeck 708 in full conformance with all provisions of Section&nbsp;10 of RFC&nbsp;2026.</p>
128 senoner 542 <p>
129     Internet-Drafts are working documents of the Internet Engineering
130     Task Force (IETF), its areas, and its working groups.
131     Note that other groups may also distribute working documents as
132     Internet-Drafts.</p>
133     <p>
134     Internet-Drafts are draft documents valid for a maximum of six months
135     and may be updated, replaced, or obsoleted by other documents at any time.
136     It is inappropriate to use Internet-Drafts as reference material or to cite
137 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
138 senoner 542 <p>
139     The list of current Internet-Drafts can be accessed at
140     <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
141     <p>
142     The list of Internet-Draft Shadow Directories can be accessed at
143     <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
144     <p>
145 schoenebeck 708 This Internet-Draft will expire on November 2, 2005.</p>
146 senoner 542
147     <h3>Copyright Notice</h3>
148     <p>
149 schoenebeck 708 Copyright &copy; The Internet Society (2005). All Rights Reserved.</p>
150 senoner 542
151     <h3>Abstract</h3>
152    
153     <p>The LinuxSampler Control Protocol (LSCP) is an
154     application-level protocol primarily intended for local and
155 schoenebeck 575 remote controlling the LinuxSampler backend application, which is a
156     sophisticated server-like console application essentially playing
157     back audio samples and manipulating the samples in real time to
158     certain extent.
159 senoner 542 </p><a name="toc"></a><br /><hr />
160     <h3>Table of Contents</h3>
161     <p class="toc">
162     <a href="#anchor1">1.</a>&nbsp;
163     Requirements notation<br />
164 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
165     Versioning of this specification<br />
166     <a href="#anchor2">3.</a>&nbsp;
167 senoner 542 Introduction<br />
168 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
169 senoner 542 Focus of this protocol<br />
170 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
171 senoner 542 Communication Overview<br />
172 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1</a>&nbsp;
173 senoner 542 Request/response communication method<br />
174 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1</a>&nbsp;
175 senoner 542 Result format<br />
176 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2</a>&nbsp;
177 senoner 542 Subscribe/notify communication method<br />
178 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
179 senoner 542 Description for control commands<br />
180 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1</a>&nbsp;
181 senoner 542 Ignored lines and comments<br />
182 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2</a>&nbsp;
183 senoner 542 Configuring audio drivers<br />
184 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1</a>&nbsp;
185 senoner 542 Getting amount of available audio output drivers<br />
186 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2</a>&nbsp;
187 senoner 542 Getting all available audio output drivers<br />
188 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3</a>&nbsp;
189 senoner 542 Getting information about a specific audio
190     output driver<br />
191 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4</a>&nbsp;
192 senoner 542 Getting information about specific audio
193     output driver parameter<br />
194 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5</a>&nbsp;
195 senoner 542 Creating an audio output device<br />
196 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6</a>&nbsp;
197 senoner 542 Destroying an audio output device<br />
198 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7</a>&nbsp;
199 senoner 542 Getting all created audio output device count<br />
200 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8</a>&nbsp;
201 senoner 542 Getting all created audio output device list<br />
202 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9</a>&nbsp;
203 senoner 542 Getting current settings of an audio output device<br />
204 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10</a>&nbsp;
205 senoner 542 Changing settings of audio output devices<br />
206 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11</a>&nbsp;
207 senoner 542 Getting information about an audio channel<br />
208 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12</a>&nbsp;
209 senoner 542 Getting information about specific audio channel parameter<br />
210 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13</a>&nbsp;
211 senoner 542 Changing settings of audio output channels<br />
212 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3</a>&nbsp;
213 senoner 542 Configuring MIDI input drivers<br />
214 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1</a>&nbsp;
215 senoner 542 Getting amount of available MIDI input drivers<br />
216 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2</a>&nbsp;
217 senoner 542 Getting all available MIDI input drivers<br />
218 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3</a>&nbsp;
219 senoner 542 Getting information about a specific MIDI input driver<br />
220 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4</a>&nbsp;
221 senoner 542 Getting information about specific MIDI input driver parameter<br />
222 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5</a>&nbsp;
223 senoner 542 Creating a MIDI input device<br />
224 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6</a>&nbsp;
225 senoner 542 Destroying a MIDI input device<br />
226 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7</a>&nbsp;
227 senoner 542 Getting all created MIDI input device count<br />
228 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8</a>&nbsp;
229 senoner 542 Getting all created MIDI input device list<br />
230 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9</a>&nbsp;
231 senoner 542 Getting current settings of a MIDI input device<br />
232 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10</a>&nbsp;
233 senoner 542 Changing settings of MIDI input devices<br />
234 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11</a>&nbsp;
235 senoner 542 Getting information about a MIDI port<br />
236 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12</a>&nbsp;
237 senoner 542 Getting information about specific MIDI port parameter<br />
238 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13</a>&nbsp;
239 senoner 542 Changing settings of MIDI input ports<br />
240 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4</a>&nbsp;
241 senoner 542 Configuring sampler channels<br />
242 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1</a>&nbsp;
243 senoner 542 Loading an instrument<br />
244 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2</a>&nbsp;
245 senoner 542 Loading a sampler engine<br />
246 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3</a>&nbsp;
247 senoner 542 Getting all created sampler channel count<br />
248 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4</a>&nbsp;
249 senoner 542 Getting all created sampler channel list<br />
250 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5</a>&nbsp;
251 senoner 542 Adding a new sampler channel<br />
252 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6</a>&nbsp;
253 senoner 542 Removing a sampler channel<br />
254 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7</a>&nbsp;
255 senoner 542 Getting amount of available engines<br />
256 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8</a>&nbsp;
257 senoner 542 Getting all available engines<br />
258 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9</a>&nbsp;
259 senoner 542 Getting information about an engine<br />
260 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10</a>&nbsp;
261 senoner 542 Getting sampler channel information<br />
262 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11</a>&nbsp;
263 senoner 542 Current number of active voices<br />
264 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12</a>&nbsp;
265 senoner 542 Current number of active disk streams<br />
266 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13</a>&nbsp;
267 senoner 542 Current fill state of disk stream buffers<br />
268 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14</a>&nbsp;
269 senoner 542 Setting audio output device<br />
270 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYP">6.4.15</a>&nbsp;
271 senoner 542 Setting audio output type<br />
272 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16</a>&nbsp;
273 senoner 542 Setting audio output channel<br />
274 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17</a>&nbsp;
275 senoner 542 Setting MIDI input device<br />
276 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18</a>&nbsp;
277 senoner 542 Setting MIDI input type<br />
278 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19</a>&nbsp;
279 senoner 542 Setting MIDI input port<br />
280 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20</a>&nbsp;
281 senoner 542 Setting MIDI input channel<br />
282 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21</a>&nbsp;
283 senoner 542 Setting channel volume<br />
284 schoenebeck 708 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22</a>&nbsp;
285     Muting a sampler channel<br />
286     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23</a>&nbsp;
287     Soloing a sampler channel<br />
288     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.24</a>&nbsp;
289 senoner 542 Resetting a sampler channel<br />
290 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5</a>&nbsp;
291 senoner 542 Controlling connection<br />
292 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1</a>&nbsp;
293 senoner 542 Register front-end for receiving event messages<br />
294 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2</a>&nbsp;
295 senoner 542 Unregister front-end for not receiving event messages<br />
296 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3</a>&nbsp;
297 senoner 542 Enable or disable echo of commands<br />
298 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4</a>&nbsp;
299 senoner 542 Close client connection<br />
300 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6</a>&nbsp;
301 senoner 542 Global commands<br />
302 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.1</a>&nbsp;
303 senoner 542 Reset sampler<br />
304 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.2</a>&nbsp;
305     General sampler informations<br />
306     <a href="#command_syntax">7.</a>&nbsp;
307 senoner 542 Command Syntax<br />
308 schoenebeck 575 <a href="#events">8.</a>&nbsp;
309 senoner 542 Events<br />
310 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL">8.1</a>&nbsp;
311 senoner 542 Number of sampler channels changed<br />
312 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.2</a>&nbsp;
313 senoner 542 Number of active voices changed<br />
314 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.3</a>&nbsp;
315 senoner 542 Number of active disk streams changed<br />
316 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.4</a>&nbsp;
317 senoner 542 Disk stream buffer fill state changed<br />
318 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE INFO">8.5</a>&nbsp;
319 senoner 542 Channel information changed<br />
320 schoenebeck 575 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.6</a>&nbsp;
321 senoner 542 Miscellaneous and debugging events<br />
322 schoenebeck 575 <a href="#anchor14">9.</a>&nbsp;
323 senoner 542 Security Considerations<br />
324 schoenebeck 575 <a href="#anchor15">10.</a>&nbsp;
325 senoner 542 Acknowledgments<br />
326 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
327 senoner 542 References<br />
328     <a href="#rfc.authors">&#167;</a>&nbsp;
329     Author's Address<br />
330     <a href="#rfc.copyright">&#167;</a>&nbsp;
331     Intellectual Property and Copyright Statements<br />
332     </p>
333     <br clear="all" />
334    
335     <a name="anchor1"></a><br /><hr />
336     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
337     <a name="rfc.section.1"></a><h3>1.&nbsp;Requirements notation</h3>
338    
339     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
340     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
341     and "OPTIONAL" in this document are to be interpreted as
342 schoenebeck 708 described in <a class="info" href="#RFC2119">[RFC2119]<span> (</span><span class="info">Bradner, S., &ldquo;Key words for use in RFCs to Indicate Requirement Levels,&rdquo; 1997.</span><span>)</span></a>.
343 senoner 542 </p>
344     <p>This protocol is always case-sensitive if not explicitly
345     claimed the opposite.
346     </p>
347     <p>In examples, "C:" and "S:" indicate lines sent by the client
348     (front-end) and server (LinuxSampler) respectively. Lines in
349     examples must be interpreted as every line being CRLF
350     terminated (carriage return character followed by line feed
351     character as defined in the ASCII standard), thus the following
352     example:
353     </p>
354 schoenebeck 708 <p>
355     </p>
356 senoner 542 <blockquote class="text">
357     <p>C: "some line"
358     </p>
359     <p>&nbsp;&nbsp;&nbsp;"another line"
360     </p>
361 schoenebeck 708 </blockquote><p>
362 senoner 542
363 schoenebeck 708 </p>
364 senoner 542 <p>must actually be interpreted as client sending the following
365     message:
366     </p>
367 schoenebeck 708 <p>
368     </p>
369 senoner 542 <blockquote class="text">
370     <p>"some line&lt;CR&gt;&lt;LF&gt;another
371     line&lt;CR&gt;&lt;LF&gt;"
372     </p>
373 schoenebeck 708 </blockquote><p>
374 senoner 542
375 schoenebeck 708 </p>
376 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
377     &lt;LF&gt; the line feed character as defined in the ASCII
378     standard.
379     </p>
380     <p>Due to technical reasons, messages can arbitrary be
381     fragmented, means the following example:
382     </p>
383 schoenebeck 708 <p>
384     </p>
385 senoner 542 <blockquote class="text">
386     <p>S: "abcd"
387     </p>
388 schoenebeck 708 </blockquote><p>
389 senoner 542
390 schoenebeck 708 </p>
391 senoner 542 <p>could also happen to be sent in three messages like in the
392     following sequence scenario:
393     </p>
394 schoenebeck 708 <p>
395     </p>
396 senoner 542 <ul class="text">
397     <li>server sending message "a"
398     </li>
399     <li>followed by a delay (pause) with
400     arbitrary duration
401     </li>
402     <li>followed by server sending message
403     "bcd&lt;CR&gt;"
404     </li>
405     <li>again followed by a delay (pause) with arbitrary
406     duration
407     </li>
408     <li>followed by server sending the message
409     "&lt;LF&gt;"
410     </li>
411 schoenebeck 708 </ul><p>
412 senoner 542
413 schoenebeck 708 </p>
414 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
415     return and line feed characters respectively.
416     </p>
417 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
418     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
419     <a name="rfc.section.2"></a><h3>2.&nbsp;Versioning of this specification</h3>
420    
421     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
422     release of the LSCP specification will be tagged with a unique version
423     tuple. The version tuple consists at least of a major and minor version
424     number like:
425 schoenebeck 708
426 schoenebeck 575 </p>
427 schoenebeck 708 <p>
428     </p>
429 schoenebeck 575 <blockquote class="text">
430     <p>"1.2"
431     </p>
432 schoenebeck 708 </blockquote><p>
433 schoenebeck 575
434 schoenebeck 708 </p>
435 schoenebeck 575 <p>
436     In this example the major version number would be "1" and the minor
437     version number would be "2". Note that the version tuple might also
438     have more than two elements. The major version number defines a
439     group of backward compatible versions. That means a frontend is
440     compatible to the connected sampler if and only if the LSCP versions
441     to which each of the two parties complies to, match both of the
442     following rules:
443 schoenebeck 708
444 schoenebeck 575 </p>
445     <p>Compatibility:
446     </p>
447 schoenebeck 708 <p>
448     </p>
449 schoenebeck 575 <ol class="text">
450     <li>The frontend's LSCP major version and the sampler's LSCP
451     major version are exactly equal.
452     </li>
453     <li>The frontend's LSCP minor version is less or equal than
454     the sampler's LSCP minor version.
455     </li>
456 schoenebeck 708 </ol><p>
457 schoenebeck 575
458 schoenebeck 708 </p>
459 schoenebeck 575 <p>
460     Compatibility can only be claimed if both rules are true.
461     The frontend can use the
462 schoenebeck 708 <a class="info" href="#GET SERVER INFO">"GET SERVER INFO"<span> (</span><span class="info">General sampler informations</span><span>)</span></a> command to
463 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
464 schoenebeck 708
465 schoenebeck 575 </p>
466 senoner 542 <a name="anchor2"></a><br /><hr />
467     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
468 schoenebeck 575 <a name="rfc.section.3"></a><h3>3.&nbsp;Introduction</h3>
469 senoner 542
470     <p>LinuxSampler is a so called software sampler application
471     capable to playback audio samples from a computer's Random
472     Access Memory (RAM) as well as directly streaming it from disk.
473     LinuxSampler is designed to be modular. It provides several so
474     called "sampler engines" where each engine is specialized for a
475     certain purpose. LinuxSampler has virtual channels which will be
476     referred in this document as "sampler channels". The channels
477     are in such way virtual as they can be connected to an
478     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
479     sampler channel 17 could be connected to an ALSA sequencer
480     device 64:0 and listening to MIDI channel 1 there). Each sampler
481 schoenebeck 575 channel will be associated with an instance of one of the available
482 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
483     each sampler channel can be routed to an arbitrary audio output
484     method (ALSA / JACK) and an arbitrary audio output channel
485     there.
486     </p>
487     <a name="anchor3"></a><br /><hr />
488     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
489 schoenebeck 575 <a name="rfc.section.4"></a><h3>4.&nbsp;Focus of this protocol</h3>
490 senoner 542
491     <p>Main focus of this protocol is to provide a way to configure
492     a running LinuxSampler instance and to retrieve information
493     about it. The focus of this protocol is not to provide a way to
494     control synthesis parameters or even to trigger or release
495     notes. Or in other words; the focus are those functionalities
496     which are not covered by MIDI or which may at most be handled
497     via MIDI System Exclusive Messages.
498     </p>
499     <a name="anchor4"></a><br /><hr />
500     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
501 schoenebeck 575 <a name="rfc.section.5"></a><h3>5.&nbsp;Communication Overview</h3>
502 senoner 542
503     <p>There are two distinct methods of communication between a
504     running instance of LinuxSampler and one or more control
505     applications, so called "front-ends": a simple request/response
506     communication method used by the clients to give commands to the
507     server as well as to inquire about server's status and a
508     subscribe/notify communication method used by the client to
509     subscribe to and receive notifications of certain events as they
510     happen on the server. The latter needs more effort to be
511     implemented in the front-end application. The two communication
512     methods will be described next.
513     </p>
514 schoenebeck 575 <a name="rfc.section.5.1"></a><h4><a name="anchor5">5.1</a>&nbsp;Request/response communication method</h4>
515 senoner 542
516 schoenebeck 575 <p>This simple communication method is based on
517 schoenebeck 708 <a class="info" href="#RFC793">TCP<span> (</span><span class="info">Defense Advanced Research Projects Agency, &ldquo;TRANSMISSION CONTROL PROTOCOL,&rdquo; 1981.</span><span>)</span></a>[RFC793]. The
518 senoner 542 front-end application establishes a TCP connection to the
519     LinuxSampler instance on a certain host system. Then the
520     front-end application will send certain ASCII based commands
521     as defined in this document (every command line must be CRLF
522     terminated - see "Conventions used in this document" at the
523     beginning of this document) and the LinuxSampler application
524     will response after a certain process time with an
525     appropriate ASCII based answer, also as defined in this
526     document. So this TCP communication is simply based on query
527     and answer paradigm. That way LinuxSampler is only able to
528     answer on queries from front-ends, but not able to
529     automatically send messages to the client if it's not asked
530     to. The fronted should not reconnect to LinuxSampler for
531     every single command, instead it should keep the connection
532     established and simply resend message(s) for subsequent
533     commands. To keep information in the front-end up-to-date
534     the front-end has to periodically send new requests to get
535     the current information from the LinuxSampler instance. This
536     is often referred to as "polling". While polling is simple
537     to implement and may be OK to use in some cases, there may
538     be disadvantages to polling such as network traffic overhead
539     and information being out of date.
540     It is possible for a client or several clients to open more
541     than one connection to the server at the same time. It is
542     also possible to send more than one request to the server
543     at the same time but if those requests are sent over the
544     same connection server MUST execute them sequentially. Upon
545     executing a request server will produce a result set and
546     send it to the client. Each and every request made by the
547     client MUST result in a result set being sent back to the
548     client. No other data other than a result set may be sent by
549     a server to a client. No result set may be sent to a client
550     without the client sending request to the server first. On
551     any particular connection, result sets MUST be sent in their
552     entirety without being interrupted by other result sets. If
553     several requests got queued up at the server they MUST be
554     processed in the order they were received and result sets
555     MUST be sent back in the same order.
556     </p>
557 schoenebeck 575 <a name="rfc.section.5.1.1"></a><h4><a name="anchor6">5.1.1</a>&nbsp;Result format</h4>
558 senoner 542
559     <p>Result set could be one of the following types:
560     </p>
561 schoenebeck 708 <p>
562     </p>
563 senoner 542 <ol class="text">
564     <li>Normal
565     </li>
566     <li>Warning
567     </li>
568     <li>Error
569     </li>
570 schoenebeck 708 </ol><p>
571 senoner 542
572 schoenebeck 708 </p>
573 senoner 542 <p>Warning and Error result sets MUST be single line and
574     have the following format:
575     </p>
576 schoenebeck 708 <p>
577     </p>
578 senoner 542 <ul class="text">
579     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
580     </li>
581     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
582     </li>
583 schoenebeck 708 </ul><p>
584 senoner 542
585 schoenebeck 708 </p>
586 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
587     numeric unique identifiers of the warning or error and
588     &lt;warning-message&gt; and &lt;error-message&gt; are
589     human readable descriptions of the warning or error
590     respectively.
591     </p>
592     <p>Examples:
593     </p>
594 schoenebeck 708 <p>
595     </p>
596 senoner 542 <blockquote class="text">
597     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
598     </p>
599     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
600     </p>
601 schoenebeck 708 </blockquote><p>
602 senoner 542
603 schoenebeck 708 </p>
604     <p>
605     </p>
606 senoner 542 <blockquote class="text">
607     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
608     </p>
609     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
610     </p>
611 schoenebeck 708 </blockquote><p>
612 senoner 542
613 schoenebeck 708 </p>
614     <p>
615     </p>
616 senoner 542 <blockquote class="text">
617     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
618     </p>
619     <p>S: "ERR:9:There is no audio output device with index 123456."
620     </p>
621 schoenebeck 708 </blockquote><p>
622 senoner 542
623 schoenebeck 708 </p>
624 senoner 542 <p>Normal result sets could be:
625     </p>
626 schoenebeck 708 <p>
627     </p>
628 senoner 542 <ol class="text">
629     <li>Empty
630     </li>
631     <li>Single line
632     </li>
633     <li>Multi-line
634     </li>
635 schoenebeck 708 </ol><p>
636 senoner 542
637 schoenebeck 708 </p>
638 senoner 542 <p> Empty result set is issued when the server only
639     needed to acknowledge the fact that the request was
640     received and it was processed successfully and no
641     additional information is available. This result set has
642     the following format:
643     </p>
644 schoenebeck 708 <p>
645     </p>
646 senoner 542 <blockquote class="text">
647     <p>"OK"
648     </p>
649 schoenebeck 708 </blockquote><p>
650 senoner 542
651 schoenebeck 708 </p>
652 senoner 542 <p>Example:
653     </p>
654 schoenebeck 708 <p>
655     </p>
656 senoner 542 <blockquote class="text">
657     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
658     </p>
659     <p>S: "OK"
660     </p>
661 schoenebeck 708 </blockquote><p>
662 senoner 542
663 schoenebeck 708 </p>
664 senoner 542 <p>Single line result sets are command specific. One
665     example of a single line result set is an empty line.
666     Multi-line result sets are command specific and may
667     include one or more lines of information. They MUST
668     always end with the following line:
669     </p>
670 schoenebeck 708 <p>
671     </p>
672 senoner 542 <blockquote class="text">
673     <p>"."
674     </p>
675 schoenebeck 708 </blockquote><p>
676 senoner 542
677 schoenebeck 708 </p>
678 senoner 542 <p>Example:
679     </p>
680 schoenebeck 708 <p>
681     </p>
682 senoner 542 <blockquote class="text">
683     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
684     </p>
685     <p>S: "DRIVER: ALSA"
686     </p>
687     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
688     </p>
689     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
690     </p>
691     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
692     </p>
693     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
694     </p>
695     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
696     </p>
697     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
698     </p>
699     <p>&nbsp;&nbsp;&nbsp;"."
700     </p>
701 schoenebeck 708 </blockquote><p>
702 senoner 542
703 schoenebeck 708 </p>
704 senoner 542 <p>In addition to above mentioned formats, warnings and
705     empty result sets MAY be indexed. In this case, they
706     have the following formats respectively:
707     </p>
708 schoenebeck 708 <p>
709     </p>
710 senoner 542 <ul class="text">
711     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
712     </li>
713     <li>"OK[&lt;index&gt;]"
714     </li>
715 schoenebeck 708 </ul><p>
716 senoner 542
717 schoenebeck 708 </p>
718 senoner 542 <p>where &lt;index&gt; is command specific and is used
719     to indicate channel number that the result set was
720     related to or other integer value.
721     </p>
722     <p>Each line of the result set MUST end with
723     &lt;CRLF&gt;.
724     </p>
725     <p>Examples:
726     </p>
727 schoenebeck 708 <p>
728     </p>
729 senoner 542 <blockquote class="text">
730     <p>C: "ADD CHANNEL"
731     </p>
732     <p>S: "OK[12]"
733     </p>
734 schoenebeck 708 </blockquote><p>
735 senoner 542
736 schoenebeck 708 </p>
737     <p>
738     </p>
739 senoner 542 <blockquote class="text">
740     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
741     </p>
742     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
743     </p>
744 schoenebeck 708 </blockquote><p>
745 senoner 542
746 schoenebeck 708 </p>
747 schoenebeck 575 <a name="rfc.section.5.2"></a><h4><a name="anchor7">5.2</a>&nbsp;Subscribe/notify communication method</h4>
748 senoner 542
749     <p>This more sophisticated communication method is actually
750     only an extension of the simple request/response
751     communication method. The front-end still uses a TCP
752     connection and sends the same commands on the TCP
753     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
754     commands that allow a client to tell the server that it is
755     interested in receiving notifications about certain events
756     as they happen on the server. The SUBSCRIBE command has the
757     following syntax:
758     </p>
759 schoenebeck 708 <p>
760     </p>
761 senoner 542 <blockquote class="text">
762     <p>SUBSCRIBE &lt;event-id&gt;
763     </p>
764 schoenebeck 708 </blockquote><p>
765 senoner 542
766 schoenebeck 708 </p>
767 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
768     event that client wants to subscribe to. Upon receiving such
769     request, server SHOULD respond with OK and start sending
770     EVENT notifications when a given even has occurred to the
771     front-end when an event has occurred. It MAY be possible
772     certain events may be sent before OK response during real
773     time nature of their generation. Event messages have the
774     following format:
775     </p>
776 schoenebeck 708 <p>
777     </p>
778 senoner 542 <blockquote class="text">
779     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
780     </p>
781 schoenebeck 708 </blockquote><p>
782 senoner 542
783 schoenebeck 708 </p>
784 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
785     has occurred and &lt;custom-event-data&gt; is event
786     specific.
787     </p>
788     <p>Several rules must be followed by the server when
789     generating events:
790     </p>
791 schoenebeck 708 <p>
792     </p>
793 senoner 542 <ol class="text">
794     <li>Events MUST NOT be sent to any client who has not
795     issued an appropriate SUBSCRIBE command.
796     </li>
797     <li>Events MUST only be sent using the same
798     connection that was used to subscribe to them.
799     </li>
800     <li>When response is being sent to the client, event
801     MUST be inserted in the stream before or after the
802     response, but NOT in the middle. Same is true about
803     the response. It should never be inserted in the
804     middle of the event message as well as any other
805     response.
806     </li>
807 schoenebeck 708 </ol><p>
808 senoner 542
809 schoenebeck 708 </p>
810 senoner 542 <p>If the client is not interested in a particular event
811     anymore it MAY issue UNSUBSCRIBE command using the following
812     syntax:
813     </p>
814 schoenebeck 708 <p>
815     </p>
816 senoner 542 <blockquote class="text">
817     <p>UNSUBSCRIBE &lt;event-id&gt;
818     </p>
819 schoenebeck 708 </blockquote><p>
820 senoner 542
821 schoenebeck 708 </p>
822 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
823     event that client is no longer interested in receiving. For
824 schoenebeck 708 a list of supported events see <a class="info" href="#events">Section&nbsp;8<span> (</span><span class="info">Events</span><span>)</span></a>.
825 senoner 542 </p>
826     <p>Example: the fill states of disk stream buffers have
827     changed on sampler channel 4 and the LinuxSampler instance
828     will react by sending the following message to all clients
829     who subscribed to this event:
830     </p>
831 schoenebeck 708 <p>
832     </p>
833 senoner 542 <blockquote class="text">
834     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
835     </p>
836 schoenebeck 708 </blockquote><p>
837 senoner 542
838 schoenebeck 708 </p>
839 senoner 542 <p>Which means there are currently three active streams on
840     sampler channel 4, where the stream with ID "35" is filled
841     by 62%, stream with ID 33 is filled by 80% and stream with
842     ID 37 is filled by 98%.
843     </p>
844     <p>Clients may choose to open more than one connection to
845     the server and use some connections to receive notifications
846     while using other connections to issue commands to the
847     back-end. This is entirely legal and up to the
848     implementation. This does not change the protocol in any way
849     and no special restrictions exist on the server to allow or
850     disallow this or to track what connections belong to what
851     front-ends. Server will listen on a single port, accept
852     multiple connections and support protocol described in this
853     specification in it's entirety on this single port on each
854     connection that it accepted.
855     </p>
856     <p>Due to the fact that TCP is used for this communication,
857     dead peers will be detected automatically by the OS TCP
858     stack. While it may take a while to detect dead peers if no
859     traffic is being sent from server to client (TCP keep-alive
860     timer is set to 2 hours on many OSes) it will not be an
861     issue here as when notifications are sent by the server,
862     dead client will be detected quickly.
863     </p>
864     <p>When connection is closed for any reason server MUST
865     forget all subscriptions that were made on this connection.
866     If client reconnects it MUST resubscribe to all events that
867     it wants to receive.
868     </p>
869 schoenebeck 575 <a name="control_commands"></a><br /><hr />
870 senoner 542 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
871 schoenebeck 575 <a name="rfc.section.6"></a><h3>6.&nbsp;Description for control commands</h3>
872 senoner 542
873     <p>This chapter will describe the available control commands
874     that can be sent on the TCP connection in detail. Some certain
875 schoenebeck 708 commands (e.g. <a class="info" href="#GET CHANNEL INFO">"GET CHANNEL INFO"<span> (</span><span class="info">Getting sampler channel information</span><span>)</span></a>
876     or <a class="info" href="#GET ENGINE INFO">"GET ENGINE INFO"<span> (</span><span class="info">Getting information about an engine</span><span>)</span></a>) lead to
877 senoner 542 multiple-line responses. In this case LinuxSampler signals the
878     end of the response by a "." (single dot) line.
879     </p>
880 schoenebeck 575 <a name="rfc.section.6.1"></a><h4><a name="anchor8">6.1</a>&nbsp;Ignored lines and comments</h4>
881 senoner 542
882     <p>White lines, that is lines which only contain space and
883     tabulator characters, and lines that start with a "#"
884     character are ignored, thus it's possible for example to
885     group commands and to place comments in a LSCP script
886     file.
887     </p>
888 schoenebeck 575 <a name="rfc.section.6.2"></a><h4><a name="anchor9">6.2</a>&nbsp;Configuring audio drivers</h4>
889 senoner 542
890     <p>Instances of drivers in LinuxSampler are called devices.
891     You can use multiple audio devices simultaneously, e.g. to
892     output the sound of one sampler channel using the ALSA audio
893     output driver, and on another sampler channel you might want
894     to use the JACK audio output driver. For particular audio
895     output systems it's also possible to create several devices
896     of the same audio output driver, e.g. two separate ALSA
897     audio output devices for using two different sound cards at
898     the same time. This chapter describes all commands to
899     configure LinuxSampler's audio output devices and their
900     parameters.
901     </p>
902     <p>Instead of defining commands and parameters for each
903     driver individually, all possible parameters, their meanings
904     and possible values have to be obtained at runtime. This
905     makes the protocol a bit abstract, but has the advantage,
906     that front-ends can be written independently of what drivers
907     are currently implemented and what parameters these drivers
908     are actually offering. This means front-ends can even handle
909     drivers which are implemented somewhere in future without
910     modifying the front-end at all.
911     </p>
912     <p>Note: examples in this chapter showing particular
913     parameters of drivers are not meant as specification of the
914     drivers' parameters. Driver implementations in LinuxSampler
915     might have complete different parameter names and meanings
916     than shown in these examples or might change in future, so
917     these examples are only meant for showing how to retrieve
918     what parameters drivers are offering, how to retrieve their
919     possible values, etc.
920     </p>
921 schoenebeck 575 <a name="rfc.section.6.2.1"></a><h4><a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1</a>&nbsp;Getting amount of available audio output drivers</h4>
922 senoner 542
923     <p>Use the following command to get the number of
924     audio output drivers currently available for the
925     LinuxSampler instance:
926     </p>
927 schoenebeck 708 <p>
928     </p>
929 senoner 542 <blockquote class="text">
930     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
931     </p>
932 schoenebeck 708 </blockquote><p>
933 senoner 542
934 schoenebeck 708 </p>
935 senoner 542 <p>Possible Answers:
936     </p>
937 schoenebeck 708 <p>
938     </p>
939 senoner 542 <blockquote class="text">
940     <p>LinuxSampler will answer by sending the
941     number of audio output drivers.
942     </p>
943 schoenebeck 708 </blockquote><p>
944 senoner 542
945 schoenebeck 708 </p>
946 senoner 542 <p>Example:
947     </p>
948 schoenebeck 708 <p>
949     </p>
950 senoner 542 <blockquote class="text">
951     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
952     </p>
953     <p>S: "2"
954     </p>
955 schoenebeck 708 </blockquote><p>
956 senoner 542
957 schoenebeck 708 </p>
958 schoenebeck 575 <a name="rfc.section.6.2.2"></a><h4><a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2</a>&nbsp;Getting all available audio output drivers</h4>
959 senoner 542
960     <p>Use the following command to list all audio output
961     drivers currently available for the LinuxSampler
962     instance:
963     </p>
964 schoenebeck 708 <p>
965     </p>
966 senoner 542 <blockquote class="text">
967     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
968     </p>
969 schoenebeck 708 </blockquote><p>
970 senoner 542
971 schoenebeck 708 </p>
972 senoner 542 <p>Possible Answers:
973     </p>
974 schoenebeck 708 <p>
975     </p>
976 senoner 542 <blockquote class="text">
977     <p>LinuxSampler will answer by sending comma
978     separated character strings, each symbolizing an
979     audio output driver.
980     </p>
981 schoenebeck 708 </blockquote><p>
982 senoner 542
983 schoenebeck 708 </p>
984 senoner 542 <p>Example:
985     </p>
986 schoenebeck 708 <p>
987     </p>
988 senoner 542 <blockquote class="text">
989     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
990     </p>
991     <p>S: "ALSA,JACK"
992     </p>
993 schoenebeck 708 </blockquote><p>
994 senoner 542
995 schoenebeck 708 </p>
996 schoenebeck 575 <a name="rfc.section.6.2.3"></a><h4><a name="GET AUDIO_OUTPUT_DRIVER INFO">6.2.3</a>&nbsp;Getting information about a specific audio
997 senoner 542 output driver</h4>
998    
999     <p>Use the following command to get detailed information
1000     about a specific audio output driver:
1001     </p>
1002 schoenebeck 708 <p>
1003     </p>
1004 senoner 542 <blockquote class="text">
1005     <p>GET AUDIO_OUTPUT_DRIVER INFO
1006     &lt;audio-output-driver&gt;
1007     </p>
1008 schoenebeck 708 </blockquote><p>
1009 senoner 542
1010 schoenebeck 708 </p>
1011 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1012     audio output driver, returned by the
1013 schoenebeck 708 <a class="info" href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class="info">Getting all available audio output drivers</span><span>)</span></a> command.
1014 senoner 542 </p>
1015     <p>Possible Answers:
1016     </p>
1017 schoenebeck 708 <p>
1018     </p>
1019 senoner 542 <blockquote class="text">
1020     <p>LinuxSampler will answer by sending a
1021     &lt;CRLF&gt; separated list. Each answer line
1022     begins with the information category name
1023     followed by a colon and then a space character
1024     &lt;SP&gt; and finally the info character string
1025     to that info category. At the moment the
1026     following information categories are
1027     defined:
1028     </p>
1029 schoenebeck 708 <p>
1030     </p>
1031 senoner 542 <blockquote class="text">
1032     <p>DESCRIPTION -
1033     </p>
1034     <blockquote class="text">
1035     <p> character string describing the
1036     audio output driver
1037     </p>
1038 schoenebeck 708 </blockquote><p>
1039 senoner 542
1040 schoenebeck 708 </p>
1041 senoner 542 <p>VERSION -
1042     </p>
1043     <blockquote class="text">
1044     <p>character string reflecting the
1045     driver's version
1046     </p>
1047 schoenebeck 708 </blockquote><p>
1048 senoner 542
1049 schoenebeck 708 </p>
1050 senoner 542 <p>PARAMETERS -
1051     </p>
1052     <blockquote class="text">
1053     <p>comma separated list of all
1054     parameters available for the given
1055     audio output driver, at least
1056     parameters 'channels', 'samplerate'
1057     and 'active' are offered by all audio
1058     output drivers
1059     </p>
1060 schoenebeck 708 </blockquote><p>
1061 senoner 542
1062 schoenebeck 708 </p>
1063     </blockquote><p>
1064 senoner 542
1065 schoenebeck 708 </p>
1066 senoner 542 <p>The mentioned fields above don't have to be
1067     in particular order.
1068     </p>
1069 schoenebeck 708 </blockquote><p>
1070 senoner 542
1071 schoenebeck 708 </p>
1072 senoner 542 <p>Example:
1073     </p>
1074 schoenebeck 708 <p>
1075     </p>
1076 senoner 542 <blockquote class="text">
1077     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1078     </p>
1079     <p>S: "DESCRIPTION: Advanced Linux Sound
1080     Architecture"
1081     </p>
1082     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1083     </p>
1084     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1085     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1086     FRAGMENTSIZE,CARD"
1087     </p>
1088     <p>&nbsp;&nbsp;&nbsp;"."
1089     </p>
1090 schoenebeck 708 </blockquote><p>
1091 senoner 542
1092 schoenebeck 708 </p>
1093 schoenebeck 575 <a name="rfc.section.6.2.4"></a><h4><a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4</a>&nbsp;Getting information about specific audio
1094 senoner 542 output driver parameter</h4>
1095    
1096     <p>Use the following command to get detailed information
1097     about a specific audio output driver parameter:
1098     </p>
1099 schoenebeck 708 <p>
1100     </p>
1101 senoner 542 <blockquote class="text">
1102     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1103     </p>
1104 schoenebeck 708 </blockquote><p>
1105 senoner 542
1106 schoenebeck 708 </p>
1107 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1108 schoenebeck 708 driver as returned by the <a class="info" href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class="info">Getting all available audio output drivers</span><span>)</span></a> command,
1109 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1110     obtained (as returned by the
1111 schoenebeck 708 <a class="info" href="#GET AUDIO_OUTPUT_DRIVER INFO">"GET AUDIO_OUTPUT_DRIVER INFO"<span> (</span><span class="info">Getting information about a specific audio output driver</span><span>)</span></a> command) and
1112 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1113     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1114     pairs in form of "key1=val1 key2=val2 ...", where character string values
1115     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1116     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1117     the front-end application can simply put all parameters into &lt;deplist&gt;
1118     with the values already selected by the user.
1119     </p>
1120     <p>Possible Answers:
1121     </p>
1122 schoenebeck 708 <p>
1123     </p>
1124 senoner 542 <blockquote class="text">
1125     <p>LinuxSampler will answer by sending a
1126     &lt;CRLF&gt; separated list.
1127     Each answer line begins with the information category name
1128     followed by a colon and then a space character &lt;SP&gt; and
1129     finally
1130     the info character string to that info category. There are
1131     information which is always returned, independently of the
1132     given driver parameter and there are optional information
1133     which is only shown dependently to given driver parameter. At
1134     the moment the following information categories are defined:
1135     </p>
1136 schoenebeck 708 </blockquote><p>
1137 senoner 542
1138 schoenebeck 708 </p>
1139     <p>
1140     </p>
1141 senoner 542 <blockquote class="text">
1142     <p>TYPE -
1143     </p>
1144     <blockquote class="text">
1145     <p>either "BOOL" for boolean value(s) or
1146     "INT" for integer
1147     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1148     character string(s)
1149     (always returned, no matter which driver parameter)
1150     </p>
1151 schoenebeck 708 </blockquote><p>
1152 senoner 542
1153 schoenebeck 708 </p>
1154 senoner 542 <p>DESCRIPTION -
1155     </p>
1156     <blockquote class="text">
1157     <p>arbitrary text describing the purpose of the parameter
1158     (always returned, no matter which driver parameter)
1159     </p>
1160 schoenebeck 708 </blockquote><p>
1161 senoner 542
1162 schoenebeck 708 </p>
1163 senoner 542 <p>MANDATORY -
1164     </p>
1165     <blockquote class="text">
1166     <p>either true or false, defines if this parameter must be
1167     given when the device is to be created with the
1168 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
1169 senoner 542 command (always returned, no matter which driver parameter)
1170     </p>
1171 schoenebeck 708 </blockquote><p>
1172 senoner 542
1173 schoenebeck 708 </p>
1174 senoner 542 <p>FIX -
1175     </p>
1176     <blockquote class="text">
1177     <p>either true or false, if false then this parameter can
1178     be changed at any time, once the device is created by
1179 schoenebeck 708 the <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
1180 senoner 542 command (always returned, no matter which driver parameter)
1181     </p>
1182 schoenebeck 708 </blockquote><p>
1183 senoner 542
1184 schoenebeck 708 </p>
1185 senoner 542 <p>MULTIPLICITY -
1186     </p>
1187     <blockquote class="text">
1188     <p>either true or false, defines if this parameter allows
1189     only one value or a list of values, where true means
1190     multiple values and false only a single value allowed
1191     (always returned, no matter which driver parameter)
1192     </p>
1193 schoenebeck 708 </blockquote><p>
1194 senoner 542
1195 schoenebeck 708 </p>
1196 senoner 542 <p>DEPENDS -
1197     </p>
1198     <blockquote class="text">
1199 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1200 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1201     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1202     listed parameters, for example assuming that an audio
1203     driver (like the ALSA driver) offers parameters 'card'
1204     and 'samplerate' then parameter 'samplerate' would
1205     depend on 'card' because the possible values for
1206     'samplerate' depends on the sound card which can be
1207     chosen by the 'card' parameter
1208     (optionally returned, dependent to driver parameter)
1209     </p>
1210 schoenebeck 708 </blockquote><p>
1211 senoner 542
1212 schoenebeck 708 </p>
1213 senoner 542 <p>DEFAULT -
1214     </p>
1215     <blockquote class="text">
1216     <p>reflects the default value for this parameter which is
1217     used when the device is created and not explicitly
1218 schoenebeck 708 given with the <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a> command,
1219 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1220     list, that's why character strings are encapsulated into
1221     apostrophes (')
1222     (optionally returned, dependent to driver parameter)
1223     </p>
1224 schoenebeck 708 </blockquote><p>
1225 senoner 542
1226 schoenebeck 708 </p>
1227 senoner 542 <p>RANGE_MIN -
1228     </p>
1229     <blockquote class="text">
1230     <p>defines lower limit of the allowed value range for this
1231     parameter, can be an integer value as well as a dotted
1232     number, this parameter is often used in conjunction
1233     with RANGE_MAX, but may also appear without
1234     (optionally returned, dependent to driver parameter)
1235     </p>
1236 schoenebeck 708 </blockquote><p>
1237 senoner 542
1238 schoenebeck 708 </p>
1239 senoner 542 <p>RANGE_MAX -
1240     </p>
1241     <blockquote class="text">
1242     <p>defines upper limit of the allowed value range for this
1243     parameter, can be an integer value as well as a dotted
1244     number, this parameter is often used in conjunction with
1245     RANGE_MIN, but may also appear without
1246     (optionally returned, dependent to driver parameter)
1247     </p>
1248 schoenebeck 708 </blockquote><p>
1249 senoner 542
1250 schoenebeck 708 </p>
1251 senoner 542 <p>POSSIBILITIES -
1252     </p>
1253     <blockquote class="text">
1254     <p>comma separated list of possible values for this
1255     parameter, character strings are encapsulated into
1256     apostrophes
1257     (optionally returned, dependent to driver parameter)
1258     </p>
1259 schoenebeck 708 </blockquote><p>
1260 senoner 542
1261 schoenebeck 708 </p>
1262     </blockquote><p>
1263 senoner 542
1264 schoenebeck 708 </p>
1265 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1266     </p>
1267     <p>Examples:
1268     </p>
1269 schoenebeck 708 <p>
1270     </p>
1271 senoner 542 <blockquote class="text">
1272     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1273     </p>
1274     <p>S: "DESCRIPTION: sound card to be used"
1275     </p>
1276     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1277     </p>
1278     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1279     </p>
1280     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1281     </p>
1282     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1283     </p>
1284     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1285     </p>
1286     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1287     </p>
1288     <p>&nbsp;&nbsp;&nbsp;"."
1289     </p>
1290 schoenebeck 708 </blockquote><p>
1291 senoner 542
1292 schoenebeck 708 </p>
1293     <p>
1294     </p>
1295 senoner 542 <blockquote class="text">
1296     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1297     </p>
1298     <p>S: "DESCRIPTION: output sample rate in Hz"
1299     </p>
1300     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1301     </p>
1302     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1303     </p>
1304     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1305     </p>
1306     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1307     </p>
1308     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1309     </p>
1310     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1311     </p>
1312     <p>&nbsp;&nbsp;&nbsp;"."
1313     </p>
1314 schoenebeck 708 </blockquote><p>
1315 senoner 542
1316 schoenebeck 708 </p>
1317     <p>
1318     </p>
1319 senoner 542 <blockquote class="text">
1320     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1321     </p>
1322     <p>S: "DESCRIPTION: output sample rate in Hz"
1323     </p>
1324     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1325     </p>
1326     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1327     </p>
1328     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1329     </p>
1330     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1331     </p>
1332     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1333     </p>
1334     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1335     </p>
1336     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1337     </p>
1338     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1339     </p>
1340     <p>&nbsp;&nbsp;&nbsp;"."
1341     </p>
1342 schoenebeck 708 </blockquote><p>
1343 senoner 542
1344 schoenebeck 708 </p>
1345 schoenebeck 575 <a name="rfc.section.6.2.5"></a><h4><a name="CREATE AUDIO_OUTPUT_DEVICE">6.2.5</a>&nbsp;Creating an audio output device</h4>
1346 senoner 542
1347     <p>Use the following command to create a new audio output device for the desired audio output system:
1348     </p>
1349 schoenebeck 708 <p>
1350     </p>
1351 senoner 542 <blockquote class="text">
1352     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1353     </p>
1354 schoenebeck 708 </blockquote><p>
1355 senoner 542
1356 schoenebeck 708 </p>
1357 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1358 schoenebeck 575 output system as returned by the
1359 schoenebeck 708 <a class="info" href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class="info">Getting all available audio output drivers</span><span>)</span></a>
1360 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1361 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1362     character string values should be encapsulated into apostrophes (').
1363     Note that there might be drivers which require parameter(s) to be
1364     given with this command. Use the previously described commands in
1365     this chapter to get this information.
1366     </p>
1367     <p>Possible Answers:
1368     </p>
1369 schoenebeck 708 <p>
1370     </p>
1371 senoner 542 <blockquote class="text">
1372     <p>"OK[&lt;device-id&gt;]" -
1373     </p>
1374     <blockquote class="text">
1375     <p>in case the device was successfully created, where
1376     &lt;device-id&gt; is the numerical ID of the new device
1377     </p>
1378 schoenebeck 708 </blockquote><p>
1379 senoner 542
1380 schoenebeck 708 </p>
1381 senoner 542 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1382     </p>
1383     <blockquote class="text">
1384     <p>in case the device was created successfully, where
1385     &lt;device-id&gt; is the numerical ID of the new device, but there
1386     are noteworthy issue(s) related (e.g. sound card doesn't
1387     support given hardware parameters and the driver is using
1388     fall-back values), providing an appropriate warning code and
1389     warning message
1390     </p>
1391 schoenebeck 708 </blockquote><p>
1392 senoner 542
1393 schoenebeck 708 </p>
1394 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1395     </p>
1396     <blockquote class="text">
1397     <p>in case it failed, providing an appropriate error code and error message
1398     </p>
1399 schoenebeck 708 </blockquote><p>
1400 senoner 542
1401 schoenebeck 708 </p>
1402     </blockquote><p>
1403 senoner 542
1404 schoenebeck 708 </p>
1405 senoner 542 <p>Examples:
1406     </p>
1407 schoenebeck 708 <p>
1408     </p>
1409 senoner 542 <blockquote class="text">
1410     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1411     </p>
1412     <p>S: "OK[0]"
1413     </p>
1414 schoenebeck 708 </blockquote><p>
1415 senoner 542
1416 schoenebeck 708 </p>
1417     <p>
1418     </p>
1419 senoner 542 <blockquote class="text">
1420     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1421     </p>
1422     <p>S: "OK[1]"
1423     </p>
1424 schoenebeck 708 </blockquote><p>
1425 senoner 542
1426 schoenebeck 708 </p>
1427 schoenebeck 575 <a name="rfc.section.6.2.6"></a><h4><a name="DESTROY AUDIO_OUTPUT_DEVICE">6.2.6</a>&nbsp;Destroying an audio output device</h4>
1428 senoner 542
1429     <p>Use the following command to destroy a created output device:
1430     </p>
1431 schoenebeck 708 <p>
1432     </p>
1433 senoner 542 <blockquote class="text">
1434     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1435     </p>
1436 schoenebeck 708 </blockquote><p>
1437 senoner 542
1438 schoenebeck 708 </p>
1439 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1440     audio output device as given by the
1441 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
1442     or <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a>
1443 senoner 542 command.
1444     </p>
1445     <p>Possible Answers:
1446     </p>
1447 schoenebeck 708 <p>
1448     </p>
1449 senoner 542 <blockquote class="text">
1450     <p>"OK" -
1451     </p>
1452     <blockquote class="text">
1453     <p>in case the device was successfully destroyed
1454     </p>
1455 schoenebeck 708 </blockquote><p>
1456 senoner 542
1457 schoenebeck 708 </p>
1458 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1459     </p>
1460     <blockquote class="text">
1461     <p>in case the device was destroyed successfully, but there are
1462     noteworthy issue(s) related (e.g. an audio over ethernet
1463     driver was unloaded but the other host might not be
1464     informed about this situation), providing an appropriate
1465     warning code and warning message
1466     </p>
1467 schoenebeck 708 </blockquote><p>
1468 senoner 542
1469 schoenebeck 708 </p>
1470 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1471     </p>
1472     <blockquote class="text">
1473     <p>in case it failed, providing an appropriate error code and
1474     error message
1475     </p>
1476 schoenebeck 708 </blockquote><p>
1477 senoner 542
1478 schoenebeck 708 </p>
1479     </blockquote><p>
1480 senoner 542
1481 schoenebeck 708 </p>
1482 senoner 542 <p>Example:
1483     </p>
1484 schoenebeck 708 <p>
1485     </p>
1486 senoner 542 <blockquote class="text">
1487     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1488     </p>
1489     <p>S: "OK"
1490     </p>
1491 schoenebeck 708 </blockquote><p>
1492 senoner 542
1493 schoenebeck 708 </p>
1494 schoenebeck 575 <a name="rfc.section.6.2.7"></a><h4><a name="GET AUDIO_OUTPUT_DEVICES">6.2.7</a>&nbsp;Getting all created audio output device count</h4>
1495 senoner 542
1496     <p>Use the following command to count all created audio output devices:
1497     </p>
1498 schoenebeck 708 <p>
1499     </p>
1500 senoner 542 <blockquote class="text">
1501     <p>GET AUDIO_OUTPUT_DEVICES
1502     </p>
1503 schoenebeck 708 </blockquote><p>
1504 senoner 542
1505 schoenebeck 708 </p>
1506 senoner 542 <p>Possible Answers:
1507     </p>
1508 schoenebeck 708 <p>
1509     </p>
1510 senoner 542 <blockquote class="text">
1511     <p>LinuxSampler will answer by sending the current number of all
1512     audio output devices.
1513     </p>
1514 schoenebeck 708 </blockquote><p>
1515 senoner 542
1516 schoenebeck 708 </p>
1517 senoner 542 <p>Example:
1518     </p>
1519 schoenebeck 708 <p>
1520     </p>
1521 senoner 542 <blockquote class="text">
1522     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1523     </p>
1524     <p>S: "4"
1525     </p>
1526 schoenebeck 708 </blockquote><p>
1527 senoner 542
1528 schoenebeck 708 </p>
1529 schoenebeck 575 <a name="rfc.section.6.2.8"></a><h4><a name="LIST AUDIO_OUTPUT_DEVICES">6.2.8</a>&nbsp;Getting all created audio output device list</h4>
1530 senoner 542
1531     <p>Use the following command to list all created audio output devices:
1532     </p>
1533 schoenebeck 708 <p>
1534     </p>
1535 senoner 542 <blockquote class="text">
1536     <p>LIST AUDIO_OUTPUT_DEVICES
1537     </p>
1538 schoenebeck 708 </blockquote><p>
1539 senoner 542
1540 schoenebeck 708 </p>
1541 senoner 542 <p>Possible Answers:
1542     </p>
1543 schoenebeck 708 <p>
1544     </p>
1545 senoner 542 <blockquote class="text">
1546     <p>LinuxSampler will answer by sending a comma separated list with
1547     the numerical IDs of all audio output devices.
1548     </p>
1549 schoenebeck 708 </blockquote><p>
1550 senoner 542
1551 schoenebeck 708 </p>
1552 senoner 542 <p>Example:
1553     </p>
1554 schoenebeck 708 <p>
1555     </p>
1556 senoner 542 <blockquote class="text">
1557     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1558     </p>
1559     <p>S: "0,1,4,5"
1560     </p>
1561 schoenebeck 708 </blockquote><p>
1562 senoner 542
1563 schoenebeck 708 </p>
1564 schoenebeck 575 <a name="rfc.section.6.2.9"></a><h4><a name="GET AUDIO_OUTPUT_DEVICE INFO">6.2.9</a>&nbsp;Getting current settings of an audio output device</h4>
1565 senoner 542
1566     <p>Use the following command to get current settings of a specific, created audio output device:
1567     </p>
1568 schoenebeck 708 <p>
1569     </p>
1570 senoner 542 <blockquote class="text">
1571     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1572     </p>
1573 schoenebeck 708 </blockquote><p>
1574 senoner 542
1575 schoenebeck 708 </p>
1576 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1577     of the audio output device as e.g. returned by the
1578 schoenebeck 708 <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a> command.
1579 senoner 542 </p>
1580     <p>Possible Answers:
1581     </p>
1582     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1583     Each answer line begins with the information category name
1584     followed by a colon and then a space character &lt;SP&gt; and finally
1585     the info character string to that info category. As some
1586     parameters might allow multiple values, character strings are
1587     encapsulated into apostrophes ('). At the moment the following
1588     information categories are defined (independently of device):
1589     </p>
1590 schoenebeck 708 <p>
1591     </p>
1592 senoner 542 <blockquote class="text">
1593     <p>DRIVER -
1594     </p>
1595     <blockquote class="text">
1596     <p>identifier of the used audio output driver, as also
1597     returned by the
1598 schoenebeck 708 <a class="info" href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class="info">Getting all available audio output drivers</span><span>)</span></a>
1599 senoner 542 command
1600     </p>
1601 schoenebeck 708 </blockquote><p>
1602 senoner 542
1603 schoenebeck 708 </p>
1604 senoner 542 <p>CHANNELS -
1605     </p>
1606     <blockquote class="text">
1607     <p>amount of audio output channels this device currently
1608     offers
1609     </p>
1610 schoenebeck 708 </blockquote><p>
1611 senoner 542
1612 schoenebeck 708 </p>
1613 senoner 542 <p>SAMPLERATE -
1614     </p>
1615     <blockquote class="text">
1616     <p>playback sample rate the device uses
1617     </p>
1618 schoenebeck 708 </blockquote><p>
1619 senoner 542
1620 schoenebeck 708 </p>
1621 senoner 542 <p>ACTIVE -
1622     </p>
1623     <blockquote class="text">
1624     <p>either true or false, if false then the audio device is
1625     inactive and doesn't output any sound, nor do the
1626     sampler channels connected to this audio device render
1627     any audio
1628     </p>
1629 schoenebeck 708 </blockquote><p>
1630 senoner 542
1631 schoenebeck 708 </p>
1632     </blockquote><p>
1633 senoner 542
1634 schoenebeck 708 </p>
1635 senoner 542 <p>The mentioned fields above don't have to be in particular
1636     order. The fields above are only those fields which are
1637     returned by all audio output devices. Every audio output driver
1638     might have its own, additional driver specific parameters (see
1639 schoenebeck 708 <a class="info" href="#GET AUDIO_OUTPUT_DRIVER INFO">Section&nbsp;6.2.3<span> (</span><span class="info">Getting information about a specific audio output driver</span><span>)</span></a>)
1640 senoner 542 which are also returned by this command.
1641     </p>
1642     <p>Example:
1643     </p>
1644 schoenebeck 708 <p>
1645     </p>
1646 senoner 542 <blockquote class="text">
1647     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1648     </p>
1649     <p>S: "DRIVER: ALSA"
1650     </p>
1651     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1652     </p>
1653     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1654     </p>
1655     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1656     </p>
1657     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1658     </p>
1659     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1660     </p>
1661     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1662     </p>
1663     <p>&nbsp;&nbsp;&nbsp;"."
1664     </p>
1665 schoenebeck 708 </blockquote><p>
1666 senoner 542
1667 schoenebeck 708 </p>
1668 schoenebeck 575 <a name="rfc.section.6.2.10"></a><h4><a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10</a>&nbsp;Changing settings of audio output devices</h4>
1669 senoner 542
1670     <p>Use the following command to alter a specific setting of a created audio output device:
1671     </p>
1672 schoenebeck 708 <p>
1673     </p>
1674 senoner 542 <blockquote class="text">
1675     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1676     </p>
1677 schoenebeck 708 </blockquote><p>
1678 senoner 542
1679 schoenebeck 708 </p>
1680 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1681 schoenebeck 575 audio output device as given by the
1682 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
1683     or <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a>
1684 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1685 senoner 542 and &lt;value&gt; by the new value for this parameter.
1686     </p>
1687     <p>Possible Answers:
1688     </p>
1689 schoenebeck 708 <p>
1690     </p>
1691 senoner 542 <blockquote class="text">
1692     <p>"OK" -
1693     </p>
1694     <blockquote class="text">
1695     <p>in case setting was successfully changed
1696     </p>
1697 schoenebeck 708 </blockquote><p>
1698 senoner 542
1699 schoenebeck 708 </p>
1700 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1701     </p>
1702     <blockquote class="text">
1703     <p>in case setting was changed successfully, but there are
1704     noteworthy issue(s) related, providing an appropriate
1705     warning code and warning message
1706     </p>
1707 schoenebeck 708 </blockquote><p>
1708 senoner 542
1709 schoenebeck 708 </p>
1710 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1711     </p>
1712     <blockquote class="text">
1713     <p>in case it failed, providing an appropriate error code and
1714     error message
1715     </p>
1716 schoenebeck 708 </blockquote><p>
1717 senoner 542
1718 schoenebeck 708 </p>
1719     </blockquote><p>
1720 senoner 542
1721 schoenebeck 708 </p>
1722 senoner 542 <p>Example:
1723     </p>
1724 schoenebeck 708 <p>
1725     </p>
1726 senoner 542 <blockquote class="text">
1727     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1728     </p>
1729     <p>S: "OK"
1730     </p>
1731 schoenebeck 708 </blockquote><p>
1732 senoner 542
1733 schoenebeck 708 </p>
1734 schoenebeck 575 <a name="rfc.section.6.2.11"></a><h4><a name="GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11</a>&nbsp;Getting information about an audio channel</h4>
1735 senoner 542
1736     <p>Use the following command to get information about an audio channel:
1737     </p>
1738 schoenebeck 708 <p>
1739     </p>
1740 senoner 542 <blockquote class="text">
1741     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1742     </p>
1743 schoenebeck 708 </blockquote><p>
1744 senoner 542
1745 schoenebeck 708 </p>
1746 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1747 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
1748     or <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a>
1749 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
1750 senoner 542 </p>
1751     <p>Possible Answers:
1752     </p>
1753 schoenebeck 708 <p>
1754     </p>
1755 senoner 542 <blockquote class="text">
1756     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1757     Each answer line begins with the information category name
1758     followed by a colon and then a space character &lt;SP&gt; and finally
1759     the info character string to that info category. At the moment
1760     the following information categories are defined:
1761     </p>
1762 schoenebeck 708 <p>
1763     </p>
1764 senoner 542 <blockquote class="text">
1765     <p>NAME -
1766     </p>
1767     <blockquote class="text">
1768     <p>arbitrary character string naming the channel, which
1769     doesn't have to be unique (always returned by all audio channels)
1770     </p>
1771 schoenebeck 708 </blockquote><p>
1772 senoner 542
1773 schoenebeck 708 </p>
1774 senoner 542 <p>IS_MIX_CHANNEL -
1775     </p>
1776     <blockquote class="text">
1777     <p>either true or false, a mix-channel is not a real,
1778     independent audio channel, but a virtual channel which
1779     is mixed to another real channel, this mechanism is
1780     needed for sampler engines which need more audio
1781     channels than the used audio system might be able to offer
1782     (always returned by all audio channels)
1783     </p>
1784 schoenebeck 708 </blockquote><p>
1785 senoner 542
1786 schoenebeck 708 </p>
1787 senoner 542 <p>MIX_CHANNEL_DESTINATION -
1788     </p>
1789     <blockquote class="text">
1790     <p>numerical ID (positive integer including 0)
1791     which reflects the real audio channel (of the same audio
1792     output device) this mix channel refers to, means where
1793     the audio signal actually will be routed / added to
1794     (only returned in case the audio channel is mix channel)
1795     </p>
1796 schoenebeck 708 </blockquote><p>
1797 senoner 542
1798 schoenebeck 708 </p>
1799     </blockquote><p>
1800 senoner 542
1801 schoenebeck 708 </p>
1802     </blockquote><p>
1803 senoner 542
1804 schoenebeck 708 </p>
1805 senoner 542 <p>The mentioned fields above don't have to be in particular
1806     order. The fields above are only those fields which are
1807     generally returned for the described cases by all audio
1808     channels regardless of the audio driver. Every audio channel
1809     might have its own, additional driver and channel specific
1810     parameters.
1811     </p>
1812     <p>Examples:
1813     </p>
1814 schoenebeck 708 <p>
1815     </p>
1816 senoner 542 <blockquote class="text">
1817     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
1818     </p>
1819     <p>S: "NAME: studio monitor left"
1820     </p>
1821     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
1822     </p>
1823     <p>&nbsp;&nbsp;&nbsp;"."
1824     </p>
1825 schoenebeck 708 </blockquote><p>
1826 senoner 542
1827 schoenebeck 708 </p>
1828     <p>
1829     </p>
1830 senoner 542 <blockquote class="text">
1831     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
1832     </p>
1833     <p>S: "NAME: studio monitor right"
1834     </p>
1835     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
1836     </p>
1837     <p>&nbsp;&nbsp;&nbsp;"."
1838     </p>
1839 schoenebeck 708 </blockquote><p>
1840 senoner 542
1841 schoenebeck 708 </p>
1842     <p>
1843     </p>
1844 senoner 542 <blockquote class="text">
1845     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
1846     </p>
1847     <p>S: "NAME: studio monitor left"
1848     </p>
1849     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
1850     </p>
1851     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
1852     </p>
1853     <p>&nbsp;&nbsp;&nbsp;"."
1854     </p>
1855 schoenebeck 708 </blockquote><p>
1856 senoner 542
1857 schoenebeck 708 </p>
1858     <p>
1859     </p>
1860 senoner 542 <blockquote class="text">
1861     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
1862     </p>
1863     <p>S: "NAME: 'ardour (left)'"
1864     </p>
1865     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
1866     </p>
1867     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
1868     </p>
1869     <p>&nbsp;&nbsp;&nbsp;"."
1870     </p>
1871 schoenebeck 708 </blockquote><p>
1872 senoner 542
1873 schoenebeck 708 </p>
1874 schoenebeck 575 <a name="rfc.section.6.2.12"></a><h4><a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12</a>&nbsp;Getting information about specific audio channel parameter</h4>
1875 senoner 542
1876     <p>Use the following command to get detailed information about specific audio channel parameter:
1877     </p>
1878 schoenebeck 708 <p>
1879     </p>
1880 senoner 542 <blockquote class="text">
1881     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
1882     </p>
1883 schoenebeck 708 </blockquote><p>
1884 senoner 542
1885 schoenebeck 708 </p>
1886 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
1887 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
1888     or <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a>
1889 senoner 542 command, &lt;chan&gt; the audio channel number
1890     and &lt;param&gt; a specific channel parameter name for which information should
1891 schoenebeck 708 be obtained (as returned by the <a class="info" href="#GET AUDIO_OUTPUT_CHANNEL INFO">"GET AUDIO_OUTPUT_CHANNEL INFO"<span> (</span><span class="info">Getting information about an audio channel</span><span>)</span></a> command).
1892 senoner 542 </p>
1893     <p>Possible Answers:
1894     </p>
1895 schoenebeck 708 <p>
1896     </p>
1897 senoner 542 <blockquote class="text">
1898     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1899     Each answer line begins with the information category name
1900     followed by a colon and then a space character &lt;SP&gt; and finally
1901     the info character string to that info category. There are
1902     information which is always returned, independently of the
1903     given channel parameter and there is optional information
1904     which is only shown dependently to the given audio channel. At
1905     the moment the following information categories are defined:
1906     </p>
1907 schoenebeck 708 <p>
1908     </p>
1909 senoner 542 <blockquote class="text">
1910     <p>TYPE -
1911     </p>
1912     <blockquote class="text">
1913     <p>either "BOOL" for boolean value(s) or "INT" for integer
1914     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1915     character string(s)
1916     (always returned)
1917     </p>
1918 schoenebeck 708 </blockquote><p>
1919 senoner 542
1920 schoenebeck 708 </p>
1921 senoner 542 <p>DESCRIPTION -
1922     </p>
1923     <blockquote class="text">
1924     <p>arbitrary text describing the purpose of the parameter (always returned)
1925     </p>
1926 schoenebeck 708 </blockquote><p>
1927 senoner 542
1928 schoenebeck 708 </p>
1929 senoner 542 <p>FIX -
1930     </p>
1931     <blockquote class="text">
1932     <p>either true or false, if true then this parameter is
1933     read only, thus cannot be altered
1934     (always returned)
1935     </p>
1936 schoenebeck 708 </blockquote><p>
1937 senoner 542
1938 schoenebeck 708 </p>
1939 senoner 542 <p>MULTIPLICITY -
1940     </p>
1941     <blockquote class="text">
1942     <p>either true or false, defines if this parameter allows
1943     only one value or a list of values, where true means
1944     multiple values and false only a single value allowed
1945     (always returned)
1946     </p>
1947 schoenebeck 708 </blockquote><p>
1948 senoner 542
1949 schoenebeck 708 </p>
1950 senoner 542 <p>RANGE_MIN -
1951     </p>
1952     <blockquote class="text">
1953     <p>defines lower limit of the allowed value range for this
1954     parameter, can be an integer value as well as a dotted
1955     number, usually used in conjunction with 'RANGE_MAX',
1956     but may also appear without
1957     (optionally returned, dependent to driver and channel
1958     parameter)
1959     </p>
1960 schoenebeck 708 </blockquote><p>
1961 senoner 542
1962 schoenebeck 708 </p>
1963 senoner 542 <p>RANGE_MAX -
1964     </p>
1965     <blockquote class="text">
1966     <p>defines upper limit of the allowed value range for this
1967     parameter, can be an integer value as well as a dotted
1968     number, usually used in conjunction with 'RANGE_MIN',
1969     but may also appear without
1970     (optionally returned, dependent to driver and channel
1971     parameter)
1972     </p>
1973 schoenebeck 708 </blockquote><p>
1974 senoner 542
1975 schoenebeck 708 </p>
1976 senoner 542 <p>POSSIBILITIES -
1977     </p>
1978     <blockquote class="text">
1979     <p>comma separated list of possible values for this
1980     parameter, character strings are encapsulated into
1981     apostrophes
1982     (optionally returned, dependent to driver and channel
1983     parameter)
1984     </p>
1985 schoenebeck 708 </blockquote><p>
1986 senoner 542
1987 schoenebeck 708 </p>
1988     </blockquote><p>
1989 senoner 542
1990 schoenebeck 708 </p>
1991 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1992     </p>
1993 schoenebeck 708 </blockquote><p>
1994 senoner 542
1995 schoenebeck 708 </p>
1996 senoner 542 <p>Example:
1997     </p>
1998 schoenebeck 708 <p>
1999     </p>
2000 senoner 542 <blockquote class="text">
2001     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2002     </p>
2003     <p>S: "DESCRIPTION: bindings to other JACK clients"
2004     </p>
2005     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2006     </p>
2007     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2008     </p>
2009     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2010     </p>
2011     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2012     </p>
2013     <p>&nbsp;&nbsp;&nbsp;"."
2014     </p>
2015 schoenebeck 708 </blockquote><p>
2016 senoner 542
2017 schoenebeck 708 </p>
2018 schoenebeck 575 <a name="rfc.section.6.2.13"></a><h4><a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13</a>&nbsp;Changing settings of audio output channels</h4>
2019 senoner 542
2020     <p>Use the following command to alter a specific setting of an audio output channel:
2021     </p>
2022 schoenebeck 708 <p>
2023     </p>
2024 senoner 542 <blockquote class="text">
2025     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2026     </p>
2027 schoenebeck 708 </blockquote><p>
2028 senoner 542
2029 schoenebeck 708 </p>
2030 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2031 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
2032     or <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a>
2033 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2034 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2035     </p>
2036     <p>Possible Answers:
2037     </p>
2038 schoenebeck 708 <p>
2039     </p>
2040 senoner 542 <blockquote class="text">
2041     <p>"OK" -
2042     </p>
2043     <blockquote class="text">
2044     <p>in case setting was successfully changed
2045     </p>
2046 schoenebeck 708 </blockquote><p>
2047 senoner 542
2048 schoenebeck 708 </p>
2049 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2050     </p>
2051     <blockquote class="text">
2052     <p>in case setting was changed successfully, but there are
2053     noteworthy issue(s) related, providing an appropriate
2054     warning code and warning message
2055     </p>
2056 schoenebeck 708 </blockquote><p>
2057 senoner 542
2058 schoenebeck 708 </p>
2059 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2060     </p>
2061     <blockquote class="text">
2062     <p>in case it failed, providing an appropriate error code and
2063     error message
2064     </p>
2065 schoenebeck 708 </blockquote><p>
2066 senoner 542
2067 schoenebeck 708 </p>
2068     </blockquote><p>
2069 senoner 542
2070 schoenebeck 708 </p>
2071 senoner 542 <p>Example:
2072     </p>
2073 schoenebeck 708 <p>
2074     </p>
2075 senoner 542 <blockquote class="text">
2076     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2077     </p>
2078     <p>S: "OK"
2079     </p>
2080 schoenebeck 708 </blockquote><p>
2081 senoner 542
2082 schoenebeck 708 </p>
2083     <p>
2084     </p>
2085 senoner 542 <blockquote class="text">
2086     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2087     </p>
2088     <p>S: "OK"
2089     </p>
2090 schoenebeck 708 </blockquote><p>
2091 senoner 542
2092 schoenebeck 708 </p>
2093 schoenebeck 575 <a name="rfc.section.6.3"></a><h4><a name="anchor10">6.3</a>&nbsp;Configuring MIDI input drivers</h4>
2094 senoner 542
2095     <p>Instances of drivers in LinuxSampler are called devices. You can use
2096     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2097     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2098     channel. For particular MIDI input systems it's also possible to create
2099     several devices of the same MIDI input type. This chapter describes all
2100     commands to configure LinuxSampler's MIDI input devices and their parameters.
2101     </p>
2102     <p>Instead of defining commands and parameters for each driver individually,
2103     all possible parameters, their meanings and possible values have to be obtained
2104     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2105     front-ends can be written independently of what drivers are currently implemented
2106     and what parameters these drivers are actually offering. This means front-ends can
2107     even handle drivers which are implemented somewhere in future without modifying
2108     the front-end at all.
2109     </p>
2110     <p>Commands for configuring MIDI input devices are pretty much the same as the
2111     commands for configuring audio output drivers, already described in the last
2112     chapter.
2113     </p>
2114     <p>Note: examples in this chapter showing particular parameters of drivers are
2115     not meant as specification of the drivers' parameters. Driver implementations in
2116     LinuxSampler might have complete different parameter names and meanings than shown
2117     in these examples or might change in future, so these examples are only meant for
2118     showing how to retrieve what parameters drivers are offering, how to retrieve their
2119     possible values, etc.
2120     </p>
2121 schoenebeck 575 <a name="rfc.section.6.3.1"></a><h4><a name="GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1</a>&nbsp;Getting amount of available MIDI input drivers</h4>
2122 senoner 542
2123     <p>Use the following command to get the number of
2124     MIDI input drivers currently available for the
2125     LinuxSampler instance:
2126     </p>
2127 schoenebeck 708 <p>
2128     </p>
2129 senoner 542 <blockquote class="text">
2130     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2131     </p>
2132 schoenebeck 708 </blockquote><p>
2133 senoner 542
2134 schoenebeck 708 </p>
2135 senoner 542 <p>Possible Answers:
2136     </p>
2137 schoenebeck 708 <p>
2138     </p>
2139 senoner 542 <blockquote class="text">
2140     <p>LinuxSampler will answer by sending the
2141     number of available MIDI input drivers.
2142     </p>
2143 schoenebeck 708 </blockquote><p>
2144 senoner 542
2145 schoenebeck 708 </p>
2146 senoner 542 <p>Example:
2147     </p>
2148 schoenebeck 708 <p>
2149     </p>
2150 senoner 542 <blockquote class="text">
2151     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2152     </p>
2153     <p>S: "2"
2154     </p>
2155 schoenebeck 708 </blockquote><p>
2156 senoner 542
2157 schoenebeck 708 </p>
2158 schoenebeck 575 <a name="rfc.section.6.3.2"></a><h4><a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2</a>&nbsp;Getting all available MIDI input drivers</h4>
2159 senoner 542
2160     <p>Use the following command to list all MIDI input drivers currently available
2161     for the LinuxSampler instance:
2162     </p>
2163 schoenebeck 708 <p>
2164     </p>
2165 senoner 542 <blockquote class="text">
2166     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2167     </p>
2168 schoenebeck 708 </blockquote><p>
2169 senoner 542
2170 schoenebeck 708 </p>
2171 senoner 542 <p>Possible Answers:
2172     </p>
2173 schoenebeck 708 <p>
2174     </p>
2175 senoner 542 <blockquote class="text">
2176     <p>LinuxSampler will answer by sending comma separated character
2177     strings, each symbolizing a MIDI input driver.
2178     </p>
2179 schoenebeck 708 </blockquote><p>
2180 senoner 542
2181 schoenebeck 708 </p>
2182 senoner 542 <p>Example:
2183     </p>
2184 schoenebeck 708 <p>
2185     </p>
2186 senoner 542 <blockquote class="text">
2187     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2188     </p>
2189     <p>S: "ALSA,JACK"
2190     </p>
2191 schoenebeck 708 </blockquote><p>
2192 senoner 542
2193 schoenebeck 708 </p>
2194 schoenebeck 575 <a name="rfc.section.6.3.3"></a><h4><a name="GET MIDI_INPUT_DRIVER INFO">6.3.3</a>&nbsp;Getting information about a specific MIDI input driver</h4>
2195 senoner 542
2196     <p>Use the following command to get detailed information about a specific MIDI input driver:
2197     </p>
2198 schoenebeck 708 <p>
2199     </p>
2200 senoner 542 <blockquote class="text">
2201     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2202     </p>
2203 schoenebeck 708 </blockquote><p>
2204 senoner 542
2205 schoenebeck 708 </p>
2206 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2207 schoenebeck 708 by the <a class="info" href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class="info">Getting all available MIDI input drivers</span><span>)</span></a> command.
2208 senoner 542 </p>
2209     <p>Possible Answers:
2210     </p>
2211 schoenebeck 708 <p>
2212     </p>
2213 senoner 542 <blockquote class="text">
2214     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2215     Each answer line begins with the information category name
2216     followed by a colon and then a space character &lt;SP&gt; and finally
2217     the info character string to that info category. At the moment
2218     the following information categories are defined:
2219     </p>
2220 schoenebeck 708 <p>
2221     </p>
2222 senoner 542 <blockquote class="text">
2223     <p>DESCRIPTION -
2224     </p>
2225     <blockquote class="text">
2226     <p>arbitrary description text about the MIDI input driver
2227     </p>
2228 schoenebeck 708 </blockquote><p>
2229 senoner 542
2230 schoenebeck 708 </p>
2231 senoner 542 <p>VERSION -
2232     </p>
2233     <blockquote class="text">
2234     <p>arbitrary character string regarding the driver's version
2235     </p>
2236 schoenebeck 708 </blockquote><p>
2237 senoner 542
2238 schoenebeck 708 </p>
2239 senoner 542 <p>PARAMETERS -
2240     </p>
2241     <blockquote class="text">
2242     <p>comma separated list of all parameters available for the given MIDI input driver
2243     </p>
2244 schoenebeck 708 </blockquote><p>
2245 senoner 542
2246 schoenebeck 708 </p>
2247     </blockquote><p>
2248 senoner 542
2249 schoenebeck 708 </p>
2250 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2251     </p>
2252 schoenebeck 708 </blockquote><p>
2253 senoner 542
2254 schoenebeck 708 </p>
2255 senoner 542 <p>Example:
2256     </p>
2257 schoenebeck 708 <p>
2258     </p>
2259 senoner 542 <blockquote class="text">
2260     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2261     </p>
2262     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2263     </p>
2264     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2265     </p>
2266     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2267     </p>
2268     <p>&nbsp;&nbsp;&nbsp;"."
2269     </p>
2270 schoenebeck 708 </blockquote><p>
2271 senoner 542
2272 schoenebeck 708 </p>
2273 schoenebeck 575 <a name="rfc.section.6.3.4"></a><h4><a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4</a>&nbsp;Getting information about specific MIDI input driver parameter</h4>
2274 senoner 542
2275     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2276     </p>
2277 schoenebeck 708 <p>
2278     </p>
2279 senoner 542 <blockquote class="text">
2280     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2281     </p>
2282 schoenebeck 708 </blockquote><p>
2283 senoner 542
2284 schoenebeck 708 </p>
2285 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2286 schoenebeck 708 by the <a class="info" href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class="info">Getting all available MIDI input drivers</span><span>)</span></a> command, &lt;param&gt; a specific
2287 senoner 542 parameter name for which information should be obtained (as returned by the
2288 schoenebeck 708 <a class="info" href="#GET MIDI_INPUT_DRIVER INFO">"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class="info">Getting information about a specific MIDI input driver</span><span>)</span></a> command) and &lt;deplist&gt; is an optional list
2289 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2290     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2291     where character string values are encapsulated into apostrophes ('). Arguments
2292     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2293     will be ignored, means the front-end application can simply put all parameters
2294     in &lt;deplist&gt; with the values selected by the user.
2295     </p>
2296     <p>Possible Answers:
2297     </p>
2298     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2299     Each answer line begins with the information category name
2300     followed by a colon and then a space character &lt;SP> and finally
2301     the info character string to that info category. There is
2302     information which is always returned, independent of the
2303     given driver parameter and there is optional information
2304     which is only shown dependent to given driver parameter. At
2305     the moment the following information categories are defined:
2306     </p>
2307 schoenebeck 708 <p>
2308     </p>
2309 senoner 542 <blockquote class="text">
2310     <p>TYPE -
2311     </p>
2312     <blockquote class="text">
2313     <p>either "BOOL" for boolean value(s) or "INT" for integer
2314     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2315     character string(s)
2316     (always returned, no matter which driver parameter)
2317     </p>
2318 schoenebeck 708 </blockquote><p>
2319 senoner 542
2320 schoenebeck 708 </p>
2321 senoner 542 <p>DESCRIPTION -
2322     </p>
2323     <blockquote class="text">
2324     <p>arbitrary text describing the purpose of the parameter
2325     (always returned, no matter which driver parameter)
2326     </p>
2327 schoenebeck 708 </blockquote><p>
2328 senoner 542
2329 schoenebeck 708 </p>
2330 senoner 542 <p>MANDATORY -
2331     </p>
2332     <blockquote class="text">
2333     <p>either true or false, defines if this parameter must be
2334     given when the device is to be created with the
2335 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a> command
2336 senoner 542 (always returned, no matter which driver parameter)
2337     </p>
2338 schoenebeck 708 </blockquote><p>
2339 senoner 542
2340 schoenebeck 708 </p>
2341 senoner 542 <p>FIX -
2342     </p>
2343     <blockquote class="text">
2344     <p>either true or false, if false then this parameter can
2345     be changed at any time, once the device is created by
2346 schoenebeck 708 the <a class="info" href="#CREATE MIDI_INPUT_DEVICE">'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a> command
2347 senoner 542 (always returned, no matter which driver parameter)
2348     </p>
2349 schoenebeck 708 </blockquote><p>
2350 senoner 542
2351 schoenebeck 708 </p>
2352 senoner 542 <p>MULTIPLICITY -
2353     </p>
2354     <blockquote class="text">
2355     <p>either true or false, defines if this parameter allows
2356     only one value or a list of values, where true means
2357     multiple values and false only a single value allowed
2358     (always returned, no matter which driver parameter)
2359     </p>
2360 schoenebeck 708 </blockquote><p>
2361 senoner 542
2362 schoenebeck 708 </p>
2363 senoner 542 <p>DEPENDS -
2364     </p>
2365     <blockquote class="text">
2366 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2367 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2368     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2369     listed parameters, for example assuming that an audio
2370     driver (like the ALSA driver) offers parameters 'card'
2371     and 'samplerate' then parameter 'samplerate' would
2372     depend on 'card' because the possible values for
2373     'samplerate' depends on the sound card which can be
2374     chosen by the 'card' parameter
2375     (optionally returned, dependent to driver parameter)
2376     </p>
2377 schoenebeck 708 </blockquote><p>
2378 senoner 542
2379 schoenebeck 708 </p>
2380 senoner 542 <p>DEFAULT -
2381     </p>
2382     <blockquote class="text">
2383     <p>reflects the default value for this parameter which is
2384     used when the device is created and not explicitly
2385 schoenebeck 708 given with the <a class="info" href="#CREATE MIDI_INPUT_DEVICE">'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a> command,
2386 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2387     list, that's why character strings are encapsulated into
2388     apostrophes (')
2389     (optionally returned, dependent to driver parameter)
2390     </p>
2391 schoenebeck 708 </blockquote><p>
2392 senoner 542
2393 schoenebeck 708 </p>
2394 senoner 542 <p>RANGE_MIN -
2395     </p>
2396     <blockquote class="text">
2397     <p>defines lower limit of the allowed value range for this
2398     parameter, can be an integer value as well as a dotted
2399     number, this parameter is often used in conjunction
2400     with RANGE_MAX, but may also appear without
2401     (optionally returned, dependent to driver parameter)
2402     </p>
2403 schoenebeck 708 </blockquote><p>
2404 senoner 542
2405 schoenebeck 708 </p>
2406 senoner 542 <p>RANGE_MAX -
2407     </p>
2408     <blockquote class="text">
2409     <p>defines upper limit of the allowed value range for this
2410     parameter, can be an integer value as well as a dotted
2411     number, this parameter is often used in conjunction with
2412     RANGE_MIN, but may also appear without
2413     (optionally returned, dependent to driver parameter)
2414     </p>
2415 schoenebeck 708 </blockquote><p>
2416 senoner 542
2417 schoenebeck 708 </p>
2418 senoner 542 <p>POSSIBILITIES -
2419     </p>
2420     <blockquote class="text">
2421     <p>comma separated list of possible values for this
2422     parameter, character strings are encapsulated into
2423     apostrophes
2424     (optionally returned, dependent to driver parameter)
2425     </p>
2426 schoenebeck 708 </blockquote><p>
2427 senoner 542
2428 schoenebeck 708 </p>
2429     </blockquote><p>
2430 senoner 542
2431 schoenebeck 708 </p>
2432 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2433     </p>
2434     <p>Example:
2435     </p>
2436 schoenebeck 708 <p>
2437     </p>
2438 senoner 542 <blockquote class="text">
2439     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2440     </p>
2441     <p>S: "DESCRIPTION: Whether device is enabled"
2442     </p>
2443     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2444     </p>
2445     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2446     </p>
2447     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2448     </p>
2449     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2450     </p>
2451     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2452     </p>
2453     <p>&nbsp;&nbsp;&nbsp;"."
2454     </p>
2455 schoenebeck 708 </blockquote><p>
2456 senoner 542
2457 schoenebeck 708 </p>
2458 schoenebeck 575 <a name="rfc.section.6.3.5"></a><h4><a name="CREATE MIDI_INPUT_DEVICE">6.3.5</a>&nbsp;Creating a MIDI input device</h4>
2459 senoner 542
2460     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2461     </p>
2462 schoenebeck 708 <p>
2463     </p>
2464 senoner 542 <blockquote class="text">
2465     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2466     </p>
2467 schoenebeck 708 </blockquote><p>
2468 senoner 542
2469 schoenebeck 708 </p>
2470 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2471 schoenebeck 708 by the <a class="info" href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class="info">Getting all available MIDI input drivers</span><span>)</span></a> command and &lt;param-list&gt; by an
2472 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2473     character string values should be encapsulated into apostrophes (').
2474     Note that there might be drivers which require parameter(s) to be
2475     given with this command. Use the previously described commands in
2476     this chapter to get that information.
2477     </p>
2478     <p>Possible Answers:
2479     </p>
2480 schoenebeck 708 <p>
2481     </p>
2482 senoner 542 <blockquote class="text">
2483     <p>"OK[&lt;device-id&gt;]" -
2484     </p>
2485     <blockquote class="text">
2486     <p>in case the device was successfully created, where
2487     &lt;device-id&gt; is the numerical ID of the new device
2488     </p>
2489 schoenebeck 708 </blockquote><p>
2490 senoner 542
2491 schoenebeck 708 </p>
2492 senoner 542 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2493     </p>
2494     <blockquote class="text">
2495     <p>in case the driver was loaded successfully, where
2496     &lt;device-id&gt; is the numerical ID of the new device, but
2497     there are noteworthy issue(s) related, providing an
2498     appropriate warning code and warning message
2499     </p>
2500 schoenebeck 708 </blockquote><p>
2501 senoner 542
2502 schoenebeck 708 </p>
2503 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2504     </p>
2505     <blockquote class="text">
2506     <p>in case it failed, providing an appropriate error code and error message
2507     </p>
2508 schoenebeck 708 </blockquote><p>
2509 senoner 542
2510 schoenebeck 708 </p>
2511     </blockquote><p>
2512 senoner 542
2513 schoenebeck 708 </p>
2514 senoner 542 <p>Example:
2515     </p>
2516 schoenebeck 708 <p>
2517     </p>
2518 senoner 542 <blockquote class="text">
2519     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2520     </p>
2521     <p>S: "OK[0]"
2522     </p>
2523 schoenebeck 708 </blockquote><p>
2524 senoner 542
2525 schoenebeck 708 </p>
2526 schoenebeck 575 <a name="rfc.section.6.3.6"></a><h4><a name="DESTROY MIDI_INPUT_DEVICE">6.3.6</a>&nbsp;Destroying a MIDI input device</h4>
2527 senoner 542
2528     <p>Use the following command to destroy a created MIDI input device:
2529     </p>
2530 schoenebeck 708 <p>
2531     </p>
2532 senoner 542 <blockquote class="text">
2533     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2534     </p>
2535 schoenebeck 708 </blockquote><p>
2536 senoner 542
2537 schoenebeck 708 </p>
2538 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2539 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
2540     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a>
2541 schoenebeck 575 command.
2542 senoner 542 </p>
2543     <p>Possible Answers:
2544     </p>
2545 schoenebeck 708 <p>
2546     </p>
2547 senoner 542 <blockquote class="text">
2548     <p>"OK" -
2549     </p>
2550     <blockquote class="text">
2551     <p>in case the device was successfully destroyed
2552     </p>
2553 schoenebeck 708 </blockquote><p>
2554 senoner 542
2555 schoenebeck 708 </p>
2556 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2557     </p>
2558     <blockquote class="text">
2559     <p>in case the device was destroyed, but there are noteworthy
2560     issue(s) related, providing an appropriate warning code and
2561     warning message
2562     </p>
2563 schoenebeck 708 </blockquote><p>
2564 senoner 542
2565 schoenebeck 708 </p>
2566 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2567     </p>
2568     <blockquote class="text">
2569     <p>in case it failed, providing an appropriate error code and error message
2570     </p>
2571 schoenebeck 708 </blockquote><p>
2572 senoner 542
2573 schoenebeck 708 </p>
2574     </blockquote><p>
2575 senoner 542
2576 schoenebeck 708 </p>
2577 senoner 542 <p>Example:
2578     </p>
2579 schoenebeck 708 <p>
2580     </p>
2581 senoner 542 <blockquote class="text">
2582     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2583     </p>
2584     <p>S: "OK"
2585     </p>
2586 schoenebeck 708 </blockquote><p>
2587 senoner 542
2588 schoenebeck 708 </p>
2589 schoenebeck 575 <a name="rfc.section.6.3.7"></a><h4><a name="GET MIDI_INPUT_DEVICES">6.3.7</a>&nbsp;Getting all created MIDI input device count</h4>
2590 senoner 542
2591     <p>Use the following command to count all created MIDI input devices:
2592     </p>
2593 schoenebeck 708 <p>
2594     </p>
2595 senoner 542 <blockquote class="text">
2596     <p>GET MIDI_INPUT_DEVICES
2597     </p>
2598 schoenebeck 708 </blockquote><p>
2599 senoner 542
2600 schoenebeck 708 </p>
2601 senoner 542 <p>Possible Answers:
2602     </p>
2603 schoenebeck 708 <p>
2604     </p>
2605 senoner 542 <blockquote class="text">
2606     <p>LinuxSampler will answer by sending the current number of all
2607     MIDI input devices.
2608     </p>
2609 schoenebeck 708 </blockquote><p>
2610 senoner 542
2611 schoenebeck 708 </p>
2612 senoner 542 <p>Example:
2613     </p>
2614 schoenebeck 708 <p>
2615     </p>
2616 senoner 542 <blockquote class="text">
2617     <p>C: "GET MIDI_INPUT_DEVICES"
2618     </p>
2619     <p>S: "3"
2620     </p>
2621 schoenebeck 708 </blockquote><p>
2622 senoner 542
2623 schoenebeck 708 </p>
2624 schoenebeck 575 <a name="rfc.section.6.3.8"></a><h4><a name="LIST MIDI_INPUT_DEVICES">6.3.8</a>&nbsp;Getting all created MIDI input device list</h4>
2625 senoner 542
2626     <p>Use the following command to list all created MIDI input devices:
2627     </p>
2628 schoenebeck 708 <p>
2629     </p>
2630 senoner 542 <blockquote class="text">
2631     <p>LIST MIDI_INPUT_DEVICES
2632     </p>
2633 schoenebeck 708 </blockquote><p>
2634 senoner 542
2635 schoenebeck 708 </p>
2636 senoner 542 <p>Possible Answers:
2637     </p>
2638 schoenebeck 708 <p>
2639     </p>
2640 senoner 542 <blockquote class="text">
2641     <p>LinuxSampler will answer by sending a comma separated list
2642     with the numerical Ids of all created MIDI input devices.
2643     </p>
2644 schoenebeck 708 </blockquote><p>
2645 senoner 542
2646 schoenebeck 708 </p>
2647 senoner 542 <p>Examples:
2648     </p>
2649 schoenebeck 708 <p>
2650     </p>
2651 senoner 542 <blockquote class="text">
2652     <p>C: "LIST MIDI_INPUT_DEVICES"
2653     </p>
2654     <p>S: "0,1,2"
2655     </p>
2656 schoenebeck 708 </blockquote><p>
2657 senoner 542
2658 schoenebeck 708 </p>
2659     <p>
2660     </p>
2661 senoner 542 <blockquote class="text">
2662     <p>C: "LIST MIDI_INPUT_DEVICES"
2663     </p>
2664     <p>S: "1,3"
2665     </p>
2666 schoenebeck 708 </blockquote><p>
2667 senoner 542
2668 schoenebeck 708 </p>
2669 schoenebeck 575 <a name="rfc.section.6.3.9"></a><h4><a name="GET MIDI_INPUT_DEVICE INFO">6.3.9</a>&nbsp;Getting current settings of a MIDI input device</h4>
2670 senoner 542
2671     <p>Use the following command to get current settings of a specific, created MIDI input device:
2672     </p>
2673 schoenebeck 708 <p>
2674     </p>
2675 senoner 542 <blockquote class="text">
2676     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2677     </p>
2678 schoenebeck 708 </blockquote><p>
2679 senoner 542
2680 schoenebeck 708 </p>
2681 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2682 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
2683     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a>
2684 schoenebeck 575 command.
2685 senoner 542 </p>
2686     <p>Possible Answers:
2687     </p>
2688 schoenebeck 708 <p>
2689     </p>
2690 senoner 542 <blockquote class="text">
2691     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2692     Each answer line begins with the information category name
2693     followed by a colon and then a space character &lt;SP&gt; and finally
2694     the info character string to that info category. As some
2695     parameters might allow multiple values, character strings are
2696     encapsulated into apostrophes ('). At the moment the following
2697     information categories are defined (independent of driver):
2698     </p>
2699 schoenebeck 708 <p>
2700     </p>
2701 senoner 542 <blockquote class="text">
2702     <p>DRIVER -
2703     </p>
2704     <blockquote class="text">
2705     <p>identifier of the used MIDI input driver, as e.g.
2706 schoenebeck 708 returned by the <a class="info" href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class="info">Getting all available MIDI input drivers</span><span>)</span></a>
2707 senoner 542 command
2708     </p>
2709 schoenebeck 708 </blockquote><p>
2710 senoner 542
2711 schoenebeck 708 </p>
2712     </blockquote><p>
2713     </p>
2714 senoner 542 <blockquote class="text">
2715 schoenebeck 708 <p>ACTIVE -
2716 senoner 542 </p>
2717     <blockquote class="text">
2718     <p>either true or false, if false then the MIDI device is
2719     inactive and doesn't listen to any incoming MIDI events
2720     and thus doesn't forward them to connected sampler
2721     channels
2722     </p>
2723 schoenebeck 708 </blockquote><p>
2724 senoner 542
2725 schoenebeck 708 </p>
2726     </blockquote><p>
2727 senoner 542
2728 schoenebeck 708 </p>
2729     </blockquote><p>
2730 senoner 542
2731 schoenebeck 708 </p>
2732 senoner 542 <p>The mentioned fields above don't have to be in particular
2733     order. The fields above are only those fields which are
2734     returned by all MIDI input devices. Every MIDI input driver
2735     might have its own, additional driver specific parameters (see
2736 schoenebeck 708 <a class="info" href="#GET MIDI_INPUT_DRIVER INFO">"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class="info">Getting information about a specific MIDI input driver</span><span>)</span></a> command) which are also returned
2737 senoner 542 by this command.
2738     </p>
2739     <p>Example:
2740     </p>
2741 schoenebeck 708 <p>
2742     </p>
2743 senoner 542 <blockquote class="text">
2744     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
2745     </p>
2746     <p>S: "DRIVER: ALSA"
2747     </p>
2748     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
2749     </p>
2750     <p>&nbsp;&nbsp;&nbsp;"."
2751     </p>
2752 schoenebeck 708 </blockquote><p>
2753 senoner 542
2754 schoenebeck 708 </p>
2755 schoenebeck 575 <a name="rfc.section.6.3.10"></a><h4><a name="SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10</a>&nbsp;Changing settings of MIDI input devices</h4>
2756 senoner 542
2757     <p>Use the following command to alter a specific setting of a created MIDI input device:
2758     </p>
2759 schoenebeck 708 <p>
2760     </p>
2761 senoner 542 <blockquote class="text">
2762     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
2763     </p>
2764 schoenebeck 708 </blockquote><p>
2765 senoner 542
2766 schoenebeck 708 </p>
2767 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
2768 schoenebeck 575 MIDI input device as returned by the
2769 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
2770     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a>
2771 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
2772 senoner 542 &lt;value&gt; by the new value for this parameter.
2773     </p>
2774     <p>Possible Answers:
2775     </p>
2776 schoenebeck 708 <p>
2777     </p>
2778 senoner 542 <blockquote class="text">
2779     <p>"OK" -
2780     </p>
2781     <blockquote class="text">
2782     <p>in case setting was successfully changed
2783     </p>
2784 schoenebeck 708 </blockquote><p>
2785 senoner 542
2786 schoenebeck 708 </p>
2787 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2788     </p>
2789     <blockquote class="text">
2790     <p>in case setting was changed successfully, but there are
2791     noteworthy issue(s) related, providing an appropriate
2792     warning code and warning message
2793     </p>
2794 schoenebeck 708 </blockquote><p>
2795 senoner 542
2796 schoenebeck 708 </p>
2797 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2798     </p>
2799     <blockquote class="text">
2800     <p>in case it failed, providing an appropriate error code and error message
2801     </p>
2802 schoenebeck 708 </blockquote><p>
2803 senoner 542
2804 schoenebeck 708 </p>
2805     </blockquote><p>
2806 senoner 542
2807 schoenebeck 708 </p>
2808 senoner 542 <p>Example:
2809     </p>
2810 schoenebeck 708 <p>
2811     </p>
2812 senoner 542 <blockquote class="text">
2813     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
2814     </p>
2815     <p>S: "OK"
2816     </p>
2817 schoenebeck 708 </blockquote><p>
2818 senoner 542
2819 schoenebeck 708 </p>
2820 schoenebeck 575 <a name="rfc.section.6.3.11"></a><h4><a name="GET MIDI_INPUT_PORT INFO">6.3.11</a>&nbsp;Getting information about a MIDI port</h4>
2821 senoner 542
2822     <p>Use the following command to get information about a MIDI port:
2823     </p>
2824 schoenebeck 708 <p>
2825     </p>
2826 senoner 542 <blockquote class="text">
2827     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
2828     </p>
2829 schoenebeck 708 </blockquote><p>
2830 senoner 542
2831 schoenebeck 708 </p>
2832 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2833 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
2834     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a>
2835 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
2836 senoner 542 </p>
2837     <p>Possible Answers:
2838     </p>
2839 schoenebeck 708 <p>
2840     </p>
2841 senoner 542 <blockquote class="text">
2842     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2843     Each answer line begins with the information category name
2844     followed by a colon and then a space character &lt;SP&gt; and finally
2845     the info character string to that info category. At the moment
2846     the following information categories are defined:
2847     </p>
2848     <p>NAME -
2849     </p>
2850     <blockquote class="text">
2851     <p>arbitrary character string naming the port
2852     </p>
2853 schoenebeck 708 </blockquote><p>
2854 senoner 542
2855 schoenebeck 708 </p>
2856     </blockquote><p>
2857 senoner 542
2858 schoenebeck 708 </p>
2859 senoner 542 <p>The field above is only the one which is returned by all MIDI
2860     ports regardless of the MIDI driver and port. Every MIDI port
2861     might have its own, additional driver and port specific
2862     parameters.
2863     </p>
2864     <p>Example:
2865     </p>
2866 schoenebeck 708 <p>
2867     </p>
2868 senoner 542 <blockquote class="text">
2869     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
2870     </p>
2871     <p>S: "NAME: 'Masterkeyboard'"
2872     </p>
2873     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
2874     </p>
2875     <p>&nbsp;&nbsp;&nbsp;"."
2876     </p>
2877 schoenebeck 708 </blockquote><p>
2878 senoner 542
2879 schoenebeck 708 </p>
2880 schoenebeck 575 <a name="rfc.section.6.3.12"></a><h4><a name="GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12</a>&nbsp;Getting information about specific MIDI port parameter</h4>
2881 senoner 542
2882     <p>Use the following command to get detailed information about specific MIDI port parameter:
2883     </p>
2884 schoenebeck 708 <p>
2885     </p>
2886 senoner 542 <blockquote class="text">
2887     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
2888     </p>
2889 schoenebeck 708 </blockquote><p>
2890 senoner 542
2891 schoenebeck 708 </p>
2892 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
2893 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
2894     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a>
2895 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
2896 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
2897 schoenebeck 708 obtained (as returned by the <a class="info" href="#GET MIDI_INPUT_PORT INFO">"GET MIDI_INPUT_PORT INFO"<span> (</span><span class="info">Getting information about a MIDI port</span><span>)</span></a> command).
2898 senoner 542 </p>
2899     <p>Possible Answers:
2900     </p>
2901 schoenebeck 708 <p>
2902     </p>
2903 senoner 542 <blockquote class="text">
2904     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2905     Each answer line begins with the information category name
2906     followed by a colon and then a space character &lt;SP&gt; and finally
2907     the info character string to that info category. There is
2908     information which is always returned, independently of the
2909     given channel parameter and there is optional information
2910     which are only shown dependently to the given MIDI port. At the
2911     moment the following information categories are defined:
2912     </p>
2913     <p>TYPE -
2914     </p>
2915     <blockquote class="text">
2916     <p>either "BOOL" for boolean value(s) or "INT" for integer
2917     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2918     character string(s)
2919     (always returned)
2920     </p>
2921 schoenebeck 708 </blockquote><p>
2922 senoner 542
2923 schoenebeck 708 </p>
2924 senoner 542 <p>DESCRIPTION -
2925     </p>
2926     <blockquote class="text">
2927     <p>arbitrary text describing the purpose of the parameter
2928     (always returned)
2929     </p>
2930 schoenebeck 708 </blockquote><p>
2931 senoner 542
2932 schoenebeck 708 </p>
2933 senoner 542 <p>FIX -
2934     </p>
2935     <blockquote class="text">
2936     <p>either true or false, if true then this parameter is
2937     read only, thus cannot be altered
2938     (always returned)
2939     </p>
2940 schoenebeck 708 </blockquote><p>
2941 senoner 542
2942 schoenebeck 708 </p>
2943 senoner 542 <p>MULTIPLICITY -
2944     </p>
2945     <blockquote class="text">
2946     <p>either true or false, defines if this parameter allows
2947     only one value or a list of values, where true means
2948     multiple values and false only a single value allowed
2949     (always returned)
2950     </p>
2951 schoenebeck 708 </blockquote><p>
2952 senoner 542
2953 schoenebeck 708 </p>
2954 senoner 542 <p>RANGE_MIN -
2955     </p>
2956     <blockquote class="text">
2957     <p>defines lower limit of the allowed value range for this
2958     parameter, can be an integer value as well as a dotted
2959     number, this parameter is usually used in conjunction
2960     with 'RANGE_MAX' but may also appear without
2961     (optionally returned, dependent to driver and port
2962     parameter)
2963     </p>
2964 schoenebeck 708 </blockquote><p>
2965 senoner 542
2966 schoenebeck 708 </p>
2967 senoner 542 <p>RANGE_MAX -
2968     </p>
2969     <blockquote class="text">
2970     <p>defines upper limit of the allowed value range for this
2971     parameter, can be an integer value as well as a dotted
2972     number, this parameter is usually used in conjunction
2973     with 'RANGE_MIN' but may also appear without
2974     (optionally returned, dependent to driver and port
2975     parameter)
2976     </p>
2977 schoenebeck 708 </blockquote><p>
2978 senoner 542
2979 schoenebeck 708 </p>
2980 senoner 542 <p>POSSIBILITIES -
2981     </p>
2982     <blockquote class="text">
2983     <p>comma separated list of possible values for this
2984     parameter, character strings are encapsulated into
2985     apostrophes
2986     (optionally returned, dependent to device and port
2987     parameter)
2988     </p>
2989 schoenebeck 708 </blockquote><p>
2990 senoner 542
2991 schoenebeck 708 </p>
2992     </blockquote><p>
2993 senoner 542
2994 schoenebeck 708 </p>
2995 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2996     </p>
2997     <p>Example:
2998     </p>
2999 schoenebeck 708 <p>
3000     </p>
3001 senoner 542 <blockquote class="text">
3002     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3003     </p>
3004     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3005     </p>
3006     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3007     </p>
3008     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3009     </p>
3010     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3011     </p>
3012     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3013     </p>
3014     <p>&nbsp;&nbsp;&nbsp;"."
3015     </p>
3016 schoenebeck 708 </blockquote><p>
3017 senoner 542
3018 schoenebeck 708 </p>
3019 schoenebeck 575 <a name="rfc.section.6.3.13"></a><h4><a name="SET MIDI_INPUT_PORT_PARAMETER">6.3.13</a>&nbsp;Changing settings of MIDI input ports</h4>
3020 senoner 542
3021     <p>Use the following command to alter a specific setting of a MIDI input port:
3022     </p>
3023 schoenebeck 708 <p>
3024     </p>
3025 senoner 542 <blockquote class="text">
3026     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3027     </p>
3028 schoenebeck 708 </blockquote><p>
3029 senoner 542
3030 schoenebeck 708 </p>
3031 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3032 schoenebeck 575 MIDI device as returned by the
3033 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
3034     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a>
3035 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3036 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3037     parameter.
3038     </p>
3039     <p>Possible Answers:
3040     </p>
3041 schoenebeck 708 <p>
3042     </p>
3043 senoner 542 <blockquote class="text">
3044     <p>"OK" -
3045     </p>
3046     <blockquote class="text">
3047     <p>in case setting was successfully changed
3048     </p>
3049 schoenebeck 708 </blockquote><p>
3050 senoner 542
3051 schoenebeck 708 </p>
3052 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3053     </p>
3054     <blockquote class="text">
3055     <p>in case setting was changed successfully, but there are
3056     noteworthy issue(s) related, providing an appropriate
3057     warning code and warning message
3058     </p>
3059 schoenebeck 708 </blockquote><p>
3060 senoner 542
3061 schoenebeck 708 </p>
3062 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3063     </p>
3064     <blockquote class="text">
3065     <p>in case it failed, providing an appropriate error code and error message
3066     </p>
3067 schoenebeck 708 </blockquote><p>
3068 senoner 542
3069 schoenebeck 708 </p>
3070     </blockquote><p>
3071 senoner 542
3072 schoenebeck 708 </p>
3073 senoner 542 <p>Example:
3074     </p>
3075 schoenebeck 708 <p>
3076     </p>
3077 senoner 542 <blockquote class="text">
3078     <p>
3079     </p>
3080 schoenebeck 708 </blockquote><p>
3081 senoner 542
3082 schoenebeck 708 </p>
3083 schoenebeck 575 <a name="rfc.section.6.4"></a><h4><a name="anchor11">6.4</a>&nbsp;Configuring sampler channels</h4>
3084 senoner 542
3085 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3086     sampler channel with a sampler engine, load instruments and connect sampler channels to
3087     MIDI and audio devices.
3088 senoner 542 </p>
3089 schoenebeck 575 <a name="rfc.section.6.4.1"></a><h4><a name="LOAD INSTRUMENT">6.4.1</a>&nbsp;Loading an instrument</h4>
3090 senoner 542
3091     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3092     </p>
3093 schoenebeck 708 <p>
3094     </p>
3095 senoner 542 <blockquote class="text">
3096     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3097     </p>
3098 schoenebeck 708 </blockquote><p>
3099 senoner 542
3100 schoenebeck 708 </p>
3101 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3102     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3103     instrument in the instrument file and &lt;sampler-channel> is the
3104     number of the sampler channel the instrument should be assigned to.
3105     Each sampler channel can only have one instrument.
3106     </p>
3107     <p>The difference between regular and NON_MODAL versions of the command
3108     is that the regular command returns OK only after the instrument has been
3109     fully loaded and the channel is ready to be used while NON_MODAL version
3110     returns immediately and a background process is launched to load the instrument
3111 schoenebeck 708 on the channel. The <a class="info" href="#GET CHANNEL INFO">GET CHANNEL INFO<span> (</span><span class="info">Getting sampler channel information</span><span>)</span></a>
3112 senoner 542 command can be used to obtain loading
3113     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3114     such as making sure that the file could be read and it is of a proper format
3115     and SHOULD return ERR and SHOULD not launch the background process should any
3116     errors be detected at that point.
3117     </p>
3118     <p>Possible Answers:
3119     </p>
3120 schoenebeck 708 <p>
3121     </p>
3122 senoner 542 <blockquote class="text">
3123     <p>"OK" -
3124     </p>
3125     <blockquote class="text">
3126     <p>in case the instrument was successfully loaded
3127     </p>
3128 schoenebeck 708 </blockquote><p>
3129 senoner 542
3130 schoenebeck 708 </p>
3131 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3132     </p>
3133     <blockquote class="text">
3134     <p>in case the instrument was loaded successfully, but there
3135     are noteworthy issue(s) related (e.g. Engine doesn't support
3136     one or more patch parameters provided by the loaded
3137     instrument file), providing an appropriate warning code and
3138     warning message
3139     </p>
3140 schoenebeck 708 </blockquote><p>
3141 senoner 542
3142 schoenebeck 708 </p>
3143 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3144     </p>
3145     <blockquote class="text">
3146     <p>in case it failed, providing an appropriate error code and error message
3147     </p>
3148 schoenebeck 708 </blockquote><p>
3149 senoner 542
3150 schoenebeck 708 </p>
3151     </blockquote><p>
3152 senoner 542
3153 schoenebeck 708 </p>
3154 senoner 542 <p>Example:
3155     </p>
3156 schoenebeck 708 <p>
3157     </p>
3158 senoner 542 <blockquote class="text">
3159     <p>
3160     </p>
3161 schoenebeck 708 </blockquote><p>
3162 senoner 542
3163 schoenebeck 708 </p>
3164 schoenebeck 575 <a name="rfc.section.6.4.2"></a><h4><a name="LOAD ENGINE">6.4.2</a>&nbsp;Loading a sampler engine</h4>
3165 senoner 542
3166 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3167 senoner 542 channel by the following command:
3168     </p>
3169 schoenebeck 708 <p>
3170     </p>
3171 senoner 542 <blockquote class="text">
3172     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3173     </p>
3174 schoenebeck 708 </blockquote><p>
3175 senoner 542
3176 schoenebeck 708 </p>
3177 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3178 schoenebeck 708 <a class="info" href="#LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"<span> (</span><span class="info">Getting all available engines</span><span>)</span></a> command and &lt;sampler-channel&gt;
3179 schoenebeck 575 the sampler channel as returned by the
3180 schoenebeck 708 <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a> or
3181     <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command where
3182 schoenebeck 575 the engine type should be assigned to. This command should be issued
3183     after adding a new sampler channel and before any other control
3184     commands on the new sampler channel. It can also be used to change
3185     the engine type of a sampler channel. This command has (currently) no
3186     way to define or force if a new engine instance should be created and
3187     assigned to the given sampler channel or if an already existing
3188     instance of that engine type, shared with other sampler channels,
3189     should be used.
3190 senoner 542 </p>
3191     <p>Possible Answers:
3192     </p>
3193 schoenebeck 708 <p>
3194     </p>
3195 senoner 542 <blockquote class="text">
3196     <p>"OK" -
3197     </p>
3198     <blockquote class="text">
3199     <p>in case the engine was successfully deployed
3200     </p>
3201 schoenebeck 708 </blockquote><p>
3202 senoner 542
3203 schoenebeck 708 </p>
3204 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3205     </p>
3206     <blockquote class="text">
3207     <p>in case the engine was deployed successfully, but there
3208     are noteworthy issue(s) related, providing an appropriate
3209     warning code and warning message
3210     </p>
3211 schoenebeck 708 </blockquote><p>
3212 senoner 542
3213 schoenebeck 708 </p>
3214 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3215     </p>
3216     <blockquote class="text">
3217     <p>in case it failed, providing an appropriate error code and
3218     error message
3219     </p>
3220 schoenebeck 708 </blockquote><p>
3221 senoner 542
3222 schoenebeck 708 </p>
3223     </blockquote><p>
3224 senoner 542
3225 schoenebeck 708 </p>
3226 senoner 542 <p>Example:
3227     </p>
3228 schoenebeck 708 <p>
3229     </p>
3230 senoner 542 <blockquote class="text">
3231     <p>
3232     </p>
3233 schoenebeck 708 </blockquote><p>
3234 senoner 542
3235 schoenebeck 708 </p>
3236 schoenebeck 575 <a name="rfc.section.6.4.3"></a><h4><a name="GET CHANNELS">6.4.3</a>&nbsp;Getting all created sampler channel count</h4>
3237 senoner 542
3238     <p>The number of sampler channels can change on runtime. To get the
3239     current amount of sampler channels, the front-end can send the
3240     following command:
3241     </p>
3242 schoenebeck 708 <p>
3243     </p>
3244 senoner 542 <blockquote class="text">
3245     <p>GET CHANNELS
3246     </p>
3247 schoenebeck 708 </blockquote><p>
3248 senoner 542
3249 schoenebeck 708 </p>
3250 senoner 542 <p>Possible Answers:
3251     </p>
3252 schoenebeck 708 <p>
3253     </p>
3254 senoner 542 <blockquote class="text">
3255     <p>LinuxSampler will answer by returning the current number of sampler channels.
3256     </p>
3257 schoenebeck 708 </blockquote><p>
3258 senoner 542
3259 schoenebeck 708 </p>
3260 senoner 542 <p>Example:
3261     </p>
3262 schoenebeck 708 <p>
3263     </p>
3264 senoner 542 <blockquote class="text">
3265     <p>C: "GET CHANNELS"
3266     </p>
3267     <p>S: "12"
3268     </p>
3269 schoenebeck 708 </blockquote><p>
3270 senoner 542
3271 schoenebeck 708 </p>
3272 schoenebeck 575 <a name="rfc.section.6.4.4"></a><h4><a name="LIST CHANNELS">6.4.4</a>&nbsp;Getting all created sampler channel list</h4>
3273 senoner 542
3274     <p>The number of sampler channels can change on runtime. To get the
3275     current list of sampler channels, the front-end can send the
3276     following command:
3277     </p>
3278 schoenebeck 708 <p>
3279     </p>
3280 senoner 542 <blockquote class="text">
3281     <p>LIST CHANNELS
3282     </p>
3283 schoenebeck 708 </blockquote><p>
3284 senoner 542
3285 schoenebeck 708 </p>
3286 senoner 542 <p>Possible Answers:
3287     </p>
3288 schoenebeck 708 <p>
3289     </p>
3290 senoner 542 <blockquote class="text">
3291     <p>LinuxSampler will answer by returning a comma separated list
3292     with all sampler channels numerical IDs.
3293     </p>
3294 schoenebeck 708 </blockquote><p>
3295 senoner 542
3296 schoenebeck 708 </p>
3297 senoner 542 <p>Example:
3298     </p>
3299 schoenebeck 708 <p>
3300     </p>
3301 senoner 542 <blockquote class="text">
3302     <p>C: "LIST CHANNELS"
3303     </p>
3304     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3305     </p>
3306 schoenebeck 708 </blockquote><p>
3307 senoner 542
3308 schoenebeck 708 </p>
3309 schoenebeck 575 <a name="rfc.section.6.4.5"></a><h4><a name="ADD CHANNEL">6.4.5</a>&nbsp;Adding a new sampler channel</h4>
3310 senoner 542
3311     <p>A new sampler channel can be added to the end of the sampler
3312     channel list by sending the following command:
3313     </p>
3314 schoenebeck 708 <p>
3315     </p>
3316 senoner 542 <blockquote class="text">
3317     <p>ADD CHANNEL
3318     </p>
3319 schoenebeck 708 </blockquote><p>
3320 senoner 542
3321 schoenebeck 708 </p>
3322 senoner 542 <p>This will increment the sampler channel count by one and the new
3323     sampler channel will be appended to the end of the sampler channel
3324     list. The front-end should send the respective, related commands
3325     right after to e.g. load an engine, load an instrument and setting
3326     input, output method and eventually other commands to initialize
3327     the new channel. The front-end should use the sampler channel
3328     returned by the answer of this command to perform the previously
3329     recommended commands, to avoid race conditions e.g. with other
3330     front-ends that might also have sent an "ADD CHANNEL" command.
3331     </p>
3332     <p>Possible Answers:
3333     </p>
3334 schoenebeck 708 <p>
3335     </p>
3336 senoner 542 <blockquote class="text">
3337     <p>"OK[&lt;sampler-channel&gt;]" -
3338     </p>
3339     <blockquote class="text">
3340     <p>in case a new sampler channel could be added, where
3341     &lt;sampler-channel&gt; reflects the channel number of the new
3342 schoenebeck 561 created sampler channel which should be used to set up
3343     the sampler channel by sending subsequent initialization
3344 senoner 542 commands
3345     </p>
3346 schoenebeck 708 </blockquote><p>
3347 senoner 542
3348 schoenebeck 708 </p>
3349 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3350     </p>
3351     <blockquote class="text">
3352     <p>in case a new channel was added successfully, but there are
3353     noteworthy issue(s) related, providing an appropriate
3354     warning code and warning message
3355     </p>
3356 schoenebeck 708 </blockquote><p>
3357 senoner 542
3358 schoenebeck 708 </p>
3359 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3360     </p>
3361     <blockquote class="text">
3362     <p>in case it failed, providing an appropriate error code and
3363     error message
3364     </p>
3365 schoenebeck 708 </blockquote><p>
3366 senoner 542
3367 schoenebeck 708 </p>
3368     </blockquote><p>
3369 senoner 542
3370 schoenebeck 708 </p>
3371 senoner 542 <p>Example:
3372     </p>
3373 schoenebeck 708 <p>
3374     </p>
3375 senoner 542 <blockquote class="text">
3376     <p>
3377     </p>
3378 schoenebeck 708 </blockquote><p>
3379 senoner 542
3380 schoenebeck 708 </p>
3381 schoenebeck 575 <a name="rfc.section.6.4.6"></a><h4><a name="REMOVE CHANNEL">6.4.6</a>&nbsp;Removing a sampler channel</h4>
3382 senoner 542
3383     <p>A sampler channel can be removed by sending the following command:
3384     </p>
3385 schoenebeck 708 <p>
3386     </p>
3387 senoner 542 <blockquote class="text">
3388     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3389     </p>
3390 schoenebeck 708 </blockquote><p>
3391 senoner 542
3392 schoenebeck 708 </p>
3393 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3394     number of the sampler channel as given by the
3395 schoenebeck 708 <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
3396     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a>
3397 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3398     remain the same.
3399 senoner 542 </p>
3400     <p>Possible Answers:
3401     </p>
3402 schoenebeck 708 <p>
3403     </p>
3404 senoner 542 <blockquote class="text">
3405     <p>"OK" -
3406     </p>
3407     <blockquote class="text">
3408     <p>in case the given sampler channel could be removed
3409     </p>
3410 schoenebeck 708 </blockquote><p>
3411 senoner 542
3412 schoenebeck 708 </p>
3413 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3414     </p>
3415     <blockquote class="text">
3416     <p>in case the given channel was removed, but there are
3417     noteworthy issue(s) related, providing an appropriate
3418     warning code and warning message
3419     </p>
3420 schoenebeck 708 </blockquote><p>
3421 senoner 542
3422 schoenebeck 708 </p>
3423 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3424     </p>
3425     <blockquote class="text">
3426     <p>in case it failed, providing an appropriate error code and
3427     error message
3428     </p>
3429 schoenebeck 708 </blockquote><p>
3430 senoner 542
3431 schoenebeck 708 </p>
3432     </blockquote><p>
3433 senoner 542
3434 schoenebeck 708 </p>
3435 senoner 542 <p>Example:
3436     </p>
3437 schoenebeck 708 <p>
3438     </p>
3439 senoner 542 <blockquote class="text">
3440     <p>
3441     </p>
3442 schoenebeck 708 </blockquote><p>
3443 senoner 542
3444 schoenebeck 708 </p>
3445 schoenebeck 575 <a name="rfc.section.6.4.7"></a><h4><a name="GET AVAILABLE_ENGINES">6.4.7</a>&nbsp;Getting amount of available engines</h4>
3446 senoner 542
3447     <p>The front-end can ask for the number of available engines by sending the following command:
3448     </p>
3449 schoenebeck 708 <p>
3450     </p>
3451 senoner 542 <blockquote class="text">
3452     <p>GET AVAILABLE_ENGINES
3453     </p>
3454 schoenebeck 708 </blockquote><p>
3455 senoner 542
3456 schoenebeck 708 </p>
3457 senoner 542 <p>Possible Answers:
3458     </p>
3459 schoenebeck 708 <p>
3460     </p>
3461 senoner 542 <blockquote class="text">
3462     <p>LinuxSampler will answer by sending the number of available engines.
3463     </p>
3464 schoenebeck 708 </blockquote><p>
3465 senoner 542
3466 schoenebeck 708 </p>
3467 senoner 542 <p>Example:
3468     </p>
3469 schoenebeck 708 <p>
3470     </p>
3471 senoner 542 <blockquote class="text">
3472     <p>C: "GET AVAILABLE_ENGINES"
3473     </p>
3474     <p>S: "4"
3475     </p>
3476 schoenebeck 708 </blockquote><p>
3477 senoner 542
3478 schoenebeck 708 </p>
3479 schoenebeck 575 <a name="rfc.section.6.4.8"></a><h4><a name="LIST AVAILABLE_ENGINES">6.4.8</a>&nbsp;Getting all available engines</h4>
3480 senoner 542
3481     <p>The front-end can ask for a list of all available engines by sending the following command:
3482     </p>
3483 schoenebeck 708 <p>
3484     </p>
3485 senoner 542 <blockquote class="text">
3486     <p>LIST AVAILABLE_ENGINES
3487     </p>
3488 schoenebeck 708 </blockquote><p>
3489 senoner 542
3490 schoenebeck 708 </p>
3491 senoner 542 <p>Possible Answers:
3492     </p>
3493 schoenebeck 708 <p>
3494     </p>
3495 senoner 542 <blockquote class="text">
3496 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3497     of the engines' names encapsulated into apostrophes (').
3498     Engine names can consist of lower and upper cases,
3499     digits and underlines ("_" character).
3500 senoner 542 </p>
3501 schoenebeck 708 </blockquote><p>
3502 senoner 542
3503 schoenebeck 708 </p>
3504 senoner 542 <p>Example:
3505     </p>
3506 schoenebeck 708 <p>
3507     </p>
3508 senoner 542 <blockquote class="text">
3509     <p>C: "LIST AVAILABLE_ENGINES"
3510     </p>
3511 schoenebeck 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3512 senoner 542 </p>
3513 schoenebeck 708 </blockquote><p>
3514 senoner 542
3515 schoenebeck 708 </p>
3516 schoenebeck 575 <a name="rfc.section.6.4.9"></a><h4><a name="GET ENGINE INFO">6.4.9</a>&nbsp;Getting information about an engine</h4>
3517 senoner 542
3518     <p>The front-end can ask for information about a specific engine by
3519     sending the following command:
3520     </p>
3521 schoenebeck 708 <p>
3522     </p>
3523 senoner 542 <blockquote class="text">
3524     <p>GET ENGINE INFO &lt;engine-name&gt;
3525     </p>
3526 schoenebeck 708 </blockquote><p>
3527 senoner 542
3528 schoenebeck 708 </p>
3529 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3530 schoenebeck 708 <a class="info" href="#LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"<span> (</span><span class="info">Getting all available engines</span><span>)</span></a> command.
3531 senoner 542 </p>
3532     <p>Possible Answers:
3533     </p>
3534 schoenebeck 708 <p>
3535     </p>
3536 senoner 542 <blockquote class="text">
3537     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3538     Each answer line begins with the information category name
3539     followed by a colon and then a space character &lt;SP&gt; and finally
3540     the info character string to that info category. At the moment
3541     the following categories are defined:
3542     </p>
3543 schoenebeck 708 <p>
3544     </p>
3545 senoner 542 <blockquote class="text">
3546     <p>DESCRIPTION -
3547     </p>
3548     <blockquote class="text">
3549     <p>arbitrary description text about the engine
3550     </p>
3551 schoenebeck 708 </blockquote><p>
3552 senoner 542
3553 schoenebeck 708 </p>
3554 senoner 542 <p>VERSION -
3555     </p>
3556     <blockquote class="text">
3557     <p>arbitrary character string regarding the engine's version
3558     </p>
3559 schoenebeck 708 </blockquote><p>
3560 senoner 542
3561 schoenebeck 708 </p>
3562     </blockquote><p>
3563 senoner 542
3564 schoenebeck 708 </p>
3565     </blockquote><p>
3566 senoner 542
3567 schoenebeck 708 </p>
3568 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3569     </p>
3570     <p>Example:
3571     </p>
3572 schoenebeck 708 <p>
3573     </p>
3574 senoner 542 <blockquote class="text">
3575     <p>C: "GET ENGINE INFO JoesCustomEngine"
3576     </p>
3577     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3578     </p>
3579     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3580     </p>
3581     <p>&nbsp;&nbsp;&nbsp;"."
3582     </p>
3583 schoenebeck 708 </blockquote><p>
3584 senoner 542
3585 schoenebeck 708 </p>
3586 schoenebeck 575 <a name="rfc.section.6.4.10"></a><h4><a name="GET CHANNEL INFO">6.4.10</a>&nbsp;Getting sampler channel information</h4>
3587 senoner 542
3588     <p>The front-end can ask for the current settings of a sampler channel
3589     by sending the following command:
3590     </p>
3591 schoenebeck 708 <p>
3592     </p>
3593 senoner 542 <blockquote class="text">
3594     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3595     </p>
3596 schoenebeck 708 </blockquote><p>
3597 senoner 542
3598 schoenebeck 708 </p>
3599 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3600 schoenebeck 708 as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
3601     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command.
3602 senoner 542 </p>
3603     <p>Possible Answers:
3604     </p>
3605 schoenebeck 708 <p>
3606     </p>
3607 senoner 542 <blockquote class="text">
3608     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3609     Each answer line begins with the settings category name
3610     followed by a colon and then a space character &lt;SP&gt; and finally
3611     the info character string to that setting category. At the
3612     moment the following categories are defined:
3613     </p>
3614 schoenebeck 708 <p>
3615     </p>
3616 senoner 542 <blockquote class="text">
3617     <p>ENGINE_NAME -
3618     </p>
3619     <blockquote class="text">
3620 schoenebeck 575 <p>name of the engine that is associated with the sampler
3621     channel, "NONE" if there's no engine associated yet for
3622 senoner 542 this sampler channel
3623     </p>
3624 schoenebeck 708 </blockquote><p>
3625 senoner 542
3626 schoenebeck 708 </p>
3627 senoner 542 <p>AUDIO_OUTPUT_DEVICE -
3628     </p>
3629     <blockquote class="text">
3630     <p>numerical ID of the audio output device which is
3631     currently connected to this sampler channel to output
3632     the audio signal, "NONE" if there's no device
3633     connected to this sampler channel
3634     </p>
3635 schoenebeck 708 </blockquote><p>
3636 senoner 542
3637 schoenebeck 708 </p>
3638 senoner 542 <p>AUDIO_OUTPUT_CHANNELS -
3639     </p>
3640     <blockquote class="text">
3641     <p>number of output channels the sampler channel offers
3642     (dependent to used sampler engine and loaded instrument)
3643     </p>
3644 schoenebeck 708 </blockquote><p>
3645 senoner 542
3646 schoenebeck 708 </p>
3647 senoner 542 <p>AUDIO_OUTPUT_ROUTING -
3648     </p>
3649     <blockquote class="text">
3650     <p>comma separated list which reflects to which audio
3651     channel of the selected audio output device each
3652     sampler output channel is routed to, e.g. "0,3" would
3653     mean the engine's output channel 0 is routed to channel
3654     0 of the audio output device and the engine's output
3655     channel 1 is routed to the channel 3 of the audio
3656     output device
3657     </p>
3658 schoenebeck 708 </blockquote><p>
3659 senoner 542
3660 schoenebeck 708 </p>
3661 senoner 542 <p>INSTRUMENT_FILE -
3662     </p>
3663     <blockquote class="text">
3664     <p>the file name of the loaded instrument, "NONE" if
3665     there's no instrument yet loaded for this sampler
3666     channel
3667     </p>
3668 schoenebeck 708 </blockquote><p>
3669 senoner 542
3670 schoenebeck 708 </p>
3671 senoner 542 <p>INSTRUMENT_NR -
3672     </p>
3673     <blockquote class="text">
3674     <p>the instrument index number of the loaded instrument
3675     </p>
3676 schoenebeck 708 </blockquote><p>
3677 senoner 542
3678 schoenebeck 708 </p>
3679 senoner 542 <p>INSTRUMENT_NAME -
3680     </p>
3681     <blockquote class="text">
3682     <p>the instrument name of the loaded instrument
3683     </p>
3684 schoenebeck 708 </blockquote><p>
3685 senoner 542
3686 schoenebeck 708 </p>
3687 senoner 542 <p>INSTRUMENT_STATUS -
3688     </p>
3689     <blockquote class="text">
3690     <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
3691     value indicates a loading exception. Value of 100 indicates that the instrument is fully
3692     loaded.
3693     </p>
3694 schoenebeck 708 </blockquote><p>
3695 senoner 542
3696 schoenebeck 708 </p>
3697 senoner 542 <p>MIDI_INPUT_DEVICE -
3698     </p>
3699     <blockquote class="text">
3700     <p>numerical ID of the MIDI input device which is
3701     currently connected to this sampler channel to deliver
3702     MIDI input commands, "NONE" if there's no device
3703     connected to this sampler channel
3704     </p>
3705 schoenebeck 708 </blockquote><p>
3706 senoner 542
3707 schoenebeck 708 </p>
3708 senoner 542 <p>MIDI_INPUT_PORT -
3709     </p>
3710     <blockquote class="text">
3711     <p>port number of the MIDI input device
3712     </p>
3713 schoenebeck 708 </blockquote><p>
3714 senoner 542
3715 schoenebeck 708 </p>
3716 senoner 542 <p>MIDI_INPUT_CHANNEL -
3717     </p>
3718     <blockquote class="text">
3719     <p>the MIDI input channel number this sampler channel
3720     should listen to or "ALL" to listen on all MIDI channels
3721     </p>
3722 schoenebeck 708 </blockquote><p>
3723 senoner 542
3724 schoenebeck 708 </p>
3725 senoner 542 <p>VOLUME -
3726     </p>
3727     <blockquote class="text">
3728     <p>optionally dotted number for the channel volume factor
3729     (where a value < 1.0 means attenuation and a value >
3730     1.0 means amplification)
3731     </p>
3732 schoenebeck 708 </blockquote><p>
3733 senoner 542
3734 schoenebeck 708 </p>
3735     <p>MUTE -
3736     </p>
3737     <blockquote class="text">
3738     <p>Determines whether the channel is muted, "true" if the
3739     channel is muted, "false" if the channel is not muted, and
3740     "MUTED_BY_SOLO" if the channel is muted because of the
3741     presence of a solo channel and will be unmuted when
3742     there are no solo channels left
3743     </p>
3744     </blockquote><p>
3745 senoner 542
3746 schoenebeck 708 </p>
3747     <p>SOLO -
3748     </p>
3749     <blockquote class="text">
3750     <p>Determines whether this is a solo channel, "true" if
3751     the channel is a solo channel; "false" otherwise
3752     </p>
3753     </blockquote><p>
3754 senoner 542
3755 schoenebeck 708 </p>
3756     </blockquote><p>
3757    
3758     </p>
3759     </blockquote><p>
3760    
3761     </p>
3762 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3763     </p>
3764     <p>Example:
3765     </p>
3766 schoenebeck 708 <p>
3767     </p>
3768 senoner 542 <blockquote class="text">
3769     <p>C: "GET CHANNEL INFO 34"
3770     </p>
3771     <p>S: "ENGINE_NAME: GigEngine"
3772     </p>
3773     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
3774     </p>
3775     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
3776     </p>
3777     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
3778     </p>
3779     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
3780     </p>
3781     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
3782     </p>
3783     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
3784     </p>
3785     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
3786     </p>
3787     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
3788     </p>
3789     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
3790     </p>
3791     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
3792     </p>
3793     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
3794     </p>
3795     <p>&nbsp;&nbsp;&nbsp;"."
3796     </p>
3797 schoenebeck 708 </blockquote><p>
3798 senoner 542
3799 schoenebeck 708 </p>
3800 schoenebeck 575 <a name="rfc.section.6.4.11"></a><h4><a name="GET CHANNEL VOICE_COUNT">6.4.11</a>&nbsp;Current number of active voices</h4>
3801 senoner 542
3802     <p>The front-end can ask for the current number of active voices on a
3803     sampler channel by sending the following command:
3804     </p>
3805 schoenebeck 708 <p>
3806     </p>
3807 senoner 542 <blockquote class="text">
3808     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
3809     </p>
3810 schoenebeck 708 </blockquote><p>
3811 senoner 542
3812 schoenebeck 708 </p>
3813 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3814 schoenebeck 708 as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
3815     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command.
3816 senoner 542 </p>
3817     <p>Possible Answers:
3818     </p>
3819 schoenebeck 708 <p>
3820     </p>
3821 senoner 542 <blockquote class="text">
3822     <p>LinuxSampler will answer by returning the number of active
3823     voices on that channel.
3824     </p>
3825 schoenebeck 708 </blockquote><p>
3826 senoner 542
3827 schoenebeck 708 </p>
3828 senoner 542 <p>Example:
3829     </p>
3830 schoenebeck 708 <p>
3831     </p>
3832 senoner 542 <blockquote class="text">
3833     <p>
3834     </p>
3835 schoenebeck 708 </blockquote><p>
3836 senoner 542
3837 schoenebeck 708 </p>
3838 schoenebeck 575 <a name="rfc.section.6.4.12"></a><h4><a name="GET CHANNEL STREAM_COUNT">6.4.12</a>&nbsp;Current number of active disk streams</h4>
3839 senoner 542
3840     <p>The front-end can ask for the current number of active disk streams
3841     on a sampler channel by sending the following command:
3842     </p>
3843 schoenebeck 708 <p>
3844     </p>
3845 senoner 542 <blockquote class="text">
3846     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
3847     </p>
3848 schoenebeck 708 </blockquote><p>
3849 senoner 542
3850 schoenebeck 708 </p>
3851 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3852 schoenebeck 708 as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
3853     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command.
3854 senoner 542 </p>
3855     <p>Possible Answers:
3856     </p>
3857 schoenebeck 708 <p>
3858     </p>
3859 senoner 542 <blockquote class="text">
3860     <p>LinuxSampler will answer by returning the number of active
3861     disk streams on that channel in case the engine supports disk
3862     streaming, if the engine doesn't support disk streaming it will
3863     return "NA" for not available.
3864     </p>
3865 schoenebeck 708 </blockquote><p>
3866 senoner 542
3867 schoenebeck 708 </p>
3868 senoner 542 <p>Example:
3869     </p>
3870 schoenebeck 708 <p>
3871     </p>
3872 senoner 542 <blockquote class="text">
3873     <p>
3874     </p>
3875 schoenebeck 708 </blockquote><p>
3876 senoner 542
3877 schoenebeck 708 </p>
3878 schoenebeck 575 <a name="rfc.section.6.4.13"></a><h4><a name="GET CHANNEL BUFFER_FILL">6.4.13</a>&nbsp;Current fill state of disk stream buffers</h4>
3879 senoner 542
3880     <p>The front-end can ask for the current fill state of all disk streams
3881     on a sampler channel by sending the following command:
3882     </p>
3883 schoenebeck 708 <p>
3884     </p>
3885 senoner 542 <blockquote class="text">
3886     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
3887     </p>
3888 schoenebeck 708 </blockquote><p>
3889 senoner 542
3890 schoenebeck 708 </p>
3891 senoner 542 <p>to get the fill state in bytes or
3892     </p>
3893 schoenebeck 708 <p>
3894     </p>
3895 senoner 542 <blockquote class="text">
3896     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
3897     </p>
3898 schoenebeck 708 </blockquote><p>
3899 senoner 542
3900 schoenebeck 708 </p>
3901 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
3902 schoenebeck 575 sampler channel number the front-end is interested in
3903 schoenebeck 708 as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
3904     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command.
3905 senoner 542 </p>
3906     <p>Possible Answers:
3907     </p>
3908 schoenebeck 708 <p>
3909     </p>
3910 senoner 542 <blockquote class="text">
3911     <p>LinuxSampler will either answer by returning a comma separated
3912     string with the fill state of all disk stream buffers on that
3913     channel or an empty line if there are no active disk streams or
3914     "NA" for *not available* in case the engine which is deployed
3915     doesn't support disk streaming. Each entry in the answer list
3916     will begin with the stream's ID in brackets followed by the
3917     numerical representation of the fill size (either in bytes or
3918     percentage). Note: due to efficiency reasons the fill states in
3919     the response are not in particular order, thus the front-end has
3920     to sort them by itself if necessary.
3921     </p>
3922 schoenebeck 708 </blockquote><p>
3923 senoner 542
3924 schoenebeck 708 </p>
3925 senoner 542 <p>Examples:
3926     </p>
3927 schoenebeck 708 <p>
3928     </p>
3929 senoner 542 <blockquote class="text">
3930     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
3931     </p>
3932     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
3933     </p>
3934 schoenebeck 708 </blockquote><p>
3935    
3936     </p>
3937 senoner 542 <blockquote class="text">
3938 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
3939 senoner 542 </p>
3940     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
3941     </p>
3942 schoenebeck 708 </blockquote><p>
3943    
3944     </p>
3945 senoner 542 <blockquote class="text">
3946 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
3947 senoner 542 </p>
3948     <p>S: ""
3949     </p>
3950 schoenebeck 708 </blockquote><p>
3951 senoner 542
3952 schoenebeck 708 </p>
3953 schoenebeck 575 <a name="rfc.section.6.4.14"></a><h4><a name="SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14</a>&nbsp;Setting audio output device</h4>
3954 senoner 542
3955     <p>The front-end can set the audio output device on a specific sampler
3956     channel by sending the following command:
3957     </p>
3958 schoenebeck 708 <p>
3959     </p>
3960 senoner 542 <blockquote class="text">
3961     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
3962     </p>
3963 schoenebeck 708 </blockquote><p>
3964 senoner 542
3965 schoenebeck 708 </p>
3966 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
3967 schoenebeck 708 number as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
3968     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command and
3969 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
3970 schoenebeck 708 <a class="info" href="#CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class="info">Creating an audio output device</span><span>)</span></a>
3971     or <a class="info" href="#LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class="info">Getting all created audio output device list</span><span>)</span></a>
3972 schoenebeck 575 command.
3973 senoner 542 </p>
3974     <p>Possible Answers:
3975     </p>
3976 schoenebeck 708 <p>
3977     </p>
3978 senoner 542 <blockquote class="text">
3979     <p>"OK" -
3980     </p>
3981     <blockquote class="text">
3982     <p>on success
3983     </p>
3984 schoenebeck 708 </blockquote><p>
3985 senoner 542
3986 schoenebeck 708 </p>
3987 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3988     </p>
3989     <blockquote class="text">
3990     <p>if audio output device was set, but there are noteworthy
3991     issue(s) related, providing an appropriate warning code and
3992     warning message
3993     </p>
3994 schoenebeck 708 </blockquote><p>
3995 senoner 542
3996 schoenebeck 708 </p>
3997 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3998     </p>
3999     <blockquote class="text">
4000     <p>in case it failed, providing an appropriate error code and error message
4001     </p>
4002 schoenebeck 708 </blockquote><p>
4003 senoner 542
4004 schoenebeck 708 </p>
4005     </blockquote><p>
4006 senoner 542
4007 schoenebeck 708 </p>
4008 senoner 542 <p>Examples:
4009     </p>
4010 schoenebeck 708 <p>
4011     </p>
4012 senoner 542 <blockquote class="text">
4013     <p>
4014     </p>
4015 schoenebeck 708 </blockquote><p>
4016 senoner 542
4017 schoenebeck 708 </p>
4018 schoenebeck 575 <a name="rfc.section.6.4.15"></a><h4><a name="SET CHANNEL AUDIO_OUTPUT_TYP">6.4.15</a>&nbsp;Setting audio output type</h4>
4019 senoner 542
4020     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4021     </p>
4022     <p>The front-end can alter the audio output type on a specific sampler
4023     channel by sending the following command:
4024     </p>
4025 schoenebeck 708 <p>
4026     </p>
4027 senoner 542 <blockquote class="text">
4028     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4029     </p>
4030 schoenebeck 708 </blockquote><p>
4031 senoner 542
4032 schoenebeck 708 </p>
4033 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4034     &lt;sampler-channel&gt; is the respective sampler channel number.
4035     </p>
4036     <p>Possible Answers:
4037     </p>
4038 schoenebeck 708 <p>
4039     </p>
4040 senoner 542 <blockquote class="text">
4041     <p>"OK" -
4042     </p>
4043     <blockquote class="text">
4044     <p>on success
4045     </p>
4046 schoenebeck 708 </blockquote><p>
4047 senoner 542
4048 schoenebeck 708 </p>
4049 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4050     </p>
4051     <blockquote class="text">
4052     <p>if audio output type was set, but there are noteworthy
4053     issue(s) related, providing an appropriate warning code and
4054     warning message
4055     </p>
4056 schoenebeck 708 </blockquote><p>
4057 senoner 542
4058 schoenebeck 708 </p>
4059 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4060     </p>
4061     <blockquote class="text">
4062     <p>in case it failed, providing an appropriate error code and error message
4063     </p>
4064 schoenebeck 708 </blockquote><p>
4065 senoner 542
4066 schoenebeck 708 </p>
4067     </blockquote><p>
4068 senoner 542
4069 schoenebeck 708 </p>
4070 senoner 542 <p>Examples:
4071     </p>
4072 schoenebeck 708 <p>
4073     </p>
4074 senoner 542 <blockquote class="text">
4075     <p>
4076     </p>
4077 schoenebeck 708 </blockquote><p>
4078 senoner 542
4079 schoenebeck 708 </p>
4080 schoenebeck 575 <a name="rfc.section.6.4.16"></a><h4><a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16</a>&nbsp;Setting audio output channel</h4>
4081 senoner 542
4082     <p>The front-end can alter the audio output channel on a specific
4083     sampler channel by sending the following command:
4084     </p>
4085 schoenebeck 708 <p>
4086     </p>
4087 senoner 542 <blockquote class="text">
4088     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4089     </p>
4090 schoenebeck 708 </blockquote><p>
4091 senoner 542
4092 schoenebeck 708 </p>
4093 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4094 schoenebeck 708 as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
4095     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command, &lt;audio-out&gt; is the
4096 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4097     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4098     output device where &lt;audio-out&gt; should be routed to.
4099     </p>
4100     <p>Possible Answers:
4101     </p>
4102 schoenebeck 708 <p>
4103     </p>
4104 senoner 542 <blockquote class="text">
4105     <p>"OK" -
4106     </p>
4107     <blockquote class="text">
4108     <p>on success
4109     </p>
4110 schoenebeck 708 </blockquote><p>
4111 senoner 542
4112 schoenebeck 708 </p>
4113 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4114     </p>
4115     <blockquote class="text">
4116     <p>if audio output channel was set, but there are noteworthy
4117     issue(s) related, providing an appropriate warning code and
4118     warning message
4119     </p>
4120 schoenebeck 708 </blockquote><p>
4121 senoner 542
4122 schoenebeck 708 </p>
4123 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4124     </p>
4125     <blockquote class="text">
4126     <p>in case it failed, providing an appropriate error code and error message
4127     </p>
4128 schoenebeck 708 </blockquote><p>
4129 senoner 542
4130 schoenebeck 708 </p>
4131     </blockquote><p>
4132 senoner 542
4133 schoenebeck 708 </p>
4134 senoner 542 <p>Examples:
4135     </p>
4136 schoenebeck 708 <p>
4137     </p>
4138 senoner 542 <blockquote class="text">
4139     <p>
4140     </p>
4141 schoenebeck 708 </blockquote><p>
4142 senoner 542
4143 schoenebeck 708 </p>
4144 schoenebeck 575 <a name="rfc.section.6.4.17"></a><h4><a name="SET CHANNEL MIDI_INPUT_DEVICE">6.4.17</a>&nbsp;Setting MIDI input device</h4>
4145 senoner 542
4146     <p>The front-end can set the MIDI input device on a specific sampler
4147     channel by sending the following command:
4148     </p>
4149 schoenebeck 708 <p>
4150     </p>
4151 senoner 542 <blockquote class="text">
4152     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4153     </p>
4154 schoenebeck 708 </blockquote><p>
4155 senoner 542
4156 schoenebeck 708 </p>
4157 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4158 schoenebeck 708 as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
4159     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command
4160 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4161 schoenebeck 708 <a class="info" href="#CREATE MIDI_INPUT_DEVICE">"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class="info">Creating a MIDI input device</span><span>)</span></a>
4162     or <a class="info" href="#LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"<span> (</span><span class="info">Getting all created MIDI input device list</span><span>)</span></a> command.
4163 senoner 542 </p>
4164     <p>Possible Answers:
4165     </p>
4166 schoenebeck 708 <p>
4167     </p>
4168 senoner 542 <blockquote class="text">
4169     <p>"OK" -
4170     </p>
4171     <blockquote class="text">
4172     <p>on success
4173     </p>
4174 schoenebeck 708 </blockquote><p>
4175 senoner 542
4176 schoenebeck 708 </p>
4177 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4178     </p>
4179     <blockquote class="text">
4180     <p>if MIDI input device was set, but there are noteworthy
4181     issue(s) related, providing an appropriate warning code and
4182     warning message
4183     </p>
4184 schoenebeck 708 </blockquote><p>
4185 senoner 542
4186 schoenebeck 708 </p>
4187 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4188     </p>
4189     <blockquote class="text">
4190     <p>in case it failed, providing an appropriate error code and error message
4191     </p>
4192 schoenebeck 708 </blockquote><p>
4193 senoner 542
4194 schoenebeck 708 </p>
4195     </blockquote><p>
4196 senoner 542
4197 schoenebeck 708 </p>
4198 senoner 542 <p>Examples:
4199     </p>
4200 schoenebeck 708 <p>
4201     </p>
4202 senoner 542 <blockquote class="text">
4203     <p>
4204     </p>
4205 schoenebeck 708 </blockquote><p>
4206 senoner 542
4207 schoenebeck 708 </p>
4208 schoenebeck 575 <a name="rfc.section.6.4.18"></a><h4><a name="SET CHANNEL MIDI_INPUT_TYPE">6.4.18</a>&nbsp;Setting MIDI input type</h4>
4209 senoner 542
4210     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4211     </p>
4212     <p>The front-end can alter the MIDI input type on a specific sampler
4213     channel by sending the following command:
4214     </p>
4215 schoenebeck 708 <p>
4216     </p>
4217 senoner 542 <blockquote class="text">
4218     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4219     </p>
4220 schoenebeck 708 </blockquote><p>
4221 senoner 542
4222 schoenebeck 708 </p>
4223 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4224     &lt;sampler-channel&gt; is the respective sampler channel number.
4225     </p>
4226     <p>Possible Answers:
4227     </p>
4228 schoenebeck 708 <p>
4229     </p>
4230 senoner 542 <blockquote class="text">
4231     <p>"OK" -
4232     </p>
4233     <blockquote class="text">
4234     <p>on success
4235     </p>
4236 schoenebeck 708 </blockquote><p>
4237 senoner 542
4238 schoenebeck 708 </p>
4239 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4240     </p>
4241     <blockquote class="text">
4242     <p>if MIDI input type was set, but there are noteworthy
4243     issue(s) related, providing an appropriate warning code and
4244     warning message
4245     </p>
4246 schoenebeck 708 </blockquote><p>
4247 senoner 542
4248 schoenebeck 708 </p>
4249 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4250     </p>
4251     <blockquote class="text">
4252     <p>in case it failed, providing an appropriate error code and error message
4253     </p>
4254 schoenebeck 708 </blockquote><p>
4255 senoner 542
4256 schoenebeck 708 </p>
4257     </blockquote><p>
4258 senoner 542
4259 schoenebeck 708 </p>
4260 senoner 542 <p>Examples:
4261     </p>
4262 schoenebeck 708 <p>
4263     </p>
4264 senoner 542 <blockquote class="text">
4265     <p>
4266     </p>
4267 schoenebeck 708 </blockquote><p>
4268 senoner 542
4269 schoenebeck 708 </p>
4270 schoenebeck 575 <a name="rfc.section.6.4.19"></a><h4><a name="SET CHANNEL MIDI_INPUT_PORT">6.4.19</a>&nbsp;Setting MIDI input port</h4>
4271 senoner 542
4272     <p>The front-end can alter the MIDI input port on a specific sampler
4273     channel by sending the following command:
4274     </p>
4275 schoenebeck 708 <p>
4276     </p>
4277 senoner 542 <blockquote class="text">
4278     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4279     </p>
4280 schoenebeck 708 </blockquote><p>
4281 senoner 542
4282 schoenebeck 708 </p>
4283 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4284     MIDI input device connected to the sampler channel given by
4285     &lt;sampler-channel&gt;.
4286     </p>
4287     <p>Possible Answers:
4288     </p>
4289 schoenebeck 708 <p>
4290     </p>
4291 senoner 542 <blockquote class="text">
4292     <p>"OK" -
4293     </p>
4294     <blockquote class="text">
4295     <p>on success
4296     </p>
4297 schoenebeck 708 </blockquote><p>
4298 senoner 542
4299 schoenebeck 708 </p>
4300 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4301     </p>
4302     <blockquote class="text">
4303     <p>if MIDI input port was set, but there are noteworthy
4304     issue(s) related, providing an appropriate warning code and
4305     warning message
4306     </p>
4307 schoenebeck 708 </blockquote><p>
4308 senoner 542
4309 schoenebeck 708 </p>
4310 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4311     </p>
4312     <blockquote class="text">
4313 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4314 senoner 542 </p>
4315 schoenebeck 708 </blockquote><p>
4316 senoner 542
4317 schoenebeck 708 </p>
4318     </blockquote><p>
4319 senoner 542
4320 schoenebeck 708 </p>
4321 senoner 542 <p>Examples:
4322     </p>
4323 schoenebeck 708 <p>
4324     </p>
4325 senoner 542 <blockquote class="text">
4326     <p>
4327     </p>
4328 schoenebeck 708 </blockquote><p>
4329 senoner 542
4330 schoenebeck 708 </p>
4331 schoenebeck 575 <a name="rfc.section.6.4.20"></a><h4><a name="SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20</a>&nbsp;Setting MIDI input channel</h4>
4332 senoner 542
4333     <p>The front-end can alter the MIDI channel a sampler channel should
4334     listen to by sending the following command:
4335     </p>
4336 schoenebeck 708 <p>
4337     </p>
4338 senoner 542 <blockquote class="text">
4339     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4340     </p>
4341 schoenebeck 708 </blockquote><p>
4342 senoner 542
4343 schoenebeck 708 </p>
4344 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4345     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4346     channels.
4347     </p>
4348     <p>Possible Answers:
4349     </p>
4350 schoenebeck 708 <p>
4351     </p>
4352 senoner 542 <blockquote class="text">
4353     <p>"OK" -
4354     </p>
4355     <blockquote class="text">
4356     <p>on success
4357     </p>
4358 schoenebeck 708 </blockquote><p>
4359 senoner 542
4360 schoenebeck 708 </p>
4361 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4362     </p>
4363     <blockquote class="text">
4364     <p>if MIDI input channel was set, but there are noteworthy
4365     issue(s) related, providing an appropriate warning code and
4366     warning message
4367     </p>
4368 schoenebeck 708 </blockquote><p>
4369 senoner 542
4370 schoenebeck 708 </p>
4371 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4372     </p>
4373     <blockquote class="text">
4374     <p>in case it failed, providing an appropriate error code and error message
4375     </p>
4376 schoenebeck 708 </blockquote><p>
4377 senoner 542
4378 schoenebeck 708 </p>
4379     </blockquote><p>
4380 senoner 542
4381 schoenebeck 708 </p>
4382 senoner 542 <p>Examples:
4383     </p>
4384 schoenebeck 708 <p>
4385     </p>
4386 senoner 542 <blockquote class="text">
4387     <p>
4388     </p>
4389 schoenebeck 708 </blockquote><p>
4390 senoner 542
4391 schoenebeck 708 </p>
4392 schoenebeck 575 <a name="rfc.section.6.4.21"></a><h4><a name="SET CHANNEL VOLUME">6.4.21</a>&nbsp;Setting channel volume</h4>
4393 senoner 542
4394     <p>The front-end can alter the volume of a sampler channel by sending
4395     the following command:
4396     </p>
4397 schoenebeck 708 <p>
4398     </p>
4399 senoner 542 <blockquote class="text">
4400     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4401     </p>
4402 schoenebeck 708 </blockquote><p>
4403 senoner 542
4404 schoenebeck 708 </p>
4405 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4406     smaller than 1.0 means attenuation, whereas a value greater than
4407     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4408     channel where this volume factor should be set.
4409     </p>
4410     <p>Possible Answers:
4411     </p>
4412 schoenebeck 708 <p>
4413     </p>
4414 senoner 542 <blockquote class="text">
4415     <p>"OK" -
4416     </p>
4417     <blockquote class="text">
4418     <p>on success
4419     </p>
4420 schoenebeck 708 </blockquote><p>
4421 senoner 542
4422 schoenebeck 708 </p>
4423 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4424     </p>
4425     <blockquote class="text">
4426     <p>if channel volume was set, but there are noteworthy
4427     issue(s) related, providing an appropriate warning code and
4428     warning message
4429     </p>
4430 schoenebeck 708 </blockquote><p>
4431 senoner 542
4432 schoenebeck 708 </p>
4433 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4434     </p>
4435     <blockquote class="text">
4436     <p>in case it failed, providing an appropriate error code and error message
4437     </p>
4438 schoenebeck 708 </blockquote><p>
4439 senoner 542
4440 schoenebeck 708 </p>
4441     </blockquote><p>
4442 senoner 542
4443 schoenebeck 708 </p>
4444 senoner 542 <p>Examples:
4445     </p>
4446 schoenebeck 708 <p>
4447     </p>
4448 senoner 542 <blockquote class="text">
4449     <p>
4450     </p>
4451 schoenebeck 708 </blockquote><p>
4452 senoner 542
4453 schoenebeck 708 </p>
4454     <a name="rfc.section.6.4.22"></a><h4><a name="SET CHANNEL MUTE">6.4.22</a>&nbsp;Muting a sampler channel</h4>
4455 senoner 542
4456 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4457     channel by sending the following command:
4458     </p>
4459     <p>
4460     </p>
4461     <blockquote class="text">
4462     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4463     </p>
4464     </blockquote><p>
4465    
4466     </p>
4467     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4468     number as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
4469     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command and
4470     &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4471     to unmute the channel.
4472     </p>
4473     <p>Possible Answers:
4474     </p>
4475     <p>
4476     </p>
4477     <blockquote class="text">
4478     <p>"OK" -
4479     </p>
4480     <blockquote class="text">
4481     <p>on success
4482     </p>
4483     </blockquote><p>
4484    
4485     </p>
4486     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4487     </p>
4488     <blockquote class="text">
4489     <p>if the channel was muted/unmuted, but there are noteworthy
4490     issue(s) related, providing an appropriate warning code and
4491     warning message
4492     </p>
4493     </blockquote><p>
4494    
4495     </p>
4496     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4497     </p>
4498     <blockquote class="text">
4499     <p>in case it failed, providing an appropriate error code and error message
4500     </p>
4501     </blockquote><p>
4502    
4503     </p>
4504     </blockquote><p>
4505    
4506     </p>
4507     <p>Examples:
4508     </p>
4509     <p>
4510     </p>
4511     <blockquote class="text">
4512     <p>
4513     </p>
4514     </blockquote><p>
4515    
4516     </p>
4517     <a name="rfc.section.6.4.23"></a><h4><a name="SET CHANNEL SOLO">6.4.23</a>&nbsp;Soloing a sampler channel</h4>
4518    
4519     <p>The front-end can solo/unsolo a specific sampler channel
4520     by sending the following command:
4521     </p>
4522     <p>
4523     </p>
4524     <blockquote class="text">
4525     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4526     </p>
4527     </blockquote><p>
4528    
4529     </p>
4530     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4531     number as returned by the <a class="info" href="#ADD CHANNEL">"ADD CHANNEL"<span> (</span><span class="info">Adding a new sampler channel</span><span>)</span></a>
4532     or <a class="info" href="#LIST CHANNELS">"LIST CHANNELS"<span> (</span><span class="info">Getting all created sampler channel list</span><span>)</span></a> command and
4533     &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4534     to unsolo the channel.
4535     </p>
4536     <p>Possible Answers:
4537     </p>
4538     <p>
4539     </p>
4540     <blockquote class="text">
4541     <p>"OK" -
4542     </p>
4543     <blockquote class="text">
4544     <p>on success
4545     </p>
4546     </blockquote><p>
4547    
4548     </p>
4549     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4550     </p>
4551     <blockquote class="text">
4552     <p>if the channel was soloed/unsoloed, but there are noteworthy
4553     issue(s) related, providing an appropriate warning code and
4554     warning message
4555     </p>
4556     </blockquote><p>
4557    
4558     </p>
4559     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4560     </p>
4561     <blockquote class="text">
4562     <p>in case it failed, providing an appropriate error code and error message
4563     </p>
4564     </blockquote><p>
4565    
4566     </p>
4567     </blockquote><p>
4568    
4569     </p>
4570     <p>Examples:
4571     </p>
4572     <p>
4573     </p>
4574     <blockquote class="text">
4575     <p>
4576     </p>
4577     </blockquote><p>
4578    
4579     </p>
4580     <a name="rfc.section.6.4.24"></a><h4><a name="RESET CHANNEL">6.4.24</a>&nbsp;Resetting a sampler channel</h4>
4581    
4582 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
4583     </p>
4584 schoenebeck 708 <p>
4585     </p>
4586 senoner 542 <blockquote class="text">
4587     <p>RESET CHANNEL &lt;sampler-channel&gt;
4588     </p>
4589 schoenebeck 708 </blockquote><p>
4590 senoner 542
4591 schoenebeck 708 </p>
4592 senoner 542 <p>
4593     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
4594     This will cause the engine on that sampler channel, its voices and
4595     eventually disk streams and all control and status variables to be
4596     reset.
4597     </p>
4598     <p>Possible Answers:
4599     </p>
4600 schoenebeck 708 <p>
4601     </p>
4602 senoner 542 <blockquote class="text">
4603     <p>"OK" -
4604     </p>
4605     <blockquote class="text">
4606     <p>on success
4607     </p>
4608 schoenebeck 708 </blockquote><p>
4609 senoner 542
4610 schoenebeck 708 </p>
4611 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4612     </p>
4613     <blockquote class="text">
4614     <p>if channel was reset, but there are noteworthy issue(s)
4615     related, providing an appropriate warning code and warning
4616     message
4617     </p>
4618 schoenebeck 708 </blockquote><p>
4619 senoner 542
4620 schoenebeck 708 </p>
4621 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4622     </p>
4623     <blockquote class="text">
4624     <p>in case it failed, providing an appropriate error code and
4625     error message
4626     </p>
4627 schoenebeck 708 </blockquote><p>
4628 senoner 542
4629 schoenebeck 708 </p>
4630     </blockquote><p>
4631 senoner 542
4632 schoenebeck 708 </p>
4633 senoner 542 <p>Examples:
4634     </p>
4635 schoenebeck 708 <p>
4636     </p>
4637 senoner 542 <blockquote class="text">
4638     <p>
4639     </p>
4640 schoenebeck 708 </blockquote><p>
4641 senoner 542
4642 schoenebeck 708 </p>
4643 schoenebeck 575 <a name="rfc.section.6.5"></a><h4><a name="anchor12">6.5</a>&nbsp;Controlling connection</h4>
4644 senoner 542
4645     <p>The following commands are used to control the connection to LinuxSampler.
4646     </p>
4647 schoenebeck 575 <a name="rfc.section.6.5.1"></a><h4><a name="SUBSCRIBE">6.5.1</a>&nbsp;Register front-end for receiving event messages</h4>
4648 senoner 542
4649     <p>The front-end can register itself to the LinuxSampler application to
4650     be informed about noteworthy events by sending this command:
4651     </p>
4652 schoenebeck 708 <p>
4653     </p>
4654 senoner 542 <blockquote class="text">
4655     <p>SUBSCRIBE &lt;event-id&gt;
4656     </p>
4657 schoenebeck 708 </blockquote><p>
4658 senoner 542
4659 schoenebeck 708 </p>
4660 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
4661     client wants to subscribe to.
4662     </p>
4663     <p>Possible Answers:
4664     </p>
4665 schoenebeck 708 <p>
4666     </p>
4667 senoner 542 <blockquote class="text">
4668     <p>"OK" -
4669     </p>
4670     <blockquote class="text">
4671     <p>on success
4672     </p>
4673 schoenebeck 708 </blockquote><p>
4674 senoner 542
4675 schoenebeck 708 </p>
4676 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4677     </p>
4678     <blockquote class="text">
4679     <p>if registration succeeded, but there are noteworthy
4680     issue(s) related, providing an appropriate warning code and
4681     warning message
4682     </p>
4683 schoenebeck 708 </blockquote><p>
4684 senoner 542
4685 schoenebeck 708 </p>
4686 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4687     </p>
4688     <blockquote class="text">
4689     <p>in case it failed, providing an appropriate error code and
4690     error message
4691     </p>
4692 schoenebeck 708 </blockquote><p>
4693 senoner 542
4694 schoenebeck 708 </p>
4695     </blockquote><p>
4696 senoner 542
4697 schoenebeck 708 </p>
4698 senoner 542 <p>Examples:
4699     </p>
4700 schoenebeck 708 <p>
4701     </p>
4702 senoner 542 <blockquote class="text">
4703     <p>
4704     </p>
4705 schoenebeck 708 </blockquote><p>
4706 senoner 542
4707 schoenebeck 708 </p>
4708 schoenebeck 575 <a name="rfc.section.6.5.2"></a><h4><a name="UNSUBSCRIBE">6.5.2</a>&nbsp;Unregister front-end for not receiving event messages</h4>
4709 senoner 542
4710     <p>The front-end can unregister itself if it doesn't want to receive event
4711     messages anymore by sending the following command:
4712     </p>
4713 schoenebeck 708 <p>
4714     </p>
4715 senoner 542 <blockquote class="text">
4716     <p>UNSUBSCRIBE &lt;event-id&gt;
4717     </p>
4718 schoenebeck 708 </blockquote><p>
4719 senoner 542
4720 schoenebeck 708 </p>
4721 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
4722     client doesn't want to receive anymore.
4723     </p>
4724     <p>Possible Answers:
4725     </p>
4726 schoenebeck 708 <p>
4727     </p>
4728 senoner 542 <blockquote class="text">
4729     <p>"OK" -
4730     </p>
4731     <blockquote class="text">
4732     <p>on success
4733     </p>
4734 schoenebeck 708 </blockquote><p>
4735 senoner 542
4736 schoenebeck 708 </p>
4737 senoner 542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4738     </p>
4739     <blockquote class="text">
4740     <p>if unregistration succeeded, but there are noteworthy
4741     issue(s) related, providing an appropriate warning code and
4742     warning message
4743     </p>
4744 schoenebeck 708 </blockquote><p>
4745 senoner 542
4746 schoenebeck 708 </p>
4747 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4748     </p>
4749     <blockquote class="text">
4750     <p>in case it failed, providing an appropriate error code and
4751     error message
4752     </p>
4753 schoenebeck 708 </blockquote><p>
4754 senoner 542
4755 schoenebeck 708 </p>
4756     </blockquote><p>
4757 senoner 542
4758 schoenebeck 708 </p>
4759 senoner 542 <p>Examples:
4760     </p>
4761 schoenebeck 708 <p>
4762     </p>
4763 senoner 542 <blockquote class="text">
4764     <p>
4765     </p>
4766 schoenebeck 708 </blockquote><p>
4767 senoner 542
4768 schoenebeck 708 </p>
4769 schoenebeck 575 <a name="rfc.section.6.5.3"></a><h4><a name="SET ECHO">6.5.3</a>&nbsp;Enable or disable echo of commands</h4>
4770 senoner 542
4771     <p>To enable or disable back sending of commands to the client the following command can be used:
4772     </p>
4773 schoenebeck 708 <p>
4774     </p>
4775 senoner 542 <blockquote class="text">
4776     <p>SET ECHO &lt;value&gt;
4777     </p>
4778 schoenebeck 708 </blockquote><p>
4779 senoner 542
4780 schoenebeck 708 </p>
4781 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
4782     or "0" to disable echo mode. When echo mode is enabled, all
4783     commands send to LinuxSampler will be immediately send back and
4784     after this echo the actual response to the command will be
4785     returned. Echo mode will only be altered for the client connection
4786     that issued the "SET ECHO" command, not globally for all client
4787     connections.
4788     </p>
4789     <p>Possible Answers:
4790     </p>
4791 schoenebeck 708 <p>
4792     </p>
4793 senoner 542 <blockquote class="text">
4794     <p>"OK" -
4795     </p>
4796     <blockquote class="text">
4797     <p>usually
4798     </p>
4799 schoenebeck 708 </blockquote><p>
4800 senoner 542
4801 schoenebeck 708 </p>
4802 senoner 542 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4803     </p>
4804     <blockquote class="text">
4805     <p>on syntax error, e.g. non boolean value
4806     </p>
4807 schoenebeck 708 </blockquote><p>
4808 senoner 542
4809 schoenebeck 708 </p>
4810     </blockquote><p>
4811 senoner 542
4812 schoenebeck 708 </p>
4813 senoner 542 <p>Examples:
4814     </p>
4815 schoenebeck 708 <p>
4816     </p>
4817 senoner 542 <blockquote class="text">
4818     <p>
4819     </p>
4820 schoenebeck 708 </blockquote><p>
4821 senoner 542
4822 schoenebeck 708 </p>
4823 schoenebeck 575 <a name="rfc.section.6.5.4"></a><h4><a name="QUIT">6.5.4</a>&nbsp;Close client connection</h4>
4824 senoner 542
4825     <p>The client can close its network connection to LinuxSampler by sending the following command:
4826     </p>
4827 schoenebeck 708 <p>
4828     </p>
4829 senoner 542 <blockquote class="text">
4830     <p>QUIT
4831     </p>
4832 schoenebeck 708 </blockquote><p>
4833 senoner 542
4834 schoenebeck 708 </p>
4835 senoner 542 <p>This is probably more interesting for manual telnet connections to
4836     LinuxSampler than really useful for a front-end implementation.
4837     </p>
4838 schoenebeck 575 <a name="rfc.section.6.6"></a><h4><a name="anchor13">6.6</a>&nbsp;Global commands</h4>
4839 senoner 542
4840     <p>The following commands have global impact on the sampler.
4841     </p>
4842 schoenebeck 575 <a name="rfc.section.6.6.1"></a><h4><a name="RESET">6.6.1</a>&nbsp;Reset sampler</h4>
4843 senoner 542
4844     <p>The front-end can reset the whole sampler by sending the following command:
4845     </p>
4846 schoenebeck 708 <p>
4847     </p>
4848 senoner 542 <blockquote class="text">
4849     <p>RESET
4850     </p>
4851 schoenebeck 708 </blockquote><p>
4852 senoner 542
4853 schoenebeck 708 </p>
4854 senoner 542 <p>Possible Answers:
4855     </p>
4856 schoenebeck 708 <p>
4857     </p>
4858 senoner 542 <blockquote class="text">
4859     <p>"OK" -
4860     </p>
4861     <blockquote class="text">
4862     <p>always
4863     </p>
4864 schoenebeck 708 </blockquote><p>
4865 senoner 542
4866 schoenebeck 708 </p>
4867     </blockquote><p>
4868 senoner 542
4869 schoenebeck 708 </p>
4870 senoner 542 <p>Examples:
4871     </p>
4872 schoenebeck 708 <p>
4873     </p>
4874 senoner 542 <blockquote class="text">
4875     <p>
4876     </p>
4877 schoenebeck 708 </blockquote><p>
4878 senoner 542
4879 schoenebeck 708 </p>
4880 schoenebeck 575 <a name="rfc.section.6.6.2"></a><h4><a name="GET SERVER INFO">6.6.2</a>&nbsp;General sampler informations</h4>
4881    
4882     <p>The client can ask for general informations about the LinuxSampler
4883     instance by sending the following command:
4884     </p>
4885 schoenebeck 708 <p>
4886     </p>
4887 schoenebeck 575 <blockquote class="text">
4888     <p>GET SERVER INFO
4889     </p>
4890 schoenebeck 708 </blockquote><p>
4891 schoenebeck 575
4892 schoenebeck 708 </p>
4893 schoenebeck 575 <p>Possible Answers:
4894     </p>
4895 schoenebeck 708 <p>
4896     </p>
4897 schoenebeck 575 <blockquote class="text">
4898     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4899     Each answer line begins with the information category name
4900     followed by a colon and then a space character &lt;SP&gt; and finally
4901     the info character string to that information category. At the
4902     moment the following categories are defined:
4903 schoenebeck 708
4904 schoenebeck 575 </p>
4905 schoenebeck 708 <p>
4906     </p>
4907 schoenebeck 575 <blockquote class="text">
4908     <p>DESCRIPTION -
4909     </p>
4910     <blockquote class="text">
4911     <p>arbitrary textual description about the sampler
4912     </p>
4913 schoenebeck 708 </blockquote><p>
4914 schoenebeck 575
4915 schoenebeck 708 </p>
4916 schoenebeck 575 <p>VERSION -
4917     </p>
4918     <blockquote class="text">
4919     <p>version of the sampler
4920     </p>
4921 schoenebeck 708 </blockquote><p>
4922 schoenebeck 575
4923 schoenebeck 708 </p>
4924 schoenebeck 575 <p>PROTOCOL_VERSION -
4925     </p>
4926     <blockquote class="text">
4927     <p>version of the LSCP specification the sampler
4928 schoenebeck 708 complies with (see <a class="info" href="#LSCP versioning">Section&nbsp;2<span> (</span><span class="info">Versioning of this specification</span><span>)</span></a> for details)
4929 schoenebeck 575 </p>
4930 schoenebeck 708 </blockquote><p>
4931 schoenebeck 575
4932 schoenebeck 708 </p>
4933     </blockquote><p>
4934 schoenebeck 575
4935 schoenebeck 708 </p>
4936     </blockquote><p>
4937 schoenebeck 575
4938 schoenebeck 708 </p>
4939 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
4940     Other fields might be added in future.
4941     </p>
4942 senoner 542 <a name="command_syntax"></a><br /><hr />
4943     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
4944 schoenebeck 575 <a name="rfc.section.7"></a><h3>7.&nbsp;Command Syntax</h3>
4945 senoner 542
4946 schoenebeck 708 <p>The grammar of the control protocol as descibed in <a class="info" href="#control_commands">Section&nbsp;6<span> (</span><span class="info">Description for control commands</span><span>)</span></a>
4947     is defined below using Backus-Naur Form (BNF as described in <a class="info" href="#RFC2234">[RFC2234]<span> (</span><span class="info">Crocker, D. and P. Overell, &ldquo;Augmented BNF for Syntax Specifications,&rdquo; 1997.</span><span>)</span></a>)
4948 schoenebeck 575 where applicable.
4949 schoenebeck 708
4950 senoner 542 </p>
4951 schoenebeck 575 <p>input =
4952     </p>
4953     <blockquote class="text">
4954     <p>line LF
4955 schoenebeck 708
4956 schoenebeck 575 </p>
4957     <p>/ line CR LF
4958 schoenebeck 708
4959 schoenebeck 575 </p>
4960 schoenebeck 708 </blockquote><p>
4961 schoenebeck 575
4962 schoenebeck 708 </p>
4963 schoenebeck 575 <p>line =
4964     </p>
4965     <blockquote class="text">
4966     <p>/* epsilon (empty line ignored) */
4967 schoenebeck 708
4968 schoenebeck 575 </p>
4969     <p>/ comment
4970 schoenebeck 708
4971 schoenebeck 575 </p>
4972     <p>/ command
4973 schoenebeck 708
4974 schoenebeck 575 </p>
4975     <p>/ error
4976 schoenebeck 708
4977 schoenebeck 575 </p>
4978 schoenebeck 708 </blockquote><p>
4979 schoenebeck 575
4980 schoenebeck 708 </p>
4981 schoenebeck 575 <p>comment =
4982     </p>
4983     <blockquote class="text">
4984     <p>'#'
4985 schoenebeck 708
4986 schoenebeck 575 </p>
4987     <p>/ comment '#'
4988 schoenebeck 708
4989 schoenebeck 575 </p>
4990     <p>/ comment SP
4991 schoenebeck 708
4992 schoenebeck 575 </p>
4993     <p>/ comment number
4994 schoenebeck 708
4995 schoenebeck 575 </p>
4996     <p>/ comment string
4997 schoenebeck 708
4998 schoenebeck 575 </p>
4999 schoenebeck 708 </blockquote><p>
5000 schoenebeck 575
5001 schoenebeck 708 </p>
5002 schoenebeck 575 <p>command =
5003     </p>
5004     <blockquote class="text">
5005     <p>ADD SP CHANNEL
5006 schoenebeck 708
5007 schoenebeck 575 </p>
5008     <p>/ GET SP get_instruction
5009 schoenebeck 708
5010 schoenebeck 575 </p>
5011     <p>/ CREATE SP create_instruction
5012 schoenebeck 708
5013 schoenebeck 575 </p>
5014     <p>/ DESTROY SP destroy_instruction
5015 schoenebeck 708
5016 schoenebeck 575 </p>
5017     <p>/ LIST SP list_instruction
5018 schoenebeck 708
5019 schoenebeck 575 </p>
5020     <p>/ LOAD SP load_instruction
5021 schoenebeck 708
5022 schoenebeck 575 </p>
5023     <p>/ REMOVE SP CHANNEL SP sampler_channel
5024 schoenebeck 708
5025 schoenebeck 575 </p>
5026     <p>/ SET SP set_instruction
5027 schoenebeck 708
5028 schoenebeck 575 </p>
5029     <p>/ SUBSCRIBE SP subscribe_event
5030 schoenebeck 708
5031 schoenebeck 575 </p>
5032     <p>/ UNSUBSCRIBE SP unsubscribe_event
5033 schoenebeck 708
5034 schoenebeck 575 </p>
5035     <p>/ SELECT SP text
5036 schoenebeck 708
5037 schoenebeck 575 </p>
5038     <p>/ RESET SP CHANNEL SP sampler_channel
5039 schoenebeck 708
5040 schoenebeck 575 </p>
5041     <p>/ RESET
5042 schoenebeck 708
5043 schoenebeck 575 </p>
5044     <p>/ QUIT
5045 schoenebeck 708
5046 schoenebeck 575 </p>
5047 schoenebeck 708 </blockquote><p>
5048 schoenebeck 575
5049 schoenebeck 708 </p>
5050 schoenebeck 575 <p>subscribe_event =
5051     </p>
5052     <blockquote class="text">
5053     <p>CHANNEL_COUNT
5054 schoenebeck 708
5055 schoenebeck 575 </p>
5056     <p>/ VOICE_COUNT
5057 schoenebeck 708
5058 schoenebeck 575 </p>
5059     <p>/ STREAM_COUNT
5060 schoenebeck 708
5061 schoenebeck 575 </p>
5062     <p>/ BUFFER_FILL
5063 schoenebeck 708
5064 schoenebeck 575 </p>
5065     <p>/ CHANNEL_INFO
5066 schoenebeck 708
5067 schoenebeck 575 </p>
5068     <p>/ MISCELLANEOUS
5069 schoenebeck 708
5070 schoenebeck 575 </p>
5071 schoenebeck 708 </blockquote><p>
5072 schoenebeck 575
5073 schoenebeck 708 </p>
5074 schoenebeck 575 <p>unsubscribe_event =
5075     </p>
5076     <blockquote class="text">
5077     <p>CHANNEL_COUNT
5078 schoenebeck 708
5079 schoenebeck 575 </p>
5080     <p>/ VOICE_COUNT
5081 schoenebeck 708
5082 schoenebeck 575 </p>
5083     <p>/ STREAM_COUNT
5084 schoenebeck 708
5085 schoenebeck 575 </p>
5086     <p>/ BUFFER_FILL
5087 schoenebeck 708
5088 schoenebeck 575 </p>
5089     <p>/ CHANNEL_INFO
5090 schoenebeck 708
5091 schoenebeck 575 </p>
5092     <p>/ MISCELLANEOUS
5093 schoenebeck 708
5094 schoenebeck 575 </p>
5095 schoenebeck 708 </blockquote><p>
5096 schoenebeck 575
5097 schoenebeck 708 </p>
5098 schoenebeck 575 <p>get_instruction =
5099     </p>
5100     <blockquote class="text">
5101     <p>AVAILABLE_ENGINES
5102 schoenebeck 708
5103 schoenebeck 575 </p>
5104     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
5105 schoenebeck 708
5106 schoenebeck 575 </p>
5107     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
5108 schoenebeck 708
5109 schoenebeck 575 </p>
5110     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
5111 schoenebeck 708
5112 schoenebeck 575 </p>
5113     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
5114 schoenebeck 708
5115 schoenebeck 575 </p>
5116     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
5117 schoenebeck 708
5118 schoenebeck 575 </p>
5119     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
5120 schoenebeck 708
5121 schoenebeck 575 </p>
5122     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
5123 schoenebeck 708
5124 schoenebeck 575 </p>
5125     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
5126 schoenebeck 708
5127 schoenebeck 575 </p>
5128     <p>/ AUDIO_OUTPUT_DEVICES
5129 schoenebeck 708
5130 schoenebeck 575 </p>
5131     <p>/ MIDI_INPUT_DEVICES
5132 schoenebeck 708
5133 schoenebeck 575 </p>
5134     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
5135 schoenebeck 708
5136 schoenebeck 575 </p>
5137     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
5138 schoenebeck 708
5139 schoenebeck 575 </p>
5140     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
5141 schoenebeck 708
5142 schoenebeck 575 </p>
5143     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
5144 schoenebeck 708
5145 schoenebeck 575 </p>
5146     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
5147 schoenebeck 708
5148 schoenebeck 575 </p>
5149     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
5150 schoenebeck 708
5151 schoenebeck 575 </p>
5152     <p>/ CHANNELS
5153 schoenebeck 708
5154 schoenebeck 575 </p>
5155     <p>/ CHANNEL SP INFO SP sampler_channel
5156 schoenebeck 708
5157 schoenebeck 575 </p>
5158     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
5159 schoenebeck 708
5160 schoenebeck 575 </p>
5161     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
5162 schoenebeck 708
5163 schoenebeck 575 </p>
5164     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
5165 schoenebeck 708
5166 schoenebeck 575 </p>
5167     <p>/ ENGINE SP INFO SP engine_name
5168 schoenebeck 708
5169 schoenebeck 575 </p>
5170     <p>/ SERVER SP INFO
5171 schoenebeck 708
5172 schoenebeck 575 </p>
5173 schoenebeck 708 </blockquote><p>
5174 schoenebeck 575
5175 schoenebeck 708 </p>
5176 schoenebeck 575 <p>set_instruction =
5177     </p>
5178     <blockquote class="text">
5179     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
5180 schoenebeck 708
5181 schoenebeck 575 </p>
5182     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
5183 schoenebeck 708
5184 schoenebeck 575 </p>
5185     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
5186 schoenebeck 708
5187 schoenebeck 575 </p>
5188     <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
5189 schoenebeck 708
5190 schoenebeck 575 </p>
5191     <p>/ CHANNEL SP set_chan_instruction
5192 schoenebeck 708
5193 schoenebeck 575 </p>
5194     <p>/ ECHO SP boolean
5195 schoenebeck 708
5196 schoenebeck 575 </p>
5197 schoenebeck 708 </blockquote><p>
5198 schoenebeck 575
5199 schoenebeck 708 </p>
5200 schoenebeck 575 <p>create_instruction =
5201     </p>
5202     <blockquote class="text">
5203     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
5204 schoenebeck 708
5205 schoenebeck 575 </p>
5206     <p>/ AUDIO_OUTPUT_DEVICE SP string
5207 schoenebeck 708
5208 schoenebeck 575 </p>
5209     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
5210 schoenebeck 708
5211 schoenebeck 575 </p>
5212     <p>/ MIDI_INPUT_DEVICE SP string
5213 schoenebeck 708
5214 schoenebeck 575 </p>
5215 schoenebeck 708 </blockquote><p>
5216 schoenebeck 575
5217 schoenebeck 708 </p>
5218 schoenebeck 575 <p>destroy_instruction =
5219     </p>
5220     <blockquote class="text">
5221     <p>AUDIO_OUTPUT_DEVICE SP number
5222 schoenebeck 708
5223 schoenebeck 575 </p>
5224     <p>/ MIDI_INPUT_DEVICE SP number
5225 schoenebeck 708
5226 schoenebeck 575 </p>
5227 schoenebeck 708 </blockquote><p>
5228 schoenebeck 575
5229 schoenebeck 708 </p>
5230 schoenebeck 575 <p>load_instruction =
5231     </p>
5232     <blockquote class="text">
5233     <p>INSTRUMENT SP load_instr_args
5234 schoenebeck 708
5235 schoenebeck 575 </p>
5236     <p>/ ENGINE SP load_engine_args
5237 schoenebeck 708
5238 schoenebeck 575 </p>
5239 schoenebeck 708 </blockquote><p>
5240 schoenebeck 575
5241 schoenebeck 708 </p>
5242 schoenebeck 575 <p>set_chan_instruction =
5243     </p>
5244     <blockquote class="text">
5245     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
5246 schoenebeck 708
5247 schoenebeck 575 </p>
5248     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
5249 schoenebeck 708
5250 schoenebeck 575 </p>
5251     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
5252 schoenebeck 708
5253 schoenebeck 575 </p>
5254     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
5255 schoenebeck 708
5256 schoenebeck 575 </p>
5257     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
5258 schoenebeck 708
5259 schoenebeck 575 </p>
5260     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
5261 schoenebeck 708
5262 schoenebeck 575 </p>
5263     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
5264 schoenebeck 708
5265 schoenebeck 575 </p>
5266     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
5267 schoenebeck 708
5268 schoenebeck 575 </p>
5269     <p>/ VOLUME SP sampler_channel SP volume_value
5270 schoenebeck 708
5271 schoenebeck 575 </p>
5272 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
5273 schoenebeck 575
5274 schoenebeck 708 </p>
5275     <p>/ SOLO SP sampler_channel SP boolean
5276    
5277     </p>
5278     </blockquote><p>
5279    
5280     </p>
5281 schoenebeck 575 <p>key_val_list =
5282     </p>
5283     <blockquote class="text">
5284     <p>string '=' param_val_list
5285 schoenebeck 708
5286 schoenebeck 575 </p>
5287     <p>/ key_val_list SP string '=' param_val_list
5288 schoenebeck 708
5289 schoenebeck 575 </p>
5290 schoenebeck 708 </blockquote><p>
5291 schoenebeck 575
5292 schoenebeck 708 </p>
5293 schoenebeck 575 <p>buffer_size_type =
5294     </p>
5295     <blockquote class="text">
5296     <p>BYTES
5297 schoenebeck 708
5298 schoenebeck 575 </p>
5299     <p>/ PERCENTAGE
5300 schoenebeck 708
5301 schoenebeck 575 </p>
5302 schoenebeck 708 </blockquote><p>
5303 schoenebeck 575
5304 schoenebeck 708 </p>
5305 schoenebeck 575 <p>list_instruction =
5306     </p>
5307     <blockquote class="text">
5308     <p>AUDIO_OUTPUT_DEVICES
5309 schoenebeck 708
5310 schoenebeck 575 </p>
5311     <p>/ MIDI_INPUT_DEVICES
5312 schoenebeck 708
5313 schoenebeck 575 </p>
5314     <p>/ CHANNELS
5315 schoenebeck 708
5316 schoenebeck 575 </p>
5317     <p>/ AVAILABLE_ENGINES
5318 schoenebeck 708
5319 schoenebeck 575 </p>
5320     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
5321 schoenebeck 708
5322 schoenebeck 575 </p>
5323     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
5324 schoenebeck 708
5325 schoenebeck 575 </p>
5326 schoenebeck 708 </blockquote><p>
5327 schoenebeck 575
5328 schoenebeck 708 </p>
5329 schoenebeck 575 <p>load_instr_args =
5330     </p>
5331     <blockquote class="text">
5332     <p>filename SP instrument_index SP sampler_channel
5333 schoenebeck 708
5334 schoenebeck 575 </p>
5335     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
5336 schoenebeck 708
5337 schoenebeck 575 </p>
5338 schoenebeck 708 </blockquote><p>
5339 schoenebeck 575
5340 schoenebeck 708 </p>
5341 schoenebeck 575 <p>load_engine_args =
5342     </p>
5343     <blockquote class="text">
5344     <p>engine_name SP sampler_channel
5345 schoenebeck 708
5346 schoenebeck 575 </p>
5347 schoenebeck 708 </blockquote><p>
5348 schoenebeck 575
5349 schoenebeck 708 </p>
5350 schoenebeck 575 <p>device_index =
5351     </p>
5352     <blockquote class="text">
5353     <p>number
5354 schoenebeck 708
5355 schoenebeck 575 </p>
5356 schoenebeck 708 </blockquote><p>
5357 schoenebeck 575
5358 schoenebeck 708 </p>
5359 schoenebeck 575 <p>audio_channel_index =
5360     </p>
5361     <blockquote class="text">
5362     <p>number
5363 schoenebeck 708
5364 schoenebeck 575 </p>
5365 schoenebeck 708 </blockquote><p>
5366 schoenebeck 575
5367 schoenebeck 708 </p>
5368 schoenebeck 575 <p>audio_output_type_name =
5369     </p>
5370     <blockquote class="text">
5371     <p>string
5372 schoenebeck 708
5373 schoenebeck 575 </p>
5374 schoenebeck 708 </blockquote><p>
5375 schoenebeck 575
5376 schoenebeck 708 </p>
5377 schoenebeck 575 <p>midi_input_port_index =
5378     </p>
5379     <blockquote class="text">
5380     <p>number
5381 schoenebeck 708
5382 schoenebeck 575 </p>
5383 schoenebeck 708 </blockquote><p>
5384 schoenebeck 575
5385 schoenebeck 708 </p>
5386 schoenebeck 575 <p>midi_input_channel_index =
5387     </p>
5388     <blockquote class="text">
5389     <p>number
5390 schoenebeck 708
5391 schoenebeck 575 </p>
5392     <p>/ ALL
5393 schoenebeck 708
5394 schoenebeck 575 </p>
5395 schoenebeck 708 </blockquote><p>
5396 schoenebeck 575
5397 schoenebeck 708 </p>
5398 schoenebeck 575 <p>midi_input_type_name =
5399     </p>
5400     <blockquote class="text">
5401     <p>string
5402 schoenebeck 708
5403 schoenebeck 575 </p>
5404 schoenebeck 708 </blockquote><p>
5405 schoenebeck 575
5406 schoenebeck 708 </p>
5407 schoenebeck 575 <p>volume_value =
5408     </p>
5409     <blockquote class="text">
5410     <p>dotnum
5411 schoenebeck 708
5412 schoenebeck 575 </p>
5413     <p>/ number
5414 schoenebeck 708
5415 schoenebeck 575 </p>
5416 schoenebeck 708 </blockquote><p>
5417 schoenebeck 575
5418 schoenebeck 708 </p>
5419 schoenebeck 575 <p>sampler_channel =
5420     </p>
5421     <blockquote class="text">
5422     <p>number
5423 schoenebeck 708
5424 schoenebeck 575 </p>
5425 schoenebeck 708 </blockquote><p>
5426 schoenebeck 575
5427 schoenebeck 708 </p>
5428 schoenebeck 575 <p>instrument_index =
5429     </p>
5430     <blockquote class="text">
5431     <p>number
5432 schoenebeck 708
5433 schoenebeck 575 </p>
5434 schoenebeck 708 </blockquote><p>
5435 schoenebeck 575
5436 schoenebeck 708 </p>
5437 schoenebeck 575 <p>engine_name =
5438     </p>
5439     <blockquote class="text">
5440     <p>string
5441 schoenebeck 708
5442 schoenebeck 575 </p>
5443 schoenebeck 708 </blockquote><p>
5444 schoenebeck 575
5445 schoenebeck 708 </p>
5446 schoenebeck 575 <p>filename =
5447     </p>
5448     <blockquote class="text">
5449     <p>stringval
5450 schoenebeck 708
5451 schoenebeck 575 </p>
5452 schoenebeck 708 </blockquote><p>
5453 schoenebeck 575
5454 schoenebeck 708 </p>
5455 schoenebeck 575 <p>param_val_list =
5456     </p>
5457     <blockquote class="text">
5458     <p>param_val
5459 schoenebeck 708
5460 schoenebeck 575 </p>
5461     <p>/ param_val_list','param_val
5462 schoenebeck 708
5463 schoenebeck 575 </p>
5464 schoenebeck 708 </blockquote><p>
5465 schoenebeck 575
5466 schoenebeck 708 </p>
5467 schoenebeck 575 <p>param_val =
5468     </p>
5469     <blockquote class="text">
5470     <p>string
5471 schoenebeck 708
5472 schoenebeck 575 </p>
5473     <p>/ '\'' string '\''
5474 schoenebeck 708
5475 schoenebeck 575 </p>
5476     <p>/ '\"' string '\"'
5477 schoenebeck 708
5478 schoenebeck 575 </p>
5479     <p>/ number
5480 schoenebeck 708
5481 schoenebeck 575 </p>
5482     <p>/ dotnum
5483 schoenebeck 708
5484 schoenebeck 575 </p>
5485 schoenebeck 708 </blockquote><p>
5486 schoenebeck 575
5487 schoenebeck 708 </p>
5488 senoner 542 <a name="events"></a><br /><hr />
5489     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
5490 schoenebeck 575 <a name="rfc.section.8"></a><h3>8.&nbsp;Events</h3>
5491 senoner 542
5492     <p>This chapter will describe all currently defined events supported by LinuxSampler.
5493     </p>
5494 schoenebeck 575 <a name="rfc.section.8.1"></a><h4><a name="SUBSCRIBE CHANNEL">8.1</a>&nbsp;Number of sampler channels changed</h4>
5495 senoner 542
5496     <p>Client may want to be notified when the total number of channels on the
5497     back-end changes by issuing the following command:
5498     </p>
5499 schoenebeck 708 <p>
5500     </p>
5501 senoner 542 <blockquote class="text">
5502 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
5503 senoner 542 </p>
5504 schoenebeck 708 </blockquote><p>
5505 senoner 542
5506 schoenebeck 708 </p>
5507 senoner 542 <p>Server will start sending the following notification messages:
5508     </p>
5509 schoenebeck 708 <p>
5510     </p>
5511 senoner 542 <blockquote class="text">
5512 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
5513 senoner 542 </p>
5514 schoenebeck 708 </blockquote><p>
5515 senoner 542
5516 schoenebeck 708 </p>
5517 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
5518     of sampler channels.
5519     </p>
5520 schoenebeck 575 <a name="rfc.section.8.2"></a><h4><a name="SUBSCRIBE VOICE_COUNT">8.2</a>&nbsp;Number of active voices changed</h4>
5521 senoner 542
5522     <p>Client may want to be notified when the number of voices on the
5523     back-end changes by issuing the following command:
5524     </p>
5525 schoenebeck 708 <p>
5526     </p>
5527 senoner 542 <blockquote class="text">
5528     <p>SUBSCRIBE VOICE_COUNT
5529     </p>
5530 schoenebeck 708 </blockquote><p>
5531 senoner 542
5532 schoenebeck 708 </p>
5533 senoner 542 <p>Server will start sending the following notification messages:
5534     </p>
5535 schoenebeck 708 <p>
5536     </p>
5537 senoner 542 <blockquote class="text">
5538     <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;
5539     </p>
5540 schoenebeck 708 </blockquote><p>
5541 senoner 542
5542 schoenebeck 708 </p>
5543 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
5544     voice count change occurred and &lt;voices&gt; by the new number of
5545     active voices on that channel.
5546     </p>
5547 schoenebeck 575 <a name="rfc.section.8.3"></a><h4><a name="SUBSCRIBE STREAM_COUNT">8.3</a>&nbsp;Number of active disk streams changed</h4>
5548 senoner 542
5549     <p>Client may want to be notified when the number of streams on the back-end
5550     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
5551     </p>
5552 schoenebeck 708 <p>
5553     </p>
5554 senoner 542 <blockquote class="text">
5555     <p>SUBSCRIBE STREAM_COUNT
5556     </p>
5557 schoenebeck 708 </blockquote><p>
5558 senoner 542
5559 schoenebeck 708 </p>
5560 senoner 542 <p>Server will start sending the following notification messages:
5561     </p>
5562 schoenebeck 708 <p>
5563     </p>
5564 senoner 542 <blockquote class="text">
5565     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
5566     </p>
5567 schoenebeck 708 </blockquote><p>
5568 senoner 542
5569 schoenebeck 708 </p>
5570 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
5571     stream count change occurred and &lt;streams&gt; by the new number of
5572     active disk streams on that channel.
5573     </p>
5574 schoenebeck 575 <a name="rfc.section.8.4"></a><h4><a name="SUBSCRIBE BUFFER_FILL">8.4</a>&nbsp;Disk stream buffer fill state changed</h4>
5575 senoner 542
5576     <p>Client may want to be notified when the buffer fill state of a disk stream
5577     on the back-end changes by issuing the following command:
5578     </p>
5579 schoenebeck 708 <p>
5580     </p>
5581 senoner 542 <blockquote class="text">
5582     <p>SUBSCRIBE BUFFER_FILL
5583     </p>
5584 schoenebeck 708 </blockquote><p>
5585 senoner 542
5586 schoenebeck 708 </p>
5587 senoner 542 <p>Server will start sending the following notification messages:
5588     </p>
5589 schoenebeck 708 <p>
5590     </p>
5591 senoner 542 <blockquote class="text">
5592     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
5593     </p>
5594 schoenebeck 708 </blockquote><p>
5595 senoner 542
5596 schoenebeck 708 </p>
5597 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
5598     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
5599 schoenebeck 708 buffer fill data for this channel as described in <a class="info" href="#GET CHANNEL BUFFER_FILL">Section&nbsp;6.4.13<span> (</span><span class="info">Current fill state of disk stream buffers</span><span>)</span></a>
5600     as if the <a class="info" href="#GET CHANNEL BUFFER_FILL">"GET CHANNEL BUFFER_FILL PERCENTAGE"<span> (</span><span class="info">Current fill state of disk stream buffers</span><span>)</span></a> command was issued on this channel.
5601 senoner 542 </p>
5602 schoenebeck 575 <a name="rfc.section.8.5"></a><h4><a name="SUBSCRIBE INFO">8.5</a>&nbsp;Channel information changed</h4>
5603 senoner 542
5604     <p>Client may want to be notified when changes were made to sampler channels on the
5605 schoenebeck 561 back-end by issuing the following command:
5606 senoner 542 </p>
5607 schoenebeck 708 <p>
5608     </p>
5609 senoner 542 <blockquote class="text">
5610 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
5611 senoner 542 </p>
5612 schoenebeck 708 </blockquote><p>
5613 senoner 542
5614 schoenebeck 708 </p>
5615 senoner 542 <p>Server will start sending the following notification messages:
5616     </p>
5617 schoenebeck 708 <p>
5618     </p>
5619 senoner 542 <blockquote class="text">
5620 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
5621 senoner 542 </p>
5622 schoenebeck 708 </blockquote><p>
5623 senoner 542
5624 schoenebeck 708 </p>
5625 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
5626     channel info change occurred. The front-end will have to send
5627     the respective command to actually get the channel info. Because these messages
5628     will be triggered by LSCP commands issued by other clients rather than real
5629     time events happening on the server, it is believed that an empty notification
5630     message is sufficient here.
5631     </p>
5632 schoenebeck 575 <a name="rfc.section.8.6"></a><h4><a name="SUBSCRIBE MISCELLANEOUS">8.6</a>&nbsp;Miscellaneous and debugging events</h4>
5633 senoner 542
5634     <p>Client may want to be notified of miscellaneous and debugging events occurring at
5635     the server by issuing the following command:
5636     </p>
5637 schoenebeck 708 <p>
5638     </p>
5639 senoner 542 <blockquote class="text">
5640     <p>SUBSCRIBE MISCELLANEOUS
5641     </p>
5642 schoenebeck 708 </blockquote><p>
5643 senoner 542
5644 schoenebeck 708 </p>
5645 senoner 542 <p>Server will start sending the following notification messages:
5646     </p>
5647 schoenebeck 708 <p>
5648     </p>
5649 senoner 542 <blockquote class="text">
5650     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
5651     </p>
5652 schoenebeck 708 </blockquote><p>
5653 senoner 542
5654 schoenebeck 708 </p>
5655 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
5656     wants to send to the client. Client MAY display this data to the
5657     user AS IS to facilitate debugging.
5658     </p>
5659 schoenebeck 575 <a name="anchor14"></a><br /><hr />
5660 senoner 542 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
5661 schoenebeck 575 <a name="rfc.section.9"></a><h3>9.&nbsp;Security Considerations</h3>
5662 senoner 542
5663     <p>As there is so far no method of authentication and authorization
5664     defined and so not required for a client applications to succeed to
5665     connect, running LinuxSampler might be a security risk for the host
5666     system the LinuxSampler instance is running on.
5667     </p>
5668 schoenebeck 575 <a name="anchor15"></a><br /><hr />
5669 senoner 542 <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
5670 schoenebeck 575 <a name="rfc.section.10"></a><h3>10.&nbsp;Acknowledgments</h3>
5671 senoner 542
5672     <p>This document has benefited greatly from the comments of the
5673     following people, discussed on the LinuxSampler developer's mailing
5674     list:
5675     </p>
5676 schoenebeck 708 <p>
5677     </p>
5678 senoner 542 <blockquote class="text">
5679     <p>Rui Nuno Capela
5680     </p>
5681     <p>Vladimir Senkov
5682     </p>
5683     <p>Mark Knecht
5684     </p>
5685 schoenebeck 561 <p>Grigor Iliev
5686     </p>
5687 schoenebeck 708 </blockquote><p>
5688 senoner 542
5689 schoenebeck 708 </p>
5690 senoner 542 <a name="rfc.references1"></a><br /><hr />
5691     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
5692 schoenebeck 708 <h3>11.&nbsp;References</h3>
5693 senoner 542 <table width="99%" border="0">
5694     <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
5695 schoenebeck 708 <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
5696 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
5697 schoenebeck 708 <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2234.txt">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
5698 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
5699 schoenebeck 708 <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc793.txt">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
5700 senoner 542 </table>
5701    
5702     <a name="rfc.authors"></a><br /><hr />
5703     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
5704     <h3>Author's Address</h3>
5705     <table width="99%" border="0" cellpadding="0" cellspacing="0">
5706     <tr><td class="author-text">&nbsp;</td>
5707     <td class="author-text">C.
5708     Schoenebeck</td></tr>
5709     <tr><td class="author-text">&nbsp;</td>
5710     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
5711     <tr><td class="author-text">&nbsp;</td>
5712     <td class="author-text">Max-Planck-Str. 39</td></tr>
5713     <tr><td class="author-text">&nbsp;</td>
5714     <td class="author-text">74081 Heilbronn</td></tr>
5715     <tr><td class="author-text">&nbsp;</td>
5716     <td class="author-text">Germany</td></tr>
5717 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
5718 senoner 542 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
5719     </table>
5720     <a name="rfc.copyright"></a><br /><hr />
5721     <table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
5722     <h3>Intellectual Property Statement</h3>
5723     <p class='copyright'>
5724     The IETF takes no position regarding the validity or scope of
5725     any intellectual property or other rights that might be claimed
5726     to pertain to the implementation or use of the technology
5727     described in this document or the extent to which any license
5728     under such rights might or might not be available; neither does
5729     it represent that it has made any effort to identify any such
5730     rights. Information on the IETF's procedures with respect to
5731     rights in standards-track and standards-related documentation
5732 schoenebeck 708 can be found in BCP&nbsp;11. Copies of claims of rights made
5733 senoner 542 available for publication and any assurances of licenses to
5734     be made available, or the result of an attempt made
5735     to obtain a general license or permission for the use of such
5736     proprietary rights by implementors or users of this
5737     specification can be obtained from the IETF Secretariat.</p>
5738     <p class='copyright'>
5739     The IETF invites any interested party to bring to its
5740     attention any copyrights, patents or patent applications, or
5741     other proprietary rights which may cover technology that may be
5742     required to practice this standard. Please address the
5743     information to the IETF Executive Director.</p>
5744     <h3>Full Copyright Statement</h3>
5745     <p class='copyright'>
5746 schoenebeck 708 Copyright &copy; The Internet Society (2005). All Rights Reserved.</p>
5747 senoner 542 <p class='copyright'>
5748     This document and translations of it may be copied and furnished to
5749     others, and derivative works that comment on or otherwise explain it
5750     or assist in its implementation may be prepared, copied, published and
5751     distributed, in whole or in part, without restriction of any kind,
5752     provided that the above copyright notice and this paragraph are
5753     included on all such copies and derivative works. However, this
5754     document itself may not be modified in any way, such as by removing
5755     the copyright notice or references to the Internet Society or other
5756     Internet organizations, except as needed for the purpose of
5757     developing Internet standards in which case the procedures for
5758     copyrights defined in the Internet Standards process must be
5759     followed, or as required to translate it into languages other than
5760     English.</p>
5761     <p class='copyright'>
5762     The limited permissions granted above are perpetual and will not be
5763     revoked by the Internet Society or its successors or assignees.</p>
5764     <p class='copyright'>
5765     This document and the information contained herein is provided on an
5766 schoenebeck 708 &ldquo;AS IS&rdquo; basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
5767 senoner 542 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
5768     BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
5769     HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
5770     MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</p>
5771     <h3>Acknowledgment</h3>
5772     <p class='copyright'>
5773     Funding for the RFC Editor function is currently provided by the
5774     Internet Society.</p>
5775     </body></html>

  ViewVC Help
Powered by ViewVC