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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2189 - (show annotations) (download) (as text)
Fri Jun 24 19:57:07 2011 UTC (8 years, 3 months ago) by iliev
File MIME type: text/html
File size: 505133 byte(s)
* updated LSCP specs

1 <!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 <meta name="generator" content="xml2rfc v1.34 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 <tr><td class="header">Expires: December 26, 2011</td><td class="header">June 24, 2011</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.5</h1>
151
152 <h3>Abstract</h3>
153
154 <p>The LinuxSampler Control Protocol (LSCP) is an
155 application-level protocol primarily intended for local and
156 remote controlling the LinuxSampler backend application, which is a
157 sophisticated server-like console application essentially playing
158 back audio samples and manipulating the samples in real time to
159 certain extent.
160 </p>
161 <h3>Status of this Memo</h3>
162 <p>
163 By submitting this Internet-Draft,
164 each author represents that any applicable patent or other IPR claims of which
165 he or she is aware have been or will be disclosed,
166 and any of which he or she becomes aware will be disclosed,
167 in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
168 <p>
169 Internet-Drafts are working documents of the Internet Engineering
170 Task Force (IETF), its areas, and its working groups.
171 Note that other groups may also distribute working documents as
172 Internet-Drafts.</p>
173 <p>
174 Internet-Drafts are draft documents valid for a maximum of six months
175 and may be updated, replaced, or obsoleted by other documents at any time.
176 It is inappropriate to use Internet-Drafts as reference material or to cite
177 them other than as &ldquo;work in progress.&rdquo;</p>
178 <p>
179 The list of current Internet-Drafts can be accessed at
180 <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
181 <p>
182 The list of Internet-Draft Shadow Directories can be accessed at
183 <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
184 <p>
185 This Internet-Draft will expire on December 26, 2011.</p>
186 <a name="toc"></a><br /><hr />
187 <h3>Table of Contents</h3>
188 <p class="toc">
189 <a href="#anchor1">1.</a>&nbsp;
190 Requirements notation<br />
191 <a href="#LSCP versioning">2.</a>&nbsp;
192 Versioning of this specification<br />
193 <a href="#anchor2">3.</a>&nbsp;
194 Introduction<br />
195 <a href="#anchor3">4.</a>&nbsp;
196 Focus of this protocol<br />
197 <a href="#anchor4">5.</a>&nbsp;
198 Communication Overview<br />
199 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
200 Request/response communication method<br />
201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
202 Result format<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
204 Subscribe/notify communication method<br />
205 <a href="#control_commands">6.</a>&nbsp;
206 Description for control commands<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
208 Ignored lines and comments<br />
209 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
210 Configuring audio drivers<br />
211 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
212 Getting amount of available audio output drivers<br />
213 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
214 Getting all available audio output drivers<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
216 Getting information about a specific audio
217 output driver<br />
218 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
219 Getting information about specific audio
220 output driver parameter<br />
221 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
222 Creating an audio output device<br />
223 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
224 Destroying an audio output device<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
226 Getting all created audio output device count<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
228 Getting all created audio output device list<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
230 Getting current settings of an audio output device<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
232 Changing settings of audio output devices<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
234 Getting information about an audio channel<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
236 Getting information about specific audio channel parameter<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
238 Changing settings of audio output channels<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
240 Configuring MIDI input drivers<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
242 Getting amount of available MIDI input drivers<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
244 Getting all available MIDI input drivers<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
246 Getting information about a specific MIDI input driver<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
248 Getting information about specific MIDI input driver parameter<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
250 Creating a MIDI input device<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
252 Destroying a MIDI input device<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
254 Getting all created MIDI input device count<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
256 Getting all created MIDI input device list<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
258 Getting current settings of a MIDI input device<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
260 Changing settings of MIDI input devices<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
262 Getting information about a MIDI port<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
264 Getting information about specific MIDI port parameter<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
266 Changing settings of MIDI input ports<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
268 Configuring sampler channels<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
270 Loading an instrument<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
272 Loading a sampler engine<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
274 Getting all created sampler channel count<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
276 Getting all created sampler channel list<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
278 Adding a new sampler channel<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
280 Removing a sampler channel<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
282 Getting amount of available engines<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
284 Getting all available engines<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
286 Getting information about an engine<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
288 Getting sampler channel information<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
290 Current number of active voices<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
292 Current number of active disk streams<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
294 Current fill state of disk stream buffers<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
296 Setting audio output device<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
298 Setting audio output type<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
300 Setting audio output channel<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
302 Setting MIDI input device<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
304 Setting MIDI input type<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
306 Setting MIDI input port<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
308 Setting MIDI input channel<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
310 Setting channel volume<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
312 Muting a sampler channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
314 Soloing a sampler channel<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
316 Assigning a MIDI instrument map to a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
318 Adding an effect send to a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
320 Removing an effect send from a sampler channel<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
322 Getting amount of effect sends on a sampler channel<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
324 Listing all effect sends on a sampler channel<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
326 Getting effect send information<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
328 Changing effect send's name<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
330 Altering effect send's audio routing<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.32.</a>&nbsp;
332 Assigning destination effect to an effect send<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.33.</a>&nbsp;
334 Removing destination effect from an effect send<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.34.</a>&nbsp;
336 Altering effect send's MIDI controller<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.35.</a>&nbsp;
338 Altering effect send's send level<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.36.</a>&nbsp;
340 Sending MIDI messages to sampler channel<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.37.</a>&nbsp;
342 Resetting a sampler channel<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
344 Controlling connection<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
346 Register front-end for receiving event messages<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
348 Unregister front-end for not receiving event messages<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
350 Enable or disable echo of commands<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
352 Close client connection<br />
353 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
354 Global commands<br />
355 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
356 Current number of active voices<br />
357 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
358 Maximum amount of active voices<br />
359 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
360 Current number of active disk streams<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
362 Reset sampler<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
364 General sampler informations<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
366 Getting global volume attenuation<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
368 Setting global volume attenuation<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
370 Getting global voice limit<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
372 Setting global voice limit<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
374 Getting global disk stream limit<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
376 Setting global disk stream limit<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
378 MIDI Instrument Mapping<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
380 Create a new MIDI instrument map<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
382 Delete one particular or all MIDI instrument maps<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
384 Get amount of existing MIDI instrument maps<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
386 Getting all created MIDI instrument maps<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
388 Getting MIDI instrument map information<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
390 Renaming a MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
392 Create or replace a MIDI instrument map entry<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
394 Getting ammount of MIDI instrument map entries<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
396 Getting indeces of all entries of a MIDI instrument map<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
398 Remove an entry from the MIDI instrument map<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
400 Get current settings of MIDI instrument map entry<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
402 Clear MIDI instrument map<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
404 Managing Instruments Database<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
406 Creating a new instrument directory<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
408 Deleting an instrument directory<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
410 Getting amount of instrument directories<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
412 Listing all directories in specific directory<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
414 Getting instrument directory information<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
416 Renaming an instrument directory<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
418 Moving an instrument directory<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
420 Copying instrument directories<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
422 Changing the description of directory<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
424 Finding directories<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
426 Adding instruments to the instruments database<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
428 Removing an instrument<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
430 Getting amount of instruments<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
432 Listing all instruments in specific directory<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
434 Getting instrument information<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
436 Renaming an instrument<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
438 Moving an instrument<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
440 Copying instruments<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
442 Changing the description of instrument<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
444 Finding instruments<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
446 Getting job status information<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
448 Formatting the instruments database<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
450 Checking for lost instrument files<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
452 Replacing an instrument file<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
454 Editing Instruments<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
456 Opening an appropriate instrument editor application<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
458 Managing Files<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
460 Retrieving amount of instruments of a file<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
462 Retrieving all instruments of a file<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
464 Retrieving informations about one instrument in a file<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
466 Managing Effects<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
468 Retrieve amount of available effects<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
470 Get list of available effects<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
472 Retrieving general information about an effect<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
474 Creating an instance of an effect by its portable ID<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
476 Creating an instance of an effect by its numerical ID<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
478 Destroy an effect instance<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
480 Retrieve amount of effect instances<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
482 Get list of effect instances<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
484 Retrieving current information about an effect instance<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
486 Retrieving information about an effect parameter<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
488 Altering an effect parameter<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
490 Retrieve amount of send effect chains<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
492 Retrieve list of send effect chains<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
494 Add send effect chain<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
496 Remove send effect chain<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
498 Retrieving information about a send effect chain<br />
499 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
500 Append effect instance to a send effect chain<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
502 Insert effect instance to a send effect chain<br />
503 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
504 Remove effect instance from send effect chain<br />
505 <a href="#command_syntax">7.</a>&nbsp;
506 Command Syntax<br />
507 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
508 Character Set and Escape Sequences<br />
509 <a href="#events">8.</a>&nbsp;
510 Events<br />
511 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
512 Number of audio output devices changed<br />
513 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
514 Audio output device's settings changed<br />
515 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
516 Number of MIDI input devices changed<br />
517 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
518 MIDI input device's settings changed<br />
519 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
520 Number of sampler channels changed<br />
521 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
522 MIDI data on a sampler channel arrived<br />
523 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
524 MIDI data on a MIDI input device arrived<br />
525 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
526 Number of active voices changed<br />
527 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
528 Number of active disk streams changed<br />
529 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
530 Disk stream buffer fill state changed<br />
531 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
532 Channel information changed<br />
533 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
534 Number of effect sends changed<br />
535 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
536 Effect send information changed<br />
537 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
538 Total number of active voices changed<br />
539 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
540 Total number of active disk streams changed<br />
541 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
542 Number of MIDI instrument maps changed<br />
543 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
544 MIDI instrument map information changed<br />
545 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
546 Number of MIDI instruments changed<br />
547 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
548 MIDI instrument information changed<br />
549 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
550 Global settings changed<br />
551 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
552 Number of database instrument directories changed<br />
553 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
554 Database instrument directory information changed<br />
555 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
556 Number of database instruments changed<br />
557 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
558 Database instrument information changed<br />
559 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
560 Database job status information changed<br />
561 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_COUNT">8.26.</a>&nbsp;
562 Number of effect instances changed<br />
563 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_INFO">8.27.</a>&nbsp;
564 Effect instance information changed<br />
565 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_COUNT">8.28.</a>&nbsp;
566 Number of send effect chains changed<br />
567 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_INFO">8.29.</a>&nbsp;
568 Send effect chain information changed<br />
569 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.30.</a>&nbsp;
570 Miscellaneous and debugging events<br />
571 <a href="#anchor14">9.</a>&nbsp;
572 Security Considerations<br />
573 <a href="#anchor15">10.</a>&nbsp;
574 Acknowledgments<br />
575 <a href="#rfc.references1">11.</a>&nbsp;
576 References<br />
577 <a href="#rfc.authors">&#167;</a>&nbsp;
578 Author's Address<br />
579 <a href="#rfc.copyright">&#167;</a>&nbsp;
580 Intellectual Property and Copyright Statements<br />
581 </p>
582 <br clear="all" />
583
584 <a name="anchor1"></a><br /><hr />
585 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
586 <a name="rfc.section.1"></a><h3>1.&nbsp;
587 Requirements notation</h3>
588
589 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
590 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
591 and "OPTIONAL" in this document are to be interpreted as
592 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>.
593 </p>
594 <p>This protocol is always case-sensitive if not explicitly
595 claimed the opposite.
596 </p>
597 <p>In examples, "C:" and "S:" indicate lines sent by the client
598 (front-end) and server (LinuxSampler) respectively. Lines in
599 examples must be interpreted as every line being CRLF
600 terminated (carriage return character followed by line feed
601 character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
602 thus the following example:
603 </p>
604 <p>
605 </p>
606 <blockquote class="text">
607 <p>C: "some line"
608 </p>
609 <p>&nbsp;&nbsp;&nbsp;"another line"
610 </p>
611 </blockquote><p>
612
613 </p>
614 <p>must actually be interpreted as client sending the following
615 message:
616 </p>
617 <p>
618 </p>
619 <blockquote class="text">
620 <p>"some line&lt;CR&gt;&lt;LF&gt;another
621 line&lt;CR&gt;&lt;LF&gt;"
622 </p>
623 </blockquote><p>
624
625 </p>
626 <p>where &lt;CR&gt; symbolizes the carriage return character and
627 &lt;LF&gt; the line feed character as defined in the ASCII
628 standard.
629 </p>
630 <p>Due to technical reasons, messages can arbitrary be
631 fragmented, means the following example:
632 </p>
633 <p>
634 </p>
635 <blockquote class="text">
636 <p>S: "abcd"
637 </p>
638 </blockquote><p>
639
640 </p>
641 <p>could also happen to be sent in three messages like in the
642 following sequence scenario:
643 </p>
644 <p>
645 </p>
646 <ul class="text">
647 <li>server sending message "a"
648 </li>
649 <li>followed by a delay (pause) with
650 arbitrary duration
651 </li>
652 <li>followed by server sending message
653 "bcd&lt;CR&gt;"
654 </li>
655 <li>again followed by a delay (pause) with arbitrary
656 duration
657 </li>
658 <li>followed by server sending the message
659 "&lt;LF&gt;"
660 </li>
661 </ul><p>
662
663 </p>
664 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
665 return and line feed characters respectively.
666 </p>
667 <a name="LSCP versioning"></a><br /><hr />
668 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
669 <a name="rfc.section.2"></a><h3>2.&nbsp;
670 Versioning of this specification</h3>
671
672 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
673 release of the LSCP specification will be tagged with a unique version
674 tuple. The version tuple consists at least of a major and minor version
675 number like:
676
677 </p>
678 <p>
679 </p>
680 <blockquote class="text">
681 <p>"1.2"
682 </p>
683 </blockquote><p>
684
685 </p>
686 <p>
687 In this example the major version number would be "1" and the minor
688 version number would be "2". Note that the version tuple might also
689 have more than two elements. The major version number defines a
690 group of backward compatible versions. That means a frontend is
691 compatible to the connected sampler if and only if the LSCP versions
692 to which each of the two parties complies to, match both of the
693 following rules:
694
695 </p>
696 <p>Compatibility:
697 </p>
698 <p>
699 </p>
700 <ol class="text">
701 <li>The frontend's LSCP major version and the sampler's LSCP
702 major version are exactly equal.
703 </li>
704 <li>The frontend's LSCP minor version is less or equal than
705 the sampler's LSCP minor version.
706 </li>
707 </ol><p>
708
709 </p>
710 <p>
711 Compatibility can only be claimed if both rules are true.
712 The frontend can use the
713 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
714 get the version of the LSCP specification the sampler complies with.
715
716 </p>
717 <a name="anchor2"></a><br /><hr />
718 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
719 <a name="rfc.section.3"></a><h3>3.&nbsp;
720 Introduction</h3>
721
722 <p>LinuxSampler is a so called software sampler application
723 capable to playback audio samples from a computer's Random
724 Access Memory (RAM) as well as directly streaming it from disk.
725 LinuxSampler is designed to be modular. It provides several so
726 called "sampler engines" where each engine is specialized for a
727 certain purpose. LinuxSampler has virtual channels which will be
728 referred in this document as "sampler channels". The channels
729 are in such way virtual as they can be connected to an
730 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
731 sampler channel 17 could be connected to an ALSA sequencer
732 device 64:0 and listening to MIDI channel 1 there). Each sampler
733 channel will be associated with an instance of one of the available
734 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
735 each sampler channel can be routed to an arbitrary audio output
736 method (ALSA / JACK) and an arbitrary audio output channel
737 there.
738 </p>
739 <a name="anchor3"></a><br /><hr />
740 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
741 <a name="rfc.section.4"></a><h3>4.&nbsp;
742 Focus of this protocol</h3>
743
744 <p>Main focus of this protocol is to provide a way to configure
745 a running LinuxSampler instance and to retrieve information
746 about it. The focus of this protocol is not to provide a way to
747 control synthesis parameters or even to trigger or release
748 notes. Or in other words; the focus are those functionalities
749 which are not covered by MIDI or which may at most be handled
750 via MIDI System Exclusive Messages.
751 </p>
752 <a name="anchor4"></a><br /><hr />
753 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
754 <a name="rfc.section.5"></a><h3>5.&nbsp;
755 Communication Overview</h3>
756
757 <p>There are two distinct methods of communication between a
758 running instance of LinuxSampler and one or more control
759 applications, so called "front-ends": a simple request/response
760 communication method used by the clients to give commands to the
761 server as well as to inquire about server's status and a
762 subscribe/notify communication method used by the client to
763 subscribe to and receive notifications of certain events as they
764 happen on the server. The latter needs more effort to be
765 implemented in the front-end application. The two communication
766 methods will be described next.
767 </p>
768 <a name="anchor5"></a><br /><hr />
769 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
770 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
771 Request/response communication method</h3>
772
773 <p>This simple communication method is based on
774 <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
775 front-end application establishes a TCP connection to the
776 LinuxSampler instance on a certain host system. Then the
777 front-end application will send certain ASCII based commands
778 as defined in this document (every command line must be CRLF
779 terminated - see "Conventions used in this document" at the
780 beginning of this document) and the LinuxSampler application
781 will response after a certain process time with an
782 appropriate ASCII based answer, also as defined in this
783 document. So this TCP communication is simply based on query
784 and answer paradigm. That way LinuxSampler is only able to
785 answer on queries from front-ends, but not able to
786 automatically send messages to the client if it's not asked
787 to. The fronted should not reconnect to LinuxSampler for
788 every single command, instead it should keep the connection
789 established and simply resend message(s) for subsequent
790 commands. To keep information in the front-end up-to-date
791 the front-end has to periodically send new requests to get
792 the current information from the LinuxSampler instance. This
793 is often referred to as "polling". While polling is simple
794 to implement and may be OK to use in some cases, there may
795 be disadvantages to polling such as network traffic overhead
796 and information being out of date.
797 It is possible for a client or several clients to open more
798 than one connection to the server at the same time. It is
799 also possible to send more than one request to the server
800 at the same time but if those requests are sent over the
801 same connection server MUST execute them sequentially. Upon
802 executing a request server will produce a result set and
803 send it to the client. Each and every request made by the
804 client MUST result in a result set being sent back to the
805 client. No other data other than a result set may be sent by
806 a server to a client. No result set may be sent to a client
807 without the client sending request to the server first. On
808 any particular connection, result sets MUST be sent in their
809 entirety without being interrupted by other result sets. If
810 several requests got queued up at the server they MUST be
811 processed in the order they were received and result sets
812 MUST be sent back in the same order.
813 </p>
814 <a name="anchor6"></a><br /><hr />
815 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
816 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
817 Result format</h3>
818
819 <p>Result set could be one of the following types:
820 </p>
821 <p>
822 </p>
823 <ol class="text">
824 <li>Normal
825 </li>
826 <li>Warning
827 </li>
828 <li>Error
829 </li>
830 </ol><p>
831
832 </p>
833 <p>Warning and Error result sets MUST be single line and
834 have the following format:
835 </p>
836 <p>
837 </p>
838 <ul class="text">
839 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
840 </li>
841 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
842 </li>
843 </ul><p>
844
845 </p>
846 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
847 numeric unique identifiers of the warning or error and
848 &lt;warning-message&gt; and &lt;error-message&gt; are
849 human readable descriptions of the warning or error
850 respectively.
851 </p>
852 <p>Examples:
853 </p>
854 <p>
855 </p>
856 <blockquote class="text">
857 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
858 </p>
859 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
860 </p>
861 </blockquote><p>
862
863 </p>
864 <p>
865 </p>
866 <blockquote class="text">
867 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
868 </p>
869 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
870 </p>
871 </blockquote><p>
872
873 </p>
874 <p>
875 </p>
876 <blockquote class="text">
877 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
878 </p>
879 <p>S: "ERR:9:There is no audio output device with index 123456."
880 </p>
881 </blockquote><p>
882
883 </p>
884 <p>Normal result sets could be:
885 </p>
886 <p>
887 </p>
888 <ol class="text">
889 <li>Empty
890 </li>
891 <li>Single line
892 </li>
893 <li>Multi-line
894 </li>
895 </ol><p>
896
897 </p>
898 <p> Empty result set is issued when the server only
899 needed to acknowledge the fact that the request was
900 received and it was processed successfully and no
901 additional information is available. This result set has
902 the following format:
903 </p>
904 <p>
905 </p>
906 <blockquote class="text">
907 <p>"OK"
908 </p>
909 </blockquote><p>
910
911 </p>
912 <p>Example:
913 </p>
914 <p>
915 </p>
916 <blockquote class="text">
917 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
918 </p>
919 <p>S: "OK"
920 </p>
921 </blockquote><p>
922
923 </p>
924 <p>Single line result sets are command specific. One
925 example of a single line result set is an empty line.
926 Multi-line result sets are command specific and may
927 include one or more lines of information. They MUST
928 always end with the following line:
929 </p>
930 <p>
931 </p>
932 <blockquote class="text">
933 <p>"."
934 </p>
935 </blockquote><p>
936
937 </p>
938 <p>Example:
939 </p>
940 <p>
941 </p>
942 <blockquote class="text">
943 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
944 </p>
945 <p>S: "DRIVER: ALSA"
946 </p>
947 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
948 </p>
949 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
950 </p>
951 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
952 </p>
953 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
954 </p>
955 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
956 </p>
957 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
958 </p>
959 <p>&nbsp;&nbsp;&nbsp;"."
960 </p>
961 </blockquote><p>
962
963 </p>
964 <p>In addition to above mentioned formats, warnings and
965 empty result sets MAY be indexed. In this case, they
966 have the following formats respectively:
967 </p>
968 <p>
969 </p>
970 <ul class="text">
971 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
972 </li>
973 <li>"OK[&lt;index&gt;]"
974 </li>
975 </ul><p>
976
977 </p>
978 <p>where &lt;index&gt; is command specific and is used
979 to indicate channel number that the result set was
980 related to or other integer value.
981 </p>
982 <p>Each line of the result set MUST end with
983 &lt;CRLF&gt;.
984 </p>
985 <p>Examples:
986 </p>
987 <p>
988 </p>
989 <blockquote class="text">
990 <p>C: "ADD CHANNEL"
991 </p>
992 <p>S: "OK[12]"
993 </p>
994 </blockquote><p>
995
996 </p>
997 <p>
998 </p>
999 <blockquote class="text">
1000 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
1001 </p>
1002 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
1003 </p>
1004 </blockquote><p>
1005
1006 </p>
1007 <a name="anchor7"></a><br /><hr />
1008 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1009 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
1010 Subscribe/notify communication method</h3>
1011
1012 <p>This more sophisticated communication method is actually
1013 only an extension of the simple request/response
1014 communication method. The front-end still uses a TCP
1015 connection and sends the same commands on the TCP
1016 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1017 commands that allow a client to tell the server that it is
1018 interested in receiving notifications about certain events
1019 as they happen on the server. The SUBSCRIBE command has the
1020 following syntax:
1021 </p>
1022 <p>
1023 </p>
1024 <blockquote class="text">
1025 <p>SUBSCRIBE &lt;event-id&gt;
1026 </p>
1027 </blockquote><p>
1028
1029 </p>
1030 <p>where &lt;event-id&gt; will be replaced by the respective
1031 event that client wants to subscribe to. Upon receiving such
1032 request, server SHOULD respond with OK and start sending
1033 EVENT notifications when a given even has occurred to the
1034 front-end when an event has occurred. It MAY be possible
1035 certain events may be sent before OK response during real
1036 time nature of their generation. Event messages have the
1037 following format:
1038 </p>
1039 <p>
1040 </p>
1041 <blockquote class="text">
1042 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1043 </p>
1044 </blockquote><p>
1045
1046 </p>
1047 <p>where &lt;event-id&gt; uniquely identifies the event that
1048 has occurred and &lt;custom-event-data&gt; is event
1049 specific.
1050 </p>
1051 <p>Several rules must be followed by the server when
1052 generating events:
1053 </p>
1054 <p>
1055 </p>
1056 <ol class="text">
1057 <li>Events MUST NOT be sent to any client who has not
1058 issued an appropriate SUBSCRIBE command.
1059 </li>
1060 <li>Events MUST only be sent using the same
1061 connection that was used to subscribe to them.
1062 </li>
1063 <li>When response is being sent to the client, event
1064 MUST be inserted in the stream before or after the
1065 response, but NOT in the middle. Same is true about
1066 the response. It should never be inserted in the
1067 middle of the event message as well as any other
1068 response.
1069 </li>
1070 </ol><p>
1071
1072 </p>
1073 <p>If the client is not interested in a particular event
1074 anymore it MAY issue UNSUBSCRIBE command using the following
1075 syntax:
1076 </p>
1077 <p>
1078 </p>
1079 <blockquote class="text">
1080 <p>UNSUBSCRIBE &lt;event-id&gt;
1081 </p>
1082 </blockquote><p>
1083
1084 </p>
1085 <p>where &lt;event-id&gt; will be replace by the respective
1086 event that client is no longer interested in receiving. For
1087 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1088 </p>
1089 <p>Example: the fill states of disk stream buffers have
1090 changed on sampler channel 4 and the LinuxSampler instance
1091 will react by sending the following message to all clients
1092 who subscribed to this event:
1093 </p>
1094 <p>
1095 </p>
1096 <blockquote class="text">
1097 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1098 </p>
1099 </blockquote><p>
1100
1101 </p>
1102 <p>Which means there are currently three active streams on
1103 sampler channel 4, where the stream with ID "35" is filled
1104 by 62%, stream with ID 33 is filled by 80% and stream with
1105 ID 37 is filled by 98%.
1106 </p>
1107 <p>Clients may choose to open more than one connection to
1108 the server and use some connections to receive notifications
1109 while using other connections to issue commands to the
1110 back-end. This is entirely legal and up to the
1111 implementation. This does not change the protocol in any way
1112 and no special restrictions exist on the server to allow or
1113 disallow this or to track what connections belong to what
1114 front-ends. Server will listen on a single port, accept
1115 multiple connections and support protocol described in this
1116 specification in it's entirety on this single port on each
1117 connection that it accepted.
1118 </p>
1119 <p>Due to the fact that TCP is used for this communication,
1120 dead peers will be detected automatically by the OS TCP
1121 stack. While it may take a while to detect dead peers if no
1122 traffic is being sent from server to client (TCP keep-alive
1123 timer is set to 2 hours on many OSes) it will not be an
1124 issue here as when notifications are sent by the server,
1125 dead client will be detected quickly.
1126 </p>
1127 <p>When connection is closed for any reason server MUST
1128 forget all subscriptions that were made on this connection.
1129 If client reconnects it MUST resubscribe to all events that
1130 it wants to receive.
1131 </p>
1132 <a name="control_commands"></a><br /><hr />
1133 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1134 <a name="rfc.section.6"></a><h3>6.&nbsp;
1135 Description for control commands</h3>
1136
1137 <p>This chapter will describe the available control commands
1138 that can be sent on the TCP connection in detail. Some certain
1139 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>
1140 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
1141 multiple-line responses. In this case LinuxSampler signals the
1142 end of the response by a "." (single dot) line.
1143 </p>
1144 <a name="anchor8"></a><br /><hr />
1145 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1146 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1147 Ignored lines and comments</h3>
1148
1149 <p>White lines, that is lines which only contain space and
1150 tabulator characters, and lines that start with a "#"
1151 character are ignored, thus it's possible for example to
1152 group commands and to place comments in a LSCP script
1153 file.
1154 </p>
1155 <a name="anchor9"></a><br /><hr />
1156 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1157 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1158 Configuring audio drivers</h3>
1159
1160 <p>Instances of drivers in LinuxSampler are called devices.
1161 You can use multiple audio devices simultaneously, e.g. to
1162 output the sound of one sampler channel using the ALSA audio
1163 output driver, and on another sampler channel you might want
1164 to use the JACK audio output driver. For particular audio
1165 output systems it's also possible to create several devices
1166 of the same audio output driver, e.g. two separate ALSA
1167 audio output devices for using two different sound cards at
1168 the same time. This chapter describes all commands to
1169 configure LinuxSampler's audio output devices and their
1170 parameters.
1171 </p>
1172 <p>Instead of defining commands and parameters for each
1173 driver individually, all possible parameters, their meanings
1174 and possible values have to be obtained at runtime. This
1175 makes the protocol a bit abstract, but has the advantage,
1176 that front-ends can be written independently of what drivers
1177 are currently implemented and what parameters these drivers
1178 are actually offering. This means front-ends can even handle
1179 drivers which are implemented somewhere in future without
1180 modifying the front-end at all.
1181 </p>
1182 <p>Note: examples in this chapter showing particular
1183 parameters of drivers are not meant as specification of the
1184 drivers' parameters. Driver implementations in LinuxSampler
1185 might have complete different parameter names and meanings
1186 than shown in these examples or might change in future, so
1187 these examples are only meant for showing how to retrieve
1188 what parameters drivers are offering, how to retrieve their
1189 possible values, etc.
1190 </p>
1191 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1192 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1193 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1194 Getting amount of available audio output drivers</h3>
1195
1196 <p>Use the following command to get the number of
1197 audio output drivers currently available for the
1198 LinuxSampler instance:
1199 </p>
1200 <p>
1201 </p>
1202 <blockquote class="text">
1203 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1204 </p>
1205 </blockquote><p>
1206
1207 </p>
1208 <p>Possible Answers:
1209 </p>
1210 <p>
1211 </p>
1212 <blockquote class="text">
1213 <p>LinuxSampler will answer by sending the
1214 number of audio output drivers.
1215 </p>
1216 </blockquote><p>
1217
1218 </p>
1219 <p>Example:
1220 </p>
1221 <p>
1222 </p>
1223 <blockquote class="text">
1224 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1225 </p>
1226 <p>S: "2"
1227 </p>
1228 </blockquote><p>
1229
1230 </p>
1231 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1232 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1233 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1234 Getting all available audio output drivers</h3>
1235
1236 <p>Use the following command to list all audio output
1237 drivers currently available for the LinuxSampler
1238 instance:
1239 </p>
1240 <p>
1241 </p>
1242 <blockquote class="text">
1243 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1244 </p>
1245 </blockquote><p>
1246
1247 </p>
1248 <p>Possible Answers:
1249 </p>
1250 <p>
1251 </p>
1252 <blockquote class="text">
1253 <p>LinuxSampler will answer by sending comma
1254 separated character strings, each symbolizing an
1255 audio output driver.
1256 </p>
1257 </blockquote><p>
1258
1259 </p>
1260 <p>Example:
1261 </p>
1262 <p>
1263 </p>
1264 <blockquote class="text">
1265 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1266 </p>
1267 <p>S: "ALSA,JACK"
1268 </p>
1269 </blockquote><p>
1270
1271 </p>
1272 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1273 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1274 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1275 Getting information about a specific audio
1276 output driver</h3>
1277
1278 <p>Use the following command to get detailed information
1279 about a specific audio output driver:
1280 </p>
1281 <p>
1282 </p>
1283 <blockquote class="text">
1284 <p>GET AUDIO_OUTPUT_DRIVER INFO
1285 &lt;audio-output-driver&gt;
1286 </p>
1287 </blockquote><p>
1288
1289 </p>
1290 <p>Where &lt;audio-output-driver&gt; is the name of the
1291 audio output driver, returned by the
1292 <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.
1293 </p>
1294 <p>Possible Answers:
1295 </p>
1296 <p>
1297 </p>
1298 <blockquote class="text">
1299 <p>LinuxSampler will answer by sending a
1300 &lt;CRLF&gt; separated list. Each answer line
1301 begins with the information category name
1302 followed by a colon and then a space character
1303 &lt;SP&gt; and finally the info character string
1304 to that info category. At the moment the
1305 following information categories are
1306 defined:
1307 </p>
1308 <p>
1309 </p>
1310 <blockquote class="text">
1311 <p>DESCRIPTION -
1312 </p>
1313 <blockquote class="text">
1314 <p> character string describing the
1315 audio output driver
1316 </p>
1317 </blockquote>
1318
1319
1320 <p>VERSION -
1321 </p>
1322 <blockquote class="text">
1323 <p>character string reflecting the
1324 driver's version
1325 </p>
1326 </blockquote>
1327
1328
1329 <p>PARAMETERS -
1330 </p>
1331 <blockquote class="text">
1332 <p>comma separated list of all
1333 parameters available for the given
1334 audio output driver, at least
1335 parameters 'channels', 'samplerate'
1336 and 'active' are offered by all audio
1337 output drivers
1338 </p>
1339 </blockquote>
1340
1341
1342 </blockquote>
1343
1344
1345 <p>The mentioned fields above don't have to be
1346 in particular order.
1347 </p>
1348 </blockquote><p>
1349
1350 </p>
1351 <p>Example:
1352 </p>
1353 <p>
1354 </p>
1355 <blockquote class="text">
1356 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1357 </p>
1358 <p>S: "DESCRIPTION: Advanced Linux Sound
1359 Architecture"
1360 </p>
1361 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1362 </p>
1363 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1364 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1365 FRAGMENTSIZE,CARD"
1366 </p>
1367 <p>&nbsp;&nbsp;&nbsp;"."
1368 </p>
1369 </blockquote><p>
1370
1371 </p>
1372 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1373 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1374 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1375 Getting information about specific audio
1376 output driver parameter</h3>
1377
1378 <p>Use the following command to get detailed information
1379 about a specific audio output driver parameter:
1380 </p>
1381 <p>
1382 </p>
1383 <blockquote class="text">
1384 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1385 </p>
1386 </blockquote><p>
1387
1388 </p>
1389 <p>Where &lt;audio&gt; is the name of the audio output
1390 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,
1391 &lt;prm&gt; a specific parameter name for which information should be
1392 obtained (as returned by the
1393 <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
1394 &lt;deplist&gt; is an optional list of parameters on which the sought
1395 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1396 pairs in form of "key1=val1 key2=val2 ...", where character string values
1397 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1398 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1399 the front-end application can simply put all parameters into &lt;deplist&gt;
1400 with the values already selected by the user.
1401 </p>
1402 <p>Possible Answers:
1403 </p>
1404 <p>
1405 </p>
1406 <blockquote class="text">
1407 <p>LinuxSampler will answer by sending a
1408 &lt;CRLF&gt; separated list.
1409 Each answer line begins with the information category name
1410 followed by a colon and then a space character &lt;SP&gt; and
1411 finally
1412 the info character string to that info category. There are
1413 information which is always returned, independently of the
1414 given driver parameter and there are optional information
1415 which is only shown dependently to given driver parameter. At
1416 the moment the following information categories are defined:
1417 </p>
1418 </blockquote><p>
1419
1420 </p>
1421 <p>
1422 </p>
1423 <blockquote class="text">
1424 <p>TYPE -
1425 </p>
1426 <blockquote class="text">
1427 <p>either "BOOL" for boolean value(s) or
1428 "INT" for integer
1429 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1430 character string(s)
1431 (always returned, no matter which driver parameter)
1432 </p>
1433 </blockquote>
1434
1435
1436 <p>DESCRIPTION -
1437 </p>
1438 <blockquote class="text">
1439 <p>arbitrary text describing the purpose of the parameter
1440 (always returned, no matter which driver parameter)
1441 </p>
1442 </blockquote>
1443
1444
1445 <p>MANDATORY -
1446 </p>
1447 <blockquote class="text">
1448 <p>either true or false, defines if this parameter must be
1449 given when the device is to be created with the
1450 <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>
1451 command (always returned, no matter which driver parameter)
1452 </p>
1453 </blockquote>
1454
1455
1456 <p>FIX -
1457 </p>
1458 <blockquote class="text">
1459 <p>either true or false, if false then this parameter can
1460 be changed at any time, once the device is created by
1461 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>
1462 command (always returned, no matter which driver parameter)
1463 </p>
1464 </blockquote>
1465
1466
1467 <p>MULTIPLICITY -
1468 </p>
1469 <blockquote class="text">
1470 <p>either true or false, defines if this parameter allows
1471 only one value or a list of values, where true means
1472 multiple values and false only a single value allowed
1473 (always returned, no matter which driver parameter)
1474 </p>
1475 </blockquote>
1476
1477
1478 <p>DEPENDS -
1479 </p>
1480 <blockquote class="text">
1481 <p>comma separated list of parameters this parameter depends
1482 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1483 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1484 listed parameters, for example assuming that an audio
1485 driver (like the ALSA driver) offers parameters 'card'
1486 and 'samplerate' then parameter 'samplerate' would
1487 depend on 'card' because the possible values for
1488 'samplerate' depends on the sound card which can be
1489 chosen by the 'card' parameter
1490 (optionally returned, dependent to driver parameter)
1491 </p>
1492 </blockquote>
1493
1494
1495 <p>DEFAULT -
1496 </p>
1497 <blockquote class="text">
1498 <p>reflects the default value for this parameter which is
1499 used when the device is created and not explicitly
1500 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,
1501 in case of MULTIPLCITY=true, this is a comma separated
1502 list, that's why character strings are encapsulated into
1503 apostrophes (')
1504 (optionally returned, dependent to driver parameter)
1505 </p>
1506 </blockquote>
1507
1508
1509 <p>RANGE_MIN -
1510 </p>
1511 <blockquote class="text">
1512 <p>defines lower limit of the allowed value range for this
1513 parameter, can be an integer value as well as a dotted
1514 number, this parameter is often used in conjunction
1515 with RANGE_MAX, but may also appear without
1516 (optionally returned, dependent to driver parameter)
1517 </p>
1518 </blockquote>
1519
1520
1521 <p>RANGE_MAX -
1522 </p>
1523 <blockquote class="text">
1524 <p>defines upper limit of the allowed value range for this
1525 parameter, can be an integer value as well as a dotted
1526 number, this parameter is often used in conjunction with
1527 RANGE_MIN, but may also appear without
1528 (optionally returned, dependent to driver parameter)
1529 </p>
1530 </blockquote>
1531
1532
1533 <p>POSSIBILITIES -
1534 </p>
1535 <blockquote class="text">
1536 <p>comma separated list of possible values for this
1537 parameter, character strings are encapsulated into
1538 apostrophes
1539 (optionally returned, dependent to driver parameter)
1540 </p>
1541 </blockquote>
1542
1543
1544 </blockquote><p>
1545
1546 </p>
1547 <p>The mentioned fields above don't have to be in particular order.
1548 </p>
1549 <p>Examples:
1550 </p>
1551 <p>
1552 </p>
1553 <blockquote class="text">
1554 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1555 </p>
1556 <p>S: "DESCRIPTION: sound card to be used"
1557 </p>
1558 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1559 </p>
1560 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1561 </p>
1562 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1563 </p>
1564 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1565 </p>
1566 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1567 </p>
1568 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1569 </p>
1570 <p>&nbsp;&nbsp;&nbsp;"."
1571 </p>
1572 </blockquote><p>
1573
1574 </p>
1575 <p>
1576 </p>
1577 <blockquote class="text">
1578 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1579 </p>
1580 <p>S: "DESCRIPTION: output sample rate in Hz"
1581 </p>
1582 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1583 </p>
1584 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1585 </p>
1586 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1587 </p>
1588 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1589 </p>
1590 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1591 </p>
1592 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1593 </p>
1594 <p>&nbsp;&nbsp;&nbsp;"."
1595 </p>
1596 </blockquote><p>
1597
1598 </p>
1599 <p>
1600 </p>
1601 <blockquote class="text">
1602 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1603 </p>
1604 <p>S: "DESCRIPTION: output sample rate in Hz"
1605 </p>
1606 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1607 </p>
1608 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1609 </p>
1610 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1611 </p>
1612 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1613 </p>
1614 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1615 </p>
1616 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1617 </p>
1618 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1619 </p>
1620 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1621 </p>
1622 <p>&nbsp;&nbsp;&nbsp;"."
1623 </p>
1624 </blockquote><p>
1625
1626 </p>
1627 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1628 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1629 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1630 Creating an audio output device</h3>
1631
1632 <p>Use the following command to create a new audio output device for the desired audio output system:
1633 </p>
1634 <p>
1635 </p>
1636 <blockquote class="text">
1637 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1638 </p>
1639 </blockquote><p>
1640
1641 </p>
1642 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1643 output system as returned by the
1644 <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>
1645 command and &lt;param-list&gt; by an optional list of driver
1646 specific parameters in form of "key1=val1 key2=val2 ...", where
1647 character string values should be encapsulated into apostrophes (').
1648 Note that there might be drivers which require parameter(s) to be
1649 given with this command. Use the previously described commands in
1650 this chapter to get this information.
1651 </p>
1652 <p>Possible Answers:
1653 </p>
1654 <p>
1655 </p>
1656 <blockquote class="text">
1657 <p>"OK[&lt;device-id&gt;]" -
1658 </p>
1659 <blockquote class="text">
1660 <p>in case the device was successfully created, where
1661 &lt;device-id&gt; is the numerical ID of the new device
1662 </p>
1663 </blockquote>
1664
1665
1666 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1667 </p>
1668 <blockquote class="text">
1669 <p>in case the device was created successfully, where
1670 &lt;device-id&gt; is the numerical ID of the new device, but there
1671 are noteworthy issue(s) related (e.g. sound card doesn't
1672 support given hardware parameters and the driver is using
1673 fall-back values), providing an appropriate warning code and
1674 warning message
1675 </p>
1676 </blockquote>
1677
1678
1679 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1680 </p>
1681 <blockquote class="text">
1682 <p>in case it failed, providing an appropriate error code and error message
1683 </p>
1684 </blockquote>
1685
1686
1687 </blockquote><p>
1688
1689 </p>
1690 <p>Examples:
1691 </p>
1692 <p>
1693 </p>
1694 <blockquote class="text">
1695 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1696 </p>
1697 <p>S: "OK[0]"
1698 </p>
1699 </blockquote><p>
1700
1701 </p>
1702 <p>
1703 </p>
1704 <blockquote class="text">
1705 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1706 </p>
1707 <p>S: "OK[1]"
1708 </p>
1709 </blockquote><p>
1710
1711 </p>
1712 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1713 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1714 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1715 Destroying an audio output device</h3>
1716
1717 <p>Use the following command to destroy a created output device:
1718 </p>
1719 <p>
1720 </p>
1721 <blockquote class="text">
1722 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1723 </p>
1724 </blockquote><p>
1725
1726 </p>
1727 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1728 audio output device as given by the
1729 <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 command.
1732 </p>
1733 <p>Possible Answers:
1734 </p>
1735 <p>
1736 </p>
1737 <blockquote class="text">
1738 <p>"OK" -
1739 </p>
1740 <blockquote class="text">
1741 <p>in case the device was successfully destroyed
1742 </p>
1743 </blockquote>
1744
1745
1746 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1747 </p>
1748 <blockquote class="text">
1749 <p>in case the device was destroyed successfully, but there are
1750 noteworthy issue(s) related (e.g. an audio over ethernet
1751 driver was unloaded but the other host might not be
1752 informed about this situation), providing an appropriate
1753 warning code and warning message
1754 </p>
1755 </blockquote>
1756
1757
1758 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1759 </p>
1760 <blockquote class="text">
1761 <p>in case it failed, providing an appropriate error code and
1762 error message
1763 </p>
1764 </blockquote>
1765
1766
1767 </blockquote><p>
1768
1769 </p>
1770 <p>Example:
1771 </p>
1772 <p>
1773 </p>
1774 <blockquote class="text">
1775 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1776 </p>
1777 <p>S: "OK"
1778 </p>
1779 </blockquote><p>
1780
1781 </p>
1782 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1784 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1785 Getting all created audio output device count</h3>
1786
1787 <p>Use the following command to count all created audio output devices:
1788 </p>
1789 <p>
1790 </p>
1791 <blockquote class="text">
1792 <p>GET AUDIO_OUTPUT_DEVICES
1793 </p>
1794 </blockquote><p>
1795
1796 </p>
1797 <p>Possible Answers:
1798 </p>
1799 <p>
1800 </p>
1801 <blockquote class="text">
1802 <p>LinuxSampler will answer by sending the current number of all
1803 audio output devices.
1804 </p>
1805 </blockquote><p>
1806
1807 </p>
1808 <p>Example:
1809 </p>
1810 <p>
1811 </p>
1812 <blockquote class="text">
1813 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1814 </p>
1815 <p>S: "4"
1816 </p>
1817 </blockquote><p>
1818
1819 </p>
1820 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1821 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1822 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1823 Getting all created audio output device list</h3>
1824
1825 <p>Use the following command to list all created audio output devices:
1826 </p>
1827 <p>
1828 </p>
1829 <blockquote class="text">
1830 <p>LIST AUDIO_OUTPUT_DEVICES
1831 </p>
1832 </blockquote><p>
1833
1834 </p>
1835 <p>Possible Answers:
1836 </p>
1837 <p>
1838 </p>
1839 <blockquote class="text">
1840 <p>LinuxSampler will answer by sending a comma separated list with
1841 the numerical IDs of all audio output devices.
1842 </p>
1843 </blockquote><p>
1844
1845 </p>
1846 <p>Example:
1847 </p>
1848 <p>
1849 </p>
1850 <blockquote class="text">
1851 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1852 </p>
1853 <p>S: "0,1,4,5"
1854 </p>
1855 </blockquote><p>
1856
1857 </p>
1858 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1859 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1860 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1861 Getting current settings of an audio output device</h3>
1862
1863 <p>Use the following command to get current settings of a specific, created audio output device:
1864 </p>
1865 <p>
1866 </p>
1867 <blockquote class="text">
1868 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1869 </p>
1870 </blockquote><p>
1871
1872 </p>
1873 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1874 of the audio output device as e.g. returned by the
1875 <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.
1876 </p>
1877 <p>Possible Answers:
1878 </p>
1879 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1880 Each answer line begins with the information category name
1881 followed by a colon and then a space character &lt;SP&gt; and finally
1882 the info character string to that info category. As some
1883 parameters might allow multiple values, character strings are
1884 encapsulated into apostrophes ('). At the moment the following
1885 information categories are defined (independently of device):
1886 </p>
1887 <p>
1888 </p>
1889 <blockquote class="text">
1890 <p>DRIVER -
1891 </p>
1892 <blockquote class="text">
1893 <p>identifier of the used audio output driver, as also
1894 returned by the
1895 <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>
1896 command
1897 </p>
1898 </blockquote>
1899
1900
1901 <p>CHANNELS -
1902 </p>
1903 <blockquote class="text">
1904 <p>amount of audio output channels this device currently
1905 offers
1906 </p>
1907 </blockquote>
1908
1909
1910 <p>SAMPLERATE -
1911 </p>
1912 <blockquote class="text">
1913 <p>playback sample rate the device uses
1914 </p>
1915 </blockquote>
1916
1917
1918 <p>ACTIVE -
1919 </p>
1920 <blockquote class="text">
1921 <p>either true or false, if false then the audio device is
1922 inactive and doesn't output any sound, nor do the
1923 sampler channels connected to this audio device render
1924 any audio
1925 </p>
1926 </blockquote>
1927
1928
1929 </blockquote><p>
1930
1931 </p>
1932 <p>The mentioned fields above don't have to be in particular
1933 order. The fields above are only those fields which are
1934 returned by all audio output devices. Every audio output driver
1935 might have its own, additional driver specific parameters (see
1936 <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>)
1937 which are also returned by this command.
1938 </p>
1939 <p>Example:
1940 </p>
1941 <p>
1942 </p>
1943 <blockquote class="text">
1944 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1945 </p>
1946 <p>S: "DRIVER: ALSA"
1947 </p>
1948 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1949 </p>
1950 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1951 </p>
1952 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1953 </p>
1954 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1955 </p>
1956 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1957 </p>
1958 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1959 </p>
1960 <p>&nbsp;&nbsp;&nbsp;"."
1961 </p>
1962 </blockquote><p>
1963
1964 </p>
1965 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1966 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1967 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1968 Changing settings of audio output devices</h3>
1969
1970 <p>Use the following command to alter a specific setting of a created audio output device:
1971 </p>
1972 <p>
1973 </p>
1974 <blockquote class="text">
1975 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1976 </p>
1977 </blockquote><p>
1978
1979 </p>
1980 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1981 audio output device as given by the
1982 <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>
1983 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>
1984 command, &lt;key&gt; by the name of the parameter to change
1985 and &lt;value&gt; by the new value for this parameter.
1986 </p>
1987 <p>Possible Answers:
1988 </p>
1989 <p>
1990 </p>
1991 <blockquote class="text">
1992 <p>"OK" -
1993 </p>
1994 <blockquote class="text">
1995 <p>in case setting was successfully changed
1996 </p>
1997 </blockquote>
1998
1999
2000 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2001 </p>
2002 <blockquote class="text">
2003 <p>in case setting was changed successfully, but there are
2004 noteworthy issue(s) related, providing an appropriate
2005 warning code and warning message
2006 </p>
2007 </blockquote>
2008
2009
2010 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2011 </p>
2012 <blockquote class="text">
2013 <p>in case it failed, providing an appropriate error code and
2014 error message
2015 </p>
2016 </blockquote>
2017
2018
2019 </blockquote><p>
2020
2021 </p>
2022 <p>Example:
2023 </p>
2024 <p>
2025 </p>
2026 <blockquote class="text">
2027 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2028 </p>
2029 <p>S: "OK"
2030 </p>
2031 </blockquote><p>
2032
2033 </p>
2034 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2035 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2036 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2037 Getting information about an audio channel</h3>
2038
2039 <p>Use the following command to get information about an audio channel:
2040 </p>
2041 <p>
2042 </p>
2043 <blockquote class="text">
2044 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2045 </p>
2046 </blockquote><p>
2047
2048 </p>
2049 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2050 <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>
2051 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>
2052 command and &lt;audio-chan&gt; the audio channel number.
2053 </p>
2054 <p>Possible Answers:
2055 </p>
2056 <p>
2057 </p>
2058 <blockquote class="text">
2059 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2060 Each answer line begins with the information category name
2061 followed by a colon and then a space character &lt;SP&gt; and finally
2062 the info character string to that info category. At the moment
2063 the following information categories are defined:
2064 </p>
2065 <p>
2066 </p>
2067 <blockquote class="text">
2068 <p>NAME -
2069 </p>
2070 <blockquote class="text">
2071 <p>arbitrary character string naming the channel, which
2072 doesn't have to be unique (always returned by all audio channels)
2073 </p>
2074 </blockquote>
2075
2076
2077 <p>IS_MIX_CHANNEL -
2078 </p>
2079 <blockquote class="text">
2080 <p>either true or false, a mix-channel is not a real,
2081 independent audio channel, but a virtual channel which
2082 is mixed to another real channel, this mechanism is
2083 needed for sampler engines which need more audio
2084 channels than the used audio system might be able to offer
2085 (always returned by all audio channels)
2086 </p>
2087 </blockquote>
2088
2089
2090 <p>MIX_CHANNEL_DESTINATION -
2091 </p>
2092 <blockquote class="text">
2093 <p>numerical ID (positive integer including 0)
2094 which reflects the real audio channel (of the same audio
2095 output device) this mix channel refers to, means where
2096 the audio signal actually will be routed / added to
2097 (only returned in case the audio channel is mix channel)
2098 </p>
2099 </blockquote>
2100
2101
2102 </blockquote>
2103
2104
2105 </blockquote><p>
2106
2107 </p>
2108 <p>The mentioned fields above don't have to be in particular
2109 order. The fields above are only those fields which are
2110 generally returned for the described cases by all audio
2111 channels regardless of the audio driver. Every audio channel
2112 might have its own, additional driver and channel specific
2113 parameters.
2114 </p>
2115 <p>Examples:
2116 </p>
2117 <p>
2118 </p>
2119 <blockquote class="text">
2120 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2121 </p>
2122 <p>S: "NAME: studio monitor left"
2123 </p>
2124 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2125 </p>
2126 <p>&nbsp;&nbsp;&nbsp;"."
2127 </p>
2128 </blockquote><p>
2129
2130 </p>
2131 <p>
2132 </p>
2133 <blockquote class="text">
2134 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2135 </p>
2136 <p>S: "NAME: studio monitor right"
2137 </p>
2138 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2139 </p>
2140 <p>&nbsp;&nbsp;&nbsp;"."
2141 </p>
2142 </blockquote><p>
2143
2144 </p>
2145 <p>
2146 </p>
2147 <blockquote class="text">
2148 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2149 </p>
2150 <p>S: "NAME: studio monitor left"
2151 </p>
2152 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2153 </p>
2154 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2155 </p>
2156 <p>&nbsp;&nbsp;&nbsp;"."
2157 </p>
2158 </blockquote><p>
2159
2160 </p>
2161 <p>
2162 </p>
2163 <blockquote class="text">
2164 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2165 </p>
2166 <p>S: "NAME: 'ardour (left)'"
2167 </p>
2168 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2169 </p>
2170 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2171 </p>
2172 <p>&nbsp;&nbsp;&nbsp;"."
2173 </p>
2174 </blockquote><p>
2175
2176 </p>
2177 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2178 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2179 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2180 Getting information about specific audio channel parameter</h3>
2181
2182 <p>Use the following command to get detailed information about specific audio channel parameter:
2183 </p>
2184 <p>
2185 </p>
2186 <blockquote class="text">
2187 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2188 </p>
2189 </blockquote><p>
2190
2191 </p>
2192 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2193 <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>
2194 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>
2195 command, &lt;chan&gt; the audio channel number
2196 and &lt;param&gt; a specific channel parameter name for which information should
2197 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).
2198 </p>
2199 <p>Possible Answers:
2200 </p>
2201 <p>
2202 </p>
2203 <blockquote class="text">
2204 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2205 Each answer line begins with the information category name
2206 followed by a colon and then a space character &lt;SP&gt; and finally
2207 the info character string to that info category. There are
2208 information which is always returned, independently of the
2209 given channel parameter and there is optional information
2210 which is only shown dependently to the given audio channel. At
2211 the moment the following information categories are defined:
2212 </p>
2213 <p>
2214 </p>
2215 <blockquote class="text">
2216 <p>TYPE -
2217 </p>
2218 <blockquote class="text">
2219 <p>either "BOOL" for boolean value(s) or "INT" for integer
2220 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2221 character string(s)
2222 (always returned)
2223 </p>
2224 </blockquote>
2225
2226
2227 <p>DESCRIPTION -
2228 </p>
2229 <blockquote class="text">
2230 <p>arbitrary text describing the purpose of the parameter (always returned)
2231 </p>
2232 </blockquote>
2233
2234
2235 <p>FIX -
2236 </p>
2237 <blockquote class="text">
2238 <p>either true or false, if true then this parameter is
2239 read only, thus cannot be altered
2240 (always returned)
2241 </p>
2242 </blockquote>
2243
2244
2245 <p>MULTIPLICITY -
2246 </p>
2247 <blockquote class="text">
2248 <p>either true or false, defines if this parameter allows
2249 only one value or a list of values, where true means
2250 multiple values and false only a single value allowed
2251 (always returned)
2252 </p>
2253 </blockquote>
2254
2255
2256 <p>RANGE_MIN -
2257 </p>
2258 <blockquote class="text">
2259 <p>defines lower limit of the allowed value range for this
2260 parameter, can be an integer value as well as a dotted
2261 number, usually used in conjunction with 'RANGE_MAX',
2262 but may also appear without
2263 (optionally returned, dependent to driver and channel
2264 parameter)
2265 </p>
2266 </blockquote>
2267
2268
2269 <p>RANGE_MAX -
2270 </p>
2271 <blockquote class="text">
2272 <p>defines upper limit of the allowed value range for this
2273 parameter, can be an integer value as well as a dotted
2274 number, usually used in conjunction with 'RANGE_MIN',
2275 but may also appear without
2276 (optionally returned, dependent to driver and channel
2277 parameter)
2278 </p>
2279 </blockquote>
2280
2281
2282 <p>POSSIBILITIES -
2283 </p>
2284 <blockquote class="text">
2285 <p>comma separated list of possible values for this
2286 parameter, character strings are encapsulated into
2287 apostrophes
2288 (optionally returned, dependent to driver and channel
2289 parameter)
2290 </p>
2291 </blockquote>
2292
2293
2294 </blockquote>
2295
2296
2297 <p>The mentioned fields above don't have to be in particular order.
2298 </p>
2299 </blockquote><p>
2300
2301 </p>
2302 <p>Example:
2303 </p>
2304 <p>
2305 </p>
2306 <blockquote class="text">
2307 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2308 </p>
2309 <p>S: "DESCRIPTION: bindings to other JACK clients"
2310 </p>
2311 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2312 </p>
2313 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2314 </p>
2315 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2316 </p>
2317 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2318 </p>
2319 <p>&nbsp;&nbsp;&nbsp;"."
2320 </p>
2321 </blockquote><p>
2322
2323 </p>
2324 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2325 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2326 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2327 Changing settings of audio output channels</h3>
2328
2329 <p>Use the following command to alter a specific setting of an audio output channel:
2330 </p>
2331 <p>
2332 </p>
2333 <blockquote class="text">
2334 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2335 </p>
2336 </blockquote><p>
2337
2338 </p>
2339 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2340 <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>
2341 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>
2342 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2343 parameter to change and &lt;value&gt; by the new value for this parameter.
2344 </p>
2345 <p>Possible Answers:
2346 </p>
2347 <p>
2348 </p>
2349 <blockquote class="text">
2350 <p>"OK" -
2351 </p>
2352 <blockquote class="text">
2353 <p>in case setting was successfully changed
2354 </p>
2355 </blockquote>
2356
2357
2358 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2359 </p>
2360 <blockquote class="text">
2361 <p>in case setting was changed successfully, but there are
2362 noteworthy issue(s) related, providing an appropriate
2363 warning code and warning message
2364 </p>
2365 </blockquote>
2366
2367
2368 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2369 </p>
2370 <blockquote class="text">
2371 <p>in case it failed, providing an appropriate error code and
2372 error message
2373 </p>
2374 </blockquote>
2375
2376
2377 </blockquote><p>
2378
2379 </p>
2380 <p>Example:
2381 </p>
2382 <p>
2383 </p>
2384 <blockquote class="text">
2385 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2386 </p>
2387 <p>S: "OK"
2388 </p>
2389 </blockquote><p>
2390
2391 </p>
2392 <p>
2393 </p>
2394 <blockquote class="text">
2395 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2396 </p>
2397 <p>S: "OK"
2398 </p>
2399 </blockquote><p>
2400
2401 </p>
2402 <a name="anchor10"></a><br /><hr />
2403 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2404 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2405 Configuring MIDI input drivers</h3>
2406
2407 <p>Instances of drivers in LinuxSampler are called devices. You can use
2408 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2409 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2410 channel. For particular MIDI input systems it's also possible to create
2411 several devices of the same MIDI input type. This chapter describes all
2412 commands to configure LinuxSampler's MIDI input devices and their parameters.
2413 </p>
2414 <p>Instead of defining commands and parameters for each driver individually,
2415 all possible parameters, their meanings and possible values have to be obtained
2416 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2417 front-ends can be written independently of what drivers are currently implemented
2418 and what parameters these drivers are actually offering. This means front-ends can
2419 even handle drivers which are implemented somewhere in future without modifying
2420 the front-end at all.
2421 </p>
2422 <p>Commands for configuring MIDI input devices are pretty much the same as the
2423 commands for configuring audio output drivers, already described in the last
2424 chapter.
2425 </p>
2426 <p>Note: examples in this chapter showing particular parameters of drivers are
2427 not meant as specification of the drivers' parameters. Driver implementations in
2428 LinuxSampler might have complete different parameter names and meanings than shown
2429 in these examples or might change in future, so these examples are only meant for
2430 showing how to retrieve what parameters drivers are offering, how to retrieve their
2431 possible values, etc.
2432 </p>
2433 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2434 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2435 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2436 Getting amount of available MIDI input drivers</h3>
2437
2438 <p>Use the following command to get the number of
2439 MIDI input drivers currently available for the
2440 LinuxSampler instance:
2441 </p>
2442 <p>
2443 </p>
2444 <blockquote class="text">
2445 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2446 </p>
2447 </blockquote><p>
2448
2449 </p>
2450 <p>Possible Answers:
2451 </p>
2452 <p>
2453 </p>
2454 <blockquote class="text">
2455 <p>LinuxSampler will answer by sending the
2456 number of available MIDI input drivers.
2457 </p>
2458 </blockquote><p>
2459
2460 </p>
2461 <p>Example:
2462 </p>
2463 <p>
2464 </p>
2465 <blockquote class="text">
2466 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2467 </p>
2468 <p>S: "2"
2469 </p>
2470 </blockquote><p>
2471
2472 </p>
2473 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2474 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2475 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2476 Getting all available MIDI input drivers</h3>
2477
2478 <p>Use the following command to list all MIDI input drivers currently available
2479 for the LinuxSampler instance:
2480 </p>
2481 <p>
2482 </p>
2483 <blockquote class="text">
2484 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2485 </p>
2486 </blockquote><p>
2487
2488 </p>
2489 <p>Possible Answers:
2490 </p>
2491 <p>
2492 </p>
2493 <blockquote class="text">
2494 <p>LinuxSampler will answer by sending comma separated character
2495 strings, each symbolizing a MIDI input driver.
2496 </p>
2497 </blockquote><p>
2498
2499 </p>
2500 <p>Example:
2501 </p>
2502 <p>
2503 </p>
2504 <blockquote class="text">
2505 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2506 </p>
2507 <p>S: "ALSA,JACK"
2508 </p>
2509 </blockquote><p>
2510
2511 </p>
2512 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2513 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2514 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2515 Getting information about a specific MIDI input driver</h3>
2516
2517 <p>Use the following command to get detailed information about a specific MIDI input driver:
2518 </p>
2519 <p>
2520 </p>
2521 <blockquote class="text">
2522 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2523 </p>
2524 </blockquote><p>
2525
2526 </p>
2527 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2528 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.
2529 </p>
2530 <p>Possible Answers:
2531 </p>
2532 <p>
2533 </p>
2534 <blockquote class="text">
2535 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2536 Each answer line begins with the information category name
2537 followed by a colon and then a space character &lt;SP&gt; and finally
2538 the info character string to that info category. At the moment
2539 the following information categories are defined:
2540 </p>
2541 <p>
2542 </p>
2543 <blockquote class="text">
2544 <p>DESCRIPTION -
2545 </p>
2546 <blockquote class="text">
2547 <p>arbitrary description text about the MIDI input driver
2548 </p>
2549 </blockquote>
2550
2551
2552 <p>VERSION -
2553 </p>
2554 <blockquote class="text">
2555 <p>arbitrary character string regarding the driver's version
2556 </p>
2557 </blockquote>
2558
2559
2560 <p>PARAMETERS -
2561 </p>
2562 <blockquote class="text">
2563 <p>comma separated list of all parameters available for the given MIDI input driver
2564 </p>
2565 </blockquote>
2566
2567
2568 </blockquote>
2569
2570
2571 <p>The mentioned fields above don't have to be in particular order.
2572 </p>
2573 </blockquote><p>
2574
2575 </p>
2576 <p>Example:
2577 </p>
2578 <p>
2579 </p>
2580 <blockquote class="text">
2581 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2582 </p>
2583 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2584 </p>
2585 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2586 </p>
2587 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2588 </p>
2589 <p>&nbsp;&nbsp;&nbsp;"."
2590 </p>
2591 </blockquote><p>
2592
2593 </p>
2594 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2595 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2596 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2597 Getting information about specific MIDI input driver parameter</h3>
2598
2599 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2600 </p>
2601 <p>
2602 </p>
2603 <blockquote class="text">
2604 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2605 </p>
2606 </blockquote><p>
2607
2608 </p>
2609 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2610 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
2611 parameter name for which information should be obtained (as returned by the
2612 <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
2613 of parameters on which the sought parameter &lt;param&gt; depends on,
2614 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2615 where character string values are encapsulated into apostrophes ('). Arguments
2616 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2617 will be ignored, means the front-end application can simply put all parameters
2618 in &lt;deplist&gt; with the values selected by the user.
2619 </p>
2620 <p>Possible Answers:
2621 </p>
2622 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2623 Each answer line begins with the information category name
2624 followed by a colon and then a space character &lt;SP> and finally
2625 the info character string to that info category. There is
2626 information which is always returned, independent of the
2627 given driver parameter and there is optional information
2628 which is only shown dependent to given driver parameter. At
2629 the moment the following information categories are defined:
2630 </p>
2631 <p>
2632 </p>
2633 <blockquote class="text">
2634 <p>TYPE -
2635 </p>
2636 <blockquote class="text">
2637 <p>either "BOOL" for boolean value(s) or "INT" for integer
2638 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2639 character string(s)
2640 (always returned, no matter which driver parameter)
2641 </p>
2642 </blockquote>
2643
2644
2645 <p>DESCRIPTION -
2646 </p>
2647 <blockquote class="text">
2648 <p>arbitrary text describing the purpose of the parameter
2649 (always returned, no matter which driver parameter)
2650 </p>
2651 </blockquote>
2652
2653
2654 <p>MANDATORY -
2655 </p>
2656 <blockquote class="text">
2657 <p>either true or false, defines if this parameter must be
2658 given when the device is to be created with the
2659 <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
2660 (always returned, no matter which driver parameter)
2661 </p>
2662 </blockquote>
2663
2664
2665 <p>FIX -
2666 </p>
2667 <blockquote class="text">
2668 <p>either true or false, if false then this parameter can
2669 be changed at any time, once the device is created by
2670 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
2671 (always returned, no matter which driver parameter)
2672 </p>
2673 </blockquote>
2674
2675
2676 <p>MULTIPLICITY -
2677 </p>
2678 <blockquote class="text">
2679 <p>either true or false, defines if this parameter allows
2680 only one value or a list of values, where true means
2681 multiple values and false only a single value allowed
2682 (always returned, no matter which driver parameter)
2683 </p>
2684 </blockquote>
2685
2686
2687 <p>DEPENDS -
2688 </p>
2689 <blockquote class="text">
2690 <p>comma separated list of parameters this parameter depends
2691 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2692 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2693 listed parameters, for example assuming that an audio
2694 driver (like the ALSA driver) offers parameters 'card'
2695 and 'samplerate' then parameter 'samplerate' would
2696 depend on 'card' because the possible values for
2697 'samplerate' depends on the sound card which can be
2698 chosen by the 'card' parameter
2699 (optionally returned, dependent to driver parameter)
2700 </p>
2701 </blockquote>
2702
2703
2704 <p>DEFAULT -
2705 </p>
2706 <blockquote class="text">
2707 <p>reflects the default value for this parameter which is
2708 used when the device is created and not explicitly
2709 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,
2710 in case of MULTIPLCITY=true, this is a comma separated
2711 list, that's why character strings are encapsulated into
2712 apostrophes (')
2713 (optionally returned, dependent to driver parameter)
2714 </p>
2715 </blockquote>
2716
2717
2718 <p>RANGE_MIN -
2719 </p>
2720 <blockquote class="text">
2721 <p>defines lower limit of the allowed value range for this
2722 parameter, can be an integer value as well as a dotted
2723 number, this parameter is often used in conjunction
2724 with RANGE_MAX, but may also appear without
2725 (optionally returned, dependent to driver parameter)
2726 </p>
2727 </blockquote>
2728
2729
2730 <p>RANGE_MAX -
2731 </p>
2732 <blockquote class="text">
2733 <p>defines upper limit of the allowed value range for this
2734 parameter, can be an integer value as well as a dotted
2735 number, this parameter is often used in conjunction with
2736 RANGE_MIN, but may also appear without
2737 (optionally returned, dependent to driver parameter)
2738 </p>
2739 </blockquote>
2740
2741
2742 <p>POSSIBILITIES -
2743 </p>
2744 <blockquote class="text">
2745 <p>comma separated list of possible values for this
2746 parameter, character strings are encapsulated into
2747 apostrophes
2748 (optionally returned, dependent to driver parameter)
2749 </p>
2750 </blockquote>
2751
2752
2753 </blockquote><p>
2754
2755 </p>
2756 <p>The mentioned fields above don't have to be in particular order.
2757 </p>
2758 <p>Example:
2759 </p>
2760 <p>
2761 </p>
2762 <blockquote class="text">
2763 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2764 </p>
2765 <p>S: "DESCRIPTION: Whether device is enabled"
2766 </p>
2767 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2768 </p>
2769 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2770 </p>
2771 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2772 </p>
2773 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2774 </p>
2775 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2776 </p>
2777 <p>&nbsp;&nbsp;&nbsp;"."
2778 </p>
2779 </blockquote><p>
2780
2781 </p>
2782 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2784 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2785 Creating a MIDI input device</h3>
2786
2787 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2788 </p>
2789 <p>
2790 </p>
2791 <blockquote class="text">
2792 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2793 </p>
2794 </blockquote><p>
2795
2796 </p>
2797 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2798 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
2799 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2800 character string values should be encapsulated into apostrophes (').
2801 Note that there might be drivers which require parameter(s) to be
2802 given with this command. Use the previously described commands in
2803 this chapter to get that information.
2804 </p>
2805 <p>Possible Answers:
2806 </p>
2807 <p>
2808 </p>
2809 <blockquote class="text">
2810 <p>"OK[&lt;device-id&gt;]" -
2811 </p>
2812 <blockquote class="text">
2813 <p>in case the device was successfully created, where
2814 &lt;device-id&gt; is the numerical ID of the new device
2815 </p>
2816 </blockquote>
2817
2818
2819 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2820 </p>
2821 <blockquote class="text">
2822 <p>in case the driver was loaded successfully, where
2823 &lt;device-id&gt; is the numerical ID of the new device, but
2824 there are noteworthy issue(s) related, providing an
2825 appropriate warning code and warning message
2826 </p>
2827 </blockquote>
2828
2829
2830 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831 </p>
2832 <blockquote class="text">
2833 <p>in case it failed, providing an appropriate error code and error message
2834 </p>
2835 </blockquote>
2836
2837
2838 </blockquote><p>
2839
2840 </p>
2841 <p>Example:
2842 </p>
2843 <p>
2844 </p>
2845 <blockquote class="text">
2846 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2847 </p>
2848 <p>S: "OK[0]"
2849 </p>
2850 </blockquote><p>
2851
2852 </p>
2853 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2854 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2855 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2856 Destroying a MIDI input device</h3>
2857
2858 <p>Use the following command to destroy a created MIDI input device:
2859 </p>
2860 <p>
2861 </p>
2862 <blockquote class="text">
2863 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2864 </p>
2865 </blockquote><p>
2866
2867 </p>
2868 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2869 <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>
2870 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>
2871 command.
2872 </p>
2873 <p>Possible Answers:
2874 </p>
2875 <p>
2876 </p>
2877 <blockquote class="text">
2878 <p>"OK" -
2879 </p>
2880 <blockquote class="text">
2881 <p>in case the device was successfully destroyed
2882 </p>
2883 </blockquote>
2884
2885
2886 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2887 </p>
2888 <blockquote class="text">
2889 <p>in case the device was destroyed, but there are noteworthy
2890 issue(s) related, providing an appropriate warning code and
2891 warning message
2892 </p>
2893 </blockquote>
2894
2895
2896 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2897 </p>
2898 <blockquote class="text">
2899 <p>in case it failed, providing an appropriate error code and error message
2900 </p>
2901 </blockquote>
2902
2903
2904 </blockquote><p>
2905
2906 </p>
2907 <p>Example:
2908 </p>
2909 <p>
2910 </p>
2911 <blockquote class="text">
2912 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2913 </p>
2914 <p>S: "OK"
2915 </p>
2916 </blockquote><p>
2917
2918 </p>
2919 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2920 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2921 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2922 Getting all created MIDI input device count</h3>
2923
2924 <p>Use the following command to count all created MIDI input devices:
2925 </p>
2926 <p>
2927 </p>
2928 <blockquote class="text">
2929 <p>GET MIDI_INPUT_DEVICES
2930 </p>
2931 </blockquote><p>
2932
2933 </p>
2934 <p>Possible Answers:
2935 </p>
2936 <p>
2937 </p>
2938 <blockquote class="text">
2939 <p>LinuxSampler will answer by sending the current number of all
2940 MIDI input devices.
2941 </p>
2942 </blockquote><p>
2943
2944 </p>
2945 <p>Example:
2946 </p>
2947 <p>
2948 </p>
2949 <blockquote class="text">
2950 <p>C: "GET MIDI_INPUT_DEVICES"
2951 </p>
2952 <p>S: "3"
2953 </p>
2954 </blockquote><p>
2955
2956 </p>
2957 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2958 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2959 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2960 Getting all created MIDI input device list</h3>
2961
2962 <p>Use the following command to list all created MIDI input devices:
2963 </p>
2964 <p>
2965 </p>
2966 <blockquote class="text">
2967 <p>LIST MIDI_INPUT_DEVICES
2968 </p>
2969 </blockquote><p>
2970
2971 </p>
2972 <p>Possible Answers:
2973 </p>
2974 <p>
2975 </p>
2976 <blockquote class="text">
2977 <p>LinuxSampler will answer by sending a comma separated list
2978 with the numerical Ids of all created MIDI input devices.
2979 </p>
2980 </blockquote><p>
2981
2982 </p>
2983 <p>Examples:
2984 </p>
2985 <p>
2986 </p>
2987 <blockquote class="text">
2988 <p>C: "LIST MIDI_INPUT_DEVICES"
2989 </p>
2990 <p>S: "0,1,2"
2991 </p>
2992 </blockquote><p>
2993
2994 </p>
2995 <p>
2996 </p>
2997 <blockquote class="text">
2998 <p>C: "LIST MIDI_INPUT_DEVICES"
2999 </p>
3000 <p>S: "1,3"
3001 </p>
3002 </blockquote><p>
3003
3004 </p>
3005 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
3006 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3007 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
3008 Getting current settings of a MIDI input device</h3>
3009
3010 <p>Use the following command to get current settings of a specific, created MIDI input device:
3011 </p>
3012 <p>
3013 </p>
3014 <blockquote class="text">
3015 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3016 </p>
3017 </blockquote><p>
3018
3019 </p>
3020 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3021 <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>
3022 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>
3023 command.
3024 </p>
3025 <p>Possible Answers:
3026 </p>
3027 <p>
3028 </p>
3029 <blockquote class="text">
3030 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3031 Each answer line begins with the information category name
3032 followed by a colon and then a space character &lt;SP&gt; and finally
3033 the info character string to that info category. As some
3034 parameters might allow multiple values, character strings are
3035 encapsulated into apostrophes ('). At the moment the following
3036 information categories are defined (independent of driver):
3037 </p>
3038 <p>
3039 </p>
3040 <blockquote class="text">
3041 <p>DRIVER -
3042 </p>
3043 <blockquote class="text">
3044 <p>identifier of the used MIDI input driver, as e.g.
3045 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>
3046 command
3047 </p>
3048 </blockquote>
3049
3050
3051 </blockquote>
3052
3053 <blockquote class="text">
3054 <p>ACTIVE -
3055 </p>
3056 <blockquote class="text">
3057 <p>either true or false, if false then the MIDI device is
3058 inactive and doesn't listen to any incoming MIDI events
3059 and thus doesn't forward them to connected sampler
3060 channels
3061 </p>
3062 </blockquote>
3063
3064
3065 </blockquote>
3066
3067
3068 </blockquote><p>
3069
3070 </p>
3071 <p>The mentioned fields above don't have to be in particular
3072 order. The fields above are only those fields which are
3073 returned by all MIDI input devices. Every MIDI input driver
3074 might have its own, additional driver specific parameters (see
3075 <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
3076 by this command.
3077 </p>
3078 <p>Example:
3079 </p>
3080 <p>
3081 </p>
3082 <blockquote class="text">
3083 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3084 </p>
3085 <p>S: "DRIVER: ALSA"
3086 </p>
3087 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3088 </p>
3089 <p>&nbsp;&nbsp;&nbsp;"."
3090 </p>
3091 </blockquote><p>
3092
3093 </p>
3094 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3095 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></