/[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 940 - (hide annotations) (download) (as text)
Sat Nov 25 17:18:12 2006 UTC (17 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 215075 byte(s)
with the latest LS release (0.4.0) we also have a new
LSCP spec release (1.1) now

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

  ViewVC Help
Powered by ViewVC