/[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 1028 - (hide annotations) (download) (as text)
Sun Jan 14 17:33:03 2007 UTC (17 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 295120 byte(s)
LSCP spec document has been updated

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

  ViewVC Help
Powered by ViewVC