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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1556 - (show annotations) (download) (as text)
Thu Dec 6 01:46:03 2007 UTC (12 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 410947 byte(s)
- commited LSCP 1.3 specs of the next upcoming LS release

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