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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1002 - (hide annotations) (download) (as text)
Wed Dec 27 16:23:46 2006 UTC (17 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 285162 byte(s)
- added new LSCP commands for managing FX sends

1 senoner 542 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2     <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4     <meta name="description" content="LinuxSampler Control Protocol">
5     <meta name="keywords" content="LSCP">
6 schoenebeck 974 <meta name="generator" content="xml2rfc v1.31 (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 senoner 542
20 schoenebeck 974 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 senoner 542
35 schoenebeck 974 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 senoner 542
46 schoenebeck 974 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 senoner 542
54 schoenebeck 974 /* 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 senoner 542
77 schoenebeck 974 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 senoner 542
82 schoenebeck 974 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 senoner 542
88 schoenebeck 974 ol.text { margin-left: 2em; margin-right: 2em; }
89     ul.text { margin-left: 2em; margin-right: 2em; }
90     li { margin-left: 3em; }
91 senoner 542
92 schoenebeck 974 /* 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 schoenebeck 708
115 schoenebeck 974 /* RFC-2629 <texttable>s. */
116     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.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.full th { border-style: solid; }
127     table.headers th { border-style: none none solid none; }
128     table.none th { border-style: none; }
129     table.full td {
130     border-style: solid; border-color: #333;
131     border-width: 1px 2px;
132     }
133     table.headers td, table.none td { border-style: none; }
134 senoner 542
135 schoenebeck 974 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 senoner 542 </head>
142     <body>
143 schoenebeck 974 <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 senoner 542 <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 schoenebeck 974 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 schoenebeck 1002 <tr><td class="header">Expires: June 30, 2007</td><td class="header">December 27, 2006</td></tr>
149 senoner 542 </table></td></tr></table>
150 schoenebeck 974 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.2</h1>
151 senoner 542
152     <h3>Status of this Memo</h3>
153     <p>
154 schoenebeck 974 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 senoner 542 <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 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
169 senoner 542 <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 schoenebeck 1002 This Internet-Draft will expire on June 30, 2007.</p>
177 senoner 542
178     <h3>Copyright Notice</h3>
179     <p>
180 schoenebeck 974 Copyright &copy; The Internet Society (2006).</p>
181 senoner 542
182     <h3>Abstract</h3>
183    
184     <p>The LinuxSampler Control Protocol (LSCP) is an
185     application-level protocol primarily intended for local and
186 schoenebeck 575 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 senoner 542 </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 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
196     Versioning of this specification<br />
197     <a href="#anchor2">3.</a>&nbsp;
198 senoner 542 Introduction<br />
199 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
200 senoner 542 Focus of this protocol<br />
201 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
202 senoner 542 Communication Overview<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 senoner 542 Request/response communication method<br />
205 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 senoner 542 Result format<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 senoner 542 Subscribe/notify communication method<br />
209 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
210 senoner 542 Description for control commands<br />
211 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 senoner 542 Ignored lines and comments<br />
213 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 senoner 542 Configuring audio drivers<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 senoner 542 Getting amount of available audio output drivers<br />
217 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 senoner 542 Getting all available audio output drivers<br />
219 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 senoner 542 Getting information about a specific audio
221     output driver<br />
222 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 senoner 542 Getting information about specific audio
224     output driver parameter<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 senoner 542 Creating an audio output device<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 senoner 542 Destroying an audio output device<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 senoner 542 Getting all created audio output device count<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 senoner 542 Getting all created audio output device list<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 senoner 542 Getting current settings of an audio output device<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 senoner 542 Changing settings of audio output devices<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 senoner 542 Getting information about an audio channel<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 senoner 542 Getting information about specific audio channel parameter<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 senoner 542 Changing settings of audio output channels<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 senoner 542 Configuring MIDI input drivers<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 senoner 542 Getting amount of available MIDI input drivers<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 senoner 542 Getting all available MIDI input drivers<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 senoner 542 Getting information about a specific MIDI input driver<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 senoner 542 Getting information about specific MIDI input driver parameter<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 senoner 542 Creating a MIDI input device<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 senoner 542 Destroying a MIDI input device<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 senoner 542 Getting all created MIDI input device count<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 senoner 542 Getting all created MIDI input device list<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 senoner 542 Getting current settings of a MIDI input device<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 senoner 542 Changing settings of MIDI input devices<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 senoner 542 Getting information about a MIDI port<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 senoner 542 Getting information about specific MIDI port parameter<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 senoner 542 Changing settings of MIDI input ports<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 senoner 542 Configuring sampler channels<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 senoner 542 Loading an instrument<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 senoner 542 Loading a sampler engine<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 senoner 542 Getting all created sampler channel count<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 senoner 542 Getting all created sampler channel list<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 senoner 542 Adding a new sampler channel<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 senoner 542 Removing a sampler channel<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 senoner 542 Getting amount of available engines<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 senoner 542 Getting all available engines<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 senoner 542 Getting information about an engine<br />
291 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 senoner 542 Getting sampler channel information<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 senoner 542 Current number of active voices<br />
295 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 senoner 542 Current number of active disk streams<br />
297 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 senoner 542 Current fill state of disk stream buffers<br />
299 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 senoner 542 Setting audio output device<br />
301 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 senoner 542 Setting audio output type<br />
303 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 senoner 542 Setting audio output channel<br />
305 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 senoner 542 Setting MIDI input device<br />
307 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 senoner 542 Setting MIDI input type<br />
309 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 senoner 542 Setting MIDI input port<br />
311 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 senoner 542 Setting MIDI input channel<br />
313 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 senoner 542 Setting channel volume<br />
315 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 schoenebeck 708 Muting a sampler channel<br />
317 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 schoenebeck 708 Soloing a sampler channel<br />
319 schoenebeck 974 &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 schoenebeck 1002 &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 AUDIO_OUTPUT_CHANNEL">6.4.30.</a>&nbsp;
332     Altering effect send's audio routing<br />
333     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.31.</a>&nbsp;
334 senoner 542 Resetting a sampler channel<br />
335 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
336 senoner 542 Controlling connection<br />
337 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
338 senoner 542 Register front-end for receiving event messages<br />
339 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
340 senoner 542 Unregister front-end for not receiving event messages<br />
341 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
342 senoner 542 Enable or disable echo of commands<br />
343 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
344 senoner 542 Close client connection<br />
345 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
346 senoner 542 Global commands<br />
347 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
348     Current number of active voices<br />
349     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
350     Maximum amount of active voices<br />
351     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.3.</a>&nbsp;
352 senoner 542 Reset sampler<br />
353 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.4.</a>&nbsp;
354 schoenebeck 575 General sampler informations<br />
355 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
356 schoenebeck 945 MIDI Instrument Mapping<br />
357 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT MAP">6.7.1.</a>&nbsp;
358     Create a new MIDI instrument map<br />
359     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
360     Delete one particular or all MIDI instrument maps<br />
361     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
362     Get amount of existing MIDI instrument maps<br />
363     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
364     Getting all created MIDI instrument maps<br />
365     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
366     Getting MIDI instrument map information<br />
367     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
368     Renaming a MIDI instrument map<br />
369     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
370 schoenebeck 945 Create or replace a MIDI instrument map entry<br />
371 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
372 schoenebeck 945 Getting ammount of MIDI instrument map entries<br />
373 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
374     Getting indeces of all entries of a MIDI instrument map<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
376 schoenebeck 945 Remove an entry from the MIDI instrument map<br />
377 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
378 schoenebeck 945 Get current settings of MIDI instrument map entry<br />
379 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
380 schoenebeck 945 Clear MIDI instrument map<br />
381 schoenebeck 575 <a href="#command_syntax">7.</a>&nbsp;
382 senoner 542 Command Syntax<br />
383 schoenebeck 575 <a href="#events">8.</a>&nbsp;
384 senoner 542 Events<br />
385 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
386     Number of audio output devices changed<br />
387     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
388     Audio output device's settings changed<br />
389     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
390     Number of MIDI input devices changed<br />
391     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
392     MIDI input device's settings changed<br />
393     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
394 senoner 542 Number of sampler channels changed<br />
395 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.6.</a>&nbsp;
396 senoner 542 Number of active voices changed<br />
397 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.7.</a>&nbsp;
398 senoner 542 Number of active disk streams changed<br />
399 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.8.</a>&nbsp;
400 senoner 542 Disk stream buffer fill state changed<br />
401 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.9.</a>&nbsp;
402 senoner 542 Channel information changed<br />
403 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.10.</a>&nbsp;
404 schoenebeck 940 Total number of active voices changed<br />
405 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.11.</a>&nbsp;
406     Number of MIDI instrument maps changed<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.12.</a>&nbsp;
408     MIDI instrument map information changed<br />
409     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.13.</a>&nbsp;
410     Number of MIDI instruments changed<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.14.</a>&nbsp;
412     MIDI instrument information changed<br />
413     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.15.</a>&nbsp;
414 senoner 542 Miscellaneous and debugging events<br />
415 schoenebeck 974 <a href="#anchor14">9.</a>&nbsp;
416 senoner 542 Security Considerations<br />
417 schoenebeck 974 <a href="#anchor15">10.</a>&nbsp;
418 senoner 542 Acknowledgments<br />
419 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
420 senoner 542 References<br />
421     <a href="#rfc.authors">&#167;</a>&nbsp;
422     Author's Address<br />
423     <a href="#rfc.copyright">&#167;</a>&nbsp;
424     Intellectual Property and Copyright Statements<br />
425     </p>
426     <br clear="all" />
427    
428     <a name="anchor1"></a><br /><hr />
429 schoenebeck 974 <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>
430     <a name="rfc.section.1"></a><h3>1.&nbsp;
431     Requirements notation</h3>
432 senoner 542
433     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
434     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
435     and "OPTIONAL" in this document are to be interpreted as
436 schoenebeck 974 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>.
437 senoner 542 </p>
438     <p>This protocol is always case-sensitive if not explicitly
439     claimed the opposite.
440     </p>
441     <p>In examples, "C:" and "S:" indicate lines sent by the client
442     (front-end) and server (LinuxSampler) respectively. Lines in
443     examples must be interpreted as every line being CRLF
444     terminated (carriage return character followed by line feed
445     character as defined in the ASCII standard), thus the following
446     example:
447     </p>
448 schoenebeck 708 <p>
449     </p>
450 senoner 542 <blockquote class="text">
451     <p>C: "some line"
452     </p>
453     <p>&nbsp;&nbsp;&nbsp;"another line"
454     </p>
455 schoenebeck 708 </blockquote><p>
456 schoenebeck 940
457 schoenebeck 708 </p>
458 senoner 542 <p>must actually be interpreted as client sending the following
459     message:
460     </p>
461 schoenebeck 708 <p>
462     </p>
463 senoner 542 <blockquote class="text">
464     <p>"some line&lt;CR&gt;&lt;LF&gt;another
465     line&lt;CR&gt;&lt;LF&gt;"
466     </p>
467 schoenebeck 708 </blockquote><p>
468 schoenebeck 940
469 schoenebeck 708 </p>
470 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
471     &lt;LF&gt; the line feed character as defined in the ASCII
472     standard.
473     </p>
474     <p>Due to technical reasons, messages can arbitrary be
475     fragmented, means the following example:
476     </p>
477 schoenebeck 708 <p>
478     </p>
479 senoner 542 <blockquote class="text">
480     <p>S: "abcd"
481     </p>
482 schoenebeck 708 </blockquote><p>
483 schoenebeck 940
484 schoenebeck 708 </p>
485 senoner 542 <p>could also happen to be sent in three messages like in the
486     following sequence scenario:
487     </p>
488 schoenebeck 708 <p>
489     </p>
490 senoner 542 <ul class="text">
491     <li>server sending message "a"
492     </li>
493     <li>followed by a delay (pause) with
494     arbitrary duration
495     </li>
496     <li>followed by server sending message
497     "bcd&lt;CR&gt;"
498     </li>
499     <li>again followed by a delay (pause) with arbitrary
500     duration
501     </li>
502     <li>followed by server sending the message
503     "&lt;LF&gt;"
504     </li>
505 schoenebeck 708 </ul><p>
506 schoenebeck 940
507 schoenebeck 708 </p>
508 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
509     return and line feed characters respectively.
510     </p>
511 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
512 schoenebeck 974 <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>
513     <a name="rfc.section.2"></a><h3>2.&nbsp;
514     Versioning of this specification</h3>
515 schoenebeck 575
516     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
517     release of the LSCP specification will be tagged with a unique version
518     tuple. The version tuple consists at least of a major and minor version
519     number like:
520 schoenebeck 940
521 schoenebeck 575 </p>
522 schoenebeck 708 <p>
523     </p>
524 schoenebeck 575 <blockquote class="text">
525     <p>"1.2"
526     </p>
527 schoenebeck 708 </blockquote><p>
528 schoenebeck 940
529 schoenebeck 708 </p>
530 schoenebeck 575 <p>
531     In this example the major version number would be "1" and the minor
532     version number would be "2". Note that the version tuple might also
533     have more than two elements. The major version number defines a
534     group of backward compatible versions. That means a frontend is
535     compatible to the connected sampler if and only if the LSCP versions
536     to which each of the two parties complies to, match both of the
537     following rules:
538 schoenebeck 940
539 schoenebeck 575 </p>
540     <p>Compatibility:
541     </p>
542 schoenebeck 708 <p>
543     </p>
544 schoenebeck 575 <ol class="text">
545     <li>The frontend's LSCP major version and the sampler's LSCP
546     major version are exactly equal.
547     </li>
548     <li>The frontend's LSCP minor version is less or equal than
549     the sampler's LSCP minor version.
550     </li>
551 schoenebeck 708 </ol><p>
552 schoenebeck 940
553 schoenebeck 708 </p>
554 schoenebeck 575 <p>
555     Compatibility can only be claimed if both rules are true.
556     The frontend can use the
557 schoenebeck 974 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
558 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
559 schoenebeck 940
560 schoenebeck 575 </p>
561 senoner 542 <a name="anchor2"></a><br /><hr />
562 schoenebeck 974 <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>
563     <a name="rfc.section.3"></a><h3>3.&nbsp;
564     Introduction</h3>
565 senoner 542
566     <p>LinuxSampler is a so called software sampler application
567     capable to playback audio samples from a computer's Random
568     Access Memory (RAM) as well as directly streaming it from disk.
569     LinuxSampler is designed to be modular. It provides several so
570     called "sampler engines" where each engine is specialized for a
571     certain purpose. LinuxSampler has virtual channels which will be
572     referred in this document as "sampler channels". The channels
573     are in such way virtual as they can be connected to an
574     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
575     sampler channel 17 could be connected to an ALSA sequencer
576     device 64:0 and listening to MIDI channel 1 there). Each sampler
577 schoenebeck 575 channel will be associated with an instance of one of the available
578 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
579     each sampler channel can be routed to an arbitrary audio output
580     method (ALSA / JACK) and an arbitrary audio output channel
581     there.
582     </p>
583     <a name="anchor3"></a><br /><hr />
584 schoenebeck 974 <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>
585     <a name="rfc.section.4"></a><h3>4.&nbsp;
586     Focus of this protocol</h3>
587 senoner 542
588     <p>Main focus of this protocol is to provide a way to configure
589     a running LinuxSampler instance and to retrieve information
590     about it. The focus of this protocol is not to provide a way to
591     control synthesis parameters or even to trigger or release
592     notes. Or in other words; the focus are those functionalities
593     which are not covered by MIDI or which may at most be handled
594     via MIDI System Exclusive Messages.
595     </p>
596     <a name="anchor4"></a><br /><hr />
597 schoenebeck 974 <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>
598     <a name="rfc.section.5"></a><h3>5.&nbsp;
599     Communication Overview</h3>
600 senoner 542
601     <p>There are two distinct methods of communication between a
602     running instance of LinuxSampler and one or more control
603     applications, so called "front-ends": a simple request/response
604     communication method used by the clients to give commands to the
605     server as well as to inquire about server's status and a
606     subscribe/notify communication method used by the client to
607     subscribe to and receive notifications of certain events as they
608     happen on the server. The latter needs more effort to be
609     implemented in the front-end application. The two communication
610     methods will be described next.
611     </p>
612 schoenebeck 940 <a name="anchor5"></a><br /><hr />
613 schoenebeck 974 <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>
614     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
615     Request/response communication method</h3>
616 senoner 542
617 schoenebeck 575 <p>This simple communication method is based on
618 schoenebeck 974 <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
619 senoner 542 front-end application establishes a TCP connection to the
620     LinuxSampler instance on a certain host system. Then the
621     front-end application will send certain ASCII based commands
622     as defined in this document (every command line must be CRLF
623     terminated - see "Conventions used in this document" at the
624     beginning of this document) and the LinuxSampler application
625     will response after a certain process time with an
626     appropriate ASCII based answer, also as defined in this
627     document. So this TCP communication is simply based on query
628     and answer paradigm. That way LinuxSampler is only able to
629     answer on queries from front-ends, but not able to
630     automatically send messages to the client if it's not asked
631     to. The fronted should not reconnect to LinuxSampler for
632     every single command, instead it should keep the connection
633     established and simply resend message(s) for subsequent
634     commands. To keep information in the front-end up-to-date
635     the front-end has to periodically send new requests to get
636     the current information from the LinuxSampler instance. This
637     is often referred to as "polling". While polling is simple
638     to implement and may be OK to use in some cases, there may
639     be disadvantages to polling such as network traffic overhead
640     and information being out of date.
641     It is possible for a client or several clients to open more
642     than one connection to the server at the same time. It is
643     also possible to send more than one request to the server
644     at the same time but if those requests are sent over the
645     same connection server MUST execute them sequentially. Upon
646     executing a request server will produce a result set and
647     send it to the client. Each and every request made by the
648     client MUST result in a result set being sent back to the
649     client. No other data other than a result set may be sent by
650     a server to a client. No result set may be sent to a client
651     without the client sending request to the server first. On
652     any particular connection, result sets MUST be sent in their
653     entirety without being interrupted by other result sets. If
654     several requests got queued up at the server they MUST be
655     processed in the order they were received and result sets
656     MUST be sent back in the same order.
657     </p>
658 schoenebeck 940 <a name="anchor6"></a><br /><hr />
659 schoenebeck 974 <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>
660     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
661     Result format</h3>
662 senoner 542
663     <p>Result set could be one of the following types:
664     </p>
665 schoenebeck 708 <p>
666     </p>
667 senoner 542 <ol class="text">
668     <li>Normal
669     </li>
670     <li>Warning
671     </li>
672     <li>Error
673     </li>
674 schoenebeck 708 </ol><p>
675 schoenebeck 940
676 schoenebeck 708 </p>
677 senoner 542 <p>Warning and Error result sets MUST be single line and
678     have the following format:
679     </p>
680 schoenebeck 708 <p>
681     </p>
682 senoner 542 <ul class="text">
683     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
684     </li>
685     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
686     </li>
687 schoenebeck 708 </ul><p>
688 schoenebeck 940
689 schoenebeck 708 </p>
690 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
691     numeric unique identifiers of the warning or error and
692     &lt;warning-message&gt; and &lt;error-message&gt; are
693     human readable descriptions of the warning or error
694     respectively.
695     </p>
696     <p>Examples:
697     </p>
698 schoenebeck 708 <p>
699     </p>
700 senoner 542 <blockquote class="text">
701     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
702     </p>
703     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
704     </p>
705 schoenebeck 708 </blockquote><p>
706 schoenebeck 940
707 schoenebeck 708 </p>
708     <p>
709     </p>
710 senoner 542 <blockquote class="text">
711     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
712     </p>
713     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
714     </p>
715 schoenebeck 708 </blockquote><p>
716 schoenebeck 940
717 schoenebeck 708 </p>
718     <p>
719     </p>
720 senoner 542 <blockquote class="text">
721     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
722     </p>
723     <p>S: "ERR:9:There is no audio output device with index 123456."
724     </p>
725 schoenebeck 708 </blockquote><p>
726 schoenebeck 940
727 schoenebeck 708 </p>
728 senoner 542 <p>Normal result sets could be:
729     </p>
730 schoenebeck 708 <p>
731     </p>
732 senoner 542 <ol class="text">
733     <li>Empty
734     </li>
735     <li>Single line
736     </li>
737     <li>Multi-line
738     </li>
739 schoenebeck 708 </ol><p>
740 schoenebeck 940
741 schoenebeck 708 </p>
742 senoner 542 <p> Empty result set is issued when the server only
743     needed to acknowledge the fact that the request was
744     received and it was processed successfully and no
745     additional information is available. This result set has
746     the following format:
747     </p>
748 schoenebeck 708 <p>
749     </p>
750 senoner 542 <blockquote class="text">
751     <p>"OK"
752     </p>
753 schoenebeck 708 </blockquote><p>
754 schoenebeck 940
755 schoenebeck 708 </p>
756 senoner 542 <p>Example:
757     </p>
758 schoenebeck 708 <p>
759     </p>
760 senoner 542 <blockquote class="text">
761     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
762     </p>
763     <p>S: "OK"
764     </p>
765 schoenebeck 708 </blockquote><p>
766 schoenebeck 940
767 schoenebeck 708 </p>
768 senoner 542 <p>Single line result sets are command specific. One
769     example of a single line result set is an empty line.
770     Multi-line result sets are command specific and may
771     include one or more lines of information. They MUST
772     always end with the following line:
773     </p>
774 schoenebeck 708 <p>
775     </p>
776 senoner 542 <blockquote class="text">
777     <p>"."
778     </p>
779 schoenebeck 708 </blockquote><p>
780 schoenebeck 940
781 schoenebeck 708 </p>
782 senoner 542 <p>Example:
783     </p>
784 schoenebeck 708 <p>
785     </p>
786 senoner 542 <blockquote class="text">
787     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
788     </p>
789     <p>S: "DRIVER: ALSA"
790     </p>
791     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
792     </p>
793     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
794     </p>
795     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
796     </p>
797     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
798     </p>
799     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
800     </p>
801     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
802     </p>
803     <p>&nbsp;&nbsp;&nbsp;"."
804     </p>
805 schoenebeck 708 </blockquote><p>
806 schoenebeck 940
807 schoenebeck 708 </p>
808 senoner 542 <p>In addition to above mentioned formats, warnings and
809     empty result sets MAY be indexed. In this case, they
810     have the following formats respectively:
811     </p>
812 schoenebeck 708 <p>
813     </p>
814 senoner 542 <ul class="text">
815     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
816     </li>
817     <li>"OK[&lt;index&gt;]"
818     </li>
819 schoenebeck 708 </ul><p>
820 schoenebeck 940
821 schoenebeck 708 </p>
822 senoner 542 <p>where &lt;index&gt; is command specific and is used
823     to indicate channel number that the result set was
824     related to or other integer value.
825     </p>
826     <p>Each line of the result set MUST end with
827     &lt;CRLF&gt;.
828     </p>
829     <p>Examples:
830     </p>
831 schoenebeck 708 <p>
832     </p>
833 senoner 542 <blockquote class="text">
834     <p>C: "ADD CHANNEL"
835     </p>
836     <p>S: "OK[12]"
837     </p>
838 schoenebeck 708 </blockquote><p>
839 schoenebeck 940
840 schoenebeck 708 </p>
841     <p>
842     </p>
843 senoner 542 <blockquote class="text">
844     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
845     </p>
846     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
847     </p>
848 schoenebeck 708 </blockquote><p>
849 schoenebeck 940
850 schoenebeck 708 </p>
851 schoenebeck 940 <a name="anchor7"></a><br /><hr />
852 schoenebeck 974 <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>
853     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
854     Subscribe/notify communication method</h3>
855 senoner 542
856     <p>This more sophisticated communication method is actually
857     only an extension of the simple request/response
858     communication method. The front-end still uses a TCP
859     connection and sends the same commands on the TCP
860     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
861     commands that allow a client to tell the server that it is
862     interested in receiving notifications about certain events
863     as they happen on the server. The SUBSCRIBE command has the
864     following syntax:
865     </p>
866 schoenebeck 708 <p>
867     </p>
868 senoner 542 <blockquote class="text">
869     <p>SUBSCRIBE &lt;event-id&gt;
870     </p>
871 schoenebeck 708 </blockquote><p>
872 schoenebeck 940
873 schoenebeck 708 </p>
874 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
875     event that client wants to subscribe to. Upon receiving such
876     request, server SHOULD respond with OK and start sending
877     EVENT notifications when a given even has occurred to the
878     front-end when an event has occurred. It MAY be possible
879     certain events may be sent before OK response during real
880     time nature of their generation. Event messages have the
881     following format:
882     </p>
883 schoenebeck 708 <p>
884     </p>
885 senoner 542 <blockquote class="text">
886     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
887     </p>
888 schoenebeck 708 </blockquote><p>
889 schoenebeck 940
890 schoenebeck 708 </p>
891 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
892     has occurred and &lt;custom-event-data&gt; is event
893     specific.
894     </p>
895     <p>Several rules must be followed by the server when
896     generating events:
897     </p>
898 schoenebeck 708 <p>
899     </p>
900 senoner 542 <ol class="text">
901     <li>Events MUST NOT be sent to any client who has not
902     issued an appropriate SUBSCRIBE command.
903     </li>
904     <li>Events MUST only be sent using the same
905     connection that was used to subscribe to them.
906     </li>
907     <li>When response is being sent to the client, event
908     MUST be inserted in the stream before or after the
909     response, but NOT in the middle. Same is true about
910     the response. It should never be inserted in the
911     middle of the event message as well as any other
912     response.
913     </li>
914 schoenebeck 708 </ol><p>
915 schoenebeck 940
916 schoenebeck 708 </p>
917 senoner 542 <p>If the client is not interested in a particular event
918     anymore it MAY issue UNSUBSCRIBE command using the following
919     syntax:
920     </p>
921 schoenebeck 708 <p>
922     </p>
923 senoner 542 <blockquote class="text">
924     <p>UNSUBSCRIBE &lt;event-id&gt;
925     </p>
926 schoenebeck 708 </blockquote><p>
927 schoenebeck 940
928 schoenebeck 708 </p>
929 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
930     event that client is no longer interested in receiving. For
931 schoenebeck 974 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
932 senoner 542 </p>
933     <p>Example: the fill states of disk stream buffers have
934     changed on sampler channel 4 and the LinuxSampler instance
935     will react by sending the following message to all clients
936     who subscribed to this event:
937     </p>
938 schoenebeck 708 <p>
939     </p>
940 senoner 542 <blockquote class="text">
941     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
942     </p>
943 schoenebeck 708 </blockquote><p>
944 schoenebeck 940
945 schoenebeck 708 </p>
946 senoner 542 <p>Which means there are currently three active streams on
947     sampler channel 4, where the stream with ID "35" is filled
948     by 62%, stream with ID 33 is filled by 80% and stream with
949     ID 37 is filled by 98%.
950     </p>
951     <p>Clients may choose to open more than one connection to
952     the server and use some connections to receive notifications
953     while using other connections to issue commands to the
954     back-end. This is entirely legal and up to the
955     implementation. This does not change the protocol in any way
956     and no special restrictions exist on the server to allow or
957     disallow this or to track what connections belong to what
958     front-ends. Server will listen on a single port, accept
959     multiple connections and support protocol described in this
960     specification in it's entirety on this single port on each
961     connection that it accepted.
962     </p>
963     <p>Due to the fact that TCP is used for this communication,
964     dead peers will be detected automatically by the OS TCP
965     stack. While it may take a while to detect dead peers if no
966     traffic is being sent from server to client (TCP keep-alive
967     timer is set to 2 hours on many OSes) it will not be an
968     issue here as when notifications are sent by the server,
969     dead client will be detected quickly.
970     </p>
971     <p>When connection is closed for any reason server MUST
972     forget all subscriptions that were made on this connection.
973     If client reconnects it MUST resubscribe to all events that
974     it wants to receive.
975     </p>
976 schoenebeck 575 <a name="control_commands"></a><br /><hr />
977 schoenebeck 974 <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>
978     <a name="rfc.section.6"></a><h3>6.&nbsp;
979     Description for control commands</h3>
980 senoner 542
981     <p>This chapter will describe the available control commands
982     that can be sent on the TCP connection in detail. Some certain
983 schoenebeck 974 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>
984     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
985 senoner 542 multiple-line responses. In this case LinuxSampler signals the
986     end of the response by a "." (single dot) line.
987     </p>
988 schoenebeck 940 <a name="anchor8"></a><br /><hr />
989 schoenebeck 974 <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>
990     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
991     Ignored lines and comments</h3>
992 senoner 542
993     <p>White lines, that is lines which only contain space and
994     tabulator characters, and lines that start with a "#"
995     character are ignored, thus it's possible for example to
996     group commands and to place comments in a LSCP script
997     file.
998     </p>
999 schoenebeck 940 <a name="anchor9"></a><br /><hr />
1000 schoenebeck 974 <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>
1001     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1002     Configuring audio drivers</h3>
1003 senoner 542
1004     <p>Instances of drivers in LinuxSampler are called devices.
1005     You can use multiple audio devices simultaneously, e.g. to
1006     output the sound of one sampler channel using the ALSA audio
1007     output driver, and on another sampler channel you might want
1008     to use the JACK audio output driver. For particular audio
1009     output systems it's also possible to create several devices
1010     of the same audio output driver, e.g. two separate ALSA
1011     audio output devices for using two different sound cards at
1012     the same time. This chapter describes all commands to
1013     configure LinuxSampler's audio output devices and their
1014     parameters.
1015     </p>
1016     <p>Instead of defining commands and parameters for each
1017     driver individually, all possible parameters, their meanings
1018     and possible values have to be obtained at runtime. This
1019     makes the protocol a bit abstract, but has the advantage,
1020     that front-ends can be written independently of what drivers
1021     are currently implemented and what parameters these drivers
1022     are actually offering. This means front-ends can even handle
1023     drivers which are implemented somewhere in future without
1024     modifying the front-end at all.
1025     </p>
1026     <p>Note: examples in this chapter showing particular
1027     parameters of drivers are not meant as specification of the
1028     drivers' parameters. Driver implementations in LinuxSampler
1029     might have complete different parameter names and meanings
1030     than shown in these examples or might change in future, so
1031     these examples are only meant for showing how to retrieve
1032     what parameters drivers are offering, how to retrieve their
1033     possible values, etc.
1034     </p>
1035 schoenebeck 940 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1036 schoenebeck 974 <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>
1037     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1038     Getting amount of available audio output drivers</h3>
1039 senoner 542
1040     <p>Use the following command to get the number of
1041     audio output drivers currently available for the
1042     LinuxSampler instance:
1043     </p>
1044 schoenebeck 708 <p>
1045     </p>
1046 senoner 542 <blockquote class="text">
1047     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1048     </p>
1049 schoenebeck 708 </blockquote><p>
1050 schoenebeck 940
1051 schoenebeck 708 </p>
1052 senoner 542 <p>Possible Answers:
1053     </p>
1054 schoenebeck 708 <p>
1055     </p>
1056 senoner 542 <blockquote class="text">
1057     <p>LinuxSampler will answer by sending the
1058     number of audio output drivers.
1059     </p>
1060 schoenebeck 708 </blockquote><p>
1061 schoenebeck 940
1062 schoenebeck 708 </p>
1063 senoner 542 <p>Example:
1064     </p>
1065 schoenebeck 708 <p>
1066     </p>
1067 senoner 542 <blockquote class="text">
1068     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1069     </p>
1070     <p>S: "2"
1071     </p>
1072 schoenebeck 708 </blockquote><p>
1073 schoenebeck 940
1074 schoenebeck 708 </p>
1075 schoenebeck 940 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1076 schoenebeck 974 <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>
1077     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1078     Getting all available audio output drivers</h3>
1079 senoner 542
1080     <p>Use the following command to list all audio output
1081     drivers currently available for the LinuxSampler
1082     instance:
1083     </p>
1084 schoenebeck 708 <p>
1085     </p>
1086 senoner 542 <blockquote class="text">
1087     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1088     </p>
1089 schoenebeck 708 </blockquote><p>
1090 schoenebeck 940
1091 schoenebeck 708 </p>
1092 senoner 542 <p>Possible Answers:
1093     </p>
1094 schoenebeck 708 <p>
1095     </p>
1096 senoner 542 <blockquote class="text">
1097     <p>LinuxSampler will answer by sending comma
1098     separated character strings, each symbolizing an
1099     audio output driver.
1100     </p>
1101 schoenebeck 708 </blockquote><p>
1102 schoenebeck 940
1103 schoenebeck 708 </p>
1104 senoner 542 <p>Example:
1105     </p>
1106 schoenebeck 708 <p>
1107     </p>
1108 senoner 542 <blockquote class="text">
1109     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1110     </p>
1111     <p>S: "ALSA,JACK"
1112     </p>
1113 schoenebeck 708 </blockquote><p>
1114 schoenebeck 940
1115 schoenebeck 708 </p>
1116 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1117 schoenebeck 974 <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>
1118     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1119     Getting information about a specific audio
1120 schoenebeck 940 output driver</h3>
1121 senoner 542
1122     <p>Use the following command to get detailed information
1123     about a specific audio output driver:
1124     </p>
1125 schoenebeck 708 <p>
1126     </p>
1127 senoner 542 <blockquote class="text">
1128     <p>GET AUDIO_OUTPUT_DRIVER INFO
1129     &lt;audio-output-driver&gt;
1130     </p>
1131 schoenebeck 708 </blockquote><p>
1132 schoenebeck 940
1133 schoenebeck 708 </p>
1134 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1135     audio output driver, returned by the
1136 schoenebeck 974 <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.
1137 senoner 542 </p>
1138     <p>Possible Answers:
1139     </p>
1140 schoenebeck 708 <p>
1141     </p>
1142 senoner 542 <blockquote class="text">
1143     <p>LinuxSampler will answer by sending a
1144     &lt;CRLF&gt; separated list. Each answer line
1145     begins with the information category name
1146     followed by a colon and then a space character
1147     &lt;SP&gt; and finally the info character string
1148     to that info category. At the moment the
1149     following information categories are
1150     defined:
1151     </p>
1152 schoenebeck 708 <p>
1153     </p>
1154 senoner 542 <blockquote class="text">
1155     <p>DESCRIPTION -
1156     </p>
1157     <blockquote class="text">
1158     <p> character string describing the
1159     audio output driver
1160     </p>
1161 schoenebeck 940 </blockquote>
1162    
1163 senoner 542
1164     <p>VERSION -
1165     </p>
1166     <blockquote class="text">
1167     <p>character string reflecting the
1168     driver's version
1169     </p>
1170 schoenebeck 940 </blockquote>
1171    
1172 senoner 542
1173     <p>PARAMETERS -
1174     </p>
1175     <blockquote class="text">
1176     <p>comma separated list of all
1177     parameters available for the given
1178     audio output driver, at least
1179     parameters 'channels', 'samplerate'
1180     and 'active' are offered by all audio
1181     output drivers
1182     </p>
1183 schoenebeck 940 </blockquote>
1184    
1185 senoner 542
1186 schoenebeck 940 </blockquote>
1187    
1188 senoner 542
1189     <p>The mentioned fields above don't have to be
1190     in particular order.
1191     </p>
1192 schoenebeck 708 </blockquote><p>
1193 schoenebeck 940
1194 schoenebeck 708 </p>
1195 senoner 542 <p>Example:
1196     </p>
1197 schoenebeck 708 <p>
1198     </p>
1199 senoner 542 <blockquote class="text">
1200     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1201     </p>
1202     <p>S: "DESCRIPTION: Advanced Linux Sound
1203     Architecture"
1204     </p>
1205     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1206     </p>
1207     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1208     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1209     FRAGMENTSIZE,CARD"
1210     </p>
1211     <p>&nbsp;&nbsp;&nbsp;"."
1212     </p>
1213 schoenebeck 708 </blockquote><p>
1214 schoenebeck 940
1215 schoenebeck 708 </p>
1216 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1217 schoenebeck 974 <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>
1218     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1219     Getting information about specific audio
1220 schoenebeck 940 output driver parameter</h3>
1221 senoner 542
1222     <p>Use the following command to get detailed information
1223     about a specific audio output driver parameter:
1224     </p>
1225 schoenebeck 708 <p>
1226     </p>
1227 senoner 542 <blockquote class="text">
1228     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1229     </p>
1230 schoenebeck 708 </blockquote><p>
1231 schoenebeck 940
1232 schoenebeck 708 </p>
1233 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1234 schoenebeck 974 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,
1235 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1236     obtained (as returned by the
1237 schoenebeck 974 <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
1238 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1239     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1240     pairs in form of "key1=val1 key2=val2 ...", where character string values
1241     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1242     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1243     the front-end application can simply put all parameters into &lt;deplist&gt;
1244     with the values already selected by the user.
1245     </p>
1246     <p>Possible Answers:
1247     </p>
1248 schoenebeck 708 <p>
1249     </p>
1250 senoner 542 <blockquote class="text">
1251     <p>LinuxSampler will answer by sending a
1252     &lt;CRLF&gt; separated list.
1253     Each answer line begins with the information category name
1254     followed by a colon and then a space character &lt;SP&gt; and
1255     finally
1256     the info character string to that info category. There are
1257     information which is always returned, independently of the
1258     given driver parameter and there are optional information
1259     which is only shown dependently to given driver parameter. At
1260     the moment the following information categories are defined:
1261     </p>
1262 schoenebeck 708 </blockquote><p>
1263 schoenebeck 940
1264 schoenebeck 708 </p>
1265     <p>
1266     </p>
1267 senoner 542 <blockquote class="text">
1268     <p>TYPE -
1269     </p>
1270     <blockquote class="text">
1271     <p>either "BOOL" for boolean value(s) or
1272     "INT" for integer
1273     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1274     character string(s)
1275     (always returned, no matter which driver parameter)
1276     </p>
1277 schoenebeck 940 </blockquote>
1278    
1279 senoner 542
1280     <p>DESCRIPTION -
1281     </p>
1282     <blockquote class="text">
1283     <p>arbitrary text describing the purpose of the parameter
1284     (always returned, no matter which driver parameter)
1285     </p>
1286 schoenebeck 940 </blockquote>
1287    
1288 senoner 542
1289     <p>MANDATORY -
1290     </p>
1291     <blockquote class="text">
1292     <p>either true or false, defines if this parameter must be
1293     given when the device is to be created with the
1294 schoenebeck 974 <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>
1295 senoner 542 command (always returned, no matter which driver parameter)
1296     </p>
1297 schoenebeck 940 </blockquote>
1298    
1299 senoner 542
1300     <p>FIX -
1301     </p>
1302     <blockquote class="text">
1303     <p>either true or false, if false then this parameter can
1304     be changed at any time, once the device is created by
1305 schoenebeck 974 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>
1306 senoner 542 command (always returned, no matter which driver parameter)
1307     </p>
1308 schoenebeck 940 </blockquote>
1309    
1310 senoner 542
1311     <p>MULTIPLICITY -
1312     </p>
1313     <blockquote class="text">
1314     <p>either true or false, defines if this parameter allows
1315     only one value or a list of values, where true means
1316     multiple values and false only a single value allowed
1317     (always returned, no matter which driver parameter)
1318     </p>
1319 schoenebeck 940 </blockquote>
1320    
1321 senoner 542
1322     <p>DEPENDS -
1323     </p>
1324     <blockquote class="text">
1325 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1326 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1327     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1328     listed parameters, for example assuming that an audio
1329     driver (like the ALSA driver) offers parameters 'card'
1330     and 'samplerate' then parameter 'samplerate' would
1331     depend on 'card' because the possible values for
1332     'samplerate' depends on the sound card which can be
1333     chosen by the 'card' parameter
1334     (optionally returned, dependent to driver parameter)
1335     </p>
1336 schoenebeck 940 </blockquote>
1337    
1338 senoner 542
1339     <p>DEFAULT -
1340     </p>
1341     <blockquote class="text">
1342     <p>reflects the default value for this parameter which is
1343     used when the device is created and not explicitly
1344 schoenebeck 974 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,
1345 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1346     list, that's why character strings are encapsulated into
1347     apostrophes (')
1348     (optionally returned, dependent to driver parameter)
1349     </p>
1350 schoenebeck 940 </blockquote>
1351    
1352 senoner 542
1353     <p>RANGE_MIN -
1354     </p>
1355     <blockquote class="text">
1356     <p>defines lower limit of the allowed value range for this
1357     parameter, can be an integer value as well as a dotted
1358     number, this parameter is often used in conjunction
1359     with RANGE_MAX, but may also appear without
1360     (optionally returned, dependent to driver parameter)
1361     </p>
1362 schoenebeck 940 </blockquote>
1363    
1364 senoner 542
1365     <p>RANGE_MAX -
1366     </p>
1367     <blockquote class="text">
1368     <p>defines upper limit of the allowed value range for this
1369     parameter, can be an integer value as well as a dotted
1370     number, this parameter is often used in conjunction with
1371     RANGE_MIN, but may also appear without
1372     (optionally returned, dependent to driver parameter)
1373     </p>
1374 schoenebeck 940 </blockquote>
1375    
1376 senoner 542
1377     <p>POSSIBILITIES -
1378     </p>
1379     <blockquote class="text">
1380     <p>comma separated list of possible values for this
1381     parameter, character strings are encapsulated into
1382     apostrophes
1383     (optionally returned, dependent to driver parameter)
1384     </p>
1385 schoenebeck 940 </blockquote>
1386    
1387 senoner 542
1388 schoenebeck 708 </blockquote><p>
1389 schoenebeck 940
1390 schoenebeck 708 </p>
1391 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1392     </p>
1393     <p>Examples:
1394     </p>
1395 schoenebeck 708 <p>
1396     </p>
1397 senoner 542 <blockquote class="text">
1398     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1399     </p>
1400     <p>S: "DESCRIPTION: sound card to be used"
1401     </p>
1402     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1403     </p>
1404     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1405     </p>
1406     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1407     </p>
1408     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1409     </p>
1410     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1411     </p>
1412     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1413     </p>
1414     <p>&nbsp;&nbsp;&nbsp;"."
1415     </p>
1416 schoenebeck 708 </blockquote><p>
1417 schoenebeck 940
1418 schoenebeck 708 </p>
1419     <p>
1420     </p>
1421 senoner 542 <blockquote class="text">
1422     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1423     </p>
1424     <p>S: "DESCRIPTION: output sample rate in Hz"
1425     </p>
1426     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1427     </p>
1428     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1429     </p>
1430     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1431     </p>
1432     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1433     </p>
1434     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1435     </p>
1436     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1437     </p>
1438     <p>&nbsp;&nbsp;&nbsp;"."
1439     </p>
1440 schoenebeck 708 </blockquote><p>
1441 schoenebeck 940
1442 schoenebeck 708 </p>
1443     <p>
1444     </p>
1445 senoner 542 <blockquote class="text">
1446     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1447     </p>
1448     <p>S: "DESCRIPTION: output sample rate in Hz"
1449     </p>
1450     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1451     </p>
1452     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1453     </p>
1454     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1455     </p>
1456     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1457     </p>
1458     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1459     </p>
1460     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1461     </p>
1462     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1463     </p>
1464     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1465     </p>
1466     <p>&nbsp;&nbsp;&nbsp;"."
1467     </p>
1468 schoenebeck 708 </blockquote><p>
1469 schoenebeck 940
1470 schoenebeck 708 </p>
1471 schoenebeck 940 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1472 schoenebeck 974 <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>
1473     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1474     Creating an audio output device</h3>
1475 senoner 542
1476     <p>Use the following command to create a new audio output device for the desired audio output system:
1477     </p>
1478 schoenebeck 708 <p>
1479     </p>
1480 senoner 542 <blockquote class="text">
1481     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1482     </p>
1483 schoenebeck 708 </blockquote><p>
1484 schoenebeck 940
1485 schoenebeck 708 </p>
1486 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1487 schoenebeck 575 output system as returned by the
1488 schoenebeck 974 <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>
1489 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1490 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1491     character string values should be encapsulated into apostrophes (').
1492     Note that there might be drivers which require parameter(s) to be
1493     given with this command. Use the previously described commands in
1494     this chapter to get this information.
1495     </p>
1496     <p>Possible Answers:
1497     </p>
1498 schoenebeck 708 <p>
1499     </p>
1500 senoner 542 <blockquote class="text">
1501     <p>"OK[&lt;device-id&gt;]" -
1502     </p>
1503     <blockquote class="text">
1504     <p>in case the device was successfully created, where
1505     &lt;device-id&gt; is the numerical ID of the new device
1506     </p>
1507 schoenebeck 940 </blockquote>
1508    
1509 senoner 542
1510     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1511     </p>
1512     <blockquote class="text">
1513     <p>in case the device was created successfully, where
1514     &lt;device-id&gt; is the numerical ID of the new device, but there
1515     are noteworthy issue(s) related (e.g. sound card doesn't
1516     support given hardware parameters and the driver is using
1517     fall-back values), providing an appropriate warning code and
1518     warning message
1519     </p>
1520 schoenebeck 940 </blockquote>
1521    
1522 senoner 542
1523     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1524     </p>
1525     <blockquote class="text">
1526     <p>in case it failed, providing an appropriate error code and error message
1527     </p>
1528 schoenebeck 940 </blockquote>
1529    
1530 senoner 542
1531 schoenebeck 708 </blockquote><p>
1532 schoenebeck 940
1533 schoenebeck 708 </p>
1534 senoner 542 <p>Examples:
1535     </p>
1536 schoenebeck 708 <p>
1537     </p>
1538 senoner 542 <blockquote class="text">
1539     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1540     </p>
1541     <p>S: "OK[0]"
1542     </p>
1543 schoenebeck 708 </blockquote><p>
1544 schoenebeck 940
1545 schoenebeck 708 </p>
1546     <p>
1547     </p>
1548 senoner 542 <blockquote class="text">
1549     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1550     </p>
1551     <p>S: "OK[1]"
1552     </p>
1553 schoenebeck 708 </blockquote><p>
1554 schoenebeck 940
1555 schoenebeck 708 </p>
1556 schoenebeck 940 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1557 schoenebeck 974 <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>
1558     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1559     Destroying an audio output device</h3>
1560 senoner 542
1561     <p>Use the following command to destroy a created output device:
1562     </p>
1563 schoenebeck 708 <p>
1564     </p>
1565 senoner 542 <blockquote class="text">
1566     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1567     </p>
1568 schoenebeck 708 </blockquote><p>
1569 schoenebeck 940
1570 schoenebeck 708 </p>
1571 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1572     audio output device as given by the
1573 schoenebeck 974 <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>
1574     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>
1575 senoner 542 command.
1576     </p>
1577     <p>Possible Answers:
1578     </p>
1579 schoenebeck 708 <p>
1580     </p>
1581 senoner 542 <blockquote class="text">
1582     <p>"OK" -
1583     </p>
1584     <blockquote class="text">
1585     <p>in case the device was successfully destroyed
1586     </p>
1587 schoenebeck 940 </blockquote>
1588    
1589 senoner 542
1590     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1591     </p>
1592     <blockquote class="text">
1593     <p>in case the device was destroyed successfully, but there are
1594     noteworthy issue(s) related (e.g. an audio over ethernet
1595     driver was unloaded but the other host might not be
1596     informed about this situation), providing an appropriate
1597     warning code and warning message
1598     </p>
1599 schoenebeck 940 </blockquote>
1600    
1601 senoner 542
1602     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1603     </p>
1604     <blockquote class="text">
1605     <p>in case it failed, providing an appropriate error code and
1606     error message
1607     </p>
1608 schoenebeck 940 </blockquote>
1609    
1610 senoner 542
1611 schoenebeck 708 </blockquote><p>
1612 schoenebeck 940
1613 schoenebeck 708 </p>
1614 senoner 542 <p>Example:
1615     </p>
1616 schoenebeck 708 <p>
1617     </p>
1618 senoner 542 <blockquote class="text">
1619     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1620     </p>
1621     <p>S: "OK"
1622     </p>
1623 schoenebeck 708 </blockquote><p>
1624 schoenebeck 940
1625 schoenebeck 708 </p>
1626 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1627 schoenebeck 974 <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>
1628     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1629     Getting all created audio output device count</h3>
1630 senoner 542
1631     <p>Use the following command to count all created audio output devices:
1632     </p>
1633 schoenebeck 708 <p>
1634     </p>
1635 senoner 542 <blockquote class="text">
1636     <p>GET AUDIO_OUTPUT_DEVICES
1637     </p>
1638 schoenebeck 708 </blockquote><p>
1639 schoenebeck 940
1640 schoenebeck 708 </p>
1641 senoner 542 <p>Possible Answers:
1642     </p>
1643 schoenebeck 708 <p>
1644     </p>
1645 senoner 542 <blockquote class="text">
1646     <p>LinuxSampler will answer by sending the current number of all
1647     audio output devices.
1648     </p>
1649 schoenebeck 708 </blockquote><p>
1650 schoenebeck 940
1651 schoenebeck 708 </p>
1652 senoner 542 <p>Example:
1653     </p>
1654 schoenebeck 708 <p>
1655     </p>
1656 senoner 542 <blockquote class="text">
1657     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1658     </p>
1659     <p>S: "4"
1660     </p>
1661 schoenebeck 708 </blockquote><p>
1662 schoenebeck 940
1663 schoenebeck 708 </p>
1664 schoenebeck 940 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1665 schoenebeck 974 <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>
1666     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1667     Getting all created audio output device list</h3>
1668 senoner 542
1669     <p>Use the following command to list all created audio output devices:
1670     </p>
1671 schoenebeck 708 <p>
1672     </p>
1673 senoner 542 <blockquote class="text">
1674     <p>LIST AUDIO_OUTPUT_DEVICES
1675     </p>
1676 schoenebeck 708 </blockquote><p>
1677 schoenebeck 940
1678 schoenebeck 708 </p>
1679 senoner 542 <p>Possible Answers:
1680     </p>
1681 schoenebeck 708 <p>
1682     </p>
1683 senoner 542 <blockquote class="text">
1684     <p>LinuxSampler will answer by sending a comma separated list with
1685     the numerical IDs of all audio output devices.
1686     </p>
1687 schoenebeck 708 </blockquote><p>
1688 schoenebeck 940
1689 schoenebeck 708 </p>
1690 senoner 542 <p>Example:
1691     </p>
1692 schoenebeck 708 <p>
1693     </p>
1694 senoner 542 <blockquote class="text">
1695     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1696     </p>
1697     <p>S: "0,1,4,5"
1698     </p>
1699 schoenebeck 708 </blockquote><p>
1700 schoenebeck 940
1701 schoenebeck 708 </p>
1702 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1703 schoenebeck 974 <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>
1704     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1705     Getting current settings of an audio output device</h3>
1706 senoner 542
1707     <p>Use the following command to get current settings of a specific, created audio output device:
1708     </p>
1709 schoenebeck 708 <p>
1710     </p>
1711 senoner 542 <blockquote class="text">
1712     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1713     </p>
1714 schoenebeck 708 </blockquote><p>
1715 schoenebeck 940
1716 schoenebeck 708 </p>
1717 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1718     of the audio output device as e.g. returned by the
1719 schoenebeck 974 <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.
1720 senoner 542 </p>
1721     <p>Possible Answers:
1722     </p>
1723     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1724     Each answer line begins with the information category name
1725     followed by a colon and then a space character &lt;SP&gt; and finally
1726     the info character string to that info category. As some
1727     parameters might allow multiple values, character strings are
1728     encapsulated into apostrophes ('). At the moment the following
1729     information categories are defined (independently of device):
1730     </p>
1731 schoenebeck 708 <p>
1732     </p>
1733 senoner 542 <blockquote class="text">
1734     <p>DRIVER -
1735     </p>
1736     <blockquote class="text">
1737     <p>identifier of the used audio output driver, as also
1738     returned by the
1739 schoenebeck 974 <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>
1740 senoner 542 command
1741     </p>
1742 schoenebeck 940 </blockquote>
1743    
1744 senoner 542
1745     <p>CHANNELS -
1746     </p>
1747     <blockquote class="text">
1748     <p>amount of audio output channels this device currently
1749     offers
1750     </p>
1751 schoenebeck 940 </blockquote>
1752    
1753 senoner 542
1754     <p>SAMPLERATE -
1755     </p>
1756     <blockquote class="text">
1757     <p>playback sample rate the device uses
1758     </p>
1759 schoenebeck 940 </blockquote>
1760    
1761 senoner 542
1762     <p>ACTIVE -
1763     </p>
1764     <blockquote class="text">
1765     <p>either true or false, if false then the audio device is
1766     inactive and doesn't output any sound, nor do the
1767     sampler channels connected to this audio device render
1768     any audio
1769     </p>
1770 schoenebeck 940 </blockquote>
1771    
1772 senoner 542
1773 schoenebeck 708 </blockquote><p>
1774 schoenebeck 940
1775 schoenebeck 708 </p>
1776 senoner 542 <p>The mentioned fields above don't have to be in particular
1777     order. The fields above are only those fields which are
1778     returned by all audio output devices. Every audio output driver
1779     might have its own, additional driver specific parameters (see
1780 schoenebeck 974 <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>)
1781 senoner 542 which are also returned by this command.
1782     </p>
1783     <p>Example:
1784     </p>
1785 schoenebeck 708 <p>
1786     </p>
1787 senoner 542 <blockquote class="text">
1788     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1789     </p>
1790     <p>S: "DRIVER: ALSA"
1791     </p>
1792     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1793     </p>
1794     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1795     </p>
1796     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1797     </p>
1798     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1799     </p>
1800     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1801     </p>
1802     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1803     </p>
1804     <p>&nbsp;&nbsp;&nbsp;"."
1805     </p>
1806 schoenebeck 708 </blockquote><p>
1807 schoenebeck 940
1808 schoenebeck 708 </p>
1809 schoenebeck 940 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1810 schoenebeck 974 <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>
1811     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1812     Changing settings of audio output devices</h3>
1813 senoner 542
1814     <p>Use the following command to alter a specific setting of a created audio output device:
1815     </p>
1816 schoenebeck 708 <p>
1817     </p>
1818 senoner 542 <blockquote class="text">
1819     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1820     </p>
1821 schoenebeck 708 </blockquote><p>
1822 schoenebeck 940
1823 schoenebeck 708 </p>
1824 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1825 schoenebeck 575 audio output device as given by the
1826 schoenebeck 974 <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>
1827     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>
1828 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1829 senoner 542 and &lt;value&gt; by the new value for this parameter.
1830     </p>
1831     <p>Possible Answers:
1832     </p>
1833 schoenebeck 708 <p>
1834     </p>
1835 senoner 542 <blockquote class="text">
1836     <p>"OK" -
1837     </p>
1838     <blockquote class="text">
1839     <p>in case setting was successfully changed
1840     </p>
1841 schoenebeck 940 </blockquote>
1842    
1843 senoner 542
1844     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1845     </p>
1846     <blockquote class="text">
1847     <p>in case setting was changed successfully, but there are
1848     noteworthy issue(s) related, providing an appropriate
1849     warning code and warning message
1850     </p>
1851 schoenebeck 940 </blockquote>
1852    
1853 senoner 542
1854     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1855     </p>
1856     <blockquote class="text">
1857     <p>in case it failed, providing an appropriate error code and
1858     error message
1859     </p>
1860 schoenebeck 940 </blockquote>
1861    
1862 senoner 542
1863 schoenebeck 708 </blockquote><p>
1864 schoenebeck 940
1865 schoenebeck 708 </p>
1866 senoner 542 <p>Example:
1867     </p>
1868 schoenebeck 708 <p>
1869     </p>
1870 senoner 542 <blockquote class="text">
1871     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1872     </p>
1873     <p>S: "OK"
1874     </p>
1875 schoenebeck 708 </blockquote><p>
1876 schoenebeck 940
1877 schoenebeck 708 </p>
1878 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1879 schoenebeck 974 <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>
1880     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1881     Getting information about an audio channel</h3>
1882 senoner 542
1883     <p>Use the following command to get information about an audio channel:
1884     </p>
1885 schoenebeck 708 <p>
1886     </p>
1887 senoner 542 <blockquote class="text">
1888     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1889     </p>
1890 schoenebeck 708 </blockquote><p>
1891 schoenebeck 940
1892 schoenebeck 708 </p>
1893 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1894 schoenebeck 974 <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>
1895     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>
1896 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
1897 senoner 542 </p>
1898     <p>Possible Answers:
1899     </p>
1900 schoenebeck 708 <p>
1901     </p>
1902 senoner 542 <blockquote class="text">
1903     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1904     Each answer line begins with the information category name
1905     followed by a colon and then a space character &lt;SP&gt; and finally
1906     the info character string to that info category. At the moment
1907     the following information categories are defined:
1908     </p>
1909 schoenebeck 708 <p>
1910     </p>
1911 senoner 542 <blockquote class="text">
1912     <p>NAME -
1913     </p>
1914     <blockquote class="text">
1915     <p>arbitrary character string naming the channel, which
1916     doesn't have to be unique (always returned by all audio channels)
1917     </p>
1918 schoenebeck 940 </blockquote>
1919    
1920 senoner 542
1921     <p>IS_MIX_CHANNEL -
1922     </p>
1923     <blockquote class="text">
1924     <p>either true or false, a mix-channel is not a real,
1925     independent audio channel, but a virtual channel which
1926     is mixed to another real channel, this mechanism is
1927     needed for sampler engines which need more audio
1928     channels than the used audio system might be able to offer
1929     (always returned by all audio channels)
1930     </p>
1931 schoenebeck 940 </blockquote>
1932    
1933 senoner 542
1934     <p>MIX_CHANNEL_DESTINATION -
1935     </p>
1936     <blockquote class="text">
1937     <p>numerical ID (positive integer including 0)
1938     which reflects the real audio channel (of the same audio
1939     output device) this mix channel refers to, means where
1940     the audio signal actually will be routed / added to
1941     (only returned in case the audio channel is mix channel)
1942     </p>
1943 schoenebeck 940 </blockquote>
1944    
1945 senoner 542
1946 schoenebeck 940 </blockquote>
1947    
1948 senoner 542
1949 schoenebeck 708 </blockquote><p>
1950 schoenebeck 940
1951 schoenebeck 708 </p>
1952 senoner 542 <p>The mentioned fields above don't have to be in particular
1953     order. The fields above are only those fields which are
1954     generally returned for the described cases by all audio
1955     channels regardless of the audio driver. Every audio channel
1956     might have its own, additional driver and channel specific
1957     parameters.
1958     </p>
1959     <p>Examples:
1960     </p>
1961 schoenebeck 708 <p>
1962     </p>
1963 senoner 542 <blockquote class="text">
1964     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
1965     </p>
1966     <p>S: "NAME: studio monitor left"
1967     </p>
1968     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
1969     </p>
1970     <p>&nbsp;&nbsp;&nbsp;"."
1971     </p>
1972 schoenebeck 708 </blockquote><p>
1973 schoenebeck 940
1974 schoenebeck 708 </p>
1975     <p>
1976     </p>
1977 senoner 542 <blockquote class="text">
1978     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
1979     </p>
1980     <p>S: "NAME: studio monitor right"
1981     </p>
1982     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
1983     </p>
1984     <p>&nbsp;&nbsp;&nbsp;"."
1985     </p>
1986 schoenebeck 708 </blockquote><p>
1987 schoenebeck 940
1988 schoenebeck 708 </p>
1989     <p>
1990     </p>
1991 senoner 542 <blockquote class="text">
1992     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
1993     </p>
1994     <p>S: "NAME: studio monitor left"
1995     </p>
1996     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
1997     </p>
1998     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
1999     </p>
2000     <p>&nbsp;&nbsp;&nbsp;"."
2001     </p>
2002 schoenebeck 708 </blockquote><p>
2003 schoenebeck 940
2004 schoenebeck 708 </p>
2005     <p>
2006     </p>
2007 senoner 542 <blockquote class="text">
2008     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2009     </p>
2010     <p>S: "NAME: 'ardour (left)'"
2011     </p>
2012     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2013     </p>
2014     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2015     </p>
2016     <p>&nbsp;&nbsp;&nbsp;"."
2017     </p>
2018 schoenebeck 708 </blockquote><p>
2019 schoenebeck 940
2020 schoenebeck 708 </p>
2021 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2022 schoenebeck 974 <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>
2023     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2024     Getting information about specific audio channel parameter</h3>
2025 senoner 542
2026     <p>Use the following command to get detailed information about specific audio channel parameter:
2027     </p>
2028 schoenebeck 708 <p>
2029     </p>
2030 senoner 542 <blockquote class="text">
2031     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2032     </p>
2033 schoenebeck 708 </blockquote><p>
2034 schoenebeck 940
2035 schoenebeck 708 </p>
2036 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2037 schoenebeck 974 <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>
2038     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>
2039 senoner 542 command, &lt;chan&gt; the audio channel number
2040     and &lt;param&gt; a specific channel parameter name for which information should
2041 schoenebeck 974 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).
2042 senoner 542 </p>
2043     <p>Possible Answers:
2044     </p>
2045 schoenebeck 708 <p>
2046     </p>
2047 senoner 542 <blockquote class="text">
2048     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2049     Each answer line begins with the information category name
2050     followed by a colon and then a space character &lt;SP&gt; and finally
2051     the info character string to that info category. There are
2052     information which is always returned, independently of the
2053     given channel parameter and there is optional information
2054     which is only shown dependently to the given audio channel. At
2055     the moment the following information categories are defined:
2056     </p>
2057 schoenebeck 708 <p>
2058     </p>
2059 senoner 542 <blockquote class="text">
2060     <p>TYPE -
2061     </p>
2062     <blockquote class="text">
2063     <p>either "BOOL" for boolean value(s) or "INT" for integer
2064     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2065     character string(s)
2066     (always returned)
2067     </p>
2068 schoenebeck 940 </blockquote>
2069    
2070 senoner 542
2071     <p>DESCRIPTION -
2072     </p>
2073     <blockquote class="text">
2074     <p>arbitrary text describing the purpose of the parameter (always returned)
2075     </p>
2076 schoenebeck 940 </blockquote>
2077    
2078 senoner 542
2079     <p>FIX -
2080     </p>
2081     <blockquote class="text">
2082     <p>either true or false, if true then this parameter is
2083     read only, thus cannot be altered
2084     (always returned)
2085     </p>
2086 schoenebeck 940 </blockquote>
2087    
2088 senoner 542
2089     <p>MULTIPLICITY -
2090     </p>
2091     <blockquote class="text">
2092     <p>either true or false, defines if this parameter allows
2093     only one value or a list of values, where true means
2094     multiple values and false only a single value allowed
2095     (always returned)
2096     </p>
2097 schoenebeck 940 </blockquote>
2098    
2099 senoner 542
2100     <p>RANGE_MIN -
2101     </p>
2102     <blockquote class="text">
2103     <p>defines lower limit of the allowed value range for this
2104     parameter, can be an integer value as well as a dotted
2105     number, usually used in conjunction with 'RANGE_MAX',
2106     but may also appear without
2107     (optionally returned, dependent to driver and channel
2108     parameter)
2109     </p>
2110 schoenebeck 940 </blockquote>
2111    
2112 senoner 542
2113     <p>RANGE_MAX -
2114     </p>
2115     <blockquote class="text">
2116     <p>defines upper limit of the allowed value range for this
2117     parameter, can be an integer value as well as a dotted
2118     number, usually used in conjunction with 'RANGE_MIN',
2119     but may also appear without
2120     (optionally returned, dependent to driver and channel
2121     parameter)
2122     </p>
2123 schoenebeck 940 </blockquote>
2124    
2125 senoner 542
2126     <p>POSSIBILITIES -
2127     </p>
2128     <blockquote class="text">
2129     <p>comma separated list of possible values for this
2130     parameter, character strings are encapsulated into
2131     apostrophes
2132     (optionally returned, dependent to driver and channel
2133     parameter)
2134     </p>
2135 schoenebeck 940 </blockquote>
2136    
2137 senoner 542
2138 schoenebeck 940 </blockquote>
2139    
2140 senoner 542
2141     <p>The mentioned fields above don't have to be in particular order.
2142     </p>
2143 schoenebeck 708 </blockquote><p>
2144 schoenebeck 940
2145 schoenebeck 708 </p>
2146 senoner 542 <p>Example:
2147     </p>
2148 schoenebeck 708 <p>
2149     </p>
2150 senoner 542 <blockquote class="text">
2151     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2152     </p>
2153     <p>S: "DESCRIPTION: bindings to other JACK clients"
2154     </p>
2155     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2156     </p>
2157     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2158     </p>
2159     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2160     </p>
2161     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2162     </p>
2163     <p>&nbsp;&nbsp;&nbsp;"."
2164     </p>
2165 schoenebeck 708 </blockquote><p>
2166 schoenebeck 940
2167 schoenebeck 708 </p>
2168 schoenebeck 940 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2169 schoenebeck 974 <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>
2170     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2171     Changing settings of audio output channels</h3>
2172 senoner 542
2173     <p>Use the following command to alter a specific setting of an audio output channel:
2174     </p>
2175 schoenebeck 708 <p>
2176     </p>
2177 senoner 542 <blockquote class="text">
2178     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2179     </p>
2180 schoenebeck 708 </blockquote><p>
2181 schoenebeck 940
2182 schoenebeck 708 </p>
2183 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2184 schoenebeck 974 <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>
2185     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>
2186 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2187 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2188     </p>
2189     <p>Possible Answers:
2190     </p>
2191 schoenebeck 708 <p>
2192     </p>
2193 senoner 542 <blockquote class="text">
2194     <p>"OK" -
2195     </p>
2196     <blockquote class="text">
2197     <p>in case setting was successfully changed
2198     </p>
2199 schoenebeck 940 </blockquote>
2200    
2201 senoner 542
2202     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2203     </p>
2204     <blockquote class="text">
2205     <p>in case setting was changed successfully, but there are
2206     noteworthy issue(s) related, providing an appropriate
2207     warning code and warning message
2208     </p>
2209 schoenebeck 940 </blockquote>
2210    
2211 senoner 542
2212     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2213     </p>
2214     <blockquote class="text">
2215     <p>in case it failed, providing an appropriate error code and
2216     error message
2217     </p>
2218 schoenebeck 940 </blockquote>
2219    
2220 senoner 542
2221 schoenebeck 708 </blockquote><p>
2222 schoenebeck 940
2223 schoenebeck 708 </p>
2224 senoner 542 <p>Example:
2225     </p>
2226 schoenebeck 708 <p>
2227     </p>
2228 senoner 542 <blockquote class="text">
2229     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2230     </p>
2231     <p>S: "OK"
2232     </p>
2233 schoenebeck 708 </blockquote><p>
2234 schoenebeck 940
2235 schoenebeck 708 </p>
2236     <p>
2237     </p>
2238 senoner 542 <blockquote class="text">
2239     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2240     </p>
2241     <p>S: "OK"
2242     </p>
2243 schoenebeck 708 </blockquote><p>
2244 schoenebeck 940
2245 schoenebeck 708 </p>
2246 schoenebeck 940 <a name="anchor10"></a><br /><hr />
2247 schoenebeck 974 <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>
2248     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2249     Configuring MIDI input drivers</h3>
2250 senoner 542
2251     <p>Instances of drivers in LinuxSampler are called devices. You can use
2252     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2253     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2254     channel. For particular MIDI input systems it's also possible to create
2255     several devices of the same MIDI input type. This chapter describes all
2256     commands to configure LinuxSampler's MIDI input devices and their parameters.
2257     </p>
2258     <p>Instead of defining commands and parameters for each driver individually,
2259     all possible parameters, their meanings and possible values have to be obtained
2260     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2261     front-ends can be written independently of what drivers are currently implemented
2262     and what parameters these drivers are actually offering. This means front-ends can
2263     even handle drivers which are implemented somewhere in future without modifying
2264     the front-end at all.
2265     </p>
2266     <p>Commands for configuring MIDI input devices are pretty much the same as the
2267     commands for configuring audio output drivers, already described in the last
2268     chapter.
2269     </p>
2270     <p>Note: examples in this chapter showing particular parameters of drivers are
2271     not meant as specification of the drivers' parameters. Driver implementations in
2272     LinuxSampler might have complete different parameter names and meanings than shown
2273     in these examples or might change in future, so these examples are only meant for
2274     showing how to retrieve what parameters drivers are offering, how to retrieve their
2275     possible values, etc.
2276     </p>
2277 schoenebeck 940 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2278 schoenebeck 974 <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>
2279     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2280     Getting amount of available MIDI input drivers</h3>
2281 senoner 542
2282     <p>Use the following command to get the number of
2283     MIDI input drivers currently available for the
2284     LinuxSampler instance:
2285     </p>
2286 schoenebeck 708 <p>
2287     </p>
2288 senoner 542 <blockquote class="text">
2289     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2290     </p>
2291 schoenebeck 708 </blockquote><p>
2292 schoenebeck 940
2293 schoenebeck 708 </p>
2294 senoner 542 <p>Possible Answers:
2295     </p>
2296 schoenebeck 708 <p>
2297     </p>
2298 senoner 542 <blockquote class="text">
2299     <p>LinuxSampler will answer by sending the
2300     number of available MIDI input drivers.
2301     </p>
2302 schoenebeck 708 </blockquote><p>
2303 schoenebeck 940
2304 schoenebeck 708 </p>
2305 senoner 542 <p>Example:
2306     </p>
2307 schoenebeck 708 <p>
2308     </p>
2309 senoner 542 <blockquote class="text">
2310     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2311     </p>
2312     <p>S: "2"
2313     </p>
2314 schoenebeck 708 </blockquote><p>
2315 schoenebeck 940
2316 schoenebeck 708 </p>
2317 schoenebeck 940 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2318 schoenebeck 974 <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>
2319     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2320     Getting all available MIDI input drivers</h3>
2321 senoner 542
2322     <p>Use the following command to list all MIDI input drivers currently available
2323     for the LinuxSampler instance:
2324     </p>
2325 schoenebeck 708 <p>
2326     </p>
2327 senoner 542 <blockquote class="text">
2328     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2329     </p>
2330 schoenebeck 708 </blockquote><p>
2331 schoenebeck 940
2332 schoenebeck 708 </p>
2333 senoner 542 <p>Possible Answers:
2334     </p>
2335 schoenebeck 708 <p>
2336     </p>
2337 senoner 542 <blockquote class="text">
2338     <p>LinuxSampler will answer by sending comma separated character
2339     strings, each symbolizing a MIDI input driver.
2340     </p>
2341 schoenebeck 708 </blockquote><p>
2342 schoenebeck 940
2343 schoenebeck 708 </p>
2344 senoner 542 <p>Example:
2345     </p>
2346 schoenebeck 708 <p>
2347     </p>
2348 senoner 542 <blockquote class="text">
2349     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2350     </p>
2351     <p>S: "ALSA,JACK"
2352     </p>
2353 schoenebeck 708 </blockquote><p>
2354 schoenebeck 940
2355 schoenebeck 708 </p>
2356 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2357 schoenebeck 974 <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>
2358     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2359     Getting information about a specific MIDI input driver</h3>
2360 senoner 542
2361     <p>Use the following command to get detailed information about a specific MIDI input driver:
2362     </p>
2363 schoenebeck 708 <p>
2364     </p>
2365 senoner 542 <blockquote class="text">
2366     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2367     </p>
2368 schoenebeck 708 </blockquote><p>
2369 schoenebeck 940
2370 schoenebeck 708 </p>
2371 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2372 schoenebeck 974 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.
2373 senoner 542 </p>
2374     <p>Possible Answers:
2375     </p>
2376 schoenebeck 708 <p>
2377     </p>
2378 senoner 542 <blockquote class="text">
2379     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2380     Each answer line begins with the information category name
2381     followed by a colon and then a space character &lt;SP&gt; and finally
2382     the info character string to that info category. At the moment
2383     the following information categories are defined:
2384     </p>
2385 schoenebeck 708 <p>
2386     </p>
2387 senoner 542 <blockquote class="text">
2388     <p>DESCRIPTION -
2389     </p>
2390     <blockquote class="text">
2391     <p>arbitrary description text about the MIDI input driver
2392     </p>
2393 schoenebeck 940 </blockquote>
2394    
2395 senoner 542
2396     <p>VERSION -
2397     </p>
2398     <blockquote class="text">
2399     <p>arbitrary character string regarding the driver's version
2400     </p>
2401 schoenebeck 940 </blockquote>
2402    
2403 senoner 542
2404     <p>PARAMETERS -
2405     </p>
2406     <blockquote class="text">
2407     <p>comma separated list of all parameters available for the given MIDI input driver
2408     </p>
2409 schoenebeck 940 </blockquote>
2410    
2411 senoner 542
2412 schoenebeck 940 </blockquote>
2413    
2414 senoner 542
2415     <p>The mentioned fields above don't have to be in particular order.
2416     </p>
2417 schoenebeck 708 </blockquote><p>
2418 schoenebeck 940
2419 schoenebeck 708 </p>
2420 senoner 542 <p>Example:
2421     </p>
2422 schoenebeck 708 <p>
2423     </p>
2424 senoner 542 <blockquote class="text">
2425     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2426     </p>
2427     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2428     </p>
2429     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2430     </p>
2431     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2432     </p>
2433     <p>&nbsp;&nbsp;&nbsp;"."
2434     </p>
2435 schoenebeck 708 </blockquote><p>
2436 schoenebeck 940
2437 schoenebeck 708 </p>
2438 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2439 schoenebeck 974 <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>
2440     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2441     Getting information about specific MIDI input driver parameter</h3>
2442 senoner 542
2443     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2444     </p>
2445 schoenebeck 708 <p>
2446     </p>
2447 senoner 542 <blockquote class="text">
2448     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2449     </p>
2450 schoenebeck 708 </blockquote><p>
2451 schoenebeck 940
2452 schoenebeck 708 </p>
2453 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2454 schoenebeck 974 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
2455 senoner 542 parameter name for which information should be obtained (as returned by the
2456 schoenebeck 974 <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
2457 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2458     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2459     where character string values are encapsulated into apostrophes ('). Arguments
2460     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2461     will be ignored, means the front-end application can simply put all parameters
2462     in &lt;deplist&gt; with the values selected by the user.
2463     </p>
2464     <p>Possible Answers:
2465     </p>
2466     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2467     Each answer line begins with the information category name
2468     followed by a colon and then a space character &lt;SP> and finally
2469     the info character string to that info category. There is
2470     information which is always returned, independent of the
2471     given driver parameter and there is optional information
2472     which is only shown dependent to given driver parameter. At
2473     the moment the following information categories are defined:
2474     </p>
2475 schoenebeck 708 <p>
2476     </p>
2477 senoner 542 <blockquote class="text">
2478     <p>TYPE -
2479     </p>
2480     <blockquote class="text">
2481     <p>either "BOOL" for boolean value(s) or "INT" for integer
2482     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2483     character string(s)
2484     (always returned, no matter which driver parameter)
2485     </p>
2486 schoenebeck 940 </blockquote>
2487    
2488 senoner 542
2489     <p>DESCRIPTION -
2490     </p>
2491     <blockquote class="text">
2492     <p>arbitrary text describing the purpose of the parameter
2493     (always returned, no matter which driver parameter)
2494     </p>
2495 schoenebeck 940 </blockquote>
2496    
2497 senoner 542
2498     <p>MANDATORY -
2499     </p>
2500     <blockquote class="text">
2501     <p>either true or false, defines if this parameter must be
2502     given when the device is to be created with the
2503 schoenebeck 974 <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
2504 senoner 542 (always returned, no matter which driver parameter)
2505     </p>
2506 schoenebeck 940 </blockquote>
2507    
2508 senoner 542
2509     <p>FIX -
2510     </p>
2511     <blockquote class="text">
2512     <p>either true or false, if false then this parameter can
2513     be changed at any time, once the device is created by
2514 schoenebeck 974 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
2515 senoner 542 (always returned, no matter which driver parameter)
2516     </p>
2517 schoenebeck 940 </blockquote>
2518    
2519 senoner 542
2520     <p>MULTIPLICITY -
2521     </p>
2522     <blockquote class="text">
2523     <p>either true or false, defines if this parameter allows
2524     only one value or a list of values, where true means
2525     multiple values and false only a single value allowed
2526     (always returned, no matter which driver parameter)
2527     </p>
2528 schoenebeck 940 </blockquote>
2529    
2530 senoner 542
2531     <p>DEPENDS -
2532     </p>
2533     <blockquote class="text">
2534 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2535 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2536     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2537     listed parameters, for example assuming that an audio
2538     driver (like the ALSA driver) offers parameters 'card'
2539     and 'samplerate' then parameter 'samplerate' would
2540     depend on 'card' because the possible values for
2541     'samplerate' depends on the sound card which can be
2542     chosen by the 'card' parameter
2543     (optionally returned, dependent to driver parameter)
2544     </p>
2545 schoenebeck 940 </blockquote>
2546    
2547 senoner 542
2548     <p>DEFAULT -
2549     </p>
2550     <blockquote class="text">
2551     <p>reflects the default value for this parameter which is
2552     used when the device is created and not explicitly
2553 schoenebeck 974 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,
2554 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2555     list, that's why character strings are encapsulated into
2556     apostrophes (')
2557     (optionally returned, dependent to driver parameter)
2558     </p>
2559 schoenebeck 940 </blockquote>
2560    
2561 senoner 542
2562     <p>RANGE_MIN -
2563     </p>
2564     <blockquote class="text">
2565     <p>defines lower limit of the allowed value range for this
2566     parameter, can be an integer value as well as a dotted
2567     number, this parameter is often used in conjunction
2568     with RANGE_MAX, but may also appear without
2569     (optionally returned, dependent to driver parameter)
2570     </p>
2571 schoenebeck 940 </blockquote>
2572    
2573 senoner 542
2574     <p>RANGE_MAX -
2575     </p>
2576     <blockquote class="text">
2577     <p>defines upper limit of the allowed value range for this
2578     parameter, can be an integer value as well as a dotted
2579     number, this parameter is often used in conjunction with
2580     RANGE_MIN, but may also appear without
2581     (optionally returned, dependent to driver parameter)
2582     </p>
2583 schoenebeck 940 </blockquote>
2584    
2585 senoner 542
2586     <p>POSSIBILITIES -
2587     </p>
2588     <blockquote class="text">
2589     <p>comma separated list of possible values for this
2590     parameter, character strings are encapsulated into
2591     apostrophes
2592     (optionally returned, dependent to driver parameter)
2593     </p>
2594 schoenebeck 940 </blockquote>
2595    
2596 senoner 542
2597 schoenebeck 708 </blockquote><p>
2598 schoenebeck 940
2599 schoenebeck 708 </p>
2600 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2601     </p>
2602     <p>Example:
2603     </p>
2604 schoenebeck 708 <p>
2605     </p>
2606 senoner 542 <blockquote class="text">
2607     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2608     </p>
2609     <p>S: "DESCRIPTION: Whether device is enabled"
2610     </p>
2611     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2612     </p>
2613     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2614     </p>
2615     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2616     </p>
2617     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2618     </p>
2619     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2620     </p>
2621     <p>&nbsp;&nbsp;&nbsp;"."
2622     </p>
2623 schoenebeck 708 </blockquote><p>
2624 schoenebeck 940
2625 schoenebeck 708 </p>
2626 schoenebeck 940 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2627 schoenebeck 974 <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>
2628     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2629     Creating a MIDI input device</h3>
2630 senoner 542
2631     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2632     </p>
2633 schoenebeck 708 <p>
2634     </p>
2635 senoner 542 <blockquote class="text">
2636     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2637     </p>
2638 schoenebeck 708 </blockquote><p>
2639 schoenebeck 940
2640 schoenebeck 708 </p>
2641 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2642 schoenebeck 974 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
2643 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2644     character string values should be encapsulated into apostrophes (').
2645     Note that there might be drivers which require parameter(s) to be
2646     given with this command. Use the previously described commands in
2647     this chapter to get that information.
2648     </p>
2649     <p>Possible Answers:
2650     </p>
2651 schoenebeck 708 <p>
2652     </p>
2653 senoner 542 <blockquote class="text">
2654     <p>"OK[&lt;device-id&gt;]" -
2655     </p>
2656     <blockquote class="text">
2657     <p>in case the device was successfully created, where
2658     &lt;device-id&gt; is the numerical ID of the new device
2659     </p>
2660 schoenebeck 940 </blockquote>
2661    
2662 senoner 542
2663     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2664     </p>
2665     <blockquote class="text">
2666     <p>in case the driver was loaded successfully, where
2667     &lt;device-id&gt; is the numerical ID of the new device, but
2668     there are noteworthy issue(s) related, providing an
2669     appropriate warning code and warning message
2670     </p>
2671 schoenebeck 940 </blockquote>
2672    
2673 senoner 542
2674     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2675     </p>
2676     <blockquote class="text">
2677     <p>in case it failed, providing an appropriate error code and error message
2678     </p>
2679 schoenebeck 940 </blockquote>
2680    
2681 senoner 542
2682 schoenebeck 708 </blockquote><p>
2683 schoenebeck 940
2684 schoenebeck 708 </p>
2685 senoner 542 <p>Example:
2686     </p>
2687 schoenebeck 708 <p>
2688     </p>
2689 senoner 542 <blockquote class="text">
2690     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2691     </p>
2692     <p>S: "OK[0]"
2693     </p>
2694 schoenebeck 708 </blockquote><p>
2695 schoenebeck 940
2696 schoenebeck 708 </p>
2697 schoenebeck 940 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2698 schoenebeck 974 <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>
2699     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2700     Destroying a MIDI input device</h3>
2701 senoner 542
2702     <p>Use the following command to destroy a created MIDI input device:
2703     </p>
2704 schoenebeck 708 <p>
2705     </p>
2706 senoner 542 <blockquote class="text">
2707     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2708     </p>
2709 schoenebeck 708 </blockquote><p>
2710 schoenebeck 940
2711 schoenebeck 708 </p>
2712 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2713 schoenebeck 974 <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>
2714     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>
2715 schoenebeck 575 command.
2716 senoner 542 </p>
2717     <p>Possible Answers:
2718     </p>
2719 schoenebeck 708 <p>
2720     </p>
2721 senoner 542 <blockquote class="text">
2722     <p>"OK" -
2723     </p>
2724     <blockquote class="text">
2725     <p>in case the device was successfully destroyed
2726     </p>
2727 schoenebeck 940 </blockquote>
2728    
2729 senoner 542
2730     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2731     </p>
2732     <blockquote class="text">
2733     <p>in case the device was destroyed, but there are noteworthy
2734     issue(s) related, providing an appropriate warning code and
2735     warning message
2736     </p>
2737 schoenebeck 940 </blockquote>
2738    
2739 senoner 542
2740     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2741     </p>
2742     <blockquote class="text">
2743     <p>in case it failed, providing an appropriate error code and error message
2744     </p>
2745 schoenebeck 940 </blockquote>
2746    
2747 senoner 542
2748 schoenebeck 708 </blockquote><p>
2749 schoenebeck 940
2750 schoenebeck 708 </p>
2751 senoner 542 <p>Example:
2752     </p>
2753 schoenebeck 708 <p>
2754     </p>
2755 senoner 542 <blockquote class="text">
2756     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2757     </p>
2758     <p>S: "OK"
2759     </p>
2760 schoenebeck 708 </blockquote><p>
2761 schoenebeck 940
2762 schoenebeck 708 </p>
2763 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2764 schoenebeck 974 <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>
2765     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2766     Getting all created MIDI input device count</h3>
2767 senoner 542
2768     <p>Use the following command to count all created MIDI input devices:
2769     </p>
2770 schoenebeck 708 <p>
2771     </p>
2772 senoner 542 <blockquote class="text">
2773     <p>GET MIDI_INPUT_DEVICES
2774     </p>
2775 schoenebeck 708 </blockquote><p>
2776 schoenebeck 940
2777 schoenebeck 708 </p>
2778 senoner 542 <p>Possible Answers:
2779     </p>
2780 schoenebeck 708 <p>
2781     </p>
2782 senoner 542 <blockquote class="text">
2783     <p>LinuxSampler will answer by sending the current number of all
2784     MIDI input devices.
2785     </p>
2786 schoenebeck 708 </blockquote><p>
2787 schoenebeck 940
2788 schoenebeck 708 </p>
2789 senoner 542 <p>Example:
2790     </p>
2791 schoenebeck 708 <p>
2792     </p>
2793 senoner 542 <blockquote class="text">
2794     <p>C: "GET MIDI_INPUT_DEVICES"
2795     </p>
2796     <p>S: "3"
2797     </p>
2798 schoenebeck 708 </blockquote><p>
2799 schoenebeck 940
2800 schoenebeck 708 </p>
2801 schoenebeck 940 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2802 schoenebeck 974 <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>
2803     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2804     Getting all created MIDI input device list</h3>
2805 senoner 542
2806     <p>Use the following command to list all created MIDI input devices:
2807     </p>
2808 schoenebeck 708 <p>
2809     </p>
2810 senoner 542 <blockquote class="text">
2811     <p>LIST MIDI_INPUT_DEVICES
2812     </p>
2813 schoenebeck 708 </blockquote><p>
2814 schoenebeck 940
2815 schoenebeck 708 </p>
2816 senoner 542 <p>Possible Answers:
2817     </p>
2818 schoenebeck 708 <p>
2819     </p>
2820 senoner 542 <blockquote class="text">
2821     <p>LinuxSampler will answer by sending a comma separated list
2822     with the numerical Ids of all created MIDI input devices.
2823     </p>
2824 schoenebeck 708 </blockquote><p>
2825 schoenebeck 940
2826 schoenebeck 708 </p>
2827 senoner 542 <p>Examples:
2828     </p>
2829 schoenebeck 708 <p>
2830     </p>
2831 senoner 542 <blockquote class="text">
2832     <p>C: "LIST MIDI_INPUT_DEVICES"
2833     </p>
2834     <p>S: "0,1,2"
2835     </p>
2836 schoenebeck 708 </blockquote><p>
2837 schoenebeck 940
2838 schoenebeck 708 </p>
2839     <p>
2840     </p>
2841 senoner 542 <blockquote class="text">
2842     <p>C: "LIST MIDI_INPUT_DEVICES"
2843     </p>
2844     <p>S: "1,3"
2845     </p>
2846 schoenebeck 708 </blockquote><p>
2847 schoenebeck 940
2848 schoenebeck 708 </p>
2849 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2850 schoenebeck 974 <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>
2851     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2852     Getting current settings of a MIDI input device</h3>
2853 senoner 542
2854     <p>Use the following command to get current settings of a specific, created MIDI input device:
2855     </p>
2856 schoenebeck 708 <p>
2857     </p>
2858 senoner 542 <blockquote class="text">
2859     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2860     </p>
2861 schoenebeck 708 </blockquote><p>
2862 schoenebeck 940
2863 schoenebeck 708 </p>
2864 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2865 schoenebeck 974 <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>
2866     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>
2867 schoenebeck 575 command.
2868 senoner 542 </p>
2869     <p>Possible Answers:
2870     </p>
2871 schoenebeck 708 <p>
2872     </p>
2873 senoner 542 <blockquote class="text">
2874     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2875     Each answer line begins with the information category name
2876     followed by a colon and then a space character &lt;SP&gt; and finally
2877     the info character string to that info category. As some
2878     parameters might allow multiple values, character strings are
2879     encapsulated into apostrophes ('). At the moment the following
2880     information categories are defined (independent of driver):
2881     </p>
2882 schoenebeck 708 <p>
2883     </p>
2884 senoner 542 <blockquote class="text">
2885     <p>DRIVER -
2886     </p>
2887     <blockquote class="text">
2888     <p>identifier of the used MIDI input driver, as e.g.
2889 schoenebeck 974 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>
2890 senoner 542 command
2891     </p>
2892 schoenebeck 940 </blockquote>
2893    
2894 senoner 542
2895 schoenebeck 940 </blockquote>
2896    
2897 senoner 542 <blockquote class="text">
2898 schoenebeck 708 <p>ACTIVE -
2899 senoner 542 </p>
2900     <blockquote class="text">
2901     <p>either true or false, if false then the MIDI device is
2902     inactive and doesn't listen to any incoming MIDI events
2903     and thus doesn't forward them to connected sampler
2904     channels
2905     </p>
2906 schoenebeck 940 </blockquote>
2907    
2908 senoner 542
2909 schoenebeck 940 </blockquote>
2910    
2911 senoner 542
2912 schoenebeck 708 </blockquote><p>
2913 schoenebeck 940
2914 schoenebeck 708 </p>
2915 senoner 542 <p>The mentioned fields above don't have to be in particular
2916     order. The fields above are only those fields which are
2917     returned by all MIDI input devices. Every MIDI input driver
2918     might have its own, additional driver specific parameters (see
2919 schoenebeck 974 <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
2920 senoner 542 by this command.
2921     </p>
2922     <p>Example:
2923     </p>
2924 schoenebeck 708 <p>
2925     </p>
2926 senoner 542 <blockquote class="text">
2927     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
2928     </p>
2929     <p>S: "DRIVER: ALSA"
2930     </p>
2931     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
2932     </p>
2933     <p>&nbsp;&nbsp;&nbsp;"."
2934     </p>
2935 schoenebeck 708 </blockquote><p>
2936 schoenebeck 940
2937 schoenebeck 708 </p>
2938 schoenebeck 940 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
2939 schoenebeck 974 <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>
2940     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
2941     Changing settings of MIDI input devices</h3>
2942 senoner 542
2943     <p>Use the following command to alter a specific setting of a created MIDI input device:
2944     </p>
2945 schoenebeck 708 <p>
2946     </p>
2947 senoner 542 <blockquote class="text">
2948     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
2949     </p>
2950 schoenebeck 708 </blockquote><p>
2951 schoenebeck 940
2952 schoenebeck 708 </p>
2953 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
2954 schoenebeck 575 MIDI input device as returned by the
2955 schoenebeck 974 <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 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
2958 senoner 542 &lt;value&gt; by the new value for this parameter.
2959     </p>
2960     <p>Possible Answers:
2961     </p>
2962 schoenebeck 708 <p>
2963     </p>
2964 senoner 542 <blockquote class="text">
2965     <p>"OK" -
2966     </p>
2967     <blockquote class="text">
2968     <p>in case setting was successfully changed
2969     </p>
2970 schoenebeck 940 </blockquote>
2971    
2972 senoner 542
2973     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2974     </p>
2975     <blockquote class="text">
2976     <p>in case setting was changed successfully, but there are
2977     noteworthy issue(s) related, providing an appropriate
2978     warning code and warning message
2979     </p>
2980 schoenebeck 940 </blockquote>
2981    
2982 senoner 542
2983     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2984     </p>
2985     <blockquote class="text">
2986     <p>in case it failed, providing an appropriate error code and error message
2987     </p>
2988 schoenebeck 940 </blockquote>
2989    
2990 senoner 542
2991 schoenebeck 708 </blockquote><p>
2992 schoenebeck 940
2993 schoenebeck 708 </p>
2994 senoner 542 <p>Example:
2995     </p>
2996 schoenebeck 708 <p>
2997     </p>
2998 senoner 542 <blockquote class="text">
2999     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3000     </p>
3001     <p>S: "OK"
3002     </p>
3003 schoenebeck 708 </blockquote><p>
3004 schoenebeck 940
3005 schoenebeck 708 </p>
3006 schoenebeck 940 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3007 schoenebeck 974 <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>
3008     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3009     Getting information about a MIDI port</h3>
3010 senoner 542
3011     <p>Use the following command to get information about a MIDI port:
3012     </p>
3013 schoenebeck 708 <p>
3014     </p>
3015 senoner 542 <blockquote class="text">
3016     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3017     </p>
3018 schoenebeck 708 </blockquote><p>
3019 schoenebeck 940
3020 schoenebeck 708 </p>
3021 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3022 schoenebeck 974 <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>
3023     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>
3024 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
3025 senoner 542 </p>
3026     <p>Possible Answers:
3027     </p>
3028 schoenebeck 708 <p>
3029     </p>
3030 senoner 542 <blockquote class="text">
3031     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3032     Each answer line begins with the information category name
3033     followed by a colon and then a space character &lt;SP&gt; and finally
3034     the info character string to that info category. At the moment
3035     the following information categories are defined:
3036     </p>
3037     <p>NAME -
3038     </p>
3039     <blockquote class="text">
3040     <p>arbitrary character string naming the port
3041     </p>
3042 schoenebeck 940 </blockquote>
3043    
3044 senoner 542
3045 schoenebeck 708 </blockquote><p>
3046 schoenebeck 940
3047 schoenebeck 708 </p>
3048 senoner 542 <p>The field above is only the one which is returned by all MIDI
3049     ports regardless of the MIDI driver and port. Every MIDI port
3050     might have its own, additional driver and port specific
3051     parameters.
3052     </p>
3053     <p>Example:
3054     </p>
3055 schoenebeck 708 <p>
3056     </p>
3057 senoner 542 <blockquote class="text">
3058     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3059     </p>
3060     <p>S: "NAME: 'Masterkeyboard'"
3061     </p>
3062     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3063     </p>
3064     <p>&nbsp;&nbsp;&nbsp;"."
3065     </p>
3066 schoenebeck 708 </blockquote><p>
3067 schoenebeck 940
3068 schoenebeck 708 </p>
3069 schoenebeck 940 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3070 schoenebeck 974 <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>
3071     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3072     Getting information about specific MIDI port parameter</h3>
3073 senoner 542
3074     <p>Use the following command to get detailed information about specific MIDI port parameter:
3075     </p>
3076 schoenebeck 708 <p>
3077     </p>
3078 senoner 542 <blockquote class="text">
3079     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3080     </p>
3081 schoenebeck 708 </blockquote><p>
3082 schoenebeck 940
3083 schoenebeck 708 </p>
3084 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3085 schoenebeck 974 <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>
3086     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>
3087 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
3088 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
3089 schoenebeck 974 obtained (as returned by the <a class='info' href='#GET MIDI_INPUT_PORT INFO'>"GET MIDI_INPUT_PORT INFO"<span> (</span><span class='info'>Getting information about a MIDI port</span><span>)</span></a> command).
3090 senoner 542 </p>
3091     <p>Possible Answers:
3092     </p>
3093 schoenebeck 708 <p>
3094     </p>
3095 senoner 542 <blockquote class="text">
3096     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3097     Each answer line begins with the information category name
3098     followed by a colon and then a space character &lt;SP&gt; and finally
3099     the info character string to that info category. There is
3100     information which is always returned, independently of the
3101     given channel parameter and there is optional information
3102     which are only shown dependently to the given MIDI port. At the
3103     moment the following information categories are defined:
3104     </p>
3105     <p>TYPE -
3106     </p>
3107     <blockquote class="text">
3108     <p>either "BOOL" for boolean value(s) or "INT" for integer
3109     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3110     character string(s)
3111     (always returned)
3112     </p>
3113 schoenebeck 940 </blockquote>
3114    
3115 senoner 542
3116     <p>DESCRIPTION -
3117     </p>
3118     <blockquote class="text">
3119     <p>arbitrary text describing the purpose of the parameter
3120     (always returned)
3121     </p>
3122 schoenebeck 940 </blockquote>
3123    
3124 senoner 542
3125     <p>FIX -
3126     </p>
3127     <blockquote class="text">
3128     <p>either true or false, if true then this parameter is
3129     read only, thus cannot be altered
3130     (always returned)
3131     </p>
3132 schoenebeck 940 </blockquote>
3133    
3134 senoner 542
3135     <p>MULTIPLICITY -
3136     </p>
3137     <blockquote class="text">
3138     <p>either true or false, defines if this parameter allows
3139     only one value or a list of values, where true means
3140     multiple values and false only a single value allowed
3141     (always returned)
3142     </p>
3143 schoenebeck 940 </blockquote>
3144    
3145 senoner 542
3146     <p>RANGE_MIN -
3147     </p>
3148     <blockquote class="text">
3149     <p>defines lower limit of the allowed value range for this
3150     parameter, can be an integer value as well as a dotted
3151     number, this parameter is usually used in conjunction
3152     with 'RANGE_MAX' but may also appear without
3153     (optionally returned, dependent to driver and port
3154     parameter)
3155     </p>
3156 schoenebeck 940 </blockquote>
3157    
3158 senoner 542
3159     <p>RANGE_MAX -
3160     </p>
3161     <blockquote class="text">
3162     <p>defines upper limit of the allowed value range for this
3163     parameter, can be an integer value as well as a dotted
3164     number, this parameter is usually used in conjunction
3165     with 'RANGE_MIN' but may also appear without
3166     (optionally returned, dependent to driver and port
3167     parameter)
3168     </p>
3169 schoenebeck 940 </blockquote>
3170    
3171 senoner 542
3172     <p>POSSIBILITIES -
3173     </p>
3174     <blockquote class="text">
3175     <p>comma separated list of possible values for this
3176     parameter, character strings are encapsulated into
3177     apostrophes
3178     (optionally returned, dependent to device and port
3179     parameter)
3180     </p>
3181 schoenebeck 940 </blockquote>
3182    
3183 senoner 542
3184 schoenebeck 708 </blockquote><p>
3185 schoenebeck 940
3186 schoenebeck 708 </p>
3187 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3188     </p>
3189     <p>Example:
3190     </p>
3191 schoenebeck 708 <p>
3192     </p>
3193 senoner 542 <blockquote class="text">
3194     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3195     </p>
3196     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3197     </p>
3198     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3199     </p>
3200     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3201     </p>
3202     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3203     </p>
3204     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3205     </p>
3206     <p>&nbsp;&nbsp;&nbsp;"."
3207     </p>
3208 schoenebeck 708 </blockquote><p>
3209 schoenebeck 940
3210 schoenebeck 708 </p>
3211 schoenebeck 940 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3212 schoenebeck 974 <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>
3213     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3214     Changing settings of MIDI input ports</h3>
3215 senoner 542
3216     <p>Use the following command to alter a specific setting of a MIDI input port:
3217     </p>
3218 schoenebeck 708 <p>
3219     </p>
3220 senoner 542 <blockquote class="text">
3221     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3222     </p>
3223 schoenebeck 708 </blockquote><p>
3224 schoenebeck 940
3225 schoenebeck 708 </p>
3226 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3227 schoenebeck 575 MIDI device as returned by the
3228 schoenebeck 974 <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>
3229     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>
3230 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3231 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3232     parameter.
3233     </p>
3234     <p>Possible Answers:
3235     </p>
3236 schoenebeck 708 <p>
3237     </p>
3238 senoner 542 <blockquote class="text">
3239     <p>"OK" -
3240     </p>
3241     <blockquote class="text">
3242     <p>in case setting was successfully changed
3243     </p>
3244 schoenebeck 940 </blockquote>
3245    
3246 senoner 542
3247     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3248     </p>
3249     <blockquote class="text">
3250     <p>in case setting was changed successfully, but there are
3251     noteworthy issue(s) related, providing an appropriate
3252     warning code and warning message
3253     </p>
3254 schoenebeck 940 </blockquote>
3255    
3256 senoner 542
3257     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3258     </p>
3259     <blockquote class="text">
3260     <p>in case it failed, providing an appropriate error code and error message
3261     </p>
3262 schoenebeck 940 </blockquote>
3263    
3264 senoner 542
3265 schoenebeck 708 </blockquote><p>
3266 schoenebeck 940
3267 schoenebeck 708 </p>
3268 senoner 542 <p>Example:
3269     </p>
3270 schoenebeck 708 <p>
3271     </p>
3272 senoner 542 <blockquote class="text">
3273     <p>
3274     </p>
3275 schoenebeck 708 </blockquote><p>
3276 schoenebeck 940
3277 schoenebeck 708 </p>
3278 schoenebeck 940 <a name="anchor11"></a><br /><hr />
3279 schoenebeck 974 <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>
3280     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3281     Configuring sampler channels</h3>
3282 senoner 542
3283 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3284     sampler channel with a sampler engine, load instruments and connect sampler channels to
3285     MIDI and audio devices.
3286 senoner 542 </p>
3287 schoenebeck 940 <a name="LOAD INSTRUMENT"></a><br /><hr />
3288 schoenebeck 974 <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>
3289     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3290     Loading an instrument</h3>
3291 senoner 542
3292     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3293     </p>
3294 schoenebeck 708 <p>
3295     </p>
3296 senoner 542 <blockquote class="text">
3297     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3298     </p>
3299 schoenebeck 708 </blockquote><p>
3300 schoenebeck 940
3301 schoenebeck 708 </p>
3302 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3303     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3304     instrument in the instrument file and &lt;sampler-channel> is the
3305     number of the sampler channel the instrument should be assigned to.
3306     Each sampler channel can only have one instrument.
3307     </p>
3308     <p>The difference between regular and NON_MODAL versions of the command
3309     is that the regular command returns OK only after the instrument has been
3310     fully loaded and the channel is ready to be used while NON_MODAL version
3311     returns immediately and a background process is launched to load the instrument
3312 schoenebeck 974 on the channel. The <a class='info' href='#GET CHANNEL INFO'>GET CHANNEL INFO<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
3313 senoner 542 command can be used to obtain loading
3314     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3315     such as making sure that the file could be read and it is of a proper format
3316     and SHOULD return ERR and SHOULD not launch the background process should any
3317     errors be detected at that point.
3318     </p>
3319     <p>Possible Answers:
3320     </p>
3321 schoenebeck 708 <p>
3322     </p>
3323 senoner 542 <blockquote class="text">
3324     <p>"OK" -
3325     </p>
3326     <blockquote class="text">
3327     <p>in case the instrument was successfully loaded
3328     </p>
3329 schoenebeck 940 </blockquote>
3330    
3331 senoner 542
3332     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3333     </p>
3334     <blockquote class="text">
3335     <p>in case the instrument was loaded successfully, but there
3336     are noteworthy issue(s) related (e.g. Engine doesn't support
3337     one or more patch parameters provided by the loaded
3338     instrument file), providing an appropriate warning code and
3339     warning message
3340     </p>
3341 schoenebeck 940 </blockquote>
3342    
3343 senoner 542
3344     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3345     </p>
3346     <blockquote class="text">
3347     <p>in case it failed, providing an appropriate error code and error message
3348     </p>
3349 schoenebeck 940 </blockquote>
3350    
3351 senoner 542
3352 schoenebeck 708 </blockquote><p>
3353 schoenebeck 940
3354 schoenebeck 708 </p>
3355 senoner 542 <p>Example:
3356     </p>
3357 schoenebeck 708 <p>
3358     </p>
3359 senoner 542 <blockquote class="text">
3360     <p>
3361     </p>
3362 schoenebeck 708 </blockquote><p>
3363 schoenebeck 940
3364 schoenebeck 708 </p>
3365 schoenebeck 940 <a name="LOAD ENGINE"></a><br /><hr />
3366 schoenebeck 974 <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>
3367     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3368     Loading a sampler engine</h3>
3369 senoner 542
3370 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3371 senoner 542 channel by the following command:
3372     </p>
3373 schoenebeck 708 <p>
3374     </p>
3375 senoner 542 <blockquote class="text">
3376     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3377     </p>
3378 schoenebeck 708 </blockquote><p>
3379 schoenebeck 940
3380 schoenebeck 708 </p>
3381 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3382 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command and &lt;sampler-channel&gt;
3383 schoenebeck 575 the sampler channel as returned by the
3384 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3385     <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command where
3386 schoenebeck 575 the engine type should be assigned to. This command should be issued
3387     after adding a new sampler channel and before any other control
3388     commands on the new sampler channel. It can also be used to change
3389     the engine type of a sampler channel. This command has (currently) no
3390     way to define or force if a new engine instance should be created and
3391     assigned to the given sampler channel or if an already existing
3392     instance of that engine type, shared with other sampler channels,
3393     should be used.
3394 senoner 542 </p>
3395     <p>Possible Answers:
3396     </p>
3397 schoenebeck 708 <p>
3398     </p>
3399 senoner 542 <blockquote class="text">
3400     <p>"OK" -
3401     </p>
3402     <blockquote class="text">
3403     <p>in case the engine was successfully deployed
3404     </p>
3405 schoenebeck 940 </blockquote>
3406    
3407 senoner 542
3408     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3409     </p>
3410     <blockquote class="text">
3411     <p>in case the engine was deployed successfully, but there
3412     are noteworthy issue(s) related, providing an appropriate
3413     warning code and warning message
3414     </p>
3415 schoenebeck 940 </blockquote>
3416    
3417 senoner 542
3418     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3419     </p>
3420     <blockquote class="text">
3421     <p>in case it failed, providing an appropriate error code and
3422     error message
3423     </p>
3424 schoenebeck 940 </blockquote>
3425    
3426 senoner 542
3427 schoenebeck 708 </blockquote><p>
3428 schoenebeck 940
3429 schoenebeck 708 </p>
3430 senoner 542 <p>Example:
3431     </p>
3432 schoenebeck 708 <p>
3433     </p>
3434 senoner 542 <blockquote class="text">
3435     <p>
3436     </p>
3437 schoenebeck 708 </blockquote><p>
3438 schoenebeck 940
3439 schoenebeck 708 </p>
3440 schoenebeck 940 <a name="GET CHANNELS"></a><br /><hr />
3441 schoenebeck 974 <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>
3442     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3443     Getting all created sampler channel count</h3>
3444 senoner 542
3445     <p>The number of sampler channels can change on runtime. To get the
3446     current amount of sampler channels, the front-end can send the
3447     following command:
3448     </p>
3449 schoenebeck 708 <p>
3450     </p>
3451 senoner 542 <blockquote class="text">
3452     <p>GET CHANNELS
3453     </p>
3454 schoenebeck 708 </blockquote><p>
3455 schoenebeck 940
3456 schoenebeck 708 </p>
3457 senoner 542 <p>Possible Answers:
3458     </p>
3459 schoenebeck 708 <p>
3460     </p>
3461 senoner 542 <blockquote class="text">
3462     <p>LinuxSampler will answer by returning the current number of sampler channels.
3463     </p>
3464 schoenebeck 708 </blockquote><p>
3465 schoenebeck 940
3466 schoenebeck 708 </p>
3467 senoner 542 <p>Example:
3468     </p>
3469 schoenebeck 708 <p>
3470     </p>
3471 senoner 542 <blockquote class="text">
3472     <p>C: "GET CHANNELS"
3473     </p>
3474     <p>S: "12"
3475     </p>
3476 schoenebeck 708 </blockquote><p>
3477 schoenebeck 940
3478 schoenebeck 708 </p>
3479 schoenebeck 940 <a name="LIST CHANNELS"></a><br /><hr />
3480 schoenebeck 974 <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>
3481     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3482     Getting all created sampler channel list</h3>
3483 senoner 542
3484     <p>The number of sampler channels can change on runtime. To get the
3485     current list of sampler channels, the front-end can send the
3486     following command:
3487     </p>
3488 schoenebeck 708 <p>
3489     </p>
3490 senoner 542 <blockquote class="text">
3491     <p>LIST CHANNELS
3492     </p>
3493 schoenebeck 708 </blockquote><p>
3494 schoenebeck 940
3495 schoenebeck 708 </p>
3496 senoner 542 <p>Possible Answers:
3497     </p>
3498 schoenebeck 708 <p>
3499     </p>
3500 senoner 542 <blockquote class="text">
3501     <p>LinuxSampler will answer by returning a comma separated list
3502     with all sampler channels numerical IDs.
3503     </p>
3504 schoenebeck 708 </blockquote><p>
3505 schoenebeck 940
3506 schoenebeck 708 </p>
3507 senoner 542 <p>Example:
3508     </p>
3509 schoenebeck 708 <p>
3510     </p>
3511 senoner 542 <blockquote class="text">
3512     <p>C: "LIST CHANNELS"
3513     </p>
3514     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3515     </p>
3516 schoenebeck 708 </blockquote><p>
3517 schoenebeck 940
3518 schoenebeck 708 </p>
3519 schoenebeck 940 <a name="ADD CHANNEL"></a><br /><hr />
3520 schoenebeck 974 <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>
3521     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3522     Adding a new sampler channel</h3>
3523 senoner 542
3524     <p>A new sampler channel can be added to the end of the sampler
3525     channel list by sending the following command:
3526     </p>
3527 schoenebeck 708 <p>
3528     </p>
3529 senoner 542 <blockquote class="text">
3530     <p>ADD CHANNEL
3531     </p>
3532 schoenebeck 708 </blockquote><p>
3533 schoenebeck 940
3534 schoenebeck 708 </p>
3535 senoner 542 <p>This will increment the sampler channel count by one and the new
3536     sampler channel will be appended to the end of the sampler channel
3537     list. The front-end should send the respective, related commands
3538     right after to e.g. load an engine, load an instrument and setting
3539     input, output method and eventually other commands to initialize
3540     the new channel. The front-end should use the sampler channel
3541     returned by the answer of this command to perform the previously
3542     recommended commands, to avoid race conditions e.g. with other
3543     front-ends that might also have sent an "ADD CHANNEL" command.
3544     </p>
3545     <p>Possible Answers:
3546     </p>
3547 schoenebeck 708 <p>
3548     </p>
3549 senoner 542 <blockquote class="text">
3550     <p>"OK[&lt;sampler-channel&gt;]" -
3551     </p>
3552     <blockquote class="text">
3553     <p>in case a new sampler channel could be added, where
3554     &lt;sampler-channel&gt; reflects the channel number of the new
3555 schoenebeck 561 created sampler channel which should be used to set up
3556     the sampler channel by sending subsequent initialization
3557 senoner 542 commands
3558     </p>
3559 schoenebeck 940 </blockquote>
3560    
3561 senoner 542
3562     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3563     </p>
3564     <blockquote class="text">
3565     <p>in case a new channel was added successfully, but there are
3566     noteworthy issue(s) related, providing an appropriate
3567     warning code and warning message
3568     </p>
3569 schoenebeck 940 </blockquote>
3570    
3571 senoner 542
3572     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3573     </p>
3574     <blockquote class="text">
3575     <p>in case it failed, providing an appropriate error code and
3576     error message
3577     </p>
3578 schoenebeck 940 </blockquote>
3579    
3580 senoner 542
3581 schoenebeck 708 </blockquote><p>
3582 schoenebeck 940
3583 schoenebeck 708 </p>
3584 senoner 542 <p>Example:
3585     </p>
3586 schoenebeck 708 <p>
3587     </p>
3588 senoner 542 <blockquote class="text">
3589     <p>
3590     </p>
3591 schoenebeck 708 </blockquote><p>
3592 schoenebeck 940
3593 schoenebeck 708 </p>
3594 schoenebeck 940 <a name="REMOVE CHANNEL"></a><br /><hr />
3595 schoenebeck 974 <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>
3596     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3597     Removing a sampler channel</h3>
3598 senoner 542
3599     <p>A sampler channel can be removed by sending the following command:
3600     </p>
3601 schoenebeck 708 <p>
3602     </p>
3603 senoner 542 <blockquote class="text">
3604     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3605     </p>
3606 schoenebeck 708 </blockquote><p>
3607 schoenebeck 940
3608 schoenebeck 708 </p>
3609 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3610     number of the sampler channel as given by the
3611 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3612     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3613 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3614     remain the same.
3615 senoner 542 </p>
3616     <p>Possible Answers:
3617     </p>
3618 schoenebeck 708 <p>
3619     </p>
3620 senoner 542 <blockquote class="text">
3621     <p>"OK" -
3622     </p>
3623     <blockquote class="text">
3624     <p>in case the given sampler channel could be removed
3625     </p>
3626 schoenebeck 940 </blockquote>
3627    
3628 senoner 542
3629     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3630     </p>
3631     <blockquote class="text">
3632     <p>in case the given channel was removed, but there are
3633     noteworthy issue(s) related, providing an appropriate
3634     warning code and warning message
3635     </p>
3636 schoenebeck 940 </blockquote>
3637    
3638 senoner 542
3639     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3640     </p>
3641     <blockquote class="text">
3642     <p>in case it failed, providing an appropriate error code and
3643     error message
3644     </p>
3645 schoenebeck 940 </blockquote>
3646    
3647 senoner 542
3648 schoenebeck 708 </blockquote><p>
3649 schoenebeck 940
3650 schoenebeck 708 </p>
3651 senoner 542 <p>Example:
3652     </p>
3653 schoenebeck 708 <p>
3654     </p>
3655 senoner 542 <blockquote class="text">
3656     <p>
3657     </p>
3658 schoenebeck 708 </blockquote><p>
3659 schoenebeck 940
3660 schoenebeck 708 </p>
3661 schoenebeck 940 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3662 schoenebeck 974 <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>
3663     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3664     Getting amount of available engines</h3>
3665 senoner 542
3666     <p>The front-end can ask for the number of available engines by sending the following command:
3667     </p>
3668 schoenebeck 708 <p>
3669     </p>
3670 senoner 542 <blockquote class="text">
3671     <p>GET AVAILABLE_ENGINES
3672     </p>
3673 schoenebeck 708 </blockquote><p>
3674 schoenebeck 940
3675 schoenebeck 708 </p>
3676 senoner 542 <p>Possible Answers:
3677     </p>
3678 schoenebeck 708 <p>
3679     </p>
3680 senoner 542 <blockquote class="text">
3681     <p>LinuxSampler will answer by sending the number of available engines.
3682     </p>
3683 schoenebeck 708 </blockquote><p>
3684 schoenebeck 940
3685 schoenebeck 708 </p>
3686 senoner 542 <p>Example:
3687     </p>
3688 schoenebeck 708 <p>
3689     </p>
3690 senoner 542 <blockquote class="text">
3691     <p>C: "GET AVAILABLE_ENGINES"
3692     </p>
3693     <p>S: "4"
3694     </p>
3695 schoenebeck 708 </blockquote><p>
3696 schoenebeck 940
3697 schoenebeck 708 </p>
3698 schoenebeck 940 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3699 schoenebeck 974 <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>
3700     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3701     Getting all available engines</h3>
3702 senoner 542
3703     <p>The front-end can ask for a list of all available engines by sending the following command:
3704     </p>
3705 schoenebeck 708 <p>
3706     </p>
3707 senoner 542 <blockquote class="text">
3708     <p>LIST AVAILABLE_ENGINES
3709     </p>
3710 schoenebeck 708 </blockquote><p>
3711 schoenebeck 940
3712 schoenebeck 708 </p>
3713 senoner 542 <p>Possible Answers:
3714     </p>
3715 schoenebeck 708 <p>
3716     </p>
3717 senoner 542 <blockquote class="text">
3718 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3719     of the engines' names encapsulated into apostrophes (').
3720     Engine names can consist of lower and upper cases,
3721     digits and underlines ("_" character).
3722 senoner 542 </p>
3723 schoenebeck 708 </blockquote><p>
3724 schoenebeck 940
3725 schoenebeck 708 </p>
3726 senoner 542 <p>Example:
3727     </p>
3728 schoenebeck 708 <p>
3729     </p>
3730 senoner 542 <blockquote class="text">
3731     <p>C: "LIST AVAILABLE_ENGINES"
3732     </p>
3733 schoenebeck 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3734 senoner 542 </p>
3735 schoenebeck 708 </blockquote><p>
3736 schoenebeck 940
3737 schoenebeck 708 </p>
3738 schoenebeck 940 <a name="GET ENGINE INFO"></a><br /><hr />
3739 schoenebeck 974 <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>
3740     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3741     Getting information about an engine</h3>
3742 senoner 542
3743     <p>The front-end can ask for information about a specific engine by
3744     sending the following command:
3745     </p>
3746 schoenebeck 708 <p>
3747     </p>
3748 senoner 542 <blockquote class="text">
3749     <p>GET ENGINE INFO &lt;engine-name&gt;
3750     </p>
3751 schoenebeck 708 </blockquote><p>
3752 schoenebeck 940
3753 schoenebeck 708 </p>
3754 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3755 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3756 senoner 542 </p>
3757     <p>Possible Answers:
3758     </p>
3759 schoenebeck 708 <p>
3760     </p>
3761 senoner 542 <blockquote class="text">
3762     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3763     Each answer line begins with the information category name
3764     followed by a colon and then a space character &lt;SP&gt; and finally
3765     the info character string to that info category. At the moment
3766     the following categories are defined:
3767     </p>
3768 schoenebeck 708 <p>
3769     </p>
3770 senoner 542 <blockquote class="text">
3771     <p>DESCRIPTION -
3772     </p>
3773     <blockquote class="text">
3774     <p>arbitrary description text about the engine
3775     </p>
3776 schoenebeck 940 </blockquote>
3777    
3778 senoner 542
3779     <p>VERSION -
3780     </p>
3781     <blockquote class="text">
3782     <p>arbitrary character string regarding the engine's version
3783     </p>
3784 schoenebeck 940 </blockquote>
3785    
3786 senoner 542
3787 schoenebeck 940 </blockquote>
3788    
3789 senoner 542
3790 schoenebeck 708 </blockquote><p>
3791 schoenebeck 940
3792 schoenebeck 708 </p>
3793 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3794     </p>
3795     <p>Example:
3796     </p>
3797 schoenebeck 708 <p>
3798     </p>
3799 senoner 542 <blockquote class="text">
3800     <p>C: "GET ENGINE INFO JoesCustomEngine"
3801     </p>
3802     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3803     </p>
3804     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3805     </p>
3806     <p>&nbsp;&nbsp;&nbsp;"."
3807     </p>
3808 schoenebeck 708 </blockquote><p>
3809 schoenebeck 940
3810 schoenebeck 708 </p>
3811 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
3812 schoenebeck 974 <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>
3813     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3814     Getting sampler channel information</h3>
3815 senoner 542
3816     <p>The front-end can ask for the current settings of a sampler channel
3817     by sending the following command:
3818     </p>
3819 schoenebeck 708 <p>
3820     </p>
3821 senoner 542 <blockquote class="text">
3822     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3823     </p>
3824 schoenebeck 708 </blockquote><p>
3825 schoenebeck 940
3826 schoenebeck 708 </p>
3827 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3828 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3829     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
3830 senoner 542 </p>
3831     <p>Possible Answers:
3832     </p>
3833 schoenebeck 708 <p>
3834     </p>
3835 senoner 542 <blockquote class="text">
3836     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3837     Each answer line begins with the settings category name
3838     followed by a colon and then a space character &lt;SP&gt; and finally
3839     the info character string to that setting category. At the
3840     moment the following categories are defined:
3841     </p>
3842 schoenebeck 708 <p>
3843     </p>
3844 senoner 542 <blockquote class="text">
3845     <p>ENGINE_NAME -
3846     </p>
3847     <blockquote class="text">
3848 schoenebeck 575 <p>name of the engine that is associated with the sampler
3849     channel, "NONE" if there's no engine associated yet for
3850 senoner 542 this sampler channel
3851     </p>
3852 schoenebeck 940 </blockquote>
3853    
3854 senoner 542
3855     <p>AUDIO_OUTPUT_DEVICE -
3856     </p>
3857     <blockquote class="text">
3858     <p>numerical ID of the audio output device which is
3859     currently connected to this sampler channel to output
3860     the audio signal, "NONE" if there's no device
3861     connected to this sampler channel
3862     </p>
3863 schoenebeck 940 </blockquote>
3864    
3865 senoner 542
3866     <p>AUDIO_OUTPUT_CHANNELS -
3867     </p>
3868     <blockquote class="text">
3869     <p>number of output channels the sampler channel offers
3870     (dependent to used sampler engine and loaded instrument)
3871     </p>
3872 schoenebeck 940 </blockquote>
3873    
3874 senoner 542
3875     <p>AUDIO_OUTPUT_ROUTING -
3876     </p>
3877     <blockquote class="text">
3878     <p>comma separated list which reflects to which audio
3879     channel of the selected audio output device each
3880     sampler output channel is routed to, e.g. "0,3" would
3881     mean the engine's output channel 0 is routed to channel
3882     0 of the audio output device and the engine's output
3883     channel 1 is routed to the channel 3 of the audio
3884     output device
3885     </p>
3886 schoenebeck 940 </blockquote>
3887    
3888 senoner 542
3889     <p>INSTRUMENT_FILE -
3890     </p>
3891     <blockquote class="text">
3892     <p>the file name of the loaded instrument, "NONE" if
3893     there's no instrument yet loaded for this sampler
3894     channel
3895     </p>
3896 schoenebeck 940 </blockquote>
3897    
3898 senoner 542
3899     <p>INSTRUMENT_NR -
3900     </p>
3901     <blockquote class="text">
3902     <p>the instrument index number of the loaded instrument
3903     </p>
3904 schoenebeck 940 </blockquote>
3905    
3906 senoner 542
3907     <p>INSTRUMENT_NAME -
3908     </p>
3909     <blockquote class="text">
3910     <p>the instrument name of the loaded instrument
3911     </p>
3912 schoenebeck 940 </blockquote>
3913    
3914 senoner 542
3915     <p>INSTRUMENT_STATUS -
3916     </p>
3917     <blockquote class="text">
3918     <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
3919     value indicates a loading exception. Value of 100 indicates that the instrument is fully
3920     loaded.
3921     </p>
3922 schoenebeck 940 </blockquote>
3923    
3924 senoner 542
3925     <p>MIDI_INPUT_DEVICE -
3926     </p>
3927     <blockquote class="text">
3928     <p>numerical ID of the MIDI input device which is
3929     currently connected to this sampler channel to deliver
3930     MIDI input commands, "NONE" if there's no device
3931     connected to this sampler channel
3932     </p>
3933 schoenebeck 940 </blockquote>
3934    
3935 senoner 542
3936     <p>MIDI_INPUT_PORT -
3937     </p>
3938     <blockquote class="text">
3939     <p>port number of the MIDI input device
3940     </p>
3941 schoenebeck 940 </blockquote>
3942    
3943 senoner 542
3944     <p>MIDI_INPUT_CHANNEL -
3945     </p>
3946     <blockquote class="text">
3947     <p>the MIDI input channel number this sampler channel
3948     should listen to or "ALL" to listen on all MIDI channels
3949     </p>
3950 schoenebeck 940 </blockquote>
3951    
3952 senoner 542
3953     <p>VOLUME -
3954     </p>
3955     <blockquote class="text">
3956     <p>optionally dotted number for the channel volume factor
3957     (where a value < 1.0 means attenuation and a value >
3958     1.0 means amplification)
3959     </p>
3960 schoenebeck 940 </blockquote>
3961    
3962 senoner 542
3963 schoenebeck 708 <p>MUTE -
3964     </p>
3965     <blockquote class="text">
3966     <p>Determines whether the channel is muted, "true" if the
3967     channel is muted, "false" if the channel is not muted, and
3968     "MUTED_BY_SOLO" if the channel is muted because of the
3969     presence of a solo channel and will be unmuted when
3970     there are no solo channels left
3971     </p>
3972 schoenebeck 940 </blockquote>
3973    
3974 senoner 542
3975 schoenebeck 708 <p>SOLO -
3976     </p>
3977     <blockquote class="text">
3978     <p>Determines whether this is a solo channel, "true" if
3979     the channel is a solo channel; "false" otherwise
3980     </p>
3981 schoenebeck 940 </blockquote>
3982    
3983 senoner 542
3984 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
3985     </p>
3986     <blockquote class="text">
3987     <p>Determines to which MIDI instrument map this sampler
3988     channel is assigned to. Read chapter
3989     <a class='info' href='#SET CHANNEL MIDI_INSTRUMENT_MAP'>"SET CHANNEL MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Assigning a MIDI instrument map to a sampler channel</span><span>)</span></a>
3990     for a list of possible values.
3991     </p>
3992 schoenebeck 940 </blockquote>
3993 schoenebeck 974
3994    
3995     </blockquote>
3996 schoenebeck 940
3997 schoenebeck 708
3998     </blockquote><p>
3999 schoenebeck 940
4000 schoenebeck 708 </p>
4001 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4002     </p>
4003     <p>Example:
4004     </p>
4005 schoenebeck 708 <p>
4006     </p>
4007 senoner 542 <blockquote class="text">
4008     <p>C: "GET CHANNEL INFO 34"
4009     </p>
4010     <p>S: "ENGINE_NAME: GigEngine"
4011     </p>
4012     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4013     </p>
4014     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4015     </p>
4016     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4017     </p>
4018     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4019     </p>
4020     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4021     </p>
4022     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4023     </p>
4024     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4025     </p>
4026     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4027     </p>
4028     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4029     </p>
4030     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4031     </p>
4032     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4033     </p>
4034 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4035     </p>
4036     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4037     </p>
4038     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4039     </p>
4040     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4041     </p>
4042 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4043     </p>
4044 schoenebeck 708 </blockquote><p>
4045 schoenebeck 940
4046 schoenebeck 708 </p>
4047 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4048 schoenebeck 974 <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>
4049     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4050     Current number of active voices</h3>
4051 senoner 542
4052     <p>The front-end can ask for the current number of active voices on a
4053     sampler channel by sending the following command:
4054     </p>
4055 schoenebeck 708 <p>
4056     </p>
4057 senoner 542 <blockquote class="text">
4058     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4059     </p>
4060 schoenebeck 708 </blockquote><p>
4061 schoenebeck 940
4062 schoenebeck 708 </p>
4063 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4064 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4065     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4066 senoner 542 </p>
4067     <p>Possible Answers:
4068     </p>
4069 schoenebeck 708 <p>
4070     </p>
4071 senoner 542 <blockquote class="text">
4072     <p>LinuxSampler will answer by returning the number of active
4073     voices on that channel.
4074     </p>
4075 schoenebeck 708 </blockquote><p>
4076 schoenebeck 940
4077 schoenebeck 708 </p>
4078 senoner 542 <p>Example:
4079     </p>
4080 schoenebeck 708 <p>
4081     </p>
4082 senoner 542 <blockquote class="text">
4083     <p>
4084     </p>
4085 schoenebeck 708 </blockquote><p>
4086 schoenebeck 940
4087 schoenebeck 708 </p>
4088 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4089 schoenebeck 974 <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>
4090     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4091     Current number of active disk streams</h3>
4092 senoner 542
4093     <p>The front-end can ask for the current number of active disk streams
4094     on a sampler channel by sending the following command:
4095     </p>
4096 schoenebeck 708 <p>
4097     </p>
4098 senoner 542 <blockquote class="text">
4099     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4100     </p>
4101 schoenebeck 708 </blockquote><p>
4102 schoenebeck 940
4103 schoenebeck 708 </p>
4104 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4105 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4106     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4107 senoner 542 </p>
4108     <p>Possible Answers:
4109     </p>
4110 schoenebeck 708 <p>
4111     </p>
4112 senoner 542 <blockquote class="text">
4113     <p>LinuxSampler will answer by returning the number of active
4114     disk streams on that channel in case the engine supports disk
4115     streaming, if the engine doesn't support disk streaming it will
4116     return "NA" for not available.
4117     </p>
4118 schoenebeck 708 </blockquote><p>
4119 schoenebeck 940
4120 schoenebeck 708 </p>
4121 senoner 542 <p>Example:
4122     </p>
4123 schoenebeck 708 <p>
4124     </p>
4125 senoner 542 <blockquote class="text">
4126     <p>
4127     </p>
4128 schoenebeck 708 </blockquote><p>
4129 schoenebeck 940
4130 schoenebeck 708 </p>
4131 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4132 schoenebeck 974 <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>
4133     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4134     Current fill state of disk stream buffers</h3>
4135 senoner 542
4136     <p>The front-end can ask for the current fill state of all disk streams
4137     on a sampler channel by sending the following command:
4138     </p>
4139 schoenebeck 708 <p>
4140     </p>
4141 senoner 542 <blockquote class="text">
4142     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4143     </p>
4144 schoenebeck 708 </blockquote><p>
4145 schoenebeck 940
4146 schoenebeck 708 </p>
4147 senoner 542 <p>to get the fill state in bytes or
4148     </p>
4149 schoenebeck 708 <p>
4150     </p>
4151 senoner 542 <blockquote class="text">
4152     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4153     </p>
4154 schoenebeck 708 </blockquote><p>
4155 schoenebeck 940
4156 schoenebeck 708 </p>
4157 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4158 schoenebeck 575 sampler channel number the front-end is interested in
4159 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4160     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4161 senoner 542 </p>
4162     <p>Possible Answers:
4163     </p>
4164 schoenebeck 708 <p>
4165     </p>
4166 senoner 542 <blockquote class="text">
4167     <p>LinuxSampler will either answer by returning a comma separated
4168     string with the fill state of all disk stream buffers on that
4169     channel or an empty line if there are no active disk streams or
4170     "NA" for *not available* in case the engine which is deployed
4171     doesn't support disk streaming. Each entry in the answer list
4172     will begin with the stream's ID in brackets followed by the
4173     numerical representation of the fill size (either in bytes or
4174     percentage). Note: due to efficiency reasons the fill states in
4175     the response are not in particular order, thus the front-end has
4176     to sort them by itself if necessary.
4177     </p>
4178 schoenebeck 708 </blockquote><p>
4179 schoenebeck 940
4180 schoenebeck 708 </p>
4181 senoner 542 <p>Examples:
4182     </p>
4183 schoenebeck 708 <p>
4184     </p>
4185 senoner 542 <blockquote class="text">
4186     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4187     </p>
4188     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4189     </p>
4190 schoenebeck 708 </blockquote><p>
4191    
4192     </p>
4193 senoner 542 <blockquote class="text">
4194 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4195 senoner 542 </p>
4196     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4197     </p>
4198 schoenebeck 708 </blockquote><p>
4199    
4200     </p>
4201 senoner 542 <blockquote class="text">
4202 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4203 senoner 542 </p>
4204     <p>S: ""
4205     </p>
4206 schoenebeck 708 </blockquote><p>
4207 schoenebeck 940
4208 schoenebeck 708 </p>
4209 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4210 schoenebeck 974 <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>
4211     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4212     Setting audio output device</h3>
4213 senoner 542
4214     <p>The front-end can set the audio output device on a specific sampler
4215     channel by sending the following command:
4216     </p>
4217 schoenebeck 708 <p>
4218     </p>
4219 senoner 542 <blockquote class="text">
4220     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4221     </p>
4222 schoenebeck 708 </blockquote><p>
4223 schoenebeck 940
4224 schoenebeck 708 </p>
4225 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4226 schoenebeck 974 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4227     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4228 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4229 schoenebeck 974 <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>
4230     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>
4231 schoenebeck 575 command.
4232 senoner 542 </p>
4233     <p>Possible Answers:
4234     </p>
4235 schoenebeck 708 <p>
4236     </p>
4237 senoner 542 <blockquote class="text">
4238     <p>"OK" -
4239     </p>
4240     <blockquote class="text">
4241     <p>on success
4242     </p>
4243 schoenebeck 940 </blockquote>
4244    
4245 senoner 542
4246     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4247     </p>
4248     <blockquote class="text">
4249     <p>if audio output device was set, but there are noteworthy
4250     issue(s) related, providing an appropriate warning code and
4251     warning message
4252     </p>
4253 schoenebeck 940 </blockquote>
4254    
4255 senoner 542
4256     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4257     </p>
4258     <blockquote class="text">
4259     <p>in case it failed, providing an appropriate error code and error message
4260     </p>
4261 schoenebeck 940 </blockquote>
4262    
4263 senoner 542
4264 schoenebeck 708 </blockquote><p>
4265 schoenebeck 940
4266 schoenebeck 708 </p>
4267 senoner 542 <p>Examples:
4268     </p>
4269 schoenebeck 708 <p>
4270     </p>
4271 senoner 542 <blockquote class="text">
4272     <p>
4273     </p>
4274 schoenebeck 708 </blockquote><p>
4275 schoenebeck 940
4276 schoenebeck 708 </p>
4277 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4278     <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>
4279     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4280     Setting audio output type</h3>
4281 senoner 542
4282     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4283     </p>
4284     <p>The front-end can alter the audio output type on a specific sampler
4285     channel by sending the following command:
4286     </p>
4287 schoenebeck 708 <p>
4288     </p>
4289 senoner 542 <blockquote class="text">
4290     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4291     </p>
4292 schoenebeck 708 </blockquote><p>
4293 schoenebeck 940
4294 schoenebeck 708 </p>
4295 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4296     &lt;sampler-channel&gt; is the respective sampler channel number.
4297     </p>
4298     <p>Possible Answers:
4299     </p>
4300 schoenebeck 708 <p>
4301     </p>
4302 senoner 542 <blockquote class="text">
4303     <p>"OK" -
4304     </p>
4305     <blockquote class="text">
4306     <p>on success
4307     </p>
4308 schoenebeck 940 </blockquote>
4309    
4310 senoner 542
4311     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4312     </p>
4313     <blockquote class="text">
4314     <p>if audio output type was set, but there are noteworthy
4315     issue(s) related, providing an appropriate warning code and
4316     warning message
4317     </p>
4318 schoenebeck 940 </blockquote>
4319    
4320 senoner 542
4321     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4322     </p>
4323     <blockquote class="text">
4324     <p>in case it failed, providing an appropriate error code and error message
4325     </p>
4326 schoenebeck 940 </blockquote>
4327    
4328 senoner 542
4329 schoenebeck 708 </blockquote><p>
4330 schoenebeck 940
4331 schoenebeck 708 </p>
4332 senoner 542 <p>Examples:
4333     </p>
4334 schoenebeck 708 <p>
4335     </p>
4336 senoner 542 <blockquote class="text">
4337     <p>
4338     </p>
4339 schoenebeck 708 </blockquote><p>
4340 schoenebeck 940
4341 schoenebeck 708 </p>
4342 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4343 schoenebeck 974 <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>
4344     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4345     Setting audio output channel</h3>
4346 senoner 542
4347     <p>The front-end can alter the audio output channel on a specific
4348     sampler channel by sending the following command:
4349     </p>
4350 schoenebeck 708 <p>
4351     </p>
4352 senoner 542 <blockquote class="text">
4353     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4354     </p>
4355 schoenebeck 708 </blockquote><p>
4356 schoenebeck 940
4357 schoenebeck 708 </p>
4358 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4359 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4360     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, &lt;audio-out&gt; is the
4361 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4362     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4363     output device where &lt;audio-out&gt; should be routed to.
4364     </p>
4365     <p>Possible Answers:
4366     </p>
4367 schoenebeck 708 <p>
4368     </p>
4369 senoner 542 <blockquote class="text">
4370     <p>"OK" -
4371     </p>
4372     <blockquote class="text">
4373     <p>on success
4374     </p>
4375 schoenebeck 940 </blockquote>
4376    
4377 senoner 542
4378     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4379     </p>
4380     <blockquote class="text">
4381     <p>if audio output channel was set, but there are noteworthy
4382     issue(s) related, providing an appropriate warning code and
4383     warning message
4384     </p>
4385 schoenebeck 940 </blockquote>
4386    
4387 senoner 542
4388     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4389     </p>
4390     <blockquote class="text">
4391     <p>in case it failed, providing an appropriate error code and error message
4392     </p>
4393 schoenebeck 940 </blockquote>
4394    
4395 senoner 542
4396 schoenebeck 708 </blockquote><p>
4397 schoenebeck 940
4398 schoenebeck 708 </p>
4399 senoner 542 <p>Examples:
4400     </p>
4401 schoenebeck 708 <p>
4402     </p>
4403 senoner 542 <blockquote class="text">
4404     <p>
4405     </p>
4406 schoenebeck 708 </blockquote><p>
4407 schoenebeck 940
4408 schoenebeck 708 </p>
4409 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4410 schoenebeck 974 <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>
4411     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4412     Setting MIDI input device</h3>
4413 senoner 542
4414     <p>The front-end can set the MIDI input device on a specific sampler
4415     channel by sending the following command:
4416     </p>
4417 schoenebeck 708 <p>
4418     </p>
4419 senoner 542 <blockquote class="text">
4420     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4421     </p>
4422 schoenebeck 708 </blockquote><p>
4423 schoenebeck 940
4424 schoenebeck 708 </p>
4425 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4426 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4427     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command
4428 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4429 schoenebeck 974 <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>
4430     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a> command.
4431 senoner 542 </p>
4432     <p>Possible Answers:
4433     </p>
4434 schoenebeck 708 <p>
4435     </p>
4436 senoner 542 <blockquote class="text">
4437     <p>"OK" -
4438     </p>
4439     <blockquote class="text">
4440     <p>on success
4441     </p>
4442 schoenebeck 940 </blockquote>
4443    
4444 senoner 542
4445     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4446     </p>
4447     <blockquote class="text">
4448     <p>if MIDI input device was set, but there are noteworthy
4449     issue(s) related, providing an appropriate warning code and
4450     warning message
4451     </p>
4452 schoenebeck 940 </blockquote>
4453    
4454 senoner 542
4455     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4456     </p>
4457     <blockquote class="text">
4458     <p>in case it failed, providing an appropriate error code and error message
4459     </p>
4460 schoenebeck 940 </blockquote>
4461    
4462 senoner 542
4463 schoenebeck 708 </blockquote><p>
4464 schoenebeck 940
4465 schoenebeck 708 </p>
4466 senoner 542 <p>Examples:
4467     </p>
4468 schoenebeck 708 <p>
4469     </p>
4470 senoner 542 <blockquote class="text">
4471     <p>
4472     </p>
4473 schoenebeck 708 </blockquote><p>
4474 schoenebeck 940
4475 schoenebeck 708 </p>
4476 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4477 schoenebeck 974 <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>
4478     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4479     Setting MIDI input type</h3>
4480 senoner 542
4481     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4482     </p>
4483     <p>The front-end can alter the MIDI input type on a specific sampler
4484     channel by sending the following command:
4485     </p>
4486 schoenebeck 708 <p>
4487     </p>
4488 senoner 542 <blockquote class="text">
4489     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4490     </p>
4491 schoenebeck 708 </blockquote><p>
4492 schoenebeck 940
4493 schoenebeck 708 </p>
4494 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4495     &lt;sampler-channel&gt; is the respective sampler channel number.
4496     </p>
4497     <p>Possible Answers:
4498     </p>
4499 schoenebeck 708 <p>
4500     </p>
4501 senoner 542 <blockquote class="text">
4502     <p>"OK" -
4503     </p>
4504     <blockquote class="text">
4505     <p>on success
4506     </p>
4507 schoenebeck 940 </blockquote>
4508    
4509 senoner 542
4510     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4511     </p>
4512     <blockquote class="text">
4513     <p>if MIDI input type was set, but there are noteworthy
4514     issue(s) related, providing an appropriate warning code and
4515     warning message
4516     </p>
4517 schoenebeck 940 </blockquote>
4518    
4519 senoner 542
4520     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4521     </p>
4522     <blockquote class="text">
4523     <p>in case it failed, providing an appropriate error code and error message
4524     </p>
4525 schoenebeck 940 </blockquote>
4526    
4527 senoner 542
4528 schoenebeck 708 </blockquote><p>
4529 schoenebeck 940
4530 schoenebeck 708 </p>
4531 senoner 542 <p>Examples:
4532     </p>
4533 schoenebeck 708 <p>
4534     </p>
4535 senoner 542 <blockquote class="text">
4536     <p>
4537     </p>
4538 schoenebeck 708 </blockquote><p>
4539 schoenebeck 940
4540 schoenebeck 708 </p>
4541 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4542 schoenebeck 974 <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>
4543     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4544     Setting MIDI input port</h3>
4545 senoner 542
4546     <p>The front-end can alter the MIDI input port on a specific sampler
4547     channel by sending the following command:
4548     </p>
4549 schoenebeck 708 <p>
4550     </p>
4551 senoner 542 <blockquote class="text">
4552     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4553     </p>
4554 schoenebeck 708 </blockquote><p>
4555 schoenebeck 940
4556 schoenebeck 708 </p>
4557 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4558     MIDI input device connected to the sampler channel given by
4559     &lt;sampler-channel&gt;.
4560     </p>
4561     <p>Possible Answers:
4562     </p>
4563 schoenebeck 708 <p>
4564     </p>
4565 senoner 542 <blockquote class="text">
4566     <p>"OK" -
4567     </p>
4568     <blockquote class="text">
4569     <p>on success
4570     </p>
4571 schoenebeck 940 </blockquote>
4572    
4573 senoner 542
4574     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4575     </p>
4576     <blockquote class="text">
4577     <p>if MIDI input port was set, but there are noteworthy
4578     issue(s) related, providing an appropriate warning code and
4579     warning message
4580     </p>
4581 schoenebeck 940 </blockquote>
4582    
4583 senoner 542
4584     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4585     </p>
4586     <blockquote class="text">
4587 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4588 senoner 542 </p>
4589 schoenebeck 940 </blockquote>
4590    
4591 senoner 542
4592 schoenebeck 708 </blockquote><p>
4593 schoenebeck 940
4594 schoenebeck 708 </p>
4595 senoner 542 <p>Examples:
4596     </p>
4597 schoenebeck 708 <p>
4598     </p>
4599 senoner 542 <blockquote class="text">
4600     <p>
4601     </p>
4602 schoenebeck 708 </blockquote><p>
4603 schoenebeck 940
4604 schoenebeck 708 </p>
4605 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4606 schoenebeck 974 <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>
4607     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4608     Setting MIDI input channel</h3>
4609 senoner 542
4610     <p>The front-end can alter the MIDI channel a sampler channel should
4611     listen to by sending the following command:
4612     </p>
4613 schoenebeck 708 <p>
4614     </p>
4615 senoner 542 <blockquote class="text">
4616     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4617     </p>
4618 schoenebeck 708 </blockquote><p>
4619 schoenebeck 940
4620 schoenebeck 708 </p>
4621 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4622     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4623     channels.
4624     </p>
4625     <p>Possible Answers:
4626     </p>
4627 schoenebeck 708 <p>
4628     </p>
4629 senoner 542 <blockquote class="text">
4630     <p>"OK" -
4631     </p>
4632     <blockquote class="text">
4633     <p>on success
4634     </p>
4635 schoenebeck 940 </blockquote>
4636    
4637 senoner 542
4638     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4639     </p>
4640     <blockquote class="text">
4641     <p>if MIDI input channel was set, but there are noteworthy
4642     issue(s) related, providing an appropriate warning code and
4643     warning message
4644     </p>
4645 schoenebeck 940 </blockquote>
4646    
4647 senoner 542
4648     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4649     </p>
4650     <blockquote class="text">
4651     <p>in case it failed, providing an appropriate error code and error message
4652     </p>
4653 schoenebeck 940 </blockquote>
4654    
4655 senoner 542
4656 schoenebeck 708 </blockquote><p>
4657 schoenebeck 940
4658 schoenebeck 708 </p>
4659 senoner 542 <p>Examples:
4660     </p>
4661 schoenebeck 708 <p>
4662     </p>
4663 senoner 542 <blockquote class="text">
4664     <p>
4665     </p>
4666 schoenebeck 708 </blockquote><p>
4667 schoenebeck 940
4668 schoenebeck 708 </p>
4669 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4670 schoenebeck 974 <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>
4671     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4672     Setting channel volume</h3>
4673 senoner 542
4674     <p>The front-end can alter the volume of a sampler channel by sending
4675     the following command:
4676     </p>
4677 schoenebeck 708 <p>
4678     </p>
4679 senoner 542 <blockquote class="text">
4680     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4681     </p>
4682 schoenebeck 708 </blockquote><p>
4683 schoenebeck 940
4684 schoenebeck 708 </p>
4685 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4686     smaller than 1.0 means attenuation, whereas a value greater than
4687     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4688     channel where this volume factor should be set.
4689     </p>
4690     <p>Possible Answers:
4691     </p>
4692 schoenebeck 708 <p>
4693     </p>
4694 senoner 542 <blockquote class="text">
4695     <p>"OK" -
4696     </p>
4697     <blockquote class="text">
4698     <p>on success
4699     </p>
4700 schoenebeck 940 </blockquote>
4701    
4702 senoner 542
4703     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4704     </p>
4705     <blockquote class="text">
4706     <p>if channel volume was set, but there are noteworthy
4707     issue(s) related, providing an appropriate warning code and
4708     warning message
4709     </p>
4710 schoenebeck 940 </blockquote>
4711    
4712 senoner 542
4713     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4714     </p>
4715     <blockquote class="text">
4716     <p>in case it failed, providing an appropriate error code and error message
4717     </p>
4718 schoenebeck 940 </blockquote>
4719    
4720 senoner 542
4721 schoenebeck 708 </blockquote><p>
4722 schoenebeck 940
4723 schoenebeck 708 </p>
4724 senoner 542 <p>Examples:
4725     </p>
4726 schoenebeck 708 <p>
4727     </p>
4728 senoner 542 <blockquote class="text">
4729     <p>
4730     </p>
4731 schoenebeck 708 </blockquote><p>
4732 schoenebeck 940
4733 schoenebeck 708 </p>
4734 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
4735 schoenebeck 974 <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>
4736     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4737     Muting a sampler channel</h3>
4738 senoner 542
4739 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4740     channel by sending the following command:
4741     </p>
4742     <p>
4743     </p>
4744     <blockquote class="text">
4745     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4746     </p>
4747     </blockquote><p>
4748 schoenebeck 940
4749 schoenebeck 708 </p>
4750     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4751 schoenebeck 974 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4752     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4753 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4754     to unmute the channel.
4755     </p>
4756     <p>Possible Answers:
4757     </p>
4758     <p>
4759     </p>
4760     <blockquote class="text">
4761     <p>"OK" -
4762     </p>
4763     <blockquote class="text">
4764     <p>on success
4765     </p>
4766 schoenebeck 940 </blockquote>
4767    
4768 schoenebeck 708
4769     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4770     </p>
4771     <blockquote class="text">
4772     <p>if the channel was muted/unmuted, but there are noteworthy
4773     issue(s) related, providing an appropriate warning code and
4774     warning message
4775     </p>
4776 schoenebeck 940 </blockquote>
4777    
4778 schoenebeck 708
4779     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4780     </p>
4781     <blockquote class="text">
4782     <p>in case it failed, providing an appropriate error code and error message
4783     </p>
4784 schoenebeck 940 </blockquote>
4785    
4786 schoenebeck 708
4787     </blockquote><p>
4788 schoenebeck 940
4789 schoenebeck 708 </p>
4790     <p>Examples:
4791     </p>
4792     <p>
4793     </p>
4794     <blockquote class="text">
4795     <p>
4796     </p>
4797     </blockquote><p>
4798 schoenebeck 940
4799 schoenebeck 708 </p>
4800 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
4801 schoenebeck 974 <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>
4802     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4803     Soloing a sampler channel</h3>
4804 schoenebeck 708
4805     <p>The front-end can solo/unsolo a specific sampler channel
4806     by sending the following command:
4807     </p>
4808     <p>
4809     </p>
4810     <blockquote class="text">
4811     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4812     </p>
4813     </blockquote><p>
4814 schoenebeck 940
4815 schoenebeck 708 </p>
4816     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4817 schoenebeck 974 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4818     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4819 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4820     to unsolo the channel.
4821     </p>
4822     <p>Possible Answers:
4823     </p>
4824     <p>
4825     </p>
4826     <blockquote class="text">
4827     <p>"OK" -
4828     </p>
4829     <blockquote class="text">
4830     <p>on success
4831     </p>
4832 schoenebeck 940 </blockquote>
4833    
4834 schoenebeck 708
4835     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4836     </p>
4837     <blockquote class="text">
4838     <p>if the channel was soloed/unsoloed, but there are noteworthy
4839     issue(s) related, providing an appropriate warning code and
4840     warning message
4841     </p>
4842 schoenebeck 940 </blockquote>
4843    
4844 schoenebeck 708
4845     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4846     </p>
4847     <blockquote class="text">
4848     <p>in case it failed, providing an appropriate error code and error message
4849     </p>
4850 schoenebeck 940 </blockquote>
4851    
4852 schoenebeck 708
4853     </blockquote><p>
4854 schoenebeck 940
4855 schoenebeck 708 </p>
4856     <p>Examples:
4857     </p>
4858     <p>
4859     </p>
4860     <blockquote class="text">
4861     <p>
4862     </p>
4863     </blockquote><p>
4864 schoenebeck 940
4865 schoenebeck 708 </p>
4866 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4867     <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>
4868     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4869     Assigning a MIDI instrument map to a sampler channel</h3>
4870    
4871     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
4872     by sending the following command:
4873     </p>
4874     <p>
4875     </p>
4876     <blockquote class="text">
4877     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
4878     </p>
4879     </blockquote><p>
4880    
4881     </p>
4882     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4883     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4884     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4885     &lt;map&gt; can have the following possibilites:
4886     </p>
4887     <p>
4888     </p>
4889     <blockquote class="text">
4890     <p>"NONE" -
4891     </p>
4892     <blockquote class="text">
4893     <p>This is the default setting. In this case
4894     the sampler channel is not assigned any MIDI
4895     instrument map and thus will ignore all MIDI
4896     program change messages.
4897     </p>
4898     </blockquote>
4899    
4900    
4901     <p>"DEFAULT" -
4902     </p>
4903     <blockquote class="text">
4904     <p>The sampler channel will always use the
4905     default MIDI instrument map to handle MIDI
4906     program change messages.
4907     </p>
4908     </blockquote>
4909    
4910    
4911     <p>numeric ID -
4912     </p>
4913     <blockquote class="text">
4914     <p>You can assign a specific MIDI instrument map
4915     by replacing &lt;map&gt; with the respective numeric
4916     ID of the MIDI instrument map as returned by the
4917     <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
4918     command. Once that map will be deleted, the sampler
4919     channel would fall back to "NONE".
4920     </p>
4921     </blockquote>
4922    
4923    
4924     </blockquote><p>
4925    
4926     </p>
4927     <p>Read chapter <a class='info' href='#MIDI Instrument Mapping'>"MIDI Instrument Mapping"<span> (</span><span class='info'>MIDI Instrument Mapping</span><span>)</span></a>
4928     for details regarding MIDI instrument mapping.
4929     </p>
4930     <p>Possible Answers:
4931     </p>
4932     <p>
4933     </p>
4934     <blockquote class="text">
4935     <p>"OK" -
4936     </p>
4937     <blockquote class="text">
4938     <p>on success
4939     </p>
4940     </blockquote>
4941    
4942    
4943     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4944     </p>
4945     <blockquote class="text">
4946     <p>in case it failed, providing an appropriate error code and error message
4947     </p>
4948     </blockquote>
4949    
4950    
4951     </blockquote><p>
4952    
4953     </p>
4954     <p>Examples:
4955     </p>
4956     <p>
4957     </p>
4958     <blockquote class="text">
4959     <p>
4960     </p>
4961     </blockquote><p>
4962    
4963     </p>
4964 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
4965     <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>
4966     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
4967     Adding an effect send to a sampler channel</h3>
4968    
4969     <p>The front-end can create an additional effect send on a specific sampler channel
4970     by sending the following command:
4971     </p>
4972     <p>
4973     </p>
4974     <blockquote class="text">
4975     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
4976     </p>
4977     </blockquote><p>
4978    
4979     </p>
4980     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4981     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4982     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
4983     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
4984     is a number between 0..127 defining the MIDI controller which can alter the
4985     effect send level and &lt;name&gt; is an optional argument defining a name
4986     for the effect send entity. The name does not have to be unique.
4987     </p>
4988     <p>By default, that is as initial routing, the effect send's audio channels
4989     are automatically routed to the last audio channels of the sampler channel's
4990     audio output device, that way you can i.e. first increase the amount of audio
4991     channels on the audio output device for having dedicated effect send output
4992     channels and when "CREATE FX_SEND" is called, those channels will automatically
4993     be picked. You can alter the destination channels however with
4994     <a class='info' href='#SET FX_SEND AUDIO_OUTPUT_CHANNEL'>"SET FX_SEND AUDIO_OUTPUT_CHANNEL"<span> (</span><span class='info'>Altering effect send's audio routing</span><span>)</span></a>.
4995    
4996     </p>
4997     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
4998     sends on a sampler channel will decrease runtime performance, because for implementing channel
4999     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5000     the voices and route the audio signal afterwards to the master outputs and effect send
5001     outputs (along with their respective effect send levels). A sampler channel without effect
5002     sends however can mix its voices directly into the audio output devices's audio buffers
5003     and is thus faster.
5004    
5005     </p>
5006     <p>Possible Answers:
5007     </p>
5008     <p>
5009     </p>
5010     <blockquote class="text">
5011     <p>"OK[&lt;fx-send-id&gt;]" -
5012     </p>
5013     <blockquote class="text">
5014     <p>in case a new effect send could be added to the
5015     sampler channel, where &lt;fx-send-id&gt; reflects the
5016     unique ID of the newly created effect send entity
5017     </p>
5018     </blockquote>
5019    
5020    
5021     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5022     </p>
5023     <blockquote class="text">
5024     <p>when a new effect send could not be added, i.e.
5025     due to invalid parameters
5026     </p>
5027     </blockquote>
5028    
5029    
5030     </blockquote><p>
5031    
5032     </p>
5033     <p>Examples:
5034     </p>
5035     <p>
5036     </p>
5037     <blockquote class="text">
5038     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5039     </p>
5040     <p>S: "OK[0]"
5041     </p>
5042     </blockquote><p>
5043    
5044     </p>
5045     <p>
5046     </p>
5047     <blockquote class="text">
5048     <p>C: "CREATE FX_SEND 0 93"
5049     </p>
5050     <p>S: "OK[1]"
5051     </p>
5052     </blockquote><p>
5053    
5054     </p>
5055     <a name="DESTROY FX_SEND"></a><br /><hr />
5056     <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>
5057     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5058     Removing an effect send from a sampler channel</h3>
5059    
5060     <p>The front-end can remove an existing effect send on a specific sampler channel
5061     by sending the following command:
5062     </p>
5063     <p>
5064     </p>
5065     <blockquote class="text">
5066     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5067     </p>
5068     </blockquote><p>
5069    
5070     </p>
5071     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5072     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5073     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
5074     sampler channel from which the effect send should be removed from and
5075     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5076     <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5077     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5078     </p>
5079     <p>Possible Answers:
5080     </p>
5081     <p>
5082     </p>
5083     <blockquote class="text">
5084     <p>"OK" -
5085     </p>
5086     <blockquote class="text">
5087     <p>on success
5088     </p>
5089     </blockquote>
5090    
5091    
5092     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5093     </p>
5094     <blockquote class="text">
5095     <p>in case it failed, providing an appropriate error code and
5096     error message
5097     </p>
5098     </blockquote>
5099    
5100    
5101     </blockquote><p>
5102    
5103     </p>
5104     <p>Example:
5105     </p>
5106     <p>
5107     </p>
5108     <blockquote class="text">
5109     <p>C: "DESTROY FX_SEND 0 0"
5110     </p>
5111     <p>S: "OK"
5112     </p>
5113     </blockquote><p>
5114    
5115     </p>
5116     <a name="GET FX_SENDS"></a><br /><hr />
5117     <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>
5118     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5119     Getting amount of effect sends on a sampler channel</h3>
5120    
5121     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5122     by sending the following command:
5123     </p>
5124     <p>
5125     </p>
5126     <blockquote class="text">
5127     <p>GET FX_SENDS &lt;sampler-channel&gt;
5128     </p>
5129     </blockquote><p>
5130    
5131     </p>
5132     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5133     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5134     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5135     </p>
5136     <p>Possible Answers:
5137     </p>
5138     <p>
5139     </p>
5140     <blockquote class="text">
5141     <p>The sampler will answer by returning the number of effect
5142     sends on the given sampler channel.
5143     </p>
5144     </blockquote><p>
5145    
5146     </p>
5147     <p>Example:
5148     </p>
5149     <p>
5150     </p>
5151     <blockquote class="text">
5152     <p>C: "GET FX_SENDS 0"
5153     </p>
5154     <p>S: "2"
5155     </p>
5156     </blockquote><p>
5157    
5158     </p>
5159     <a name="LIST FX_SENDS"></a><br /><hr />
5160     <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>
5161     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5162     Listing all effect sends on a sampler channel</h3>
5163    
5164     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5165     by sending the following command:
5166     </p>
5167     <p>
5168     </p>
5169     <blockquote class="text">
5170     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5171     </p>
5172     </blockquote><p>
5173    
5174     </p>
5175     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5176     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5177     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5178     </p>
5179     <p>Possible Answers:
5180     </p>
5181     <p>
5182     </p>
5183     <blockquote class="text">
5184     <p>The sampler will answer by returning a comma separated list
5185     with all effect sends' numerical IDs on the given sampler
5186     channel.
5187     </p>
5188     </blockquote><p>
5189    
5190     </p>
5191     <p>Examples:
5192     </p>
5193     <p>
5194     </p>
5195     <blockquote class="text">
5196     <p>C: "LIST FX_SENDS 0"
5197     </p>
5198     <p>S: "0,1"
5199     </p>
5200     </blockquote><p>
5201    
5202     </p>
5203     <p>
5204     </p>
5205     <blockquote class="text">
5206     <p>C: "LIST FX_SENDS 1"
5207     </p>
5208     <p>S: ""
5209     </p>
5210     </blockquote><p>
5211    
5212     </p>
5213     <a name="GET FX_SEND INFO"></a><br /><hr />
5214     <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>
5215     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5216     Getting effect send information</h3>
5217    
5218     <p>The front-end can ask for the current settings of an effect send entity
5219     by sending the following command:
5220     </p>
5221     <p>
5222     </p>
5223     <blockquote class="text">
5224     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5225     </p>
5226     </blockquote><p>
5227    
5228     </p>
5229     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5230     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5231     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
5232     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5233     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5234     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5235    
5236     </p>
5237     <p>Possible Answers:
5238     </p>
5239     <p>
5240     </p>
5241     <blockquote class="text">
5242     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5243     Each answer line begins with the settings category name
5244     followed by a colon and then a space character &lt;SP&gt; and finally
5245     the info character string to that setting category. At the
5246     moment the following categories are defined:
5247     </p>
5248     <p>
5249     </p>
5250     <blockquote class="text">
5251     <p>NAME -
5252     </p>
5253     <blockquote class="text">
5254     <p>name of the effect send entity
5255     </p>
5256     </blockquote>
5257    
5258    
5259     <p>AUDIO_OUTPUT_ROUTING -
5260     </p>
5261     <blockquote class="text">
5262     <p>comma separated list which reflects to which audio
5263     channel of the selected audio output device each
5264     effect send output channel is routed to, e.g. "0,3" would
5265     mean the effect send's output channel 0 is routed to channel
5266     0 of the audio output device and the effect send's output
5267     channel 1 is routed to the channel 3 of the audio
5268     output device (see
5269     <a class='info' href='#SET FX_SEND AUDIO_OUTPUT_CHANNEL'>"SET FX_SEND AUDIO_OUTPUT_CHANNEL"<span> (</span><span class='info'>Altering effect send's audio routing</span><span>)</span></a>
5270     for details)
5271     </p>
5272     </blockquote>
5273    
5274    
5275     </blockquote>
5276    
5277    
5278     </blockquote><p>
5279    
5280     </p>
5281     <p>The mentioned fields above don't have to be in particular order.
5282     </p>
5283     <p>Example:
5284     </p>
5285     <p>
5286     </p>
5287     <blockquote class="text">
5288     <p>C: "GET FX_SEND INFO 0 0"
5289     </p>
5290     <p>S: "NAME: Reverb Send"
5291     </p>
5292     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5293     </p>
5294     <p>&nbsp;&nbsp;&nbsp;"."
5295     </p>
5296     </blockquote><p>
5297    
5298     </p>
5299     <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5300     <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>
5301     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5302     Altering effect send's audio routing</h3>
5303    
5304     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5305     sampler channel by sending the following command:
5306     </p>
5307     <p>
5308     </p>
5309     <blockquote class="text">
5310     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5311     </p>
5312     </blockquote><p>
5313    
5314     </p>
5315     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5316     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5317     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5318     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5319     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5320     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command,
5321     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5322     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5323     the audio channel of the selected audio output device where &lt;audio-src&gt;
5324     should be routed to.
5325     </p>
5326     <p>Note that effect sends can only route audio to the same audio output
5327     device as assigned to the effect send's sampler channel. Also note that an
5328     effect send entity does always have exactly as much audio channels as its
5329     sampler channel. So if the sampler channel is stereo, the effect send does
5330     have two audio channels as well. Also keep in mind that the amount of audio
5331     channels on a sampler channel might be dependant not only to the deployed
5332     sampler engine on the sampler channel, but also dependant to the instrument
5333     currently loaded. However you can (effectively) turn an i.e. stereo effect
5334     send into a mono one by simply altering its audio routing appropriately.
5335     </p>
5336     <p>Possible Answers:
5337     </p>
5338     <p>
5339     </p>
5340     <blockquote class="text">
5341     <p>"OK" -
5342     </p>
5343     <blockquote class="text">
5344     <p>on success
5345     </p>
5346     </blockquote>
5347    
5348    
5349     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5350     </p>
5351     <blockquote class="text">
5352     <p>if audio output channel was set, but there are noteworthy
5353     issue(s) related, providing an appropriate warning code and
5354     warning message
5355     </p>
5356     </blockquote>
5357    
5358    
5359     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5360     </p>
5361     <blockquote class="text">
5362     <p>in case it failed, providing an appropriate error code and error message
5363     </p>
5364     </blockquote>
5365    
5366    
5367     </blockquote><p>
5368    
5369     </p>
5370     <p>Example:
5371     </p>
5372     <p>
5373     </p>
5374     <blockquote class="text">
5375     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5376     </p>
5377     <p>S: "OK"
5378     </p>
5379     </blockquote><p>
5380    
5381     </p>
5382 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
5383 schoenebeck 974 <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>
5384 schoenebeck 1002 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5385 schoenebeck 974 Resetting a sampler channel</h3>
5386 schoenebeck 708
5387 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
5388     </p>
5389 schoenebeck 708 <p>
5390     </p>
5391 senoner 542 <blockquote class="text">
5392     <p>RESET CHANNEL &lt;sampler-channel&gt;
5393     </p>
5394 schoenebeck 708 </blockquote><p>
5395 schoenebeck 940
5396 schoenebeck 708 </p>
5397 senoner 542 <p>
5398     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5399     This will cause the engine on that sampler channel, its voices and
5400     eventually disk streams and all control and status variables to be
5401     reset.
5402     </p>
5403     <p>Possible Answers:
5404     </p>
5405 schoenebeck 708 <p>
5406     </p>
5407 senoner 542 <blockquote class="text">
5408     <p>"OK" -
5409     </p>
5410     <blockquote class="text">
5411     <p>on success
5412     </p>
5413 schoenebeck 940 </blockquote>
5414    
5415 senoner 542
5416     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5417     </p>
5418     <blockquote class="text">
5419     <p>if channel was reset, but there are noteworthy issue(s)
5420     related, providing an appropriate warning code and warning
5421     message
5422     </p>
5423 schoenebeck 940 </blockquote>
5424    
5425 senoner 542
5426     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5427     </p>
5428     <blockquote class="text">
5429     <p>in case it failed, providing an appropriate error code and
5430     error message
5431     </p>
5432 schoenebeck 940 </blockquote>
5433    
5434 senoner 542
5435 schoenebeck 708 </blockquote><p>
5436 schoenebeck 940
5437 schoenebeck 708 </p>
5438 senoner 542 <p>Examples:
5439     </p>
5440 schoenebeck 708 <p>
5441     </p>
5442 senoner 542 <blockquote class="text">
5443     <p>
5444     </p>
5445 schoenebeck 708 </blockquote><p>
5446 schoenebeck 940
5447 schoenebeck 708 </p>
5448 schoenebeck 940 <a name="anchor12"></a><br /><hr />
5449 schoenebeck 974 <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>
5450     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5451     Controlling connection</h3>
5452 senoner 542
5453     <p>The following commands are used to control the connection to LinuxSampler.
5454     </p>
5455 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
5456 schoenebeck 974 <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>
5457     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5458     Register front-end for receiving event messages</h3>
5459 senoner 542
5460     <p>The front-end can register itself to the LinuxSampler application to
5461     be informed about noteworthy events by sending this command:
5462     </p>
5463 schoenebeck 708 <p>
5464     </p>
5465 senoner 542 <blockquote class="text">
5466     <p>SUBSCRIBE &lt;event-id&gt;
5467     </p>
5468 schoenebeck 708 </blockquote><p>
5469 schoenebeck 940
5470 schoenebeck 708 </p>
5471 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
5472     client wants to subscribe to.
5473     </p>
5474     <p>Possible Answers:
5475     </p>
5476 schoenebeck 708 <p>
5477     </p>
5478 senoner 542 <blockquote class="text">
5479     <p>"OK" -
5480     </p>
5481     <blockquote class="text">
5482     <p>on success
5483     </p>
5484 schoenebeck 940 </blockquote>
5485    
5486 senoner 542
5487     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5488     </p>
5489     <blockquote class="text">
5490     <p>if registration succeeded, but there are noteworthy
5491     issue(s) related, providing an appropriate warning code and
5492     warning message
5493     </p>
5494 schoenebeck 940 </blockquote>
5495    
5496 senoner 542
5497     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5498     </p>
5499     <blockquote class="text">
5500     <p>in case it failed, providing an appropriate error code and
5501     error message
5502     </p>
5503 schoenebeck 940 </blockquote>
5504    
5505 senoner 542
5506 schoenebeck 708 </blockquote><p>
5507 schoenebeck 940
5508 schoenebeck 708 </p>
5509 senoner 542 <p>Examples:
5510     </p>
5511 schoenebeck 708 <p>
5512     </p>
5513 senoner 542 <blockquote class="text">
5514     <p>
5515     </p>
5516 schoenebeck 708 </blockquote><p>
5517 schoenebeck 940
5518 schoenebeck 708 </p>
5519 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
5520 schoenebeck 974 <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>
5521     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5522     Unregister front-end for not receiving event messages</h3>
5523 senoner 542
5524     <p>The front-end can unregister itself if it doesn't want to receive event
5525     messages anymore by sending the following command:
5526     </p>
5527 schoenebeck 708 <p>
5528     </p>
5529 senoner 542 <blockquote class="text">
5530     <p>UNSUBSCRIBE &lt;event-id&gt;
5531     </p>
5532 schoenebeck 708 </blockquote><p>
5533 schoenebeck 940
5534 schoenebeck 708 </p>
5535 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5536     client doesn't want to receive anymore.
5537     </p>
5538     <p>Possible Answers:
5539     </p>
5540 schoenebeck 708 <p>
5541     </p>
5542 senoner 542 <blockquote class="text">
5543     <p>"OK" -
5544     </p>
5545     <blockquote class="text">
5546     <p>on success
5547     </p>
5548 schoenebeck 940 </blockquote>
5549    
5550 senoner 542
5551     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5552     </p>
5553     <blockquote class="text">
5554     <p>if unregistration succeeded, but there are noteworthy
5555     issue(s) related, providing an appropriate warning code and
5556     warning message
5557     </p>
5558 schoenebeck 940 </blockquote>
5559    
5560 senoner 542
5561     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5562     </p>
5563     <blockquote class="text">
5564     <p>in case it failed, providing an appropriate error code and
5565     error message
5566     </p>
5567 schoenebeck 940 </blockquote>
5568    
5569 senoner 542
5570 schoenebeck 708 </blockquote><p>
5571 schoenebeck 940
5572 schoenebeck 708 </p>
5573 senoner 542 <p>Examples:
5574     </p>
5575 schoenebeck 708 <p>
5576     </p>
5577 senoner 542 <blockquote class="text">
5578     <p>
5579     </p>
5580 schoenebeck 708 </blockquote><p>
5581 schoenebeck 940
5582 schoenebeck 708 </p>
5583 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
5584 schoenebeck 974 <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>
5585     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5586     Enable or disable echo of commands</h3>
5587 senoner 542
5588     <p>To enable or disable back sending of commands to the client the following command can be used:
5589     </p>
5590 schoenebeck 708 <p>
5591     </p>
5592 senoner 542 <blockquote class="text">
5593     <p>SET ECHO &lt;value&gt;
5594     </p>
5595 schoenebeck 708 </blockquote><p>
5596 schoenebeck 940
5597 schoenebeck 708 </p>
5598 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5599     or "0" to disable echo mode. When echo mode is enabled, all
5600     commands send to LinuxSampler will be immediately send back and
5601     after this echo the actual response to the command will be
5602     returned. Echo mode will only be altered for the client connection
5603     that issued the "SET ECHO" command, not globally for all client
5604     connections.
5605     </p>
5606     <p>Possible Answers:
5607     </p>
5608 schoenebeck 708 <p>
5609     </p>
5610 senoner 542 <blockquote class="text">
5611     <p>"OK" -
5612     </p>
5613     <blockquote class="text">
5614     <p>usually
5615     </p>
5616 schoenebeck 940 </blockquote>
5617    
5618 senoner 542
5619     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5620     </p>
5621     <blockquote class="text">
5622     <p>on syntax error, e.g. non boolean value
5623     </p>
5624 schoenebeck 940 </blockquote>
5625    
5626 senoner 542
5627 schoenebeck 708 </blockquote><p>
5628 schoenebeck 940
5629 schoenebeck 708 </p>
5630 senoner 542 <p>Examples:
5631     </p>
5632 schoenebeck 708 <p>
5633     </p>
5634 senoner 542 <blockquote class="text">
5635     <p>
5636     </p>
5637 schoenebeck 708 </blockquote><p>
5638 schoenebeck 940
5639 schoenebeck 708 </p>
5640 schoenebeck 940 <a name="QUIT"></a><br /><hr />
5641 schoenebeck 974 <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>
5642     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
5643     Close client connection</h3>
5644 senoner 542
5645     <p>The client can close its network connection to LinuxSampler by sending the following command:
5646     </p>
5647 schoenebeck 708 <p>
5648     </p>
5649 senoner 542 <blockquote class="text">
5650     <p>QUIT
5651     </p>
5652 schoenebeck 708 </blockquote><p>
5653 schoenebeck 940
5654 schoenebeck 708 </p>
5655 senoner 542 <p>This is probably more interesting for manual telnet connections to
5656     LinuxSampler than really useful for a front-end implementation.
5657     </p>
5658 schoenebeck 940 <a name="anchor13"></a><br /><hr />
5659 schoenebeck 974 <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>
5660     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
5661     Global commands</h3>
5662 senoner 542
5663     <p>The following commands have global impact on the sampler.
5664     </p>
5665 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
5666 schoenebeck 974 <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>
5667     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
5668     Current number of active voices</h3>
5669 senoner 542
5670 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
5671     the sampler by sending the following command:
5672     </p>
5673     <p>
5674     </p>
5675     <blockquote class="text">
5676     <p>GET TOTAL_VOICE_COUNT
5677     </p>
5678     </blockquote><p>
5679    
5680     </p>
5681     <p>Possible Answers:
5682     </p>
5683     <p>
5684     </p>
5685     <blockquote class="text">
5686     <p>LinuxSampler will answer by returning the number of all active
5687     voices on the sampler.
5688     </p>
5689     </blockquote><p>
5690    
5691     </p>
5692     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
5693 schoenebeck 974 <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>
5694     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
5695     Maximum amount of active voices</h3>
5696 schoenebeck 940
5697     <p>The front-end can ask for the maximum number of active voices
5698     by sending the following command:
5699     </p>
5700     <p>
5701     </p>
5702     <blockquote class="text">
5703     <p>GET TOTAL_VOICE_COUNT_MAX
5704     </p>
5705     </blockquote><p>
5706    
5707     </p>
5708     <p>Possible Answers:
5709     </p>
5710     <p>
5711     </p>
5712     <blockquote class="text">
5713     <p>LinuxSampler will answer by returning the maximum number
5714     of active voices.
5715     </p>
5716     </blockquote><p>
5717    
5718     </p>
5719     <a name="RESET"></a><br /><hr />
5720 schoenebeck 974 <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>
5721     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
5722     Reset sampler</h3>
5723 schoenebeck 940
5724 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
5725     </p>
5726 schoenebeck 708 <p>
5727     </p>
5728 senoner 542 <blockquote class="text">
5729     <p>RESET
5730     </p>
5731 schoenebeck 708 </blockquote><p>
5732 schoenebeck 940
5733 schoenebeck 708 </p>
5734 senoner 542 <p>Possible Answers:
5735     </p>
5736 schoenebeck 708 <p>
5737     </p>
5738 senoner 542 <blockquote class="text">
5739     <p>"OK" -
5740     </p>
5741     <blockquote class="text">
5742     <p>always
5743     </p>
5744 schoenebeck 940 </blockquote>
5745    
5746 senoner 542
5747 schoenebeck 708 </blockquote><p>
5748 schoenebeck 940
5749 schoenebeck 708 </p>
5750 senoner 542 <p>Examples:
5751     </p>
5752 schoenebeck 708 <p>
5753     </p>
5754 senoner 542 <blockquote class="text">
5755     <p>
5756     </p>
5757 schoenebeck 708 </blockquote><p>
5758 schoenebeck 940
5759 schoenebeck 708 </p>
5760 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
5761 schoenebeck 974 <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>
5762     <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
5763     General sampler informations</h3>
5764 schoenebeck 575
5765     <p>The client can ask for general informations about the LinuxSampler
5766     instance by sending the following command:
5767     </p>
5768 schoenebeck 708 <p>
5769     </p>
5770 schoenebeck 575 <blockquote class="text">
5771     <p>GET SERVER INFO
5772     </p>
5773 schoenebeck 708 </blockquote><p>
5774 schoenebeck 940
5775 schoenebeck 708 </p>
5776 schoenebeck 575 <p>Possible Answers:
5777     </p>
5778 schoenebeck 708 <p>
5779     </p>
5780 schoenebeck 575 <blockquote class="text">
5781     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
5782     Each answer line begins with the information category name
5783     followed by a colon and then a space character &lt;SP&gt; and finally
5784     the info character string to that information category. At the
5785     moment the following categories are defined:
5786 schoenebeck 940
5787 schoenebeck 575 </p>
5788 schoenebeck 708 <p>
5789     </p>
5790 schoenebeck 575 <blockquote class="text">
5791     <p>DESCRIPTION -
5792     </p>
5793     <blockquote class="text">
5794     <p>arbitrary textual description about the sampler
5795     </p>
5796 schoenebeck 940 </blockquote>
5797    
5798 schoenebeck 575
5799     <p>VERSION -
5800     </p>
5801     <blockquote class="text">
5802     <p>version of the sampler
5803     </p>
5804 schoenebeck 940 </blockquote>
5805    
5806 schoenebeck 575
5807     <p>PROTOCOL_VERSION -
5808     </p>
5809     <blockquote class="text">
5810     <p>version of the LSCP specification the sampler
5811 schoenebeck 974 complies with (see <a class='info' href='#LSCP versioning'>Section&nbsp;2<span> (</span><span class='info'>Versioning of this specification</span><span>)</span></a> for details)
5812 schoenebeck 575 </p>
5813 schoenebeck 940 </blockquote>
5814    
5815 schoenebeck 575
5816 schoenebeck 940 </blockquote>
5817    
5818 schoenebeck 575
5819 schoenebeck 708 </blockquote><p>
5820 schoenebeck 940
5821 schoenebeck 708 </p>
5822 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
5823     Other fields might be added in future.
5824     </p>
5825 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
5826     <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>
5827     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
5828     MIDI Instrument Mapping</h3>
5829 schoenebeck 945
5830     <p>The MIDI protocol provides a way to switch between instruments
5831     by sending so called MIDI bank select and MIDI program change
5832     messages which are essentially just numbers. The following commands
5833     allow to actually map arbitrary MIDI bank select / program change
5834     numbers with real instruments.
5835     </p>
5836 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
5837     instrument maps which define which instrument to load on
5838     which MIDI program change message.
5839 schoenebeck 945 </p>
5840 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
5841     map, thus the sampler will simply ignore all program change
5842     messages. The front-end has to explicitly create at least one
5843     map, add entries to the map and tell the respective sampler
5844     channel(s) which MIDI instrument map to use, so the sampler
5845     knows how to react on a given program change message on the
5846     respective sampler channel, that is by switching to the
5847     respectively defined engine type and loading the respective
5848     instrument. See command
5849     <a class='info' href='#SET CHANNEL MIDI_INSTRUMENT_MAP'>"SET CHANNEL MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Assigning a MIDI instrument map to a sampler channel</span><span>)</span></a>
5850     for how to assign a MIDI instrument map to a sampler channel.
5851     </p>
5852 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
5853     cause to switch to another instrument. Instead when receiving a
5854     bank select message the bank value will be stored and a subsequent
5855     program change message (which may occur at any time) will finally
5856     cause the sampler to switch to the respective instrument as
5857     reflected by the current MIDI instrument map.
5858     </p>
5859 schoenebeck 974 <a name="ADD MIDI_INSTRUMENT MAP"></a><br /><hr />
5860     <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>
5861     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
5862     Create a new MIDI instrument map</h3>
5863    
5864     <p>The front-end can add a new MIDI instrument map by sending
5865     the following command:
5866     </p>
5867     <p>
5868     </p>
5869     <blockquote class="text">
5870     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
5871     </p>
5872     </blockquote><p>
5873    
5874     </p>
5875     <p>Where &lt;name&gt; is an optional argument allowing to
5876     assign a custom name to the new map. MIDI instrument Map
5877     names do not have to be unique.
5878     </p>
5879     <p>Possible Answers:
5880     </p>
5881     <p>
5882     </p>
5883     <blockquote class="text">
5884     <p>"OK[&lt;map&gt;]" -
5885     </p>
5886     <blockquote class="text">
5887     <p>in case a new MIDI instrument map could
5888     be added, where &lt;map&gt; reflects the
5889     unique ID of the newly created MIDI
5890     instrument map
5891     </p>
5892     </blockquote>
5893    
5894    
5895     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5896     </p>
5897     <blockquote class="text">
5898     <p>when a new map could not be created, which
5899     might never occur in practice
5900     </p>
5901     </blockquote>
5902    
5903    
5904     </blockquote><p>
5905    
5906     </p>
5907     <p>Examples:
5908     </p>
5909     <p>
5910     </p>
5911     <blockquote class="text">
5912     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
5913     </p>
5914     <p>S: "OK[0]"
5915     </p>
5916     </blockquote><p>
5917    
5918     </p>
5919     <p>
5920     </p>
5921     <blockquote class="text">
5922     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
5923     </p>
5924     <p>S: "OK[1]"
5925     </p>
5926     </blockquote><p>
5927    
5928     </p>
5929     <p>
5930     </p>
5931     <blockquote class="text">
5932     <p>C: "ADD MIDI_INSTRUMENT_MAP"
5933     </p>
5934     <p>S: "OK[5]"
5935     </p>
5936     </blockquote><p>
5937    
5938     </p>
5939     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
5940     <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>
5941     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
5942     Delete one particular or all MIDI instrument maps</h3>
5943    
5944     <p>The front-end can delete a particular MIDI instrument map
5945     by sending the following command:
5946     </p>
5947     <p>
5948     </p>
5949     <blockquote class="text">
5950     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
5951     </p>
5952     </blockquote><p>
5953    
5954     </p>
5955     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
5956     as returned by the <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
5957     command.
5958     </p>
5959     <p>The front-end can delete all MIDI instrument maps by
5960     sending the following command:
5961     </p>
5962     <p>
5963     </p>
5964     <blockquote class="text">
5965     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
5966     </p>
5967     </blockquote><p>
5968    
5969     </p>
5970     <p>Possible Answers:
5971     </p>
5972     <p>
5973     </p>
5974     <blockquote class="text">
5975     <p>"OK" -
5976     </p>
5977     <blockquote class="text">
5978     <p>in case the map(s) could be deleted
5979     </p>
5980     </blockquote>
5981    
5982    
5983     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5984     </p>
5985     <blockquote class="text">
5986     <p>when the given map does not exist
5987     </p>
5988     </blockquote>
5989    
5990    
5991     </blockquote><p>
5992    
5993     </p>
5994     <p>Examples:
5995     </p>
5996     <p>
5997     </p>
5998     <blockquote class="text">
5999     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6000     </p>
6001     <p>S: "OK"
6002     </p>
6003     </blockquote><p>
6004    
6005     </p>
6006     <p>
6007     </p>
6008     <blockquote class="text">
6009     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6010     </p>
6011     <p>S: "OK"
6012     </p>
6013     </blockquote><p>
6014    
6015     </p>
6016     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6017     <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>
6018     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6019     Get amount of existing MIDI instrument maps</h3>
6020    
6021     <p>The front-end can retrieve the current amount of MIDI
6022     instrument maps by sending the following command:
6023     </p>
6024     <p>
6025     </p>
6026     <blockquote class="text">
6027     <p>GET MIDI_INSTRUMENT_MAPS
6028     </p>
6029     </blockquote><p>
6030    
6031     </p>
6032     <p>Possible Answers:
6033     </p>
6034     <p>
6035     </p>
6036     <blockquote class="text">
6037     <p>The sampler will answer by returning the current
6038     number of MIDI instrument maps.
6039     </p>
6040     </blockquote><p>
6041    
6042     </p>
6043     <p>Example:
6044     </p>
6045     <p>
6046     </p>
6047     <blockquote class="text">
6048     <p>C: "GET MIDI_INSTRUMENT_MAPS"
6049     </p>
6050     <p>S: "2"
6051     </p>
6052     </blockquote><p>
6053    
6054     </p>
6055     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6056     <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>
6057     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6058     Getting all created MIDI instrument maps</h3>
6059    
6060     <p>The number of MIDI instrument maps can change on runtime. To get the
6061     current list of MIDI instrument maps, the front-end can send the
6062     following command:
6063     </p>
6064     <p>
6065     </p>
6066     <blockquote class="text">
6067     <p>LIST MIDI_INSTRUMENT_MAPS
6068     </p>
6069     </blockquote><p>
6070    
6071     </p>
6072     <p>Possible Answers:
6073     </p>
6074     <p>
6075     </p>
6076     <blockquote class="text">
6077     <p>The sampler will answer by returning a comma separated list
6078     with all MIDI instrument maps' numerical IDs.
6079     </p>
6080     </blockquote><p>
6081    
6082     </p>
6083     <p>Example:
6084     </p>
6085     <p>
6086     </p>
6087     <blockquote class="text">
6088     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6089     </p>
6090     <p>S: "0,1,5,12"
6091     </p>
6092     </blockquote><p>
6093    
6094     </p>
6095     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6096     <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>
6097     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6098     Getting MIDI instrument map information</h3>
6099    
6100     <p>The front-end can ask for the current settings of a MIDI
6101     instrument map by sending the following command:
6102     </p>
6103     <p>
6104     </p>
6105     <blockquote class="text">
6106     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6107     </p>
6108     </blockquote><p>
6109    
6110     </p>
6111     <p>Where &lt;map&gt; is the numerical ID of the map the
6112     front-end is interested in as returned by the
6113     <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
6114     command.
6115     </p>
6116     <p>Possible Answers:
6117     </p>
6118     <p>
6119     </p>
6120     <blockquote class="text">
6121     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6122     Each answer line begins with the settings category name
6123     followed by a colon and then a space character &lt;SP&gt; and finally
6124     the info character string to that setting category. At the
6125     moment the following categories are defined:
6126     </p>
6127     <p>
6128     </p>
6129     <blockquote class="text">
6130     <p>NAME -
6131     </p>
6132     <blockquote class="text">
6133     <p>custom name of the given map,
6134     which does not have to be unique
6135     </p>
6136     </blockquote>
6137    
6138    
6139     </blockquote>
6140    
6141    
6142     </blockquote><p>
6143    
6144     </p>
6145     <p>The mentioned fields above don't have to be in particular order.
6146     </p>
6147     <p>Example:
6148     </p>
6149     <p>
6150     </p>
6151     <blockquote class="text">
6152     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6153     </p>
6154     <p>S: "NAME: Standard Map"
6155     </p>
6156     <p>&nbsp;&nbsp;&nbsp;"."
6157     </p>
6158     </blockquote><p>
6159    
6160     </p>
6161     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6162     <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>
6163     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6164     Renaming a MIDI instrument map</h3>
6165    
6166     <p>The front-end can alter the custom name of a MIDI
6167     instrument map by sending the following command:
6168     </p>
6169     <p>
6170     </p>
6171     <blockquote class="text">
6172     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6173     </p>
6174     </blockquote><p>
6175    
6176     </p>
6177     <p>Where &lt;map&gt; is the numerical ID of the map and
6178     &lt;name&gt; the new custom name of the map, which does not
6179     have to be unique.
6180     </p>
6181     <p>Possible Answers:
6182     </p>
6183     <p>
6184     </p>
6185     <blockquote class="text">
6186     <p>"OK" -
6187     </p>
6188     <blockquote class="text">
6189     <p>on success
6190     </p>
6191     </blockquote>
6192    
6193    
6194     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6195     </p>
6196     <blockquote class="text">
6197     <p>in case the given map does not exist
6198     </p>
6199     </blockquote>
6200    
6201    
6202     </blockquote><p>
6203    
6204     </p>
6205     <p>Example:
6206     </p>
6207     <p>
6208     </p>
6209     <blockquote class="text">
6210     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6211     </p>
6212     <p>S: "OK"
6213     </p>
6214     </blockquote><p>
6215    
6216     </p>
6217 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6218 schoenebeck 974 <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>
6219     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6220     Create or replace a MIDI instrument map entry</h3>
6221 schoenebeck 945
6222     <p>The front-end can create a new or replace an existing entry
6223 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
6224 schoenebeck 945 command:
6225     </p>
6226     <p>
6227     </p>
6228     <blockquote class="text">
6229 schoenebeck 974 <p>MAP MIDI_INSTRUMENT &lt;map&gt;
6230     &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6231 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6232     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6233     </p>
6234     </blockquote><p>
6235    
6236     </p>
6237 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6238     &lt;midi_bank&gt; is an integer value between
6239     0..16383 reflecting the MIDI bank select index,
6240     &lt;midi_prog&gt; an
6241 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
6242     index, &lt;engine_name&gt; a sampler engine name as returned by
6243 schoenebeck 974 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6244 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6245 schoenebeck 974 of the instrument's file to be deployed (encapsulated into apostrophes),
6246     &lt;instrument_index&gt; the index (integer value) of the instrument
6247 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
6248     volume of the instrument as optionally dotted number (where a
6249     value < 1.0 means attenuation and a value > 1.0 means
6250     amplification). This parameter easily allows to adjust the
6251     volume of all intruments within a custom instrument map
6252     without having to adjust their instrument files. The
6253     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6254     time of the instrument, that is when the instrument should
6255     be loaded, when freed and has exactly the following
6256     possibilities:
6257     </p>
6258     <p>
6259     </p>
6260     <blockquote class="text">
6261     <p>"ON_DEMAND" -
6262     </p>
6263     <blockquote class="text">
6264     <p>The instrument will be loaded when needed,
6265     that is when demanded by at least one sampler
6266     channel. It will immediately be freed from memory
6267     when not needed by any sampler channel anymore.
6268     </p>
6269     </blockquote>
6270    
6271    
6272     <p>"ON_DEMAND_HOLD" -
6273     </p>
6274     <blockquote class="text">
6275     <p>The instrument will be loaded when needed,
6276     that is when demanded by at least one sampler
6277     channel. It will be kept in memory even when
6278     not needed by any sampler channel anymore.
6279     Instruments with this mode are only freed
6280     when the sampler is reset or all mapping
6281     entries with this mode (and respective
6282     instrument) are explicitly changed to
6283     "ON_DEMAND" and no sampler channel is using
6284     the instrument anymore.
6285     </p>
6286     </blockquote>
6287    
6288    
6289     <p>"PERSISTENT" -
6290     </p>
6291     <blockquote class="text">
6292     <p>The instrument will immediately be loaded
6293     into memory in the background when this mapping
6294     command is sent and the instrument is kept all
6295     the time. Instruments with this mode are
6296     only freed when the sampler is reset or all
6297     mapping entries with this mode (and
6298     respective instrument) are explicitly
6299     changed to "ON_DEMAND" and no sampler
6300     channel is using the instrument anymore.
6301     </p>
6302     </blockquote>
6303    
6304    
6305     <p>not supplied -
6306     </p>
6307     <blockquote class="text">
6308     <p>In case there is no &lt;instr_load_mode&gt;
6309     argument given, it will be up to the
6310     InstrumentManager to decide which mode to use.
6311     Usually it will use "ON_DEMAND" if an entry
6312     for the given instrument does not exist in
6313     the InstrumentManager's list yet, otherwise
6314     if an entry already exists, it will simply
6315     stick with the mode currently reflected by
6316     the already existing entry, that is it will
6317     not change the mode.
6318     </p>
6319     </blockquote>
6320    
6321    
6322     </blockquote><p>
6323    
6324     </p>
6325     <p>
6326     The &lt;instr_load_mode&gt; argument thus allows to define an
6327     appropriate strategy (low memory consumption vs. fast
6328     instrument switching) for each instrument individually. Note, the
6329     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6330     "PERSISTENT" have to be supported by the respective sampler engine
6331     (which is technically the case when the engine provides an
6332     InstrumentManager for its format). If this is not the case the
6333     argument will automatically fall back to the default value
6334     "ON_DEMAND". Also the load mode of one instrument may
6335     automatically change the laod mode of other instrument(s), i.e.
6336     because the instruments are part of the same file and the
6337     engine does not allow a way to manage load modes for them
6338     individually. Due to this, in case the frontend shows the
6339     load modes of entries, the frontend should retrieve the actual
6340     mode by i.e. sending
6341 schoenebeck 974 <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
6342 schoenebeck 945 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to
6343     set a custom name (encapsulated into apostrophes) for the mapping
6344     entry, useful for frontends for displaying an appropriate name for
6345     mapped instruments (using
6346 schoenebeck 974 <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>).
6347 schoenebeck 945
6348     </p>
6349     <p>
6350     The "MAP MIDI_INSTRUMENT" command
6351     will immediately return, thus it will not block when an
6352     instrument is to be loaded due to a "PERSISTENT" type
6353     entry as instruments are loaded in the background. As a
6354     consequence this command may not necessarily return an error
6355     i.e. when the given instrument file does not exist or may
6356     turn out to be corrupt.
6357    
6358     </p>
6359     <p>Possible Answers:
6360     </p>
6361     <p>
6362     </p>
6363     <blockquote class="text">
6364     <p>"OK" -
6365     </p>
6366     <blockquote class="text">
6367     <p>usually
6368     </p>
6369     </blockquote>
6370    
6371    
6372     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6373     </p>
6374     <blockquote class="text">
6375 schoenebeck 974 <p>when the given map or engine does not exist or a value
6376 schoenebeck 945 is out of range
6377     </p>
6378     </blockquote>
6379    
6380    
6381     </blockquote><p>
6382    
6383     </p>
6384     <p>Examples:
6385     </p>
6386     <p>
6387     </p>
6388     <blockquote class="text">
6389 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6390 schoenebeck 945 </p>
6391     <p>S: "OK"
6392     </p>
6393     </blockquote><p>
6394    
6395     </p>
6396     <p>
6397     </p>
6398     <blockquote class="text">
6399 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6400 schoenebeck 945 </p>
6401     <p>S: "OK"
6402     </p>
6403     </blockquote><p>
6404    
6405     </p>
6406     <p>
6407     </p>
6408     <blockquote class="text">
6409     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6410     </p>
6411     <p>S: "OK"
6412     </p>
6413 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6414 schoenebeck 945 </p>
6415     <p>S: "OK"
6416     </p>
6417     </blockquote><p>
6418    
6419     </p>
6420     <p>
6421     </p>
6422     <blockquote class="text">
6423 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6424 schoenebeck 945 </p>
6425     <p>S: "OK"
6426     </p>
6427     </blockquote><p>
6428    
6429     </p>
6430     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6431 schoenebeck 974 <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>
6432     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6433     Getting ammount of MIDI instrument map entries</h3>
6434 schoenebeck 945
6435 schoenebeck 974 <p>The front-end can query the amount of currently existing
6436     entries in a MIDI instrument map by sending the following
6437 schoenebeck 945 command:
6438     </p>
6439     <p>
6440     </p>
6441     <blockquote class="text">
6442 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6443 schoenebeck 945 </p>
6444     </blockquote><p>
6445    
6446     </p>
6447 schoenebeck 974 <p>The front-end can query the amount of currently existing
6448     entries in all MIDI instrument maps by sending the following
6449     command:
6450     </p>
6451     <p>
6452     </p>
6453     <blockquote class="text">
6454     <p>GET MIDI_INSTRUMENTS ALL
6455     </p>
6456     </blockquote><p>
6457    
6458     </p>
6459 schoenebeck 945 <p>Possible Answers:
6460     </p>
6461     <p>
6462     </p>
6463     <blockquote class="text">
6464 schoenebeck 974 <p>The sampler will answer by sending the current number of
6465     entries in the MIDI instrument map(s).
6466 schoenebeck 945 </p>
6467     </blockquote><p>
6468    
6469     </p>
6470     <p>Example:
6471     </p>
6472     <p>
6473     </p>
6474     <blockquote class="text">
6475 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
6476 schoenebeck 945 </p>
6477 schoenebeck 974 <p>S: "234"
6478 schoenebeck 945 </p>
6479     </blockquote><p>
6480    
6481     </p>
6482 schoenebeck 974 <p>
6483     </p>
6484     <blockquote class="text">
6485     <p>C: "GET MIDI_INSTRUMENTS ALL"
6486     </p>
6487     <p>S: "954"
6488     </p>
6489     </blockquote><p>
6490    
6491     </p>
6492 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
6493 schoenebeck 974 <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>
6494     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
6495     Getting indeces of all entries of a MIDI instrument map</h3>
6496 schoenebeck 945
6497 schoenebeck 974 <p>The front-end can query a list of all currently existing
6498     entries in a certain MIDI instrument map by sending the following
6499     command:
6500 schoenebeck 945 </p>
6501     <p>
6502     </p>
6503     <blockquote class="text">
6504 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
6505 schoenebeck 945 </p>
6506     </blockquote><p>
6507    
6508     </p>
6509 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
6510     </p>
6511     <p>The front-end can query a list of all currently existing
6512     entries of all MIDI instrument maps by sending the following
6513     command:
6514     </p>
6515     <p>
6516     </p>
6517     <blockquote class="text">
6518     <p>LIST MIDI_INSTRUMENTS ALL
6519     </p>
6520     </blockquote><p>
6521    
6522     </p>
6523 schoenebeck 945 <p>Possible Answers:
6524     </p>
6525     <p>
6526     </p>
6527     <blockquote class="text">
6528 schoenebeck 974 <p>The sampler will answer by sending a comma separated
6529     list of map ID - MIDI bank - MIDI program triples, where
6530     each triple is encapsulated into curly braces. The
6531     list is returned in one single line. Each triple
6532     just reflects the key of the respective map entry,
6533     thus subsequent
6534     <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
6535 schoenebeck 945 command(s) are necessary to retrieve detailed informations
6536     about each entry.
6537     </p>
6538     </blockquote><p>
6539    
6540     </p>
6541     <p>Example:
6542     </p>
6543     <p>
6544     </p>
6545     <blockquote class="text">
6546 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
6547 schoenebeck 945 </p>
6548 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
6549 schoenebeck 945 </p>
6550     </blockquote><p>
6551    
6552     </p>
6553     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
6554 schoenebeck 974 <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>
6555     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
6556     Remove an entry from the MIDI instrument map</h3>
6557 schoenebeck 945
6558 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
6559 schoenebeck 945 map by sending the following command:
6560     </p>
6561     <p>
6562     </p>
6563     <blockquote class="text">
6564 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
6565 schoenebeck 945 </p>
6566     </blockquote><p>
6567    
6568     </p>
6569     <p>
6570 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
6571     &lt;midi_bank&gt; is an integer value between 0..16383
6572     reflecting the MIDI bank value and
6573     &lt;midi_prog&gt; an integer value between
6574     0..127 reflecting the MIDI program value of the map's entrie's key
6575 schoenebeck 945 index triple.
6576    
6577     </p>
6578     <p>Possible Answers:
6579     </p>
6580     <p>
6581     </p>
6582     <blockquote class="text">
6583     <p>"OK" -
6584     </p>
6585     <blockquote class="text">
6586     <p>usually
6587     </p>
6588     </blockquote>
6589    
6590    
6591     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6592     </p>
6593     <blockquote class="text">
6594     <p>when index out of bounds
6595     </p>
6596     </blockquote>
6597    
6598    
6599     </blockquote><p>
6600    
6601     </p>
6602     <p>Example:
6603     </p>
6604     <p>
6605     </p>
6606     <blockquote class="text">
6607 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
6608 schoenebeck 945 </p>
6609     <p>S: "OK"
6610     </p>
6611     </blockquote><p>
6612    
6613     </p>
6614     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
6615 schoenebeck 974 <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>
6616     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
6617     Get current settings of MIDI instrument map entry</h3>
6618 schoenebeck 945
6619     <p>The front-end can retrieve the current settings of a certain
6620     instrument map entry by sending the following command:
6621     </p>
6622     <p>
6623     </p>
6624     <blockquote class="text">
6625 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
6626 schoenebeck 945 </p>
6627     </blockquote><p>
6628    
6629     </p>
6630     <p>
6631 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
6632     &lt;midi_bank&gt; is an integer value between 0..16383
6633     reflecting the MIDI bank value, &lt;midi_bank&gt;
6634     and &lt;midi_prog&gt; an integer value between
6635     0..127 reflecting the MIDI program value of the map's entrie's key
6636 schoenebeck 945 index triple.
6637    
6638     </p>
6639     <p>Possible Answers:
6640     </p>
6641     <p>
6642     </p>
6643     <blockquote class="text">
6644     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
6645     separated list. Each answer line begins with the
6646     information category name followed by a colon and then
6647     a space character &lt;SP&gt; and finally the info
6648     character string to that info category. At the moment
6649     the following categories are defined:
6650     </p>
6651     <p>"NAME" -
6652     </p>
6653     <blockquote class="text">
6654     <p>Name for this MIDI instrument map entry (if defined).
6655     This name shall be used by frontends for displaying a
6656     name for this mapped instrument. It can be set and
6657     changed with the
6658 schoenebeck 974 <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
6659 schoenebeck 945 command and does not have to be unique.
6660     </p>
6661     </blockquote>
6662    
6663    
6664     <p>"ENGINE_NAME" -
6665     </p>
6666     <blockquote class="text">
6667     <p>Name of the engine to be deployed for this
6668     instrument.
6669     </p>
6670     </blockquote>
6671    
6672    
6673     <p>"INSTRUMENT_FILE" -
6674     </p>
6675     <blockquote class="text">
6676     <p>File name of the instrument.
6677     </p>
6678     </blockquote>
6679    
6680    
6681     <p>"INSTRUMENT_NR" -
6682     </p>
6683     <blockquote class="text">
6684     <p>Index of the instrument within the file.
6685     </p>
6686     </blockquote>
6687    
6688    
6689     <p>"INSTRUMENT_NAME" -
6690     </p>
6691     <blockquote class="text">
6692     <p>Name of the loaded instrument as reflected by its file.
6693     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
6694     cannot be changed.
6695     </p>
6696     </blockquote>
6697    
6698    
6699     <p>"LOAD_MODE" -
6700     </p>
6701     <blockquote class="text">
6702     <p>Life time of instrument
6703 schoenebeck 974 (see <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a> for details about this setting).
6704 schoenebeck 945 </p>
6705     </blockquote>
6706    
6707    
6708     <p>"VOLUME" -
6709     </p>
6710     <blockquote class="text">
6711     <p>master volume of the instrument as optionally
6712     dotted number (where a value < 1.0 means attenuation
6713     and a value > 1.0 means amplification)
6714     </p>
6715     </blockquote>
6716    
6717    
6718     <p>The mentioned fields above don't have to be in particular order.
6719     </p>
6720     </blockquote><p>
6721    
6722     </p>
6723     <p>Example:
6724     </p>
6725     <p>
6726     </p>
6727     <blockquote class="text">
6728 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
6729 schoenebeck 945 </p>
6730     <p>S: "NAME: Drums for Foo Song"
6731     </p>
6732     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
6733     </p>
6734     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
6735     </p>
6736     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
6737     </p>
6738     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
6739     </p>
6740     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
6741     </p>
6742     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
6743     </p>
6744     <p>&nbsp;&nbsp;&nbsp;"."
6745     </p>
6746     </blockquote><p>
6747    
6748     </p>
6749     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
6750 schoenebeck 974 <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>
6751     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
6752     Clear MIDI instrument map</h3>
6753 schoenebeck 945
6754 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
6755     is delete all its entries by sending the following command:
6756 schoenebeck 945 </p>
6757     <p>
6758     </p>
6759     <blockquote class="text">
6760 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
6761 schoenebeck 945 </p>
6762     </blockquote><p>
6763    
6764     </p>
6765 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
6766     </p>
6767     <p>The front-end can clear all MIDI instrument maps, that
6768     is delete all entries of all maps by sending the following
6769     command:
6770     </p>
6771     <p>
6772     </p>
6773     <blockquote class="text">
6774     <p>CLEAR MIDI_INSTRUMENTS ALL
6775     </p>
6776     </blockquote><p>
6777    
6778     </p>
6779     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
6780     maps, only their entries, thus the map's settings like
6781     custom name will be preservevd.
6782     </p>
6783 schoenebeck 945 <p>Possible Answers:
6784     </p>
6785     <p>
6786     </p>
6787     <blockquote class="text">
6788     <p>"OK" -
6789     </p>
6790     <blockquote class="text">
6791     <p>always
6792     </p>
6793     </blockquote>
6794    
6795    
6796     </blockquote><p>
6797    
6798     </p>
6799 schoenebeck 974 <p>Examples:
6800 schoenebeck 945 </p>
6801     <p>
6802     </p>
6803     <blockquote class="text">
6804 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
6805 schoenebeck 945 </p>
6806     <p>S: "OK"
6807     </p>
6808     </blockquote><p>
6809    
6810     </p>
6811 schoenebeck 974 <p>
6812     </p>
6813     <blockquote class="text">
6814     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
6815     </p>
6816     <p>S: "OK"
6817     </p>
6818     </blockquote><p>
6819    
6820     </p>
6821 senoner 542 <a name="command_syntax"></a><br /><hr />
6822 schoenebeck 974 <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>
6823     <a name="rfc.section.7"></a><h3>7.&nbsp;
6824     Command Syntax</h3>
6825 senoner 542
6826 schoenebeck 974 <p>The grammar of the control protocol as descibed in <a class='info' href='#control_commands'>Section&nbsp;6<span> (</span><span class='info'>Description for control commands</span><span>)</span></a>
6827     is defined below using Backus-Naur Form (BNF as described in <a class='info' href='#RFC2234'>[RFC2234]<span> (</span><span class='info'>Crocker, D. and P. Overell, &ldquo;Augmented BNF for Syntax Specifications,&rdquo; 1997.</span><span>)</span></a>)
6828 schoenebeck 575 where applicable.
6829 schoenebeck 940
6830 senoner 542 </p>
6831 schoenebeck 575 <p>input =
6832     </p>
6833     <blockquote class="text">
6834     <p>line LF
6835 schoenebeck 940
6836 schoenebeck 575 </p>
6837     <p>/ line CR LF
6838 schoenebeck 940
6839 schoenebeck 575 </p>
6840 schoenebeck 708 </blockquote><p>
6841 schoenebeck 575
6842 schoenebeck 708 </p>
6843 schoenebeck 575 <p>line =
6844     </p>
6845     <blockquote class="text">
6846     <p>/* epsilon (empty line ignored) */
6847 schoenebeck 940
6848 schoenebeck 575 </p>
6849     <p>/ comment
6850 schoenebeck 940
6851 schoenebeck 575 </p>
6852     <p>/ command
6853 schoenebeck 940
6854 schoenebeck 575 </p>
6855     <p>/ error
6856 schoenebeck 940
6857 schoenebeck 575 </p>
6858 schoenebeck 708 </blockquote><p>
6859 schoenebeck 575
6860 schoenebeck 708 </p>
6861 schoenebeck 575 <p>comment =
6862     </p>
6863     <blockquote class="text">
6864     <p>'#'
6865 schoenebeck 940
6866 schoenebeck 575 </p>
6867     <p>/ comment '#'
6868 schoenebeck 940
6869 schoenebeck 575 </p>
6870     <p>/ comment SP
6871 schoenebeck 940
6872 schoenebeck 575 </p>
6873     <p>/ comment number
6874 schoenebeck 940
6875 schoenebeck 575 </p>
6876     <p>/ comment string
6877 schoenebeck 940
6878 schoenebeck 575 </p>
6879 schoenebeck 708 </blockquote><p>
6880 schoenebeck 575
6881 schoenebeck 708 </p>
6882 schoenebeck 575 <p>command =
6883     </p>
6884     <blockquote class="text">
6885 schoenebeck 974 <p>ADD SP add_instruction
6886 schoenebeck 940
6887 schoenebeck 575 </p>
6888 schoenebeck 945 <p>/ MAP SP map_instruction
6889    
6890     </p>
6891     <p>/ UNMAP SP unmap_instruction
6892    
6893     </p>
6894 schoenebeck 575 <p>/ GET SP get_instruction
6895 schoenebeck 940
6896 schoenebeck 575 </p>
6897     <p>/ CREATE SP create_instruction
6898 schoenebeck 940
6899 schoenebeck 575 </p>
6900     <p>/ DESTROY SP destroy_instruction
6901 schoenebeck 940
6902 schoenebeck 575 </p>
6903     <p>/ LIST SP list_instruction
6904 schoenebeck 940
6905 schoenebeck 575 </p>
6906     <p>/ LOAD SP load_instruction
6907 schoenebeck 940
6908 schoenebeck 575 </p>
6909 schoenebeck 945 <p>/ REMOVE SP remove_instruction
6910 schoenebeck 940
6911 schoenebeck 575 </p>
6912     <p>/ SET SP set_instruction
6913 schoenebeck 940
6914 schoenebeck 575 </p>
6915     <p>/ SUBSCRIBE SP subscribe_event
6916 schoenebeck 940
6917 schoenebeck 575 </p>
6918     <p>/ UNSUBSCRIBE SP unsubscribe_event
6919 schoenebeck 940
6920 schoenebeck 575 </p>
6921     <p>/ SELECT SP text
6922 schoenebeck 940
6923 schoenebeck 575 </p>
6924 schoenebeck 945 <p>/ RESET SP reset_instruction
6925 schoenebeck 940
6926 schoenebeck 575 </p>
6927 schoenebeck 945 <p>/ CLEAR SP clear_instruction
6928    
6929     </p>
6930 schoenebeck 575 <p>/ RESET
6931 schoenebeck 940
6932 schoenebeck 575 </p>
6933     <p>/ QUIT
6934 schoenebeck 940
6935 schoenebeck 575 </p>
6936 schoenebeck 708 </blockquote><p>
6937 schoenebeck 575
6938 schoenebeck 708 </p>
6939 schoenebeck 974 <p>add_instruction =
6940     </p>
6941     <blockquote class="text">
6942     <p>CHANNEL
6943    
6944     </p>
6945     <p>/ MIDI_INSTRUMENT_MAP
6946    
6947     </p>
6948     <p>/ MIDI_INSTRUMENT_MAP SP map_name
6949    
6950     </p>
6951     </blockquote><p>
6952    
6953     </p>
6954 schoenebeck 575 <p>subscribe_event =
6955     </p>
6956     <blockquote class="text">
6957 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
6958 schoenebeck 940
6959 schoenebeck 575 </p>
6960 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
6961    
6962     </p>
6963     <p>/ MIDI_INPUT_DEVICE_COUNT
6964    
6965     </p>
6966     <p>/ MIDI_INPUT_DEVICE_INFO
6967    
6968     </p>
6969     <p>/ CHANNEL_COUNT
6970    
6971     </p>
6972 schoenebeck 575 <p>/ VOICE_COUNT
6973 schoenebeck 940
6974 schoenebeck 575 </p>
6975     <p>/ STREAM_COUNT
6976 schoenebeck 940
6977 schoenebeck 575 </p>
6978     <p>/ BUFFER_FILL
6979 schoenebeck 940
6980 schoenebeck 575 </p>
6981     <p>/ CHANNEL_INFO
6982 schoenebeck 940
6983 schoenebeck 575 </p>
6984 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
6985    
6986     </p>
6987     <p>/ MIDI_INSTRUMENT_MAP_INFO
6988    
6989     </p>
6990     <p>/ MIDI_INSTRUMENT_COUNT
6991    
6992     </p>
6993     <p>/ MIDI_INSTRUMENT_INFO
6994    
6995     </p>
6996 schoenebeck 575 <p>/ MISCELLANEOUS
6997 schoenebeck 940
6998 schoenebeck 575 </p>
6999 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
7000    
7001     </p>
7002 schoenebeck 708 </blockquote><p>
7003 schoenebeck 575
7004 schoenebeck 708 </p>
7005 schoenebeck 575 <p>unsubscribe_event =
7006     </p>
7007     <blockquote class="text">
7008 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
7009 schoenebeck 940
7010 schoenebeck 575 </p>
7011 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
7012    
7013     </p>
7014     <p>/ MIDI_INPUT_DEVICE_COUNT
7015    
7016     </p>
7017     <p>/ MIDI_INPUT_DEVICE_INFO
7018    
7019     </p>
7020     <p>/ CHANNEL_COUNT
7021    
7022     </p>
7023 schoenebeck 575 <p>/ VOICE_COUNT
7024 schoenebeck 940
7025 schoenebeck 575 </p>
7026     <p>/ STREAM_COUNT
7027 schoenebeck 940
7028 schoenebeck 575 </p>
7029     <p>/ BUFFER_FILL
7030 schoenebeck 940
7031 schoenebeck 575 </p>
7032     <p>/ CHANNEL_INFO
7033 schoenebeck 940
7034 schoenebeck 575 </p>
7035 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
7036    
7037     </p>
7038     <p>/ MIDI_INSTRUMENT_MAP_INFO
7039    
7040     </p>
7041     <p>/ MIDI_INSTRUMENT_COUNT
7042    
7043     </p>
7044     <p>/ MIDI_INSTRUMENT_INFO
7045    
7046     </p>
7047 schoenebeck 575 <p>/ MISCELLANEOUS
7048 schoenebeck 940
7049 schoenebeck 575 </p>
7050 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
7051    
7052     </p>
7053 schoenebeck 708 </blockquote><p>
7054 schoenebeck 575
7055 schoenebeck 708 </p>
7056 schoenebeck 945 <p>map_instruction =
7057     </p>
7058     <blockquote class="text">
7059 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
7060 schoenebeck 945
7061     </p>
7062 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
7063 schoenebeck 945
7064     </p>
7065 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
7066 schoenebeck 945
7067     </p>
7068 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name
7069 schoenebeck 945
7070     </p>
7071     </blockquote><p>
7072    
7073     </p>
7074     <p>unmap_instruction =
7075     </p>
7076     <blockquote class="text">
7077 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
7078 schoenebeck 945
7079     </p>
7080     </blockquote><p>
7081    
7082     </p>
7083     <p>remove_instruction =
7084     </p>
7085     <blockquote class="text">
7086     <p>CHANNEL SP sampler_channel
7087    
7088     </p>
7089 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
7090    
7091     </p>
7092     <p>/ MIDI_INSTRUMENT_MAP SP ALL
7093    
7094     </p>
7095 schoenebeck 945 </blockquote><p>
7096    
7097     </p>
7098 schoenebeck 575 <p>get_instruction =
7099     </p>
7100     <blockquote class="text">
7101     <p>AVAILABLE_ENGINES
7102 schoenebeck 940
7103 schoenebeck 575 </p>
7104     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
7105 schoenebeck 940
7106 schoenebeck 575 </p>
7107     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
7108 schoenebeck 940
7109 schoenebeck 575 </p>
7110     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
7111 schoenebeck 940
7112 schoenebeck 575 </p>
7113     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
7114 schoenebeck 940
7115 schoenebeck 575 </p>
7116     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
7117 schoenebeck 940
7118 schoenebeck 575 </p>
7119     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
7120 schoenebeck 940
7121 schoenebeck 575 </p>
7122     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
7123 schoenebeck 940
7124 schoenebeck 575 </p>
7125     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
7126 schoenebeck 940
7127 schoenebeck 575 </p>
7128     <p>/ AUDIO_OUTPUT_DEVICES
7129 schoenebeck 940
7130 schoenebeck 575 </p>
7131     <p>/ MIDI_INPUT_DEVICES
7132 schoenebeck 940
7133 schoenebeck 575 </p>
7134     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
7135 schoenebeck 940
7136 schoenebeck 575 </p>
7137     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
7138 schoenebeck 940
7139 schoenebeck 575 </p>
7140     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
7141 schoenebeck 940
7142 schoenebeck 575 </p>
7143     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
7144 schoenebeck 940
7145 schoenebeck 575 </p>
7146     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
7147 schoenebeck 940
7148 schoenebeck 575 </p>
7149     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
7150 schoenebeck 940
7151 schoenebeck 575 </p>
7152     <p>/ CHANNELS
7153 schoenebeck 940
7154 schoenebeck 575 </p>
7155     <p>/ CHANNEL SP INFO SP sampler_channel
7156 schoenebeck 940
7157 schoenebeck 575 </p>
7158     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
7159 schoenebeck 940
7160 schoenebeck 575 </p>
7161     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
7162 schoenebeck 940
7163 schoenebeck 575 </p>
7164     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
7165 schoenebeck 940
7166 schoenebeck 575 </p>
7167     <p>/ ENGINE SP INFO SP engine_name
7168 schoenebeck 940
7169 schoenebeck 575 </p>
7170     <p>/ SERVER SP INFO
7171 schoenebeck 940
7172 schoenebeck 575 </p>
7173 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
7174    
7175     </p>
7176     <p>/ TOTAL_VOICE_COUNT_MAX
7177    
7178     </p>
7179 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
7180 schoenebeck 945
7181     </p>
7182 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
7183 schoenebeck 945
7184     </p>
7185 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
7186    
7187     </p>
7188     <p>/ MIDI_INSTRUMENT_MAPS
7189    
7190     </p>
7191     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
7192    
7193     </p>
7194 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
7195    
7196     </p>
7197     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
7198    
7199     </p>
7200 schoenebeck 708 </blockquote><p>
7201 schoenebeck 575
7202 schoenebeck 708 </p>
7203 schoenebeck 575 <p>set_instruction =
7204     </p>
7205     <blockquote class="text">
7206     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
7207 schoenebeck 940
7208 schoenebeck 575 </p>
7209     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
7210 schoenebeck 940
7211 schoenebeck 575 </p>
7212     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
7213 schoenebeck 940
7214 schoenebeck 575 </p>
7215     <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
7216 schoenebeck 940
7217 schoenebeck 575 </p>
7218     <p>/ CHANNEL SP set_chan_instruction
7219 schoenebeck 940
7220 schoenebeck 575 </p>
7221 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
7222    
7223     </p>
7224 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
7225    
7226     </p>
7227 schoenebeck 575 <p>/ ECHO SP boolean
7228 schoenebeck 940
7229 schoenebeck 575 </p>
7230 schoenebeck 708 </blockquote><p>
7231 schoenebeck 575
7232 schoenebeck 708 </p>
7233 schoenebeck 575 <p>create_instruction =
7234     </p>
7235     <blockquote class="text">
7236     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
7237 schoenebeck 940
7238 schoenebeck 575 </p>
7239     <p>/ AUDIO_OUTPUT_DEVICE SP string
7240 schoenebeck 940
7241 schoenebeck 575 </p>
7242     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
7243 schoenebeck 940
7244 schoenebeck 575 </p>
7245     <p>/ MIDI_INPUT_DEVICE SP string
7246 schoenebeck 940
7247 schoenebeck 575 </p>
7248 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
7249    
7250     </p>
7251     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
7252    
7253     </p>
7254 schoenebeck 708 </blockquote><p>
7255 schoenebeck 575
7256 schoenebeck 708 </p>
7257 schoenebeck 945 <p>reset_instruction =
7258     </p>
7259     <blockquote class="text">
7260     <p>CHANNEL SP sampler_channel
7261    
7262     </p>
7263     </blockquote><p>
7264    
7265     </p>
7266     <p>clear_instruction =
7267     </p>
7268     <blockquote class="text">
7269 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
7270 schoenebeck 945
7271     </p>
7272 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
7273    
7274     </p>
7275 schoenebeck 945 </blockquote><p>
7276    
7277     </p>
7278 schoenebeck 575 <p>destroy_instruction =
7279     </p>
7280     <blockquote class="text">
7281     <p>AUDIO_OUTPUT_DEVICE SP number
7282 schoenebeck 940
7283 schoenebeck 575 </p>
7284     <p>/ MIDI_INPUT_DEVICE SP number
7285 schoenebeck 940
7286 schoenebeck 575 </p>
7287 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
7288    
7289     </p>
7290 schoenebeck 708 </blockquote><p>
7291 schoenebeck 575
7292 schoenebeck 708 </p>
7293 schoenebeck 575 <p>load_instruction =
7294     </p>
7295     <blockquote class="text">
7296     <p>INSTRUMENT SP load_instr_args
7297 schoenebeck 940
7298 schoenebeck 575 </p>
7299     <p>/ ENGINE SP load_engine_args
7300 schoenebeck 940
7301 schoenebeck 575 </p>
7302 schoenebeck 708 </blockquote><p>
7303 schoenebeck 575
7304 schoenebeck 708 </p>
7305 schoenebeck 575 <p>set_chan_instruction =
7306     </p>
7307     <blockquote class="text">
7308     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
7309 schoenebeck 940
7310 schoenebeck 575 </p>
7311     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
7312 schoenebeck 940
7313 schoenebeck 575 </p>
7314     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
7315 schoenebeck 940
7316 schoenebeck 575 </p>
7317     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
7318 schoenebeck 940
7319 schoenebeck 575 </p>
7320     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
7321 schoenebeck 940
7322 schoenebeck 575 </p>
7323     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
7324 schoenebeck 940
7325 schoenebeck 575 </p>
7326     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
7327 schoenebeck 940
7328 schoenebeck 575 </p>
7329     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
7330 schoenebeck 940
7331 schoenebeck 575 </p>
7332     <p>/ VOLUME SP sampler_channel SP volume_value
7333 schoenebeck 940
7334 schoenebeck 575 </p>
7335 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
7336 schoenebeck 940
7337 schoenebeck 708 </p>
7338     <p>/ SOLO SP sampler_channel SP boolean
7339 schoenebeck 940
7340 schoenebeck 708 </p>
7341 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
7342    
7343     </p>
7344     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
7345    
7346     </p>
7347     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
7348    
7349     </p>
7350 schoenebeck 708 </blockquote><p>
7351    
7352     </p>
7353 schoenebeck 575 <p>key_val_list =
7354     </p>
7355     <blockquote class="text">
7356     <p>string '=' param_val_list
7357 schoenebeck 940
7358 schoenebeck 575 </p>
7359     <p>/ key_val_list SP string '=' param_val_list
7360 schoenebeck 940
7361 schoenebeck 575 </p>
7362 schoenebeck 708 </blockquote><p>
7363 schoenebeck 575
7364 schoenebeck 708 </p>
7365 schoenebeck 575 <p>buffer_size_type =
7366     </p>
7367     <blockquote class="text">
7368     <p>BYTES
7369 schoenebeck 940
7370 schoenebeck 575 </p>
7371     <p>/ PERCENTAGE
7372 schoenebeck 940
7373 schoenebeck 575 </p>
7374 schoenebeck 708 </blockquote><p>
7375 schoenebeck 575
7376 schoenebeck 708 </p>
7377 schoenebeck 575 <p>list_instruction =
7378     </p>
7379     <blockquote class="text">
7380     <p>AUDIO_OUTPUT_DEVICES
7381 schoenebeck 940
7382 schoenebeck 575 </p>
7383     <p>/ MIDI_INPUT_DEVICES
7384 schoenebeck 940
7385 schoenebeck 575 </p>
7386     <p>/ CHANNELS
7387 schoenebeck 940
7388 schoenebeck 575 </p>
7389     <p>/ AVAILABLE_ENGINES
7390 schoenebeck 940
7391 schoenebeck 575 </p>
7392     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
7393 schoenebeck 940
7394 schoenebeck 575 </p>
7395     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
7396 schoenebeck 940
7397 schoenebeck 575 </p>
7398 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
7399 schoenebeck 945
7400     </p>
7401 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
7402    
7403     </p>
7404     <p>/ MIDI_INSTRUMENT_MAPS
7405    
7406     </p>
7407 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
7408    
7409     </p>
7410 schoenebeck 708 </blockquote><p>
7411 schoenebeck 575
7412 schoenebeck 708 </p>
7413 schoenebeck 575 <p>load_instr_args =
7414     </p>
7415     <blockquote class="text">
7416     <p>filename SP instrument_index SP sampler_channel
7417 schoenebeck 940
7418 schoenebeck 575 </p>
7419     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
7420 schoenebeck 940
7421 schoenebeck 575 </p>
7422 schoenebeck 708 </blockquote><p>
7423 schoenebeck 575
7424 schoenebeck 708 </p>
7425 schoenebeck 575 <p>load_engine_args =
7426     </p>
7427     <blockquote class="text">
7428     <p>engine_name SP sampler_channel
7429 schoenebeck 940
7430 schoenebeck 575 </p>
7431 schoenebeck 708 </blockquote><p>
7432 schoenebeck 575
7433 schoenebeck 708 </p>
7434 schoenebeck 945 <p>instr_load_mode =
7435     </p>
7436     <blockquote class="text">
7437     <p>ON_DEMAND
7438    
7439     </p>
7440     <p>/ ON_DEMAND_HOLD
7441    
7442     </p>
7443     <p>/ PERSISTENT
7444    
7445     </p>
7446     </blockquote><p>
7447    
7448     </p>
7449 schoenebeck 575 <p>device_index =
7450     </p>
7451     <blockquote class="text">
7452     <p>number
7453 schoenebeck 940
7454 schoenebeck 575 </p>
7455 schoenebeck 708 </blockquote><p>
7456 schoenebeck 575
7457 schoenebeck 708 </p>
7458 schoenebeck 575 <p>audio_channel_index =
7459     </p>
7460     <blockquote class="text">
7461     <p>number
7462 schoenebeck 940
7463 schoenebeck 575 </p>
7464 schoenebeck 708 </blockquote><p>
7465 schoenebeck 575
7466 schoenebeck 708 </p>
7467 schoenebeck 575 <p>audio_output_type_name =
7468     </p>
7469     <blockquote class="text">
7470     <p>string
7471 schoenebeck 940
7472 schoenebeck 575 </p>
7473 schoenebeck 708 </blockquote><p>
7474 schoenebeck 575
7475 schoenebeck 708 </p>
7476 schoenebeck 575 <p>midi_input_port_index =
7477     </p>
7478     <blockquote class="text">
7479     <p>number
7480 schoenebeck 940
7481 schoenebeck 575 </p>
7482 schoenebeck 708 </blockquote><p>
7483 schoenebeck 575
7484 schoenebeck 708 </p>
7485 schoenebeck 575 <p>midi_input_channel_index =
7486     </p>
7487     <blockquote class="text">
7488     <p>number
7489 schoenebeck 940
7490 schoenebeck 575 </p>
7491     <p>/ ALL
7492 schoenebeck 940
7493 schoenebeck 575 </p>
7494 schoenebeck 708 </blockquote><p>
7495 schoenebeck 575
7496 schoenebeck 708 </p>
7497 schoenebeck 575 <p>midi_input_type_name =
7498     </p>
7499     <blockquote class="text">
7500     <p>string
7501 schoenebeck 940
7502 schoenebeck 575 </p>
7503 schoenebeck 708 </blockquote><p>
7504 schoenebeck 575
7505 schoenebeck 708 </p>
7506 schoenebeck 974 <p>midi_map =
7507 schoenebeck 945 </p>
7508     <blockquote class="text">
7509     <p>number
7510    
7511     </p>
7512     </blockquote><p>
7513    
7514     </p>
7515 schoenebeck 974 <p>midi_bank =
7516 schoenebeck 945 </p>
7517     <blockquote class="text">
7518     <p>number
7519    
7520     </p>
7521     </blockquote><p>
7522    
7523     </p>
7524     <p>midi_prog =
7525     </p>
7526     <blockquote class="text">
7527     <p>number
7528    
7529     </p>
7530     </blockquote><p>
7531    
7532     </p>
7533 schoenebeck 1002 <p>midi_ctrl =
7534     </p>
7535     <blockquote class="text">
7536     <p>number
7537    
7538     </p>
7539     </blockquote><p>
7540    
7541     </p>
7542 schoenebeck 575 <p>volume_value =
7543     </p>
7544     <blockquote class="text">
7545     <p>dotnum
7546 schoenebeck 940
7547 schoenebeck 575 </p>
7548     <p>/ number
7549 schoenebeck 940
7550 schoenebeck 575 </p>
7551 schoenebeck 708 </blockquote><p>
7552 schoenebeck 575
7553 schoenebeck 708 </p>
7554 schoenebeck 575 <p>sampler_channel =
7555     </p>
7556     <blockquote class="text">
7557     <p>number
7558 schoenebeck 940
7559 schoenebeck 575 </p>
7560 schoenebeck 708 </blockquote><p>
7561 schoenebeck 575
7562 schoenebeck 708 </p>
7563 schoenebeck 575 <p>instrument_index =
7564     </p>
7565     <blockquote class="text">
7566     <p>number
7567 schoenebeck 940
7568 schoenebeck 575 </p>
7569 schoenebeck 708 </blockquote><p>
7570 schoenebeck 575
7571 schoenebeck 708 </p>
7572 schoenebeck 1002 <p>fx_send_id =
7573     </p>
7574     <blockquote class="text">
7575     <p>number
7576    
7577     </p>
7578     </blockquote><p>
7579    
7580     </p>
7581 schoenebeck 575 <p>engine_name =
7582     </p>
7583     <blockquote class="text">
7584     <p>string
7585 schoenebeck 940
7586 schoenebeck 575 </p>
7587 schoenebeck 708 </blockquote><p>
7588 schoenebeck 575
7589 schoenebeck 708 </p>
7590 schoenebeck 575 <p>filename =
7591     </p>
7592     <blockquote class="text">
7593     <p>stringval
7594 schoenebeck 940
7595 schoenebeck 575 </p>
7596 schoenebeck 708 </blockquote><p>
7597 schoenebeck 575
7598 schoenebeck 708 </p>
7599 schoenebeck 974 <p>map_name =
7600     </p>
7601     <blockquote class="text">
7602     <p>stringval
7603    
7604     </p>
7605     </blockquote><p>
7606    
7607     </p>
7608 schoenebeck 945 <p>entry_name =
7609     </p>
7610     <blockquote class="text">
7611     <p>stringval
7612    
7613     </p>
7614     </blockquote><p>
7615    
7616     </p>
7617 schoenebeck 1002 <p>fx_send_name =
7618     </p>
7619     <blockquote class="text">
7620     <p>stringval
7621    
7622     </p>
7623     </blockquote><p>
7624    
7625     </p>
7626 schoenebeck 575 <p>param_val_list =
7627     </p>
7628     <blockquote class="text">
7629     <p>param_val
7630 schoenebeck 940
7631 schoenebeck 575 </p>
7632     <p>/ param_val_list','param_val
7633 schoenebeck 940
7634 schoenebeck 575 </p>
7635 schoenebeck 708 </blockquote><p>
7636 schoenebeck 575
7637 schoenebeck 708 </p>
7638 schoenebeck 575 <p>param_val =
7639     </p>
7640     <blockquote class="text">
7641     <p>string
7642 schoenebeck 940
7643 schoenebeck 575 </p>
7644 schoenebeck 940 <p>/ stringval
7645    
7646 schoenebeck 575 </p>
7647     <p>/ number
7648 schoenebeck 940
7649 schoenebeck 575 </p>
7650     <p>/ dotnum
7651 schoenebeck 940
7652 schoenebeck 575 </p>
7653 schoenebeck 708 </blockquote><p>
7654 schoenebeck 575
7655 schoenebeck 708 </p>
7656 senoner 542 <a name="events"></a><br /><hr />
7657 schoenebeck 974 <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>
7658     <a name="rfc.section.8"></a><h3>8.&nbsp;
7659     Events</h3>
7660 senoner 542
7661     <p>This chapter will describe all currently defined events supported by LinuxSampler.
7662     </p>
7663 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
7664 schoenebeck 974 <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>
7665     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
7666 iliev 992 Number of audio output devices changed</h3>
7667    
7668     <p>Client may want to be notified when the total number of audio output devices on the
7669     back-end changes by issuing the following command:
7670     </p>
7671     <p>
7672     </p>
7673     <blockquote class="text">
7674     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
7675     </p>
7676     </blockquote><p>
7677    
7678     </p>
7679     <p>Server will start sending the following notification messages:
7680     </p>
7681     <p>
7682     </p>
7683     <blockquote class="text">
7684     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
7685     </p>
7686     </blockquote><p>
7687    
7688     </p>
7689     <p>where &lt;devices&gt; will be replaced by the new number
7690     of audio output devices.
7691     </p>
7692     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
7693     <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>
7694     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
7695     Audio output device's settings changed</h3>
7696    
7697     <p>Client may want to be notified when changes were made to audio output devices on the
7698     back-end by issuing the following command:
7699     </p>
7700     <p>
7701     </p>
7702     <blockquote class="text">
7703     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
7704     </p>
7705     </blockquote><p>
7706    
7707     </p>
7708     <p>Server will start sending the following notification messages:
7709     </p>
7710     <p>
7711     </p>
7712     <blockquote class="text">
7713     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
7714     </p>
7715     </blockquote><p>
7716    
7717     </p>
7718     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
7719     which settings has been changed. The front-end will have to send
7720     the respective command to actually get the audio output device info. Because these messages
7721     will be triggered by LSCP commands issued by other clients rather than real
7722     time events happening on the server, it is believed that an empty notification
7723     message is sufficient here.
7724     </p>
7725     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
7726     <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>
7727     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
7728     Number of MIDI input devices changed</h3>
7729    
7730     <p>Client may want to be notified when the total number of MIDI input devices on the
7731     back-end changes by issuing the following command:
7732     </p>
7733     <p>
7734     </p>
7735     <blockquote class="text">
7736     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
7737     </p>
7738     </blockquote><p>
7739    
7740     </p>
7741     <p>Server will start sending the following notification messages:
7742     </p>
7743     <p>
7744     </p>
7745     <blockquote class="text">
7746     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
7747     </p>
7748     </blockquote><p>
7749    
7750     </p>
7751     <p>where &lt;devices&gt; will be replaced by the new number
7752     of MIDI input devices.
7753     </p>
7754     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
7755     <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>
7756     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
7757     MIDI input device's settings changed</h3>
7758    
7759     <p>Client may want to be notified when changes were made to MIDI input devices on the
7760     back-end by issuing the following command:
7761     </p>
7762     <p>
7763     </p>
7764     <blockquote class="text">
7765     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
7766     </p>
7767     </blockquote><p>
7768    
7769     </p>
7770     <p>Server will start sending the following notification messages:
7771     </p>
7772     <p>
7773     </p>
7774     <blockquote class="text">
7775     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
7776     </p>
7777     </blockquote><p>
7778    
7779     </p>
7780     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
7781     which settings has been changed. The front-end will have to send
7782     the respective command to actually get the MIDI input device info. Because these messages
7783     will be triggered by LSCP commands issued by other clients rather than real
7784     time events happening on the server, it is believed that an empty notification
7785     message is sufficient here.
7786     </p>
7787     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
7788     <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>
7789     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
7790 schoenebeck 974 Number of sampler channels changed</h3>
7791 senoner 542
7792     <p>Client may want to be notified when the total number of channels on the
7793     back-end changes by issuing the following command:
7794     </p>
7795 schoenebeck 708 <p>
7796     </p>
7797 senoner 542 <blockquote class="text">
7798 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
7799 senoner 542 </p>
7800 schoenebeck 708 </blockquote><p>
7801 schoenebeck 940
7802 schoenebeck 708 </p>
7803 senoner 542 <p>Server will start sending the following notification messages:
7804     </p>
7805 schoenebeck 708 <p>
7806     </p>
7807 senoner 542 <blockquote class="text">
7808 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
7809 senoner 542 </p>
7810 schoenebeck 708 </blockquote><p>
7811 schoenebeck 940
7812 schoenebeck 708 </p>
7813 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
7814     of sampler channels.
7815     </p>
7816 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
7817 schoenebeck 974 <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>
7818 iliev 992 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
7819 schoenebeck 974 Number of active voices changed</h3>
7820 senoner 542
7821     <p>Client may want to be notified when the number of voices on the
7822     back-end changes by issuing the following command:
7823     </p>
7824 schoenebeck 708 <p>
7825     </p>
7826 senoner 542 <blockquote class="text">
7827     <p>SUBSCRIBE VOICE_COUNT
7828     </p>
7829 schoenebeck 708 </blockquote><p>
7830 schoenebeck 940
7831 schoenebeck 708 </p>
7832 senoner 542 <p>Server will start sending the following notification messages:
7833     </p>
7834 schoenebeck 708 <p>
7835     </p>
7836 senoner 542 <blockquote class="text">
7837     <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;
7838     </p>
7839 schoenebeck 708 </blockquote><p>
7840 schoenebeck 940
7841 schoenebeck 708 </p>
7842 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
7843     voice count change occurred and &lt;voices&gt; by the new number of
7844     active voices on that channel.
7845     </p>
7846 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
7847 schoenebeck 974 <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>
7848 iliev 992 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
7849 schoenebeck 974 Number of active disk streams changed</h3>
7850 senoner 542
7851     <p>Client may want to be notified when the number of streams on the back-end
7852     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
7853     </p>
7854 schoenebeck 708 <p>
7855     </p>
7856 senoner 542 <blockquote class="text">
7857     <p>SUBSCRIBE STREAM_COUNT
7858     </p>
7859 schoenebeck 708 </blockquote><p>
7860 schoenebeck 940
7861 schoenebeck 708 </p>
7862 senoner 542 <p>Server will start sending the following notification messages:
7863     </p>
7864 schoenebeck 708 <p>
7865     </p>
7866 senoner 542 <blockquote class="text">
7867     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
7868     </p>
7869 schoenebeck 708 </blockquote><p>
7870 schoenebeck 940
7871 schoenebeck 708 </p>
7872 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
7873     stream count change occurred and &lt;streams&gt; by the new number of
7874     active disk streams on that channel.
7875     </p>
7876 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
7877 schoenebeck 974 <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>
7878 iliev 992 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
7879 schoenebeck 974 Disk stream buffer fill state changed</h3>
7880 senoner 542
7881     <p>Client may want to be notified when the buffer fill state of a disk stream
7882     on the back-end changes by issuing the following command:
7883     </p>
7884 schoenebeck 708 <p>
7885     </p>
7886 senoner 542 <blockquote class="text">
7887     <p>SUBSCRIBE BUFFER_FILL
7888     </p>
7889 schoenebeck 708 </blockquote><p>
7890 schoenebeck 940
7891 schoenebeck 708 </p>
7892 senoner 542 <p>Server will start sending the following notification messages:
7893     </p>
7894 schoenebeck 708 <p>
7895     </p>
7896 senoner 542 <blockquote class="text">
7897     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
7898     </p>
7899 schoenebeck 708 </blockquote><p>
7900 schoenebeck 940
7901 schoenebeck 708 </p>
7902 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
7903     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
7904 schoenebeck 974 buffer fill data for this channel as described in <a class='info' href='#GET CHANNEL BUFFER_FILL'>Section&nbsp;6.4.13<span> (</span><span class='info'>Current fill state of disk stream buffers</span><span>)</span></a>
7905     as if the <a class='info' href='#GET CHANNEL BUFFER_FILL'>"GET CHANNEL BUFFER_FILL PERCENTAGE"<span> (</span><span class='info'>Current fill state of disk stream buffers</span><span>)</span></a> command was issued on this channel.
7906 senoner 542 </p>
7907 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
7908 schoenebeck 974 <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>
7909 iliev 992 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
7910 schoenebeck 974 Channel information changed</h3>
7911 senoner 542
7912     <p>Client may want to be notified when changes were made to sampler channels on the
7913 schoenebeck 561 back-end by issuing the following command:
7914 senoner 542 </p>
7915 schoenebeck 708 <p>
7916     </p>
7917 senoner 542 <blockquote class="text">
7918 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
7919 senoner 542 </p>
7920 schoenebeck 708 </blockquote><p>
7921 schoenebeck 940
7922 schoenebeck 708 </p>
7923 senoner 542 <p>Server will start sending the following notification messages:
7924     </p>
7925 schoenebeck 708 <p>
7926     </p>
7927 senoner 542 <blockquote class="text">
7928 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
7929 senoner 542 </p>
7930 schoenebeck 708 </blockquote><p>
7931 schoenebeck 940
7932 schoenebeck 708 </p>
7933 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
7934     channel info change occurred. The front-end will have to send
7935     the respective command to actually get the channel info. Because these messages
7936     will be triggered by LSCP commands issued by other clients rather than real
7937     time events happening on the server, it is believed that an empty notification
7938     message is sufficient here.
7939     </p>
7940 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
7941 schoenebeck 974 <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>
7942 iliev 992 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
7943 schoenebeck 974 Total number of active voices changed</h3>
7944 senoner 542
7945 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
7946     back-end changes by issuing the following command:
7947     </p>
7948     <p>
7949     </p>
7950     <blockquote class="text">
7951     <p>SUBSCRIBE TOTAL_VOICE_COUNT
7952     </p>
7953     </blockquote><p>
7954    
7955     </p>
7956     <p>Server will start sending the following notification messages:
7957     </p>
7958     <p>
7959     </p>
7960     <blockquote class="text">
7961     <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;
7962     </p>
7963     </blockquote><p>
7964    
7965     </p>
7966     <p>where &lt;voices&gt; will be replaced by the new number of
7967     all currently active voices.
7968     </p>
7969 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
7970     <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>
7971     <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
7972     Number of MIDI instrument maps changed</h3>
7973    
7974     <p>Client may want to be notified when the number of MIDI instrument maps on the
7975     back-end changes by issuing the following command:
7976     </p>
7977     <p>
7978     </p>
7979     <blockquote class="text">
7980     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
7981     </p>
7982     </blockquote><p>
7983    
7984     </p>
7985     <p>Server will start sending the following notification messages:
7986     </p>
7987     <p>
7988     </p>
7989     <blockquote class="text">
7990     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
7991     </p>
7992     </blockquote><p>
7993    
7994     </p>
7995     <p>where &lt;maps&gt; will be replaced by the new number
7996     of MIDI instrument maps.
7997     </p>
7998     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
7999     <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>
8000     <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
8001     MIDI instrument map information changed</h3>
8002    
8003     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
8004     back-end by issuing the following command:
8005     </p>
8006     <p>
8007     </p>
8008     <blockquote class="text">
8009     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
8010     </p>
8011     </blockquote><p>
8012    
8013     </p>
8014     <p>Server will start sending the following notification messages:
8015     </p>
8016     <p>
8017     </p>
8018     <blockquote class="text">
8019     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
8020     </p>
8021     </blockquote><p>
8022    
8023     </p>
8024     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
8025     for which information changes occurred. The front-end will have to send
8026     the respective command to actually get the MIDI instrument map info. Because these messages
8027     will be triggered by LSCP commands issued by other clients rather than real
8028     time events happening on the server, it is believed that an empty notification
8029     message is sufficient here.
8030     </p>
8031     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
8032     <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>
8033     <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
8034     Number of MIDI instruments changed</h3>
8035    
8036     <p>Client may want to be notified when the number of MIDI instrument maps on the
8037     back-end changes by issuing the following command:
8038     </p>
8039     <p>
8040     </p>
8041     <blockquote class="text">
8042     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
8043     </p>
8044     </blockquote><p>
8045    
8046     </p>
8047     <p>Server will start sending the following notification messages:
8048     </p>
8049     <p>
8050     </p>
8051     <blockquote class="text">
8052     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
8053     </p>
8054     </blockquote><p>
8055    
8056     </p>
8057     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
8058     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
8059     the new number of MIDI instruments in the specified map.
8060     </p>
8061     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
8062     <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>
8063     <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
8064     MIDI instrument information changed</h3>
8065    
8066     <p>Client may want to be notified when changes were made to MIDI instruments on the
8067     back-end by issuing the following command:
8068     </p>
8069     <p>
8070     </p>
8071     <blockquote class="text">
8072     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
8073     </p>
8074     </blockquote><p>
8075    
8076     </p>
8077     <p>Server will start sending the following notification messages:
8078     </p>
8079     <p>
8080     </p>
8081     <blockquote class="text">
8082     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
8083     </p>
8084     </blockquote><p>
8085    
8086     </p>
8087     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
8088     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
8089     the location of the changed MIDI instrument in the map. The front-end will have to send
8090     the respective command to actually get the MIDI instrument info. Because these messages
8091     will be triggered by LSCP commands issued by other clients rather than real
8092     time events happening on the server, it is believed that an empty notification
8093     message is sufficient here.
8094     </p>
8095 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
8096 schoenebeck 974 <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>
8097 iliev 992 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
8098 schoenebeck 974 Miscellaneous and debugging events</h3>
8099 schoenebeck 940
8100 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
8101     the server by issuing the following command:
8102     </p>
8103 schoenebeck 708 <p>
8104     </p>
8105 senoner 542 <blockquote class="text">
8106     <p>SUBSCRIBE MISCELLANEOUS
8107     </p>
8108 schoenebeck 708 </blockquote><p>
8109 schoenebeck 940
8110 schoenebeck 708 </p>
8111 senoner 542 <p>Server will start sending the following notification messages:
8112     </p>
8113 schoenebeck 708 <p>
8114     </p>
8115 senoner 542 <blockquote class="text">
8116     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
8117     </p>
8118 schoenebeck 708 </blockquote><p>
8119 schoenebeck 940
8120 schoenebeck 708 </p>
8121 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
8122     wants to send to the client. Client MAY display this data to the
8123     user AS IS to facilitate debugging.
8124     </p>
8125 schoenebeck 974 <a name="anchor14"></a><br /><hr />
8126     <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>
8127     <a name="rfc.section.9"></a><h3>9.&nbsp;
8128     Security Considerations</h3>
8129 senoner 542
8130     <p>As there is so far no method of authentication and authorization
8131     defined and so not required for a client applications to succeed to
8132     connect, running LinuxSampler might be a security risk for the host
8133     system the LinuxSampler instance is running on.
8134     </p>
8135 schoenebeck 974 <a name="anchor15"></a><br /><hr />
8136     <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>
8137     <a name="rfc.section.10"></a><h3>10.&nbsp;
8138     Acknowledgments</h3>
8139 senoner 542
8140     <p>This document has benefited greatly from the comments of the
8141     following people, discussed on the LinuxSampler developer's mailing
8142     list:
8143     </p>
8144 schoenebeck 708 <p>
8145     </p>
8146 senoner 542 <blockquote class="text">
8147     <p>Rui Nuno Capela
8148     </p>
8149     <p>Vladimir Senkov
8150     </p>
8151     <p>Mark Knecht
8152     </p>
8153 schoenebeck 561 <p>Grigor Iliev
8154     </p>
8155 schoenebeck 708 </blockquote><p>
8156 schoenebeck 940
8157 schoenebeck 708 </p>
8158 senoner 542 <a name="rfc.references1"></a><br /><hr />
8159 schoenebeck 974 <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>
8160 schoenebeck 708 <h3>11.&nbsp;References</h3>
8161 senoner 542 <table width="99%" border="0">
8162     <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
8163 schoenebeck 708 <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
8164 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
8165 schoenebeck 708 <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2234.txt">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
8166 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
8167 schoenebeck 708 <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc793.txt">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
8168 senoner 542 </table>
8169    
8170     <a name="rfc.authors"></a><br /><hr />
8171 schoenebeck 974 <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>
8172 senoner 542 <h3>Author's Address</h3>
8173     <table width="99%" border="0" cellpadding="0" cellspacing="0">
8174     <tr><td class="author-text">&nbsp;</td>
8175     <td class="author-text">C.
8176     Schoenebeck</td></tr>
8177     <tr><td class="author-text">&nbsp;</td>
8178     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
8179     <tr><td class="author-text">&nbsp;</td>
8180     <td class="author-text">Max-Planck-Str. 39</td></tr>
8181     <tr><td class="author-text">&nbsp;</td>
8182     <td class="author-text">74081 Heilbronn</td></tr>
8183     <tr><td class="author-text">&nbsp;</td>
8184     <td class="author-text">Germany</td></tr>
8185 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
8186 senoner 542 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
8187     </table>
8188     <a name="rfc.copyright"></a><br /><hr />
8189 schoenebeck 974 <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>
8190     <h3>Full Copyright Statement</h3>
8191 senoner 542 <p class='copyright'>
8192 schoenebeck 974 Copyright &copy; The Internet Society (2006).</p>
8193 senoner 542 <p class='copyright'>
8194 schoenebeck 974 This document is subject to the rights,
8195     licenses and restrictions contained in BCP&nbsp;78,
8196     and except as set forth therein,
8197     the authors retain all their rights.</p>
8198 senoner 542 <p class='copyright'>
8199 schoenebeck 974 This document and the information contained herein are provided
8200     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
8201     THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY),
8202     THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM
8203     ALL WARRANTIES,
8204     EXPRESS OR IMPLIED,
8205     INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
8206     INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
8207     WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</p>
8208     <h3>Intellectual Property</h3>
8209 senoner 542 <p class='copyright'>
8210 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
8211     Intellectual Property Rights or other rights that might be claimed
8212     to pertain to the implementation or use of the technology
8213     described in this document or the extent to which any license
8214     under such rights might or might not be available; nor does it
8215     represent that it has made any independent effort to identify any
8216     such rights.
8217     Information on the procedures with respect to
8218     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
8219 senoner 542 <p class='copyright'>
8220 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
8221     assurances of licenses to be made available,
8222     or the result of an attempt made to obtain a general license or
8223     permission for the use of such proprietary rights by implementers or
8224     users of this specification can be obtained from the IETF on-line IPR
8225     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
8226 senoner 542 <p class='copyright'>
8227 schoenebeck 974 The IETF invites any interested party to bring to its attention
8228     any copyrights,
8229     patents or patent applications,
8230     or other
8231     proprietary rights that may cover technology that may be required
8232     to implement this standard.
8233     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
8234 senoner 542 <h3>Acknowledgment</h3>
8235     <p class='copyright'>
8236 schoenebeck 974 Funding for the RFC Editor function is provided by
8237     the IETF Administrative Support Activity (IASA).</p>
8238 senoner 542 </body></html>

  ViewVC Help
Powered by ViewVC