/[svn]/web/trunk/www.linuxsampler.org/api/lscp-1.5.html
ViewVC logotype

Contents of /web/trunk/www.linuxsampler.org/api/lscp-1.5.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2498 - (show annotations) (download) (as text)
Thu Jan 9 22:05:21 2014 UTC (6 years, 1 month ago) by schoenebeck
File MIME type: text/html
File size: 504865 byte(s)
* New LSCP specs (LSCP 1.6).

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