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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1773 - (show annotations) (download) (as text)
Wed Sep 10 15:14:31 2008 UTC (15 years, 7 months ago) by iliev
File MIME type: text/html
File size: 422201 byte(s)
- updated the lscp spec

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 <meta name="description" content="LinuxSampler Control Protocol">
5 <meta name="keywords" content="LSCP">
6 <meta name="generator" content="xml2rfc v1.32 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 <tr><td class="header">Expires: March 14, 2009</td><td class="header">September 10, 2008</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.4</h1>
151
152 <h3>Status of this Memo</h3>
153 <p>
154 By submitting this Internet-Draft,
155 each author represents that any applicable patent or other IPR claims of which
156 he or she is aware have been or will be disclosed,
157 and any of which he or she becomes aware will be disclosed,
158 in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
159 <p>
160 Internet-Drafts are working documents of the Internet Engineering
161 Task Force (IETF), its areas, and its working groups.
162 Note that other groups may also distribute working documents as
163 Internet-Drafts.</p>
164 <p>
165 Internet-Drafts are draft documents valid for a maximum of six months
166 and may be updated, replaced, or obsoleted by other documents at any time.
167 It is inappropriate to use Internet-Drafts as reference material or to cite
168 them other than as &ldquo;work in progress.&rdquo;</p>
169 <p>
170 The list of current Internet-Drafts can be accessed at
171 <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
172 <p>
173 The list of Internet-Draft Shadow Directories can be accessed at
174 <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
175 <p>
176 This Internet-Draft will expire on March 14, 2009.</p>
177
178 <h3>Copyright Notice</h3>
179 <p>
180 Copyright &copy; The IETF Trust (2008).</p>
181
182 <h3>Abstract</h3>
183
184 <p>The LinuxSampler Control Protocol (LSCP) is an
185 application-level protocol primarily intended for local and
186 remote controlling the LinuxSampler backend application, which is a
187 sophisticated server-like console application essentially playing
188 back audio samples and manipulating the samples in real time to
189 certain extent.
190 </p><a name="toc"></a><br /><hr />
191 <h3>Table of Contents</h3>
192 <p class="toc">
193 <a href="#anchor1">1.</a>&nbsp;
194 Requirements notation<br />
195 <a href="#LSCP versioning">2.</a>&nbsp;
196 Versioning of this specification<br />
197 <a href="#anchor2">3.</a>&nbsp;
198 Introduction<br />
199 <a href="#anchor3">4.</a>&nbsp;
200 Focus of this protocol<br />
201 <a href="#anchor4">5.</a>&nbsp;
202 Communication Overview<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 Request/response communication method<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 Result format<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 Subscribe/notify communication method<br />
209 <a href="#control_commands">6.</a>&nbsp;
210 Description for control commands<br />
211 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 Ignored lines and comments<br />
213 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 Configuring audio drivers<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 Getting amount of available audio output drivers<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 Getting all available audio output drivers<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 Getting information about a specific audio
221 output driver<br />
222 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 Getting information about specific audio
224 output driver parameter<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 Creating an audio output device<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 Destroying an audio output device<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 Getting all created audio output device count<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 Getting all created audio output device list<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 Getting current settings of an audio output device<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 Changing settings of audio output devices<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 Getting information about an audio channel<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 Getting information about specific audio channel parameter<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 Changing settings of audio output channels<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 Configuring MIDI input drivers<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 Getting amount of available MIDI input drivers<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 Getting all available MIDI input drivers<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 Getting information about a specific MIDI input driver<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 Getting information about specific MIDI input driver parameter<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 Creating a MIDI input device<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 Destroying a MIDI input device<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 Getting all created MIDI input device count<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 Getting all created MIDI input device list<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 Getting current settings of a MIDI input device<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 Changing settings of MIDI input devices<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 Getting information about a MIDI port<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 Getting information about specific MIDI port parameter<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 Changing settings of MIDI input ports<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 Configuring sampler channels<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 Loading an instrument<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 Loading a sampler engine<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 Getting all created sampler channel count<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 Getting all created sampler channel list<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 Adding a new sampler channel<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 Removing a sampler channel<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 Getting amount of available engines<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 Getting all available engines<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 Getting information about an engine<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 Getting sampler channel information<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 Current number of active voices<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 Current number of active disk streams<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 Current fill state of disk stream buffers<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 Setting audio output device<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 Setting audio output type<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 Setting audio output channel<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 Setting MIDI input device<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 Setting MIDI input type<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 Setting MIDI input port<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 Setting MIDI input channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 Setting channel volume<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 Muting a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 Soloing a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
320 Assigning a MIDI instrument map to a sampler channel<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
322 Adding an effect send to a sampler channel<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
324 Removing an effect send from a sampler channel<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
326 Getting amount of effect sends on a sampler channel<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
328 Listing all effect sends on a sampler channel<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
330 Getting effect send information<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
332 Changing effect send's name<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
334 Altering effect send's audio routing<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336 Altering effect send's MIDI controller<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338 Altering effect send's send level<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.34.</a>&nbsp;
340 Sending MIDI messages to sampler channel<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.35.</a>&nbsp;
342 Resetting a sampler channel<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
344 Controlling connection<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
346 Register front-end for receiving event messages<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
348 Unregister front-end for not receiving event messages<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
350 Enable or disable echo of commands<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
352 Close client connection<br />
353 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
354 Global commands<br />
355 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
356 Current number of active voices<br />
357 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
358 Maximum amount of active voices<br />
359 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
360 Current number of active disk streams<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
362 Reset sampler<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
364 General sampler informations<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
366 Getting global volume attenuation<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
368 Setting global volume attenuation<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
370 MIDI Instrument Mapping<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
372 Create a new MIDI instrument map<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
374 Delete one particular or all MIDI instrument maps<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
376 Get amount of existing MIDI instrument maps<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
378 Getting all created MIDI instrument maps<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
380 Getting MIDI instrument map information<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
382 Renaming a MIDI instrument map<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
384 Create or replace a MIDI instrument map entry<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
386 Getting ammount of MIDI instrument map entries<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
388 Getting indeces of all entries of a MIDI instrument map<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
390 Remove an entry from the MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
392 Get current settings of MIDI instrument map entry<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
394 Clear MIDI instrument map<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
396 Managing Instruments Database<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
398 Creating a new instrument directory<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
400 Deleting an instrument directory<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
402 Getting amount of instrument directories<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
404 Listing all directories in specific directory<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
406 Getting instrument directory information<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
408 Renaming an instrument directory<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
410 Moving an instrument directory<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
412 Copying instrument directories<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
414 Changing the description of directory<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
416 Finding directories<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
418 Adding instruments to the instruments database<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
420 Removing an instrument<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
422 Getting amount of instruments<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
424 Listing all instruments in specific directory<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
426 Getting instrument information<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
428 Renaming an instrument<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
430 Moving an instrument<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
432 Copying instruments<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
434 Changing the description of instrument<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
436 Finding instruments<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
438 Getting job status information<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
440 Formatting the instruments database<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
442 Checking for lost instrument files<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
444 Replacing an instrument file<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
446 Editing Instruments<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
448 Opening an appropriate instrument editor application<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
450 Managing Files<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
452 Retrieving amount of instruments of a file<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
454 Retrieving all instruments of a file<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
456 Retrieving informations about one instrument in a file<br />
457 <a href="#command_syntax">7.</a>&nbsp;
458 Command Syntax<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
460 Character Set and Escape Sequences<br />
461 <a href="#events">8.</a>&nbsp;
462 Events<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
464 Number of audio output devices changed<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
466 Audio output device's settings changed<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
468 Number of MIDI input devices changed<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
470 MIDI input device's settings changed<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
472 Number of sampler channels changed<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
474 MIDI data on a sampler channel arrived<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
476 MIDI data on a MIDI input device arrived<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
478 Number of active voices changed<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
480 Number of active disk streams changed<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
482 Disk stream buffer fill state changed<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
484 Channel information changed<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
486 Number of effect sends changed<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
488 Effect send information changed<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
490 Total number of active voices changed<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
492 Total number of active disk streams changed<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
494 Number of MIDI instrument maps changed<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
496 MIDI instrument map information changed<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
498 Number of MIDI instruments changed<br />
499 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
500 MIDI instrument information changed<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
502 Global settings changed<br />
503 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
504 Number of database instrument directories changed<br />
505 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
506 Database instrument directory information changed<br />
507 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
508 Number of database instruments changed<br />
509 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
510 Database instrument information changed<br />
511 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
512 Database job status information changed<br />
513 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.26.</a>&nbsp;
514 Miscellaneous and debugging events<br />
515 <a href="#anchor14">9.</a>&nbsp;
516 Security Considerations<br />
517 <a href="#anchor15">10.</a>&nbsp;
518 Acknowledgments<br />
519 <a href="#rfc.references1">11.</a>&nbsp;
520 References<br />
521 <a href="#rfc.authors">&#167;</a>&nbsp;
522 Author's Address<br />
523 <a href="#rfc.copyright">&#167;</a>&nbsp;
524 Intellectual Property and Copyright Statements<br />
525 </p>
526 <br clear="all" />
527
528 <a name="anchor1"></a><br /><hr />
529 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
530 <a name="rfc.section.1"></a><h3>1.&nbsp;
531 Requirements notation</h3>
532
533 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
534 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
535 and "OPTIONAL" in this document are to be interpreted as
536 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>.
537 </p>
538 <p>This protocol is always case-sensitive if not explicitly
539 claimed the opposite.
540 </p>
541 <p>In examples, "C:" and "S:" indicate lines sent by the client
542 (front-end) and server (LinuxSampler) respectively. Lines in
543 examples must be interpreted as every line being CRLF
544 terminated (carriage return character followed by line feed
545 character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
546 thus the following example:
547 </p>
548 <p>
549 </p>
550 <blockquote class="text">
551 <p>C: "some line"
552 </p>
553 <p>&nbsp;&nbsp;&nbsp;"another line"
554 </p>
555 </blockquote><p>
556
557 </p>
558 <p>must actually be interpreted as client sending the following
559 message:
560 </p>
561 <p>
562 </p>
563 <blockquote class="text">
564 <p>"some line&lt;CR&gt;&lt;LF&gt;another
565 line&lt;CR&gt;&lt;LF&gt;"
566 </p>
567 </blockquote><p>
568
569 </p>
570 <p>where &lt;CR&gt; symbolizes the carriage return character and
571 &lt;LF&gt; the line feed character as defined in the ASCII
572 standard.
573 </p>
574 <p>Due to technical reasons, messages can arbitrary be
575 fragmented, means the following example:
576 </p>
577 <p>
578 </p>
579 <blockquote class="text">
580 <p>S: "abcd"
581 </p>
582 </blockquote><p>
583
584 </p>
585 <p>could also happen to be sent in three messages like in the
586 following sequence scenario:
587 </p>
588 <p>
589 </p>
590 <ul class="text">
591 <li>server sending message "a"
592 </li>
593 <li>followed by a delay (pause) with
594 arbitrary duration
595 </li>
596 <li>followed by server sending message
597 "bcd&lt;CR&gt;"
598 </li>
599 <li>again followed by a delay (pause) with arbitrary
600 duration
601 </li>
602 <li>followed by server sending the message
603 "&lt;LF&gt;"
604 </li>
605 </ul><p>
606
607 </p>
608 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
609 return and line feed characters respectively.
610 </p>
611 <a name="LSCP versioning"></a><br /><hr />
612 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
613 <a name="rfc.section.2"></a><h3>2.&nbsp;
614 Versioning of this specification</h3>
615
616 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
617 release of the LSCP specification will be tagged with a unique version
618 tuple. The version tuple consists at least of a major and minor version
619 number like:
620
621 </p>
622 <p>
623 </p>
624 <blockquote class="text">
625 <p>"1.2"
626 </p>
627 </blockquote><p>
628
629 </p>
630 <p>
631 In this example the major version number would be "1" and the minor
632 version number would be "2". Note that the version tuple might also
633 have more than two elements. The major version number defines a
634 group of backward compatible versions. That means a frontend is
635 compatible to the connected sampler if and only if the LSCP versions
636 to which each of the two parties complies to, match both of the
637 following rules:
638
639 </p>
640 <p>Compatibility:
641 </p>
642 <p>
643 </p>
644 <ol class="text">
645 <li>The frontend's LSCP major version and the sampler's LSCP
646 major version are exactly equal.
647 </li>
648 <li>The frontend's LSCP minor version is less or equal than
649 the sampler's LSCP minor version.
650 </li>
651 </ol><p>
652
653 </p>
654 <p>
655 Compatibility can only be claimed if both rules are true.
656 The frontend can use the
657 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
658 get the version of the LSCP specification the sampler complies with.
659
660 </p>
661 <a name="anchor2"></a><br /><hr />
662 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
663 <a name="rfc.section.3"></a><h3>3.&nbsp;
664 Introduction</h3>
665
666 <p>LinuxSampler is a so called software sampler application
667 capable to playback audio samples from a computer's Random
668 Access Memory (RAM) as well as directly streaming it from disk.
669 LinuxSampler is designed to be modular. It provides several so
670 called "sampler engines" where each engine is specialized for a
671 certain purpose. LinuxSampler has virtual channels which will be
672 referred in this document as "sampler channels". The channels
673 are in such way virtual as they can be connected to an
674 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
675 sampler channel 17 could be connected to an ALSA sequencer
676 device 64:0 and listening to MIDI channel 1 there). Each sampler
677 channel will be associated with an instance of one of the available
678 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
679 each sampler channel can be routed to an arbitrary audio output
680 method (ALSA / JACK) and an arbitrary audio output channel
681 there.
682 </p>
683 <a name="anchor3"></a><br /><hr />
684 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
685 <a name="rfc.section.4"></a><h3>4.&nbsp;
686 Focus of this protocol</h3>
687
688 <p>Main focus of this protocol is to provide a way to configure
689 a running LinuxSampler instance and to retrieve information
690 about it. The focus of this protocol is not to provide a way to
691 control synthesis parameters or even to trigger or release
692 notes. Or in other words; the focus are those functionalities
693 which are not covered by MIDI or which may at most be handled
694 via MIDI System Exclusive Messages.
695 </p>
696 <a name="anchor4"></a><br /><hr />
697 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
698 <a name="rfc.section.5"></a><h3>5.&nbsp;
699 Communication Overview</h3>
700
701 <p>There are two distinct methods of communication between a
702 running instance of LinuxSampler and one or more control
703 applications, so called "front-ends": a simple request/response
704 communication method used by the clients to give commands to the
705 server as well as to inquire about server's status and a
706 subscribe/notify communication method used by the client to
707 subscribe to and receive notifications of certain events as they
708 happen on the server. The latter needs more effort to be
709 implemented in the front-end application. The two communication
710 methods will be described next.
711 </p>
712 <a name="anchor5"></a><br /><hr />
713 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
714 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
715 Request/response communication method</h3>
716
717 <p>This simple communication method is based on
718 <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
719 front-end application establishes a TCP connection to the
720 LinuxSampler instance on a certain host system. Then the
721 front-end application will send certain ASCII based commands
722 as defined in this document (every command line must be CRLF
723 terminated - see "Conventions used in this document" at the
724 beginning of this document) and the LinuxSampler application
725 will response after a certain process time with an
726 appropriate ASCII based answer, also as defined in this
727 document. So this TCP communication is simply based on query
728 and answer paradigm. That way LinuxSampler is only able to
729 answer on queries from front-ends, but not able to
730 automatically send messages to the client if it's not asked
731 to. The fronted should not reconnect to LinuxSampler for
732 every single command, instead it should keep the connection
733 established and simply resend message(s) for subsequent
734 commands. To keep information in the front-end up-to-date
735 the front-end has to periodically send new requests to get
736 the current information from the LinuxSampler instance. This
737 is often referred to as "polling". While polling is simple
738 to implement and may be OK to use in some cases, there may
739 be disadvantages to polling such as network traffic overhead
740 and information being out of date.
741 It is possible for a client or several clients to open more
742 than one connection to the server at the same time. It is
743 also possible to send more than one request to the server
744 at the same time but if those requests are sent over the
745 same connection server MUST execute them sequentially. Upon
746 executing a request server will produce a result set and
747 send it to the client. Each and every request made by the
748 client MUST result in a result set being sent back to the
749 client. No other data other than a result set may be sent by
750 a server to a client. No result set may be sent to a client
751 without the client sending request to the server first. On
752 any particular connection, result sets MUST be sent in their
753 entirety without being interrupted by other result sets. If
754 several requests got queued up at the server they MUST be
755 processed in the order they were received and result sets
756 MUST be sent back in the same order.
757 </p>
758 <a name="anchor6"></a><br /><hr />
759 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
760 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
761 Result format</h3>
762
763 <p>Result set could be one of the following types:
764 </p>
765 <p>
766 </p>
767 <ol class="text">
768 <li>Normal
769 </li>
770 <li>Warning
771 </li>
772 <li>Error
773 </li>
774 </ol><p>
775
776 </p>
777 <p>Warning and Error result sets MUST be single line and
778 have the following format:
779 </p>
780 <p>
781 </p>
782 <ul class="text">
783 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
784 </li>
785 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
786 </li>
787 </ul><p>
788
789 </p>
790 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
791 numeric unique identifiers of the warning or error and
792 &lt;warning-message&gt; and &lt;error-message&gt; are
793 human readable descriptions of the warning or error
794 respectively.
795 </p>
796 <p>Examples:
797 </p>
798 <p>
799 </p>
800 <blockquote class="text">
801 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
802 </p>
803 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
804 </p>
805 </blockquote><p>
806
807 </p>
808 <p>
809 </p>
810 <blockquote class="text">
811 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
812 </p>
813 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
814 </p>
815 </blockquote><p>
816
817 </p>
818 <p>
819 </p>
820 <blockquote class="text">
821 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
822 </p>
823 <p>S: "ERR:9:There is no audio output device with index 123456."
824 </p>
825 </blockquote><p>
826
827 </p>
828 <p>Normal result sets could be:
829 </p>
830 <p>
831 </p>
832 <ol class="text">
833 <li>Empty
834 </li>
835 <li>Single line
836 </li>
837 <li>Multi-line
838 </li>
839 </ol><p>
840
841 </p>
842 <p> Empty result set is issued when the server only
843 needed to acknowledge the fact that the request was
844 received and it was processed successfully and no
845 additional information is available. This result set has
846 the following format:
847 </p>
848 <p>
849 </p>
850 <blockquote class="text">
851 <p>"OK"
852 </p>
853 </blockquote><p>
854
855 </p>
856 <p>Example:
857 </p>
858 <p>
859 </p>
860 <blockquote class="text">
861 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
862 </p>
863 <p>S: "OK"
864 </p>
865 </blockquote><p>
866
867 </p>
868 <p>Single line result sets are command specific. One
869 example of a single line result set is an empty line.
870 Multi-line result sets are command specific and may
871 include one or more lines of information. They MUST
872 always end with the following line:
873 </p>
874 <p>
875 </p>
876 <blockquote class="text">
877 <p>"."
878 </p>
879 </blockquote><p>
880
881 </p>
882 <p>Example:
883 </p>
884 <p>
885 </p>
886 <blockquote class="text">
887 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
888 </p>
889 <p>S: "DRIVER: ALSA"
890 </p>
891 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
892 </p>
893 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
894 </p>
895 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
896 </p>
897 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
898 </p>
899 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
900 </p>
901 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
902 </p>
903 <p>&nbsp;&nbsp;&nbsp;"."
904 </p>
905 </blockquote><p>
906
907 </p>
908 <p>In addition to above mentioned formats, warnings and
909 empty result sets MAY be indexed. In this case, they
910 have the following formats respectively:
911 </p>
912 <p>
913 </p>
914 <ul class="text">
915 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
916 </li>
917 <li>"OK[&lt;index&gt;]"
918 </li>
919 </ul><p>
920
921 </p>
922 <p>where &lt;index&gt; is command specific and is used
923 to indicate channel number that the result set was
924 related to or other integer value.
925 </p>
926 <p>Each line of the result set MUST end with
927 &lt;CRLF&gt;.
928 </p>
929 <p>Examples:
930 </p>
931 <p>
932 </p>
933 <blockquote class="text">
934 <p>C: "ADD CHANNEL"
935 </p>
936 <p>S: "OK[12]"
937 </p>
938 </blockquote><p>
939
940 </p>
941 <p>
942 </p>
943 <blockquote class="text">
944 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
945 </p>
946 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
947 </p>
948 </blockquote><p>
949
950 </p>
951 <a name="anchor7"></a><br /><hr />
952 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
953 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
954 Subscribe/notify communication method</h3>
955
956 <p>This more sophisticated communication method is actually
957 only an extension of the simple request/response
958 communication method. The front-end still uses a TCP
959 connection and sends the same commands on the TCP
960 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
961 commands that allow a client to tell the server that it is
962 interested in receiving notifications about certain events
963 as they happen on the server. The SUBSCRIBE command has the
964 following syntax:
965 </p>
966 <p>
967 </p>
968 <blockquote class="text">
969 <p>SUBSCRIBE &lt;event-id&gt;
970 </p>
971 </blockquote><p>
972
973 </p>
974 <p>where &lt;event-id&gt; will be replaced by the respective
975 event that client wants to subscribe to. Upon receiving such
976 request, server SHOULD respond with OK and start sending
977 EVENT notifications when a given even has occurred to the
978 front-end when an event has occurred. It MAY be possible
979 certain events may be sent before OK response during real
980 time nature of their generation. Event messages have the
981 following format:
982 </p>
983 <p>
984 </p>
985 <blockquote class="text">
986 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
987 </p>
988 </blockquote><p>
989
990 </p>
991 <p>where &lt;event-id&gt; uniquely identifies the event that
992 has occurred and &lt;custom-event-data&gt; is event
993 specific.
994 </p>
995 <p>Several rules must be followed by the server when
996 generating events:
997 </p>
998 <p>
999 </p>
1000 <ol class="text">
1001 <li>Events MUST NOT be sent to any client who has not
1002 issued an appropriate SUBSCRIBE command.
1003 </li>
1004 <li>Events MUST only be sent using the same
1005 connection that was used to subscribe to them.
1006 </li>
1007 <li>When response is being sent to the client, event
1008 MUST be inserted in the stream before or after the
1009 response, but NOT in the middle. Same is true about
1010 the response. It should never be inserted in the
1011 middle of the event message as well as any other
1012 response.
1013 </li>
1014 </ol><p>
1015
1016 </p>
1017 <p>If the client is not interested in a particular event
1018 anymore it MAY issue UNSUBSCRIBE command using the following
1019 syntax:
1020 </p>
1021 <p>
1022 </p>
1023 <blockquote class="text">
1024 <p>UNSUBSCRIBE &lt;event-id&gt;
1025 </p>
1026 </blockquote><p>
1027
1028 </p>
1029 <p>where &lt;event-id&gt; will be replace by the respective
1030 event that client is no longer interested in receiving. For
1031 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1032 </p>
1033 <p>Example: the fill states of disk stream buffers have
1034 changed on sampler channel 4 and the LinuxSampler instance
1035 will react by sending the following message to all clients
1036 who subscribed to this event:
1037 </p>
1038 <p>
1039 </p>
1040 <blockquote class="text">
1041 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1042 </p>
1043 </blockquote><p>
1044
1045 </p>
1046 <p>Which means there are currently three active streams on
1047 sampler channel 4, where the stream with ID "35" is filled
1048 by 62%, stream with ID 33 is filled by 80% and stream with
1049 ID 37 is filled by 98%.
1050 </p>
1051 <p>Clients may choose to open more than one connection to
1052 the server and use some connections to receive notifications
1053 while using other connections to issue commands to the
1054 back-end. This is entirely legal and up to the
1055 implementation. This does not change the protocol in any way
1056 and no special restrictions exist on the server to allow or
1057 disallow this or to track what connections belong to what
1058 front-ends. Server will listen on a single port, accept
1059 multiple connections and support protocol described in this
1060 specification in it's entirety on this single port on each
1061 connection that it accepted.
1062 </p>
1063 <p>Due to the fact that TCP is used for this communication,
1064 dead peers will be detected automatically by the OS TCP
1065 stack. While it may take a while to detect dead peers if no
1066 traffic is being sent from server to client (TCP keep-alive
1067 timer is set to 2 hours on many OSes) it will not be an
1068 issue here as when notifications are sent by the server,
1069 dead client will be detected quickly.
1070 </p>
1071 <p>When connection is closed for any reason server MUST
1072 forget all subscriptions that were made on this connection.
1073 If client reconnects it MUST resubscribe to all events that
1074 it wants to receive.
1075 </p>
1076 <a name="control_commands"></a><br /><hr />
1077 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1078 <a name="rfc.section.6"></a><h3>6.&nbsp;
1079 Description for control commands</h3>
1080
1081 <p>This chapter will describe the available control commands
1082 that can be sent on the TCP connection in detail. Some certain
1083 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>
1084 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
1085 multiple-line responses. In this case LinuxSampler signals the
1086 end of the response by a "." (single dot) line.
1087 </p>
1088 <a name="anchor8"></a><br /><hr />
1089 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1090 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1091 Ignored lines and comments</h3>
1092
1093 <p>White lines, that is lines which only contain space and
1094 tabulator characters, and lines that start with a "#"
1095 character are ignored, thus it's possible for example to
1096 group commands and to place comments in a LSCP script
1097 file.
1098 </p>
1099 <a name="anchor9"></a><br /><hr />
1100 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1101 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1102 Configuring audio drivers</h3>
1103
1104 <p>Instances of drivers in LinuxSampler are called devices.
1105 You can use multiple audio devices simultaneously, e.g. to
1106 output the sound of one sampler channel using the ALSA audio
1107 output driver, and on another sampler channel you might want
1108 to use the JACK audio output driver. For particular audio
1109 output systems it's also possible to create several devices
1110 of the same audio output driver, e.g. two separate ALSA
1111 audio output devices for using two different sound cards at
1112 the same time. This chapter describes all commands to
1113 configure LinuxSampler's audio output devices and their
1114 parameters.
1115 </p>
1116 <p>Instead of defining commands and parameters for each
1117 driver individually, all possible parameters, their meanings
1118 and possible values have to be obtained at runtime. This
1119 makes the protocol a bit abstract, but has the advantage,
1120 that front-ends can be written independently of what drivers
1121 are currently implemented and what parameters these drivers
1122 are actually offering. This means front-ends can even handle
1123 drivers which are implemented somewhere in future without
1124 modifying the front-end at all.
1125 </p>
1126 <p>Note: examples in this chapter showing particular
1127 parameters of drivers are not meant as specification of the
1128 drivers' parameters. Driver implementations in LinuxSampler
1129 might have complete different parameter names and meanings
1130 than shown in these examples or might change in future, so
1131 these examples are only meant for showing how to retrieve
1132 what parameters drivers are offering, how to retrieve their
1133 possible values, etc.
1134 </p>
1135 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1136 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1137 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1138 Getting amount of available audio output drivers</h3>
1139
1140 <p>Use the following command to get the number of
1141 audio output drivers currently available for the
1142 LinuxSampler instance:
1143 </p>
1144 <p>
1145 </p>
1146 <blockquote class="text">
1147 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1148 </p>
1149 </blockquote><p>
1150
1151 </p>
1152 <p>Possible Answers:
1153 </p>
1154 <p>
1155 </p>
1156 <blockquote class="text">
1157 <p>LinuxSampler will answer by sending the
1158 number of audio output drivers.
1159 </p>
1160 </blockquote><p>
1161
1162 </p>
1163 <p>Example:
1164 </p>
1165 <p>
1166 </p>
1167 <blockquote class="text">
1168 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1169 </p>
1170 <p>S: "2"
1171 </p>
1172 </blockquote><p>
1173
1174 </p>
1175 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1176 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1177 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1178 Getting all available audio output drivers</h3>
1179
1180 <p>Use the following command to list all audio output
1181 drivers currently available for the LinuxSampler
1182 instance:
1183 </p>
1184 <p>
1185 </p>
1186 <blockquote class="text">
1187 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1188 </p>
1189 </blockquote><p>
1190
1191 </p>
1192 <p>Possible Answers:
1193 </p>
1194 <p>
1195 </p>
1196 <blockquote class="text">
1197 <p>LinuxSampler will answer by sending comma
1198 separated character strings, each symbolizing an
1199 audio output driver.
1200 </p>
1201 </blockquote><p>
1202
1203 </p>
1204 <p>Example:
1205 </p>
1206 <p>
1207 </p>
1208 <blockquote class="text">
1209 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1210 </p>
1211 <p>S: "ALSA,JACK"
1212 </p>
1213 </blockquote><p>
1214
1215 </p>
1216 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1217 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1218 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1219 Getting information about a specific audio
1220 output driver</h3>
1221
1222 <p>Use the following command to get detailed information
1223 about a specific audio output driver:
1224 </p>
1225 <p>
1226 </p>
1227 <blockquote class="text">
1228 <p>GET AUDIO_OUTPUT_DRIVER INFO
1229 &lt;audio-output-driver&gt;
1230 </p>
1231 </blockquote><p>
1232
1233 </p>
1234 <p>Where &lt;audio-output-driver&gt; is the name of the
1235 audio output driver, returned by the
1236 <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.
1237 </p>
1238 <p>Possible Answers:
1239 </p>
1240 <p>
1241 </p>
1242 <blockquote class="text">
1243 <p>LinuxSampler will answer by sending a
1244 &lt;CRLF&gt; separated list. Each answer line
1245 begins with the information category name
1246 followed by a colon and then a space character
1247 &lt;SP&gt; and finally the info character string
1248 to that info category. At the moment the
1249 following information categories are
1250 defined:
1251 </p>
1252 <p>
1253 </p>
1254 <blockquote class="text">
1255 <p>DESCRIPTION -
1256 </p>
1257 <blockquote class="text">
1258 <p> character string describing the
1259 audio output driver
1260 </p>
1261 </blockquote>
1262
1263
1264 <p>VERSION -
1265 </p>
1266 <blockquote class="text">
1267 <p>character string reflecting the
1268 driver's version
1269 </p>
1270 </blockquote>
1271
1272
1273 <p>PARAMETERS -
1274 </p>
1275 <blockquote class="text">
1276 <p>comma separated list of all
1277 parameters available for the given
1278 audio output driver, at least
1279 parameters 'channels', 'samplerate'
1280 and 'active' are offered by all audio
1281 output drivers
1282 </p>
1283 </blockquote>
1284
1285
1286 </blockquote>
1287
1288
1289 <p>The mentioned fields above don't have to be
1290 in particular order.
1291 </p>
1292 </blockquote><p>
1293
1294 </p>
1295 <p>Example:
1296 </p>
1297 <p>
1298 </p>
1299 <blockquote class="text">
1300 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1301 </p>
1302 <p>S: "DESCRIPTION: Advanced Linux Sound
1303 Architecture"
1304 </p>
1305 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1306 </p>
1307 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1308 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1309 FRAGMENTSIZE,CARD"
1310 </p>
1311 <p>&nbsp;&nbsp;&nbsp;"."
1312 </p>
1313 </blockquote><p>
1314
1315 </p>
1316 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1317 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1318 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1319 Getting information about specific audio
1320 output driver parameter</h3>
1321
1322 <p>Use the following command to get detailed information
1323 about a specific audio output driver parameter:
1324 </p>
1325 <p>
1326 </p>
1327 <blockquote class="text">
1328 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1329 </p>
1330 </blockquote><p>
1331
1332 </p>
1333 <p>Where &lt;audio&gt; is the name of the audio output
1334 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,
1335 &lt;prm&gt; a specific parameter name for which information should be
1336 obtained (as returned by the
1337 <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
1338 &lt;deplist&gt; is an optional list of parameters on which the sought
1339 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1340 pairs in form of "key1=val1 key2=val2 ...", where character string values
1341 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1342 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1343 the front-end application can simply put all parameters into &lt;deplist&gt;
1344 with the values already selected by the user.
1345 </p>
1346 <p>Possible Answers:
1347 </p>
1348 <p>
1349 </p>
1350 <blockquote class="text">
1351 <p>LinuxSampler will answer by sending a
1352 &lt;CRLF&gt; separated list.
1353 Each answer line begins with the information category name
1354 followed by a colon and then a space character &lt;SP&gt; and
1355 finally
1356 the info character string to that info category. There are
1357 information which is always returned, independently of the
1358 given driver parameter and there are optional information
1359 which is only shown dependently to given driver parameter. At
1360 the moment the following information categories are defined:
1361 </p>
1362 </blockquote><p>
1363
1364 </p>
1365 <p>
1366 </p>
1367 <blockquote class="text">
1368 <p>TYPE -
1369 </p>
1370 <blockquote class="text">
1371 <p>either "BOOL" for boolean value(s) or
1372 "INT" for integer
1373 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1374 character string(s)
1375 (always returned, no matter which driver parameter)
1376 </p>
1377 </blockquote>
1378
1379
1380 <p>DESCRIPTION -
1381 </p>
1382 <blockquote class="text">
1383 <p>arbitrary text describing the purpose of the parameter
1384 (always returned, no matter which driver parameter)
1385 </p>
1386 </blockquote>
1387
1388
1389 <p>MANDATORY -
1390 </p>
1391 <blockquote class="text">
1392 <p>either true or false, defines if this parameter must be
1393 given when the device is to be created with the
1394 <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>
1395 command (always returned, no matter which driver parameter)
1396 </p>
1397 </blockquote>
1398
1399
1400 <p>FIX -
1401 </p>
1402 <blockquote class="text">
1403 <p>either true or false, if false then this parameter can
1404 be changed at any time, once the device is created by
1405 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>
1406 command (always returned, no matter which driver parameter)
1407 </p>
1408 </blockquote>
1409
1410
1411 <p>MULTIPLICITY -
1412 </p>
1413 <blockquote class="text">
1414 <p>either true or false, defines if this parameter allows
1415 only one value or a list of values, where true means
1416 multiple values and false only a single value allowed
1417 (always returned, no matter which driver parameter)
1418 </p>
1419 </blockquote>
1420
1421
1422 <p>DEPENDS -
1423 </p>
1424 <blockquote class="text">
1425 <p>comma separated list of parameters this parameter depends
1426 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1427 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1428 listed parameters, for example assuming that an audio
1429 driver (like the ALSA driver) offers parameters 'card'
1430 and 'samplerate' then parameter 'samplerate' would
1431 depend on 'card' because the possible values for
1432 'samplerate' depends on the sound card which can be
1433 chosen by the 'card' parameter
1434 (optionally returned, dependent to driver parameter)
1435 </p>
1436 </blockquote>
1437
1438
1439 <p>DEFAULT -
1440 </p>
1441 <blockquote class="text">
1442 <p>reflects the default value for this parameter which is
1443 used when the device is created and not explicitly
1444 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,
1445 in case of MULTIPLCITY=true, this is a comma separated
1446 list, that's why character strings are encapsulated into
1447 apostrophes (')
1448 (optionally returned, dependent to driver parameter)
1449 </p>
1450 </blockquote>
1451
1452
1453 <p>RANGE_MIN -
1454 </p>
1455 <blockquote class="text">
1456 <p>defines lower limit of the allowed value range for this
1457 parameter, can be an integer value as well as a dotted
1458 number, this parameter is often used in conjunction
1459 with RANGE_MAX, but may also appear without
1460 (optionally returned, dependent to driver parameter)
1461 </p>
1462 </blockquote>
1463
1464
1465 <p>RANGE_MAX -
1466 </p>
1467 <blockquote class="text">
1468 <p>defines upper limit of the allowed value range for this
1469 parameter, can be an integer value as well as a dotted
1470 number, this parameter is often used in conjunction with
1471 RANGE_MIN, but may also appear without
1472 (optionally returned, dependent to driver parameter)
1473 </p>
1474 </blockquote>
1475
1476
1477 <p>POSSIBILITIES -
1478 </p>
1479 <blockquote class="text">
1480 <p>comma separated list of possible values for this
1481 parameter, character strings are encapsulated into
1482 apostrophes
1483 (optionally returned, dependent to driver parameter)
1484 </p>
1485 </blockquote>
1486
1487
1488 </blockquote><p>
1489
1490 </p>
1491 <p>The mentioned fields above don't have to be in particular order.
1492 </p>
1493 <p>Examples:
1494 </p>
1495 <p>
1496 </p>
1497 <blockquote class="text">
1498 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1499 </p>
1500 <p>S: "DESCRIPTION: sound card to be used"
1501 </p>
1502 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1503 </p>
1504 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1505 </p>
1506 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1507 </p>
1508 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1509 </p>
1510 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1511 </p>
1512 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1513 </p>
1514 <p>&nbsp;&nbsp;&nbsp;"."
1515 </p>
1516 </blockquote><p>
1517
1518 </p>
1519 <p>
1520 </p>
1521 <blockquote class="text">
1522 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1523 </p>
1524 <p>S: "DESCRIPTION: output sample rate in Hz"
1525 </p>
1526 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1527 </p>
1528 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1529 </p>
1530 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1531 </p>
1532 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1533 </p>
1534 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1535 </p>
1536 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1537 </p>
1538 <p>&nbsp;&nbsp;&nbsp;"."
1539 </p>
1540 </blockquote><p>
1541
1542 </p>
1543 <p>
1544 </p>
1545 <blockquote class="text">
1546 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1547 </p>
1548 <p>S: "DESCRIPTION: output sample rate in Hz"
1549 </p>
1550 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1551 </p>
1552 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1553 </p>
1554 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1555 </p>
1556 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1557 </p>
1558 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1559 </p>
1560 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1561 </p>
1562 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1563 </p>
1564 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1565 </p>
1566 <p>&nbsp;&nbsp;&nbsp;"."
1567 </p>
1568 </blockquote><p>
1569
1570 </p>
1571 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1572 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1573 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1574 Creating an audio output device</h3>
1575
1576 <p>Use the following command to create a new audio output device for the desired audio output system:
1577 </p>
1578 <p>
1579 </p>
1580 <blockquote class="text">
1581 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1582 </p>
1583 </blockquote><p>
1584
1585 </p>
1586 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1587 output system as returned by the
1588 <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>
1589 command and &lt;param-list&gt; by an optional list of driver
1590 specific parameters in form of "key1=val1 key2=val2 ...", where
1591 character string values should be encapsulated into apostrophes (').
1592 Note that there might be drivers which require parameter(s) to be
1593 given with this command. Use the previously described commands in
1594 this chapter to get this information.
1595 </p>
1596 <p>Possible Answers:
1597 </p>
1598 <p>
1599 </p>
1600 <blockquote class="text">
1601 <p>"OK[&lt;device-id&gt;]" -
1602 </p>
1603 <blockquote class="text">
1604 <p>in case the device was successfully created, where
1605 &lt;device-id&gt; is the numerical ID of the new device
1606 </p>
1607 </blockquote>
1608
1609
1610 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1611 </p>
1612 <blockquote class="text">
1613 <p>in case the device was created successfully, where
1614 &lt;device-id&gt; is the numerical ID of the new device, but there
1615 are noteworthy issue(s) related (e.g. sound card doesn't
1616 support given hardware parameters and the driver is using
1617 fall-back values), providing an appropriate warning code and
1618 warning message
1619 </p>
1620 </blockquote>
1621
1622
1623 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1624 </p>
1625 <blockquote class="text">
1626 <p>in case it failed, providing an appropriate error code and error message
1627 </p>
1628 </blockquote>
1629
1630
1631 </blockquote><p>
1632
1633 </p>
1634 <p>Examples:
1635 </p>
1636 <p>
1637 </p>
1638 <blockquote class="text">
1639 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1640 </p>
1641 <p>S: "OK[0]"
1642 </p>
1643 </blockquote><p>
1644
1645 </p>
1646 <p>
1647 </p>
1648 <blockquote class="text">
1649 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1650 </p>
1651 <p>S: "OK[1]"
1652 </p>
1653 </blockquote><p>
1654
1655 </p>
1656 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1657 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1658 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1659 Destroying an audio output device</h3>
1660
1661 <p>Use the following command to destroy a created output device:
1662 </p>
1663 <p>
1664 </p>
1665 <blockquote class="text">
1666 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1667 </p>
1668 </blockquote><p>
1669
1670 </p>
1671 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1672 audio output device as given by the
1673 <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>
1674 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>
1675 command.
1676 </p>
1677 <p>Possible Answers:
1678 </p>
1679 <p>
1680 </p>
1681 <blockquote class="text">
1682 <p>"OK" -
1683 </p>
1684 <blockquote class="text">
1685 <p>in case the device was successfully destroyed
1686 </p>
1687 </blockquote>
1688
1689
1690 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1691 </p>
1692 <blockquote class="text">
1693 <p>in case the device was destroyed successfully, but there are
1694 noteworthy issue(s) related (e.g. an audio over ethernet
1695 driver was unloaded but the other host might not be
1696 informed about this situation), providing an appropriate
1697 warning code and warning message
1698 </p>
1699 </blockquote>
1700
1701
1702 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1703 </p>
1704 <blockquote class="text">
1705 <p>in case it failed, providing an appropriate error code and
1706 error message
1707 </p>
1708 </blockquote>
1709
1710
1711 </blockquote><p>
1712
1713 </p>
1714 <p>Example:
1715 </p>
1716 <p>
1717 </p>
1718 <blockquote class="text">
1719 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1720 </p>
1721 <p>S: "OK"
1722 </p>
1723 </blockquote><p>
1724
1725 </p>
1726 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1727 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1728 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1729 Getting all created audio output device count</h3>
1730
1731 <p>Use the following command to count all created audio output devices:
1732 </p>
1733 <p>
1734 </p>
1735 <blockquote class="text">
1736 <p>GET AUDIO_OUTPUT_DEVICES
1737 </p>
1738 </blockquote><p>
1739
1740 </p>
1741 <p>Possible Answers:
1742 </p>
1743 <p>
1744 </p>
1745 <blockquote class="text">
1746 <p>LinuxSampler will answer by sending the current number of all
1747 audio output devices.
1748 </p>
1749 </blockquote><p>
1750
1751 </p>
1752 <p>Example:
1753 </p>
1754 <p>
1755 </p>
1756 <blockquote class="text">
1757 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1758 </p>
1759 <p>S: "4"
1760 </p>
1761 </blockquote><p>
1762
1763 </p>
1764 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1765 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1766 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1767 Getting all created audio output device list</h3>
1768
1769 <p>Use the following command to list all created audio output devices:
1770 </p>
1771 <p>
1772 </p>
1773 <blockquote class="text">
1774 <p>LIST AUDIO_OUTPUT_DEVICES
1775 </p>
1776 </blockquote><p>
1777
1778 </p>
1779 <p>Possible Answers:
1780 </p>
1781 <p>
1782 </p>
1783 <blockquote class="text">
1784 <p>LinuxSampler will answer by sending a comma separated list with
1785 the numerical IDs of all audio output devices.
1786 </p>
1787 </blockquote><p>
1788
1789 </p>
1790 <p>Example:
1791 </p>
1792 <p>
1793 </p>
1794 <blockquote class="text">
1795 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1796 </p>
1797 <p>S: "0,1,4,5"
1798 </p>
1799 </blockquote><p>
1800
1801 </p>
1802 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1803 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1804 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1805 Getting current settings of an audio output device</h3>
1806
1807 <p>Use the following command to get current settings of a specific, created audio output device:
1808 </p>
1809 <p>
1810 </p>
1811 <blockquote class="text">
1812 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1813 </p>
1814 </blockquote><p>
1815
1816 </p>
1817 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1818 of the audio output device as e.g. returned by the
1819 <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.
1820 </p>
1821 <p>Possible Answers:
1822 </p>
1823 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1824 Each answer line begins with the information category name
1825 followed by a colon and then a space character &lt;SP&gt; and finally
1826 the info character string to that info category. As some
1827 parameters might allow multiple values, character strings are
1828 encapsulated into apostrophes ('). At the moment the following
1829 information categories are defined (independently of device):
1830 </p>
1831 <p>
1832 </p>
1833 <blockquote class="text">
1834 <p>DRIVER -
1835 </p>
1836 <blockquote class="text">
1837 <p>identifier of the used audio output driver, as also
1838 returned by the
1839 <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>
1840 command
1841 </p>
1842 </blockquote>
1843
1844
1845 <p>CHANNELS -
1846 </p>
1847 <blockquote class="text">
1848 <p>amount of audio output channels this device currently
1849 offers
1850 </p>
1851 </blockquote>
1852
1853
1854 <p>SAMPLERATE -
1855 </p>
1856 <blockquote class="text">
1857 <p>playback sample rate the device uses
1858 </p>
1859 </blockquote>
1860
1861
1862 <p>ACTIVE -
1863 </p>
1864 <blockquote class="text">
1865 <p>either true or false, if false then the audio device is
1866 inactive and doesn't output any sound, nor do the
1867 sampler channels connected to this audio device render
1868 any audio
1869 </p>
1870 </blockquote>
1871
1872
1873 </blockquote><p>
1874
1875 </p>
1876 <p>The mentioned fields above don't have to be in particular
1877 order. The fields above are only those fields which are
1878 returned by all audio output devices. Every audio output driver
1879 might have its own, additional driver specific parameters (see
1880 <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>)
1881 which are also returned by this command.
1882 </p>
1883 <p>Example:
1884 </p>
1885 <p>
1886 </p>
1887 <blockquote class="text">
1888 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1889 </p>
1890 <p>S: "DRIVER: ALSA"
1891 </p>
1892 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1893 </p>
1894 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1895 </p>
1896 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1897 </p>
1898 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1899 </p>
1900 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1901 </p>
1902 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1903 </p>
1904 <p>&nbsp;&nbsp;&nbsp;"."
1905 </p>
1906 </blockquote><p>
1907
1908 </p>
1909 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1910 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1911 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1912 Changing settings of audio output devices</h3>
1913
1914 <p>Use the following command to alter a specific setting of a created audio output device:
1915 </p>
1916 <p>
1917 </p>
1918 <blockquote class="text">
1919 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1920 </p>
1921 </blockquote><p>
1922
1923 </p>
1924 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1925 audio output device as given by the
1926 <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>
1927 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>
1928 command, &lt;key&gt; by the name of the parameter to change
1929 and &lt;value&gt; by the new value for this parameter.
1930 </p>
1931 <p>Possible Answers:
1932 </p>
1933 <p>
1934 </p>
1935 <blockquote class="text">
1936 <p>"OK" -
1937 </p>
1938 <blockquote class="text">
1939 <p>in case setting was successfully changed
1940 </p>
1941 </blockquote>
1942
1943
1944 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1945 </p>
1946 <blockquote class="text">
1947 <p>in case setting was changed successfully, but there are
1948 noteworthy issue(s) related, providing an appropriate
1949 warning code and warning message
1950 </p>
1951 </blockquote>
1952
1953
1954 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1955 </p>
1956 <blockquote class="text">
1957 <p>in case it failed, providing an appropriate error code and
1958 error message
1959 </p>
1960 </blockquote>
1961
1962
1963 </blockquote><p>
1964
1965 </p>
1966 <p>Example:
1967 </p>
1968 <p>
1969 </p>
1970 <blockquote class="text">
1971 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1972 </p>
1973 <p>S: "OK"
1974 </p>
1975 </blockquote><p>
1976
1977 </p>
1978 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1979 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1980 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1981 Getting information about an audio channel</h3>
1982
1983 <p>Use the following command to get information about an audio channel:
1984 </p>
1985 <p>
1986 </p>
1987 <blockquote class="text">
1988 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1989 </p>
1990 </blockquote><p>
1991
1992 </p>
1993 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1994 <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>
1995 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>
1996 command and &lt;audio-chan&gt; the audio channel number.
1997 </p>
1998 <p>Possible Answers:
1999 </p>
2000 <p>
2001 </p>
2002 <blockquote class="text">
2003 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2004 Each answer line begins with the information category name
2005 followed by a colon and then a space character &lt;SP&gt; and finally
2006 the info character string to that info category. At the moment
2007 the following information categories are defined:
2008 </p>
2009 <p>
2010 </p>
2011 <blockquote class="text">
2012 <p>NAME -
2013 </p>
2014 <blockquote class="text">
2015 <p>arbitrary character string naming the channel, which
2016 doesn't have to be unique (always returned by all audio channels)
2017 </p>
2018 </blockquote>
2019
2020
2021 <p>IS_MIX_CHANNEL -
2022 </p>
2023 <blockquote class="text">
2024 <p>either true or false, a mix-channel is not a real,
2025 independent audio channel, but a virtual channel which
2026 is mixed to another real channel, this mechanism is
2027 needed for sampler engines which need more audio
2028 channels than the used audio system might be able to offer
2029 (always returned by all audio channels)
2030 </p>
2031 </blockquote>
2032
2033
2034 <p>MIX_CHANNEL_DESTINATION -
2035 </p>
2036 <blockquote class="text">
2037 <p>numerical ID (positive integer including 0)
2038 which reflects the real audio channel (of the same audio
2039 output device) this mix channel refers to, means where
2040 the audio signal actually will be routed / added to
2041 (only returned in case the audio channel is mix channel)
2042 </p>
2043 </blockquote>
2044
2045
2046 </blockquote>
2047
2048
2049 </blockquote><p>
2050
2051 </p>
2052 <p>The mentioned fields above don't have to be in particular
2053 order. The fields above are only those fields which are
2054 generally returned for the described cases by all audio
2055 channels regardless of the audio driver. Every audio channel
2056 might have its own, additional driver and channel specific
2057 parameters.
2058 </p>
2059 <p>Examples:
2060 </p>
2061 <p>
2062 </p>
2063 <blockquote class="text">
2064 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2065 </p>
2066 <p>S: "NAME: studio monitor left"
2067 </p>
2068 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2069 </p>
2070 <p>&nbsp;&nbsp;&nbsp;"."
2071 </p>
2072 </blockquote><p>
2073
2074 </p>
2075 <p>
2076 </p>
2077 <blockquote class="text">
2078 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2079 </p>
2080 <p>S: "NAME: studio monitor right"
2081 </p>
2082 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2083 </p>
2084 <p>&nbsp;&nbsp;&nbsp;"."
2085 </p>
2086 </blockquote><p>
2087
2088 </p>
2089 <p>
2090 </p>
2091 <blockquote class="text">
2092 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2093 </p>
2094 <p>S: "NAME: studio monitor left"
2095 </p>
2096 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2097 </p>
2098 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2099 </p>
2100 <p>&nbsp;&nbsp;&nbsp;"."
2101 </p>
2102 </blockquote><p>
2103
2104 </p>
2105 <p>
2106 </p>
2107 <blockquote class="text">
2108 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2109 </p>
2110 <p>S: "NAME: 'ardour (left)'"
2111 </p>
2112 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2113 </p>
2114 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2115 </p>
2116 <p>&nbsp;&nbsp;&nbsp;"."
2117 </p>
2118 </blockquote><p>
2119
2120 </p>
2121 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2123 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2124 Getting information about specific audio channel parameter</h3>
2125
2126 <p>Use the following command to get detailed information about specific audio channel parameter:
2127 </p>
2128 <p>
2129 </p>
2130 <blockquote class="text">
2131 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2132 </p>
2133 </blockquote><p>
2134
2135 </p>
2136 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2137 <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>
2138 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>
2139 command, &lt;chan&gt; the audio channel number
2140 and &lt;param&gt; a specific channel parameter name for which information should
2141 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).
2142 </p>
2143 <p>Possible Answers:
2144 </p>
2145 <p>
2146 </p>
2147 <blockquote class="text">
2148 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2149 Each answer line begins with the information category name
2150 followed by a colon and then a space character &lt;SP&gt; and finally
2151 the info character string to that info category. There are
2152 information which is always returned, independently of the
2153 given channel parameter and there is optional information
2154 which is only shown dependently to the given audio channel. At
2155 the moment the following information categories are defined:
2156 </p>
2157 <p>
2158 </p>
2159 <blockquote class="text">
2160 <p>TYPE -
2161 </p>
2162 <blockquote class="text">
2163 <p>either "BOOL" for boolean value(s) or "INT" for integer
2164 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2165 character string(s)
2166 (always returned)
2167 </p>
2168 </blockquote>
2169
2170
2171 <p>DESCRIPTION -
2172 </p>
2173 <blockquote class="text">
2174 <p>arbitrary text describing the purpose of the parameter (always returned)
2175 </p>
2176 </blockquote>
2177
2178
2179 <p>FIX -
2180 </p>
2181 <blockquote class="text">
2182 <p>either true or false, if true then this parameter is
2183 read only, thus cannot be altered
2184 (always returned)
2185 </p>
2186 </blockquote>
2187
2188
2189 <p>MULTIPLICITY -
2190 </p>
2191 <blockquote class="text">
2192 <p>either true or false, defines if this parameter allows
2193 only one value or a list of values, where true means
2194 multiple values and false only a single value allowed
2195 (always returned)
2196 </p>
2197 </blockquote>
2198
2199
2200 <p>RANGE_MIN -
2201 </p>
2202 <blockquote class="text">
2203 <p>defines lower limit of the allowed value range for this
2204 parameter, can be an integer value as well as a dotted
2205 number, usually used in conjunction with 'RANGE_MAX',
2206 but may also appear without
2207 (optionally returned, dependent to driver and channel
2208 parameter)
2209 </p>
2210 </blockquote>
2211
2212
2213 <p>RANGE_MAX -
2214 </p>
2215 <blockquote class="text">
2216 <p>defines upper limit of the allowed value range for this
2217 parameter, can be an integer value as well as a dotted
2218 number, usually used in conjunction with 'RANGE_MIN',
2219 but may also appear without
2220 (optionally returned, dependent to driver and channel
2221 parameter)
2222 </p>
2223 </blockquote>
2224
2225
2226 <p>POSSIBILITIES -
2227 </p>
2228 <blockquote class="text">
2229 <p>comma separated list of possible values for this
2230 parameter, character strings are encapsulated into
2231 apostrophes
2232 (optionally returned, dependent to driver and channel
2233 parameter)
2234 </p>
2235 </blockquote>
2236
2237
2238 </blockquote>
2239
2240
2241 <p>The mentioned fields above don't have to be in particular order.
2242 </p>
2243 </blockquote><p>
2244
2245 </p>
2246 <p>Example:
2247 </p>
2248 <p>
2249 </p>
2250 <blockquote class="text">
2251 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2252 </p>
2253 <p>S: "DESCRIPTION: bindings to other JACK clients"
2254 </p>
2255 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2256 </p>
2257 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2258 </p>
2259 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2260 </p>
2261 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2262 </p>
2263 <p>&nbsp;&nbsp;&nbsp;"."
2264 </p>
2265 </blockquote><p>
2266
2267 </p>
2268 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2269 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2270 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2271 Changing settings of audio output channels</h3>
2272
2273 <p>Use the following command to alter a specific setting of an audio output channel:
2274 </p>
2275 <p>
2276 </p>
2277 <blockquote class="text">
2278 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2279 </p>
2280 </blockquote><p>
2281
2282 </p>
2283 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2284 <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>
2285 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>
2286 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2287 parameter to change and &lt;value&gt; by the new value for this parameter.
2288 </p>
2289 <p>Possible Answers:
2290 </p>
2291 <p>
2292 </p>
2293 <blockquote class="text">
2294 <p>"OK" -
2295 </p>
2296 <blockquote class="text">
2297 <p>in case setting was successfully changed
2298 </p>
2299 </blockquote>
2300
2301
2302 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2303 </p>
2304 <blockquote class="text">
2305 <p>in case setting was changed successfully, but there are
2306 noteworthy issue(s) related, providing an appropriate
2307 warning code and warning message
2308 </p>
2309 </blockquote>
2310
2311
2312 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2313 </p>
2314 <blockquote class="text">
2315 <p>in case it failed, providing an appropriate error code and
2316 error message
2317 </p>
2318 </blockquote>
2319
2320
2321 </blockquote><p>
2322
2323 </p>
2324 <p>Example:
2325 </p>
2326 <p>
2327 </p>
2328 <blockquote class="text">
2329 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2330 </p>
2331 <p>S: "OK"
2332 </p>
2333 </blockquote><p>
2334
2335 </p>
2336 <p>
2337 </p>
2338 <blockquote class="text">
2339 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2340 </p>
2341 <p>S: "OK"
2342 </p>
2343 </blockquote><p>
2344
2345 </p>
2346 <a name="anchor10"></a><br /><hr />
2347 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2348 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2349 Configuring MIDI input drivers</h3>
2350
2351 <p>Instances of drivers in LinuxSampler are called devices. You can use
2352 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2353 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2354 channel. For particular MIDI input systems it's also possible to create
2355 several devices of the same MIDI input type. This chapter describes all
2356 commands to configure LinuxSampler's MIDI input devices and their parameters.
2357 </p>
2358 <p>Instead of defining commands and parameters for each driver individually,
2359 all possible parameters, their meanings and possible values have to be obtained
2360 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2361 front-ends can be written independently of what drivers are currently implemented
2362 and what parameters these drivers are actually offering. This means front-ends can
2363 even handle drivers which are implemented somewhere in future without modifying
2364 the front-end at all.
2365 </p>
2366 <p>Commands for configuring MIDI input devices are pretty much the same as the
2367 commands for configuring audio output drivers, already described in the last
2368 chapter.
2369 </p>
2370 <p>Note: examples in this chapter showing particular parameters of drivers are
2371 not meant as specification of the drivers' parameters. Driver implementations in
2372 LinuxSampler might have complete different parameter names and meanings than shown
2373 in these examples or might change in future, so these examples are only meant for
2374 showing how to retrieve what parameters drivers are offering, how to retrieve their
2375 possible values, etc.
2376 </p>
2377 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2378 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2379 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2380 Getting amount of available MIDI input drivers</h3>
2381
2382 <p>Use the following command to get the number of
2383 MIDI input drivers currently available for the
2384 LinuxSampler instance:
2385 </p>
2386 <p>
2387 </p>
2388 <blockquote class="text">
2389 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2390 </p>
2391 </blockquote><p>
2392
2393 </p>
2394 <p>Possible Answers:
2395 </p>
2396 <p>
2397 </p>
2398 <blockquote class="text">
2399 <p>LinuxSampler will answer by sending the
2400 number of available MIDI input drivers.
2401 </p>
2402 </blockquote><p>
2403
2404 </p>
2405 <p>Example:
2406 </p>
2407 <p>
2408 </p>
2409 <blockquote class="text">
2410 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2411 </p>
2412 <p>S: "2"
2413 </p>
2414 </blockquote><p>
2415
2416 </p>
2417 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2418 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2419 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2420 Getting all available MIDI input drivers</h3>
2421
2422 <p>Use the following command to list all MIDI input drivers currently available
2423 for the LinuxSampler instance:
2424 </p>
2425 <p>
2426 </p>
2427 <blockquote class="text">
2428 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2429 </p>
2430 </blockquote><p>
2431
2432 </p>
2433 <p>Possible Answers:
2434 </p>
2435 <p>
2436 </p>
2437 <blockquote class="text">
2438 <p>LinuxSampler will answer by sending comma separated character
2439 strings, each symbolizing a MIDI input driver.
2440 </p>
2441 </blockquote><p>
2442
2443 </p>
2444 <p>Example:
2445 </p>
2446 <p>
2447 </p>
2448 <blockquote class="text">
2449 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2450 </p>
2451 <p>S: "ALSA,JACK"
2452 </p>
2453 </blockquote><p>
2454
2455 </p>
2456 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2457 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2458 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2459 Getting information about a specific MIDI input driver</h3>
2460
2461 <p>Use the following command to get detailed information about a specific MIDI input driver:
2462 </p>
2463 <p>
2464 </p>
2465 <blockquote class="text">
2466 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2467 </p>
2468 </blockquote><p>
2469
2470 </p>
2471 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2472 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.
2473 </p>
2474 <p>Possible Answers:
2475 </p>
2476 <p>
2477 </p>
2478 <blockquote class="text">
2479 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2480 Each answer line begins with the information category name
2481 followed by a colon and then a space character &lt;SP&gt; and finally
2482 the info character string to that info category. At the moment
2483 the following information categories are defined:
2484 </p>
2485 <p>
2486 </p>
2487 <blockquote class="text">
2488 <p>DESCRIPTION -
2489 </p>
2490 <blockquote class="text">
2491 <p>arbitrary description text about the MIDI input driver
2492 </p>
2493 </blockquote>
2494
2495
2496 <p>VERSION -
2497 </p>
2498 <blockquote class="text">
2499 <p>arbitrary character string regarding the driver's version
2500 </p>
2501 </blockquote>
2502
2503
2504 <p>PARAMETERS -
2505 </p>
2506 <blockquote class="text">
2507 <p>comma separated list of all parameters available for the given MIDI input driver
2508 </p>
2509 </blockquote>
2510
2511
2512 </blockquote>
2513
2514
2515 <p>The mentioned fields above don't have to be in particular order.
2516 </p>
2517 </blockquote><p>
2518
2519 </p>
2520 <p>Example:
2521 </p>
2522 <p>
2523 </p>
2524 <blockquote class="text">
2525 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2526 </p>
2527 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2528 </p>
2529 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2530 </p>
2531 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2532 </p>
2533 <p>&nbsp;&nbsp;&nbsp;"."
2534 </p>
2535 </blockquote><p>
2536
2537 </p>
2538 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2539 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2540 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2541 Getting information about specific MIDI input driver parameter</h3>
2542
2543 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2544 </p>
2545 <p>
2546 </p>
2547 <blockquote class="text">
2548 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2549 </p>
2550 </blockquote><p>
2551
2552 </p>
2553 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2554 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
2555 parameter name for which information should be obtained (as returned by the
2556 <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
2557 of parameters on which the sought parameter &lt;param&gt; depends on,
2558 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2559 where character string values are encapsulated into apostrophes ('). Arguments
2560 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2561 will be ignored, means the front-end application can simply put all parameters
2562 in &lt;deplist&gt; with the values selected by the user.
2563 </p>
2564 <p>Possible Answers:
2565 </p>
2566 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2567 Each answer line begins with the information category name
2568 followed by a colon and then a space character &lt;SP> and finally
2569 the info character string to that info category. There is
2570 information which is always returned, independent of the
2571 given driver parameter and there is optional information
2572 which is only shown dependent to given driver parameter. At
2573 the moment the following information categories are defined:
2574 </p>
2575 <p>
2576 </p>
2577 <blockquote class="text">
2578 <p>TYPE -
2579 </p>
2580 <blockquote class="text">
2581 <p>either "BOOL" for boolean value(s) or "INT" for integer
2582 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2583 character string(s)
2584 (always returned, no matter which driver parameter)
2585 </p>
2586 </blockquote>
2587
2588
2589 <p>DESCRIPTION -
2590 </p>
2591 <blockquote class="text">
2592 <p>arbitrary text describing the purpose of the parameter
2593 (always returned, no matter which driver parameter)
2594 </p>
2595 </blockquote>
2596
2597
2598 <p>MANDATORY -
2599 </p>
2600 <blockquote class="text">
2601 <p>either true or false, defines if this parameter must be
2602 given when the device is to be created with the
2603 <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
2604 (always returned, no matter which driver parameter)
2605 </p>
2606 </blockquote>
2607
2608
2609 <p>FIX -
2610 </p>
2611 <blockquote class="text">
2612 <p>either true or false, if false then this parameter can
2613 be changed at any time, once the device is created by
2614 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
2615 (always returned, no matter which driver parameter)
2616 </p>
2617 </blockquote>
2618
2619
2620 <p>MULTIPLICITY -
2621 </p>
2622 <blockquote class="text">
2623 <p>either true or false, defines if this parameter allows
2624 only one value or a list of values, where true means
2625 multiple values and false only a single value allowed
2626 (always returned, no matter which driver parameter)
2627 </p>
2628 </blockquote>
2629
2630
2631 <p>DEPENDS -
2632 </p>
2633 <blockquote class="text">
2634 <p>comma separated list of parameters this parameter depends
2635 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2636 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2637 listed parameters, for example assuming that an audio
2638 driver (like the ALSA driver) offers parameters 'card'
2639 and 'samplerate' then parameter 'samplerate' would
2640 depend on 'card' because the possible values for
2641 'samplerate' depends on the sound card which can be
2642 chosen by the 'card' parameter
2643 (optionally returned, dependent to driver parameter)
2644 </p>
2645 </blockquote>
2646
2647
2648 <p>DEFAULT -
2649 </p>
2650 <blockquote class="text">
2651 <p>reflects the default value for this parameter which is
2652 used when the device is created and not explicitly
2653 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,
2654 in case of MULTIPLCITY=true, this is a comma separated
2655 list, that's why character strings are encapsulated into
2656 apostrophes (')
2657 (optionally returned, dependent to driver parameter)
2658 </p>
2659 </blockquote>
2660
2661
2662 <p>RANGE_MIN -
2663 </p>
2664 <blockquote class="text">
2665 <p>defines lower limit of the allowed value range for this
2666 parameter, can be an integer value as well as a dotted
2667 number, this parameter is often used in conjunction
2668 with RANGE_MAX, but may also appear without
2669 (optionally returned, dependent to driver parameter)
2670 </p>
2671 </blockquote>
2672
2673
2674 <p>RANGE_MAX -
2675 </p>
2676 <blockquote class="text">
2677 <p>defines upper limit of the allowed value range for this
2678 parameter, can be an integer value as well as a dotted
2679 number, this parameter is often used in conjunction with
2680 RANGE_MIN, but may also appear without
2681 (optionally returned, dependent to driver parameter)
2682 </p>
2683 </blockquote>
2684
2685
2686 <p>POSSIBILITIES -
2687 </p>
2688 <blockquote class="text">
2689 <p>comma separated list of possible values for this
2690 parameter, character strings are encapsulated into
2691 apostrophes
2692 (optionally returned, dependent to driver parameter)
2693 </p>
2694 </blockquote>
2695
2696
2697 </blockquote><p>
2698
2699 </p>
2700 <p>The mentioned fields above don't have to be in particular order.
2701 </p>
2702 <p>Example:
2703 </p>
2704 <p>
2705 </p>
2706 <blockquote class="text">
2707 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2708 </p>
2709 <p>S: "DESCRIPTION: Whether device is enabled"
2710 </p>
2711 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2712 </p>
2713 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2714 </p>
2715 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2716 </p>
2717 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2718 </p>
2719 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2720 </p>
2721 <p>&nbsp;&nbsp;&nbsp;"."
2722 </p>
2723 </blockquote><p>
2724
2725 </p>
2726 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2727 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2728 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2729 Creating a MIDI input device</h3>
2730
2731 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2732 </p>
2733 <p>
2734 </p>
2735 <blockquote class="text">
2736 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2737 </p>
2738 </blockquote><p>
2739
2740 </p>
2741 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2742 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
2743 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2744 character string values should be encapsulated into apostrophes (').
2745 Note that there might be drivers which require parameter(s) to be
2746 given with this command. Use the previously described commands in
2747 this chapter to get that information.
2748 </p>
2749 <p>Possible Answers:
2750 </p>
2751 <p>
2752 </p>
2753 <blockquote class="text">
2754 <p>"OK[&lt;device-id&gt;]" -
2755 </p>
2756 <blockquote class="text">
2757 <p>in case the device was successfully created, where
2758 &lt;device-id&gt; is the numerical ID of the new device
2759 </p>
2760 </blockquote>
2761
2762
2763 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2764 </p>
2765 <blockquote class="text">
2766 <p>in case the driver was loaded successfully, where
2767 &lt;device-id&gt; is the numerical ID of the new device, but
2768 there are noteworthy issue(s) related, providing an
2769 appropriate warning code and warning message
2770 </p>
2771 </blockquote>
2772
2773
2774 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2775 </p>
2776 <blockquote class="text">
2777 <p>in case it failed, providing an appropriate error code and error message
2778 </p>
2779 </blockquote>
2780
2781
2782 </blockquote><p>
2783
2784 </p>
2785 <p>Example:
2786 </p>
2787 <p>
2788 </p>
2789 <blockquote class="text">
2790 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2791 </p>
2792 <p>S: "OK[0]"
2793 </p>
2794 </blockquote><p>
2795
2796 </p>
2797 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2798 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2799 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2800 Destroying a MIDI input device</h3>
2801
2802 <p>Use the following command to destroy a created MIDI input device:
2803 </p>
2804 <p>
2805 </p>
2806 <blockquote class="text">
2807 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2808 </p>
2809 </blockquote><p>
2810
2811 </p>
2812 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2813 <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>
2814 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>
2815 command.
2816 </p>
2817 <p>Possible Answers:
2818 </p>
2819 <p>
2820 </p>
2821 <blockquote class="text">
2822 <p>"OK" -
2823 </p>
2824 <blockquote class="text">
2825 <p>in case the device was successfully destroyed
2826 </p>
2827 </blockquote>
2828
2829
2830 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2831 </p>
2832 <blockquote class="text">
2833 <p>in case the device was destroyed, but there are noteworthy
2834 issue(s) related, providing an appropriate warning code and
2835 warning message
2836 </p>
2837 </blockquote>
2838
2839
2840 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2841 </p>
2842 <blockquote class="text">
2843 <p>in case it failed, providing an appropriate error code and error message
2844 </p>
2845 </blockquote>
2846
2847
2848 </blockquote><p>
2849
2850 </p>
2851 <p>Example:
2852 </p>
2853 <p>
2854 </p>
2855 <blockquote class="text">
2856 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2857 </p>
2858 <p>S: "OK"
2859 </p>
2860 </blockquote><p>
2861
2862 </p>
2863 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2864 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2865 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2866 Getting all created MIDI input device count</h3>
2867
2868 <p>Use the following command to count all created MIDI input devices:
2869 </p>
2870 <p>
2871 </p>
2872 <blockquote class="text">
2873 <p>GET MIDI_INPUT_DEVICES
2874 </p>
2875 </blockquote><p>
2876
2877 </p>
2878 <p>Possible Answers:
2879 </p>
2880 <p>
2881 </p>
2882 <blockquote class="text">
2883 <p>LinuxSampler will answer by sending the current number of all
2884 MIDI input devices.
2885 </p>
2886 </blockquote><p>
2887
2888 </p>
2889 <p>Example:
2890 </p>
2891 <p>
2892 </p>
2893 <blockquote class="text">
2894 <p>C: "GET MIDI_INPUT_DEVICES"
2895 </p>
2896 <p>S: "3"
2897 </p>
2898 </blockquote><p>
2899
2900 </p>
2901 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2902 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2903 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2904 Getting all created MIDI input device list</h3>
2905
2906 <p>Use the following command to list all created MIDI input devices:
2907 </p>
2908 <p>
2909 </p>
2910 <blockquote class="text">
2911 <p>LIST MIDI_INPUT_DEVICES
2912 </p>
2913 </blockquote><p>
2914
2915 </p>
2916 <p>Possible Answers:
2917 </p>
2918 <p>
2919 </p>
2920 <blockquote class="text">
2921 <p>LinuxSampler will answer by sending a comma separated list
2922 with the numerical Ids of all created MIDI input devices.
2923 </p>
2924 </blockquote><p>
2925
2926 </p>
2927 <p>Examples:
2928 </p>
2929 <p>
2930 </p>
2931 <blockquote class="text">
2932 <p>C: "LIST MIDI_INPUT_DEVICES"
2933 </p>
2934 <p>S: "0,1,2"
2935 </p>
2936 </blockquote><p>
2937
2938 </p>
2939 <p>
2940 </p>
2941 <blockquote class="text">
2942 <p>C: "LIST MIDI_INPUT_DEVICES"
2943 </p>
2944 <p>S: "1,3"
2945 </p>
2946 </blockquote><p>
2947
2948 </p>
2949 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2950 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2951 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2952 Getting current settings of a MIDI input device</h3>
2953
2954 <p>Use the following command to get current settings of a specific, created MIDI input device:
2955 </p>
2956 <p>
2957 </p>
2958 <blockquote class="text">
2959 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2960 </p>
2961 </blockquote><p>
2962
2963 </p>
2964 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2965 <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>
2966 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>
2967 command.
2968 </p>
2969 <p>Possible Answers:
2970 </p>
2971 <p>
2972 </p>
2973 <blockquote class="text">
2974 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2975 Each answer line begins with the information category name
2976 followed by a colon and then a space character &lt;SP&gt; and finally
2977 the info character string to that info category. As some
2978 parameters might allow multiple values, character strings are
2979 encapsulated into apostrophes ('). At the moment the following
2980 information categories are defined (independent of driver):
2981 </p>
2982 <p>
2983 </p>
2984 <blockquote class="text">
2985 <p>DRIVER -
2986 </p>
2987 <blockquote class="text">
2988 <p>identifier of the used MIDI input driver, as e.g.
2989 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>
2990 command
2991 </p>
2992 </blockquote>
2993
2994
2995 </blockquote>
2996
2997 <blockquote class="text">
2998 <p>ACTIVE -
2999 </p>
3000 <blockquote class="text">
3001 <p>either true or false, if false then the MIDI device is
3002 inactive and doesn't listen to any incoming MIDI events
3003 and thus doesn't forward them to connected sampler
3004 channels
3005 </p>
3006 </blockquote>
3007
3008
3009 </blockquote>
3010
3011
3012 </blockquote><p>
3013
3014 </p>
3015 <p>The mentioned fields above don't have to be in particular
3016 order. The fields above are only those fields which are
3017 returned by all MIDI input devices. Every MIDI input driver
3018 might have its own, additional driver specific parameters (see
3019 <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
3020 by this command.
3021 </p>
3022 <p>Example:
3023 </p>
3024 <p>
3025 </p>
3026 <blockquote class="text">
3027 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3028 </p>
3029 <p>S: "DRIVER: ALSA"
3030 </p>
3031 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3032 </p>
3033 <p>&nbsp;&nbsp;&nbsp;"."
3034 </p>
3035 </blockquote><p>
3036
3037 </p>
3038 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3039 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3040 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3041 Changing settings of MIDI input devices</h3>
3042
3043 <p>Use the following command to alter a specific setting of a created MIDI input device:
3044 </p>
3045 <p>
3046 </p>
3047 <blockquote class="text">
3048 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3049 </p>
3050 </blockquote><p>
3051
3052 </p>
3053 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3054 MIDI input device as returned by the
3055 <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>
3056 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>
3057 command, &lt;key&gt; by the name of the parameter to change and
3058 &lt;value&gt; by the new value for this parameter.
3059 </p>
3060 <p>Possible Answers:
3061 </p>
3062 <p>
3063 </p>
3064 <blockquote class="text">
3065 <p>"OK" -
3066 </p>
3067 <blockquote class="text">
3068 <p>in case setting was successfully changed
3069 </p>
3070 </blockquote>
3071
3072
3073 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3074 </p>
3075 <blockquote class="text">
3076 <p>in case setting was changed successfully, but there are
3077 noteworthy issue(s) related, providing an appropriate
3078 warning code and warning message
3079 </p>
3080 </blockquote>
3081
3082
3083 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3084 </p>
3085 <blockquote class="text">
3086 <p>in case it failed, providing an appropriate error code and error message
3087 </p>
3088 </blockquote>
3089
3090
3091 </blockquote><p>
3092
3093 </p>
3094 <p>Example:
3095 </p>
3096 <p>
3097 </p>
3098 <blockquote class="text">
3099 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3100 </p>
3101 <p>S: "OK"
3102 </p>
3103 </blockquote><p>
3104
3105 </p>
3106 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3107 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3108 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3109 Getting information about a MIDI port</h3>
3110
3111 <p>Use the following command to get information about a MIDI port:
3112 </p>
3113 <p>
3114 </p>
3115 <blockquote class="text">
3116 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3117 </p>
3118 </blockquote><p>
3119
3120 </p>
3121 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3122 <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>
3123 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>
3124 command and &lt;midi-port&gt; the MIDI input port number.
3125 </p>
3126 <p>Possible Answers:
3127 </p>
3128 <p>
3129 </p>
3130 <blockquote class="text">
3131 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3132 Each answer line begins with the information category name
3133 followed by a colon and then a space character &lt;SP&gt; and finally
3134 the info character string to that info category. At the moment
3135 the following information categories are defined:
3136 </p>
3137 <p>NAME -
3138 </p>
3139 <blockquote class="text">
3140 <p>arbitrary character string naming the port
3141 </p>
3142 </blockquote>
3143
3144
3145 </blockquote><p>
3146
3147 </p>
3148 <p>The field above is only the one which is returned by all MIDI
3149 ports regardless of the MIDI driver and port. Every MIDI port
3150 might have its own, additional driver and port specific
3151 parameters.
3152 </p>
3153 <p>Example:
3154 </p>
3155 <p>
3156 </p>
3157 <blockquote class="text">
3158 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3159 </p>
3160 <p>S: "NAME: 'Masterkeyboard'"
3161 </p>
3162 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3163 </p>
3164 <p>&nbsp;&nbsp;&nbsp;"."
3165 </p>
3166 </blockquote><p>
3167
3168 </p>
3169 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3170 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3171 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3172 Getting information about specific MIDI port parameter</h3>
3173
3174 <p>Use the following command to get detailed information about specific MIDI port parameter:
3175 </p>
3176 <p>
3177 </p>
3178 <blockquote class="text">
3179 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3180 </p>
3181 </blockquote><p>
3182
3183 </p>
3184 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3185 <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>
3186 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>
3187 command, &lt;port&gt; the MIDI port number and
3188 &lt;param&gt; a specific port parameter name for which information should be
3189 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).
3190 </p>
3191 <p>Possible Answers:
3192 </p>
3193 <p>
3194 </p>
3195 <blockquote class="text">
3196 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3197 Each answer line begins with the information category name
3198 followed by a colon and then a space character &lt;SP&gt; and finally
3199 the info character string to that info category. There is
3200 information which is always returned, independently of the
3201 given channel parameter and there is optional information
3202 which are only shown dependently to the given MIDI port. At the
3203 moment the following information categories are defined:
3204 </p>
3205 <p>TYPE -
3206 </p>
3207 <blockquote class="text">
3208 <p>either "BOOL" for boolean value(s) or "INT" for integer
3209 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3210 character string(s)
3211 (always returned)
3212 </p>
3213 </blockquote>
3214
3215
3216 <p>DESCRIPTION -
3217 </p>
3218 <blockquote class="text">
3219 <p>arbitrary text describing the purpose of the parameter
3220 (always returned)
3221 </p>
3222 </blockquote>
3223
3224
3225 <p>FIX -
3226 </p>
3227 <blockquote class="text">
3228 <p>either true or false, if true then this parameter is
3229 read only, thus cannot be altered
3230 (always returned)
3231 </p>
3232 </blockquote>
3233
3234
3235 <p>MULTIPLICITY -
3236 </p>
3237 <blockquote class="text">
3238 <p>either true or false, defines if this parameter allows
3239 only one value or a list of values, where true means
3240 multiple values and false only a single value allowed
3241 (always returned)
3242 </p>
3243 </blockquote>
3244
3245
3246 <p>RANGE_MIN -
3247 </p>
3248 <blockquote class="text">
3249 <p>defines lower limit of the allowed value range for this
3250 parameter, can be an integer value as well as a dotted
3251 number, this parameter is usually used in conjunction
3252 with 'RANGE_MAX' but may also appear without
3253 (optionally returned, dependent to driver and port
3254 parameter)
3255 </p>
3256 </blockquote>
3257
3258
3259 <p>RANGE_MAX -
3260 </p>
3261 <blockquote class="text">
3262 <p>defines upper limit of the allowed value range for this
3263 parameter, can be an integer value as well as a dotted
3264 number, this parameter is usually used in conjunction
3265 with 'RANGE_MIN' but may also appear without
3266 (optionally returned, dependent to driver and port
3267 parameter)
3268 </p>
3269 </blockquote>
3270
3271
3272 <p>POSSIBILITIES -
3273 </p>
3274 <blockquote class="text">
3275 <p>comma separated list of possible values for this
3276 parameter, character strings are encapsulated into
3277 apostrophes
3278 (optionally returned, dependent to device and port
3279 parameter)
3280 </p>
3281 </blockquote>
3282
3283
3284 </blockquote><p>
3285
3286 </p>
3287 <p>The mentioned fields above don't have to be in particular order.
3288 </p>
3289 <p>Example:
3290 </p>
3291 <p>
3292 </p>
3293 <blockquote class="text">
3294 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3295 </p>
3296 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3297 </p>
3298 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3299 </p>
3300 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3301 </p>
3302 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3303 </p>
3304 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3305 </p>
3306 <p>&nbsp;&nbsp;&nbsp;"."
3307 </p>
3308 </blockquote><p>
3309
3310 </p>
3311 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3312 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3313 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3314 Changing settings of MIDI input ports</h3>
3315
3316 <p>Use the following command to alter a specific setting of a MIDI input port:
3317 </p>
3318 <p>
3319 </p>
3320 <blockquote class="text">
3321 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3322 </p>
3323 </blockquote><p>
3324
3325 </p>
3326 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3327 MIDI device as returned by the
3328 <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>
3329 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>
3330 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3331 the parameter to change and &lt;value&gt; by the new value for this
3332 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3333 for specifying no value for parameters allowing a list of values.
3334 </p>
3335 <p>Possible Answers:
3336 </p>
3337 <p>
3338 </p>
3339 <blockquote class="text">
3340 <p>"OK" -
3341 </p>
3342 <blockquote class="text">
3343 <p>in case setting was successfully changed
3344 </p>
3345 </blockquote>
3346
3347
3348 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3349 </p>
3350 <blockquote class="text">
3351 <p>in case setting was changed successfully, but there are
3352 noteworthy issue(s) related, providing an appropriate
3353 warning code and warning message
3354 </p>
3355 </blockquote>
3356
3357
3358 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3359 </p>
3360 <blockquote class="text">
3361 <p>in case it failed, providing an appropriate error code and error message
3362 </p>
3363 </blockquote>
3364
3365
3366 </blockquote><p>
3367
3368 </p>
3369 <p>Example:
3370 </p>
3371 <p>
3372 </p>
3373 <blockquote class="text">
3374 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3375 </p>
3376 <p>S: "OK"
3377 </p>
3378 </blockquote><p>
3379
3380 </p>
3381 <p>
3382 </p>
3383 <blockquote class="text">
3384 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3385 </p>
3386 <p>S: "OK"
3387 </p>
3388 </blockquote><p>
3389
3390 </p>
3391 <a name="anchor11"></a><br /><hr />
3392 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3393 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3394 Configuring sampler channels</h3>
3395
3396 <p>The following commands describe how to add and remove sampler channels, associate a
3397 sampler channel with a sampler engine, load instruments and connect sampler channels to
3398 MIDI and audio devices.
3399 </p>
3400 <a name="LOAD INSTRUMENT"></a><br /><hr />
3401 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3402 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3403 Loading an instrument</h3>
3404
3405 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3406 </p>
3407 <p>
3408 </p>
3409 <blockquote class="text">
3410 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3411 </p>
3412 </blockquote><p>
3413
3414 </p>
3415 <p>Where &lt;filename&gt; is the name of the instrument file on the
3416 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3417 instrument in the instrument file and &lt;sampler-channel> is the
3418 number of the sampler channel the instrument should be assigned to.
3419 Each sampler channel can only have one instrument.
3420 </p>
3421 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3422 escape characters for special characters (see chapter
3423 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"
3424 for details) and accordingly backslash characters in the filename
3425 MUST now be escaped as well!
3426 </p>
3427 <p>The difference between regular and NON_MODAL versions of the command
3428 is that the regular command returns OK only after the instrument has been
3429 fully loaded and the channel is ready to be used while NON_MODAL version
3430 returns immediately and a background process is launched to load the instrument
3431 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>
3432 command can be used to obtain loading
3433 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3434 such as making sure that the file could be read and it is of a proper format
3435 and SHOULD return ERR and SHOULD not launch the background process should any
3436 errors be detected at that point.
3437 </p>
3438 <p>Possible Answers:
3439 </p>
3440 <p>
3441 </p>
3442 <blockquote class="text">
3443 <p>"OK" -
3444 </p>
3445 <blockquote class="text">
3446 <p>in case the instrument was successfully loaded
3447 </p>
3448 </blockquote>
3449
3450
3451 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3452 </p>
3453 <blockquote class="text">
3454 <p>in case the instrument was loaded successfully, but there
3455 are noteworthy issue(s) related (e.g. Engine doesn't support
3456 one or more patch parameters provided by the loaded
3457 instrument file), providing an appropriate warning code and
3458 warning message
3459 </p>
3460 </blockquote>
3461
3462
3463 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3464 </p>
3465 <blockquote class="text">
3466 <p>in case it failed, providing an appropriate error code and error message
3467 </p>
3468 </blockquote>
3469
3470
3471 </blockquote><p>
3472
3473 </p>
3474 <p>Example (Unix):
3475 </p>
3476 <p>
3477 </p>
3478 <blockquote class="text">
3479 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3480 </p>
3481 <p>S: OK
3482 </p>
3483 </blockquote><p>
3484
3485 </p>
3486 <p>Example (Windows):
3487 </p>
3488 <p>
3489 </p>
3490 <blockquote class="text">
3491 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3492 </p>
3493 <p>S: OK
3494 </p>
3495 </blockquote><p>
3496
3497 </p>
3498 <a name="LOAD ENGINE"></a><br /><hr />
3499 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3500 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3501 Loading a sampler engine</h3>
3502
3503 <p>A sampler engine type can be associated to a specific sampler
3504 channel by the following command:
3505 </p>
3506 <p>
3507 </p>
3508 <blockquote class="text">
3509 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3510 </p>
3511 </blockquote><p>
3512
3513 </p>
3514 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3515 <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;
3516 the sampler channel as returned by the
3517 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3518 <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
3519 the engine type should be assigned to. This command should be issued
3520 after adding a new sampler channel and before any other control
3521 commands on the new sampler channel. It can also be used to change
3522 the engine type of a sampler channel. This command has (currently) no
3523 way to define or force if a new engine instance should be created and
3524 assigned to the given sampler channel or if an already existing
3525 instance of that engine type, shared with other sampler channels,
3526 should be used.
3527 </p>
3528 <p>Possible Answers:
3529 </p>
3530 <p>
3531 </p>
3532 <blockquote class="text">
3533 <p>"OK" -
3534 </p>
3535 <blockquote class="text">
3536 <p>in case the engine was successfully deployed
3537 </p>
3538 </blockquote>
3539
3540
3541 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3542 </p>
3543 <blockquote class="text">
3544 <p>in case the engine was deployed successfully, but there
3545 are noteworthy issue(s) related, providing an appropriate
3546 warning code and warning message
3547 </p>
3548 </blockquote>
3549
3550
3551 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3552 </p>
3553 <blockquote class="text">
3554 <p>in case it failed, providing an appropriate error code and
3555 error message
3556 </p>
3557 </blockquote>
3558
3559
3560 </blockquote><p>
3561
3562 </p>
3563 <p>Example:
3564 </p>
3565 <p>
3566 </p>
3567 <blockquote class="text">
3568 <p>
3569 </p>
3570 </blockquote><p>
3571
3572 </p>
3573 <a name="GET CHANNELS"></a><br /><hr />
3574 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3575 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3576 Getting all created sampler channel count</h3>
3577
3578 <p>The number of sampler channels can change on runtime. To get the
3579 current amount of sampler channels, the front-end can send the
3580 following command:
3581 </p>
3582 <p>
3583 </p>
3584 <blockquote class="text">
3585 <p>GET CHANNELS
3586 </p>
3587 </blockquote><p>
3588
3589 </p>
3590 <p>Possible Answers:
3591 </p>
3592 <p>
3593 </p>
3594 <blockquote class="text">
3595 <p>LinuxSampler will answer by returning the current number of sampler channels.
3596 </p>
3597 </blockquote><p>
3598
3599 </p>
3600 <p>Example:
3601 </p>
3602 <p>
3603 </p>
3604 <blockquote class="text">
3605 <p>C: "GET CHANNELS"
3606 </p>
3607 <p>S: "12"
3608 </p>
3609 </blockquote><p>
3610
3611 </p>
3612 <a name="LIST CHANNELS"></a><br /><hr />
3613 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3614 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3615 Getting all created sampler channel list</h3>
3616
3617 <p>The number of sampler channels can change on runtime. To get the
3618 current list of sampler channels, the front-end can send the
3619 following command:
3620 </p>
3621 <p>
3622 </p>
3623 <blockquote class="text">
3624 <p>LIST CHANNELS
3625 </p>
3626 </blockquote><p>
3627
3628 </p>
3629 <p>Possible Answers:
3630 </p>
3631 <p>
3632 </p>
3633 <blockquote class="text">
3634 <p>LinuxSampler will answer by returning a comma separated list
3635 with all sampler channels numerical IDs.
3636 </p>
3637 </blockquote><p>
3638
3639 </p>
3640 <p>Example:
3641 </p>
3642 <p>
3643 </p>
3644 <blockquote class="text">
3645 <p>C: "LIST CHANNELS"
3646 </p>
3647 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3648 </p>
3649 </blockquote><p>
3650
3651 </p>
3652 <a name="ADD CHANNEL"></a><br /><hr />
3653 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3654 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3655 Adding a new sampler channel</h3>
3656
3657 <p>A new sampler channel can be added to the end of the sampler
3658 channel list by sending the following command:
3659 </p>
3660 <p>
3661 </p>
3662 <blockquote class="text">
3663 <p>ADD CHANNEL
3664 </p>
3665 </blockquote><p>
3666
3667 </p>
3668 <p>This will increment the sampler channel count by one and the new
3669 sampler channel will be appended to the end of the sampler channel
3670 list. The front-end should send the respective, related commands
3671 right after to e.g. load an engine, load an instrument and setting
3672 input, output method and eventually other commands to initialize
3673 the new channel. The front-end should use the sampler channel
3674 returned by the answer of this command to perform the previously
3675 recommended commands, to avoid race conditions e.g. with other
3676 front-ends that might also have sent an "ADD CHANNEL" command.
3677 </p>
3678 <p>Possible Answers:
3679 </p>
3680 <p>
3681 </p>
3682 <blockquote class="text">
3683 <p>"OK[&lt;sampler-channel&gt;]" -
3684 </p>
3685 <blockquote class="text">
3686 <p>in case a new sampler channel could be added, where
3687 &lt;sampler-channel&gt; reflects the channel number of the new
3688 created sampler channel which should be used to set up
3689 the sampler channel by sending subsequent initialization
3690 commands
3691 </p>
3692 </blockquote>
3693
3694
3695 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3696 </p>
3697 <blockquote class="text">
3698 <p>in case a new channel was added successfully, but there are
3699 noteworthy issue(s) related, providing an appropriate
3700 warning code and warning message
3701 </p>
3702 </blockquote>
3703
3704
3705 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3706 </p>
3707 <blockquote class="text">
3708 <p>in case it failed, providing an appropriate error code and
3709 error message
3710 </p>
3711 </blockquote>
3712
3713
3714 </blockquote><p>
3715
3716 </p>
3717 <p>Example:
3718 </p>
3719 <p>
3720 </p>
3721 <blockquote class="text">
3722 <p>
3723 </p>
3724 </blockquote><p>
3725
3726 </p>
3727 <a name="REMOVE CHANNEL"></a><br /><hr />
3728 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3729 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3730 Removing a sampler channel</h3>
3731
3732 <p>A sampler channel can be removed by sending the following command:
3733 </p>
3734 <p>
3735 </p>
3736 <blockquote class="text">
3737 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3738 </p>
3739 </blockquote><p>
3740
3741 </p>
3742 <p>Where &lt;sampler-channel&gt; should be replaced by the
3743 number of the sampler channel as given by the
3744 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3745 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3746 command. The channel numbers of all subsequent sampler channels
3747 remain the same.
3748 </p>
3749 <p>Possible Answers:
3750 </p>
3751 <p>
3752 </p>
3753 <blockquote class="text">
3754 <p>"OK" -
3755 </p>
3756 <blockquote class="text">
3757 <p>in case the given sampler channel could be removed
3758 </p>
3759 </blockquote>
3760
3761
3762 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3763 </p>
3764 <blockquote class="text">
3765 <p>in case the given channel was removed, but there are
3766 noteworthy issue(s) related, providing an appropriate
3767 warning code and warning message
3768 </p>
3769 </blockquote>
3770
3771
3772 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3773 </p>
3774 <blockquote class="text">
3775 <p>in case it failed, providing an appropriate error code and
3776 error message
3777 </p>
3778 </blockquote>
3779
3780
3781 </blockquote><p>
3782
3783 </p>
3784 <p>Example:
3785 </p>
3786 <p>
3787 </p>
3788 <blockquote class="text">
3789 <p>
3790 </p>
3791 </blockquote><p>
3792
3793 </p>
3794 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3795 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3796 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3797 Getting amount of available engines</h3>
3798
3799 <p>The front-end can ask for the number of available engines by sending the following command:
3800 </p>
3801 <p>
3802 </p>
3803 <blockquote class="text">
3804 <p>GET AVAILABLE_ENGINES
3805 </p>
3806 </blockquote><p>
3807
3808 </p>
3809 <p>Possible Answers:
3810 </p>
3811 <p>
3812 </p>
3813 <blockquote class="text">
3814 <p>LinuxSampler will answer by sending the number of available engines.
3815 </p>
3816 </blockquote><p>
3817
3818 </p>
3819 <p>Example:
3820 </p>
3821 <p>
3822 </p>
3823 <blockquote class="text">
3824 <p>C: "GET AVAILABLE_ENGINES"
3825 </p>
3826 <p>S: "4"
3827 </p>
3828 </blockquote><p>
3829
3830 </p>
3831 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3832 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3833 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3834 Getting all available engines</h3>
3835
3836 <p>The front-end can ask for a list of all available engines by sending the following command:
3837 </p>
3838 <p>
3839 </p>
3840 <blockquote class="text">
3841 <p>LIST AVAILABLE_ENGINES
3842 </p>
3843 </blockquote><p>
3844
3845 </p>
3846 <p>Possible Answers:
3847 </p>
3848 <p>
3849 </p>
3850 <blockquote class="text">
3851 <p>LinuxSampler will answer by sending a comma separated list
3852 of the engines' names encapsulated into apostrophes (').
3853 Engine names can consist of lower and upper cases,
3854 digits and underlines ("_" character).
3855 </p>
3856 </blockquote><p>
3857
3858 </p>
3859 <p>Example:
3860 </p>
3861 <p>
3862 </p>
3863 <blockquote class="text">
3864 <p>C: "LIST AVAILABLE_ENGINES"
3865 </p>
3866 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3867 </p>
3868 </blockquote><p>
3869
3870 </p>
3871 <a name="GET ENGINE INFO"></a><br /><hr />
3872 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3873 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3874 Getting information about an engine</h3>
3875
3876 <p>The front-end can ask for information about a specific engine by
3877 sending the following command:
3878 </p>
3879 <p>
3880 </p>
3881 <blockquote class="text">
3882 <p>GET ENGINE INFO &lt;engine-name&gt;
3883 </p>
3884 </blockquote><p>
3885
3886 </p>
3887 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3888 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3889 </p>
3890 <p>Possible Answers:
3891 </p>
3892 <p>
3893 </p>
3894 <blockquote class="text">
3895 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3896 Each answer line begins with the information category name
3897 followed by a colon and then a space character &lt;SP&gt; and finally
3898 the info character string to that info category. At the moment
3899 the following categories are defined:
3900 </p>
3901 <p>
3902 </p>
3903 <blockquote class="text">
3904 <p>DESCRIPTION -
3905 </p>
3906 <blockquote class="text">
3907 <p>arbitrary description text about the engine
3908 (note that the character string may contain
3909 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3910 </p>
3911 </blockquote>
3912
3913
3914 <p>VERSION -
3915 </p>
3916 <blockquote class="text">
3917 <p>arbitrary character string regarding the engine's version
3918 </p>
3919 </blockquote>
3920
3921
3922 </blockquote>
3923
3924
3925 </blockquote><p>
3926
3927 </p>
3928 <p>The mentioned fields above don't have to be in particular order.
3929 </p>
3930 <p>Example:
3931 </p>
3932 <p>
3933 </p>
3934 <blockquote class="text">
3935 <p>C: "GET ENGINE INFO JoesCustomEngine"
3936 </p>
3937 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3938 </p>
3939 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3940 </p>
3941 <p>&nbsp;&nbsp;&nbsp;"."
3942 </p>
3943 </blockquote><p>
3944
3945 </p>
3946 <a name="GET CHANNEL INFO"></a><br /><hr />
3947 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3948 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3949 Getting sampler channel information</h3>
3950
3951 <p>The front-end can ask for the current settings of a sampler channel
3952 by sending the following command:
3953 </p>
3954 <p>
3955 </p>
3956 <blockquote class="text">
3957 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3958 </p>
3959 </blockquote><p>
3960
3961 </p>
3962 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3963 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>
3964 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.
3965 </p>
3966 <p>Possible Answers:
3967 </p>
3968 <p>
3969 </p>
3970 <blockquote class="text">
3971 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3972 Each answer line begins with the settings category name
3973 followed by a colon and then a space character &lt;SP&gt; and finally
3974 the info character string to that setting category. At the
3975 moment the following categories are defined:
3976 </p>
3977 <p>
3978 </p>
3979 <blockquote class="text">
3980 <p>ENGINE_NAME -
3981 </p>
3982 <blockquote class="text">
3983 <p>name of the engine that is associated with the sampler
3984 channel, "NONE" if there's no engine associated yet for
3985 this sampler channel
3986 </p>
3987 </blockquote>
3988
3989
3990 <p>AUDIO_OUTPUT_DEVICE -
3991 </p>
3992 <blockquote class="text">
3993 <p>numerical ID of the audio output device which is
3994 currently connected to this sampler channel to output
3995 the audio signal, "NONE" if there's no device
3996 connected to this sampler channel
3997 </p>
3998 </blockquote>
3999
4000
4001 <p>AUDIO_OUTPUT_CHANNELS -
4002 </p>
4003 <blockquote class="text">
4004 <p>number of output channels the sampler channel offers
4005 (dependent to used sampler engine and loaded instrument)
4006 </p>
4007 </blockquote>
4008
4009
4010 <p>AUDIO_OUTPUT_ROUTING -
4011 </p>
4012 <blockquote class="text">
4013 <p>comma separated list which reflects to which audio
4014 channel of the selected audio output device each
4015 sampler output channel is routed to, e.g. "0,3" would
4016 mean the engine's output channel 0 is routed to channel
4017 0 of the audio output device and the engine's output
4018 channel 1 is routed to the channel 3 of the audio
4019 output device
4020 </p>
4021 </blockquote>
4022
4023
4024 <p>INSTRUMENT_FILE -
4025 </p>
4026 <blockquote class="text">
4027 <p>the file name of the loaded instrument, "NONE" if
4028 there's no instrument yet loaded for this sampler
4029 channel (note: since LSCP 1.2 this path may contain
4030 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4031 </p>
4032 </blockquote>
4033
4034
4035 <p>INSTRUMENT_NR -
4036 </p>
4037 <blockquote class="text">
4038 <p>the instrument index number of the loaded instrument
4039 </p>
4040 </blockquote>
4041
4042
4043 <p>INSTRUMENT_NAME -
4044 </p>
4045 <blockquote class="text">
4046 <p>the instrument name of the loaded instrument
4047 (note: since LSCP 1.2 this character string may contain
4048 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4049 </p>
4050 </blockquote>
4051
4052
4053 <p>INSTRUMENT_STATUS -
4054 </p>
4055 <blockquote class="text">
4056 <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4057 value indicates a loading exception. Value of 100 indicates that the instrument is fully
4058 loaded.
4059 </p>
4060 </blockquote>
4061
4062
4063 <p>MIDI_INPUT_DEVICE -
4064 </p>
4065 <blockquote class="text">
4066 <p>numerical ID of the MIDI input device which is
4067 currently connected to this sampler channel to deliver
4068 MIDI input commands, "NONE" if there's no device
4069 connected to this sampler channel
4070 </p>
4071 </blockquote>
4072
4073
4074 <p>MIDI_INPUT_PORT -
4075 </p>
4076 <blockquote class="text">
4077 <p>port number of the MIDI input device
4078 </p>
4079 </blockquote>
4080
4081
4082 <p>MIDI_INPUT_CHANNEL -
4083 </p>
4084 <blockquote class="text">
4085 <p>the MIDI input channel number this sampler channel
4086 should listen to or "ALL" to listen on all MIDI channels
4087 </p>
4088 </blockquote>
4089
4090
4091 <p>VOLUME -
4092 </p>
4093 <blockquote class="text">
4094 <p>optionally dotted number for the channel volume factor
4095 (where a value &lt; 1.0 means attenuation and a value >
4096 1.0 means amplification)
4097 </p>
4098 </blockquote>
4099
4100
4101 <p>MUTE -
4102 </p>
4103 <blockquote class="text">
4104 <p>Determines whether the channel is muted, "true" if the
4105 channel is muted, "false" if the channel is not muted, and
4106 "MUTED_BY_SOLO" if the channel is muted because of the
4107 presence of a solo channel and will be unmuted when
4108 there are no solo channels left
4109 </p>
4110 </blockquote>
4111
4112
4113 <p>SOLO -
4114 </p>
4115 <blockquote class="text">
4116 <p>Determines whether this is a solo channel, "true" if
4117 the channel is a solo channel; "false" otherwise
4118 </p>
4119 </blockquote>
4120
4121
4122 <p>MIDI_INSTRUMENT_MAP -
4123 </p>
4124 <blockquote class="text">
4125 <p>Determines to which MIDI instrument map this sampler
4126 channel is assigned to. Read chapter
4127 <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>
4128 for a list of possible values.
4129 </p>
4130 </blockquote>
4131
4132
4133 </blockquote>
4134
4135
4136 </blockquote><p>
4137
4138 </p>
4139 <p>The mentioned fields above don't have to be in particular order.
4140 </p>
4141 <p>Example:
4142 </p>
4143 <p>
4144 </p>
4145 <blockquote class="text">
4146 <p>C: "GET CHANNEL INFO 34"
4147 </p>
4148 <p>S: "ENGINE_NAME: GigEngine"
4149 </p>
4150 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4151 </p>
4152 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4153 </p>
4154 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4155 </p>
4156 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4157 </p>
4158 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4159 </p>
4160 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4161 </p>
4162 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4163 </p>
4164 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4165 </p>
4166 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4167 </p>
4168 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4169 </p>
4170 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4171 </p>
4172 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4173 </p>
4174 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4175 </p>
4176 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4177 </p>
4178 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4179 </p>
4180 <p>&nbsp;&nbsp;&nbsp;"."
4181 </p>
4182 </blockquote><p>
4183
4184 </p>
4185 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4186 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4187 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4188 Current number of active voices</h3>
4189
4190 <p>The front-end can ask for the current number of active voices on a
4191 sampler channel by sending the following command:
4192 </p>
4193 <p>
4194 </p>
4195 <blockquote class="text">
4196 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4197 </p>
4198 </blockquote><p>
4199
4200 </p>
4201 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4202 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>
4203 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.
4204 </p>
4205 <p>Possible Answers:
4206 </p>
4207 <p>
4208 </p>
4209 <blockquote class="text">
4210 <p>LinuxSampler will answer by returning the number of active
4211 voices on that channel.
4212 </p>
4213 </blockquote><p>
4214
4215 </p>
4216 <p>Example:
4217 </p>
4218 <p>
4219 </p>
4220 <blockquote class="text">
4221 <p>
4222 </p>
4223 </blockquote><p>
4224
4225 </p>
4226 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4227 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4228 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4229 Current number of active disk streams</h3>
4230
4231 <p>The front-end can ask for the current number of active disk streams
4232 on a sampler channel by sending the following command:
4233 </p>
4234 <p>
4235 </p>
4236 <blockquote class="text">
4237 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4238 </p>
4239 </blockquote><p>
4240
4241 </p>
4242 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4243 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>
4244 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.
4245 </p>
4246 <p>Possible Answers:
4247 </p>
4248 <p>
4249 </p>
4250 <blockquote class="text">
4251 <p>LinuxSampler will answer by returning the number of active
4252 disk streams on that channel in case the engine supports disk
4253 streaming, if the engine doesn't support disk streaming it will
4254 return "NA" for not available.
4255 </p>
4256 </blockquote><p>
4257
4258 </p>
4259 <p>Example:
4260 </p>
4261 <p>
4262 </p>
4263 <blockquote class="text">
4264 <p>
4265 </p>
4266 </blockquote><p>
4267
4268 </p>
4269 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4270 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4271 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4272 Current fill state of disk stream buffers</h3>
4273
4274 <p>The front-end can ask for the current fill state of all disk streams
4275 on a sampler channel by sending the following command:
4276 </p>
4277 <p>
4278 </p>
4279 <blockquote class="text">
4280 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4281 </p>
4282 </blockquote><p>
4283
4284 </p>
4285 <p>to get the fill state in bytes or
4286 </p>
4287 <p>
4288 </p>
4289 <blockquote class="text">
4290 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4291 </p>
4292 </blockquote><p>
4293
4294 </p>
4295 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4296 sampler channel number the front-end is interested in
4297 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>
4298 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.
4299 </p>
4300 <p>Possible Answers:
4301 </p>
4302 <p>
4303 </p>
4304 <blockquote class="text">
4305 <p>LinuxSampler will either answer by returning a comma separated
4306 string with the fill state of all disk stream buffers on that
4307 channel or an empty line if there are no active disk streams or
4308 "NA" for *not available* in case the engine which is deployed
4309 doesn't support disk streaming. Each entry in the answer list
4310 will begin with the stream's ID in brackets followed by the
4311 numerical representation of the fill size (either in bytes or
4312 percentage). Note: due to efficiency reasons the fill states in
4313 the response are not in particular order, thus the front-end has
4314 to sort them by itself if necessary.
4315 </p>
4316 </blockquote><p>
4317
4318 </p>
4319 <p>Examples:
4320 </p>
4321 <p>
4322 </p>
4323 <blockquote class="text">
4324 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4325 </p>
4326 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4327 </p>
4328 </blockquote><p>
4329
4330 </p>
4331 <blockquote class="text">
4332 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4333 </p>
4334 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4335 </p>
4336 </blockquote><p>
4337
4338 </p>
4339 <blockquote class="text">
4340 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4341 </p>
4342 <p>S: ""
4343 </p>
4344 </blockquote><p>
4345
4346 </p>
4347 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4348 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4349 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4350 Setting audio output device</h3>
4351
4352 <p>The front-end can set the audio output device on a specific sampler
4353 channel by sending the following command:
4354 </p>
4355 <p>
4356 </p>
4357 <blockquote class="text">
4358 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4359 </p>
4360 </blockquote><p>
4361
4362 </p>
4363 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4364 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>
4365 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
4366 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4367 <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>
4368 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>
4369 command.
4370 </p>
4371 <p>Possible Answers:
4372 </p>
4373 <p>
4374 </p>
4375 <blockquote class="text">
4376 <p>"OK" -
4377 </p>
4378 <blockquote class="text">
4379 <p>on success
4380 </p>
4381 </blockquote>
4382
4383
4384 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4385 </p>
4386 <blockquote class="text">
4387 <p>if audio output device was set, but there are noteworthy
4388 issue(s) related, providing an appropriate warning code and
4389 warning message
4390 </p>
4391 </blockquote>
4392
4393
4394 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4395 </p>
4396 <blockquote class="text">
4397 <p>in case it failed, providing an appropriate error code and error message
4398 </p>
4399 </blockquote>
4400
4401
4402 </blockquote><p>
4403
4404 </p>
4405 <p>Examples:
4406 </p>
4407 <p>
4408 </p>
4409 <blockquote class="text">
4410 <p>
4411 </p>
4412 </blockquote><p>
4413
4414 </p>
4415 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4416 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4417 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4418 Setting audio output type</h3>
4419
4420 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4421 </p>
4422 <p>The front-end can alter the audio output type on a specific sampler
4423 channel by sending the following command:
4424 </p>
4425 <p>
4426 </p>
4427 <blockquote class="text">
4428 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4429 </p>
4430 </blockquote><p>
4431
4432 </p>
4433 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4434 &lt;sampler-channel&gt; is the respective sampler channel number.
4435 </p>
4436 <p>Possible Answers:
4437 </p>
4438 <p>
4439 </p>
4440 <blockquote class="text">
4441 <p>"OK" -
4442 </p>
4443 <blockquote class="text">
4444 <p>on success
4445 </p>
4446 </blockquote>
4447
4448
4449 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4450 </p>
4451 <blockquote class="text">
4452 <p>if audio output type was set, but there are noteworthy
4453 issue(s) related, providing an appropriate warning code and
4454 warning message
4455 </p>
4456 </blockquote>
4457
4458
4459 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4460 </p>
4461 <blockquote class="text">
4462 <p>in case it failed, providing an appropriate error code and error message
4463 </p>
4464 </blockquote>
4465
4466
4467 </blockquote><p>
4468
4469 </p>
4470 <p>Examples:
4471 </p>
4472 <p>
4473 </p>
4474 <blockquote class="text">
4475 <p>
4476 </p>
4477 </blockquote><p>
4478
4479 </p>
4480 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4481 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4482 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4483 Setting audio output channel</h3>
4484
4485 <p>The front-end can alter the audio output channel on a specific
4486 sampler channel by sending the following command:
4487 </p>
4488 <p>
4489 </p>
4490 <blockquote class="text">
4491 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4492 </p>
4493 </blockquote><p>
4494
4495 </p>
4496 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4497 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>
4498 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
4499 numerical ID of the sampler channel's audio output channel which should be
4500 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4501 output device where &lt;audio-out&gt; should be routed to.
4502 </p>
4503 <p>Possible Answers:
4504 </p>
4505 <p>
4506 </p>
4507 <blockquote class="text">
4508 <p>"OK" -
4509 </p>
4510 <blockquote class="text">
4511 <p>on success
4512 </p>
4513 </blockquote>
4514
4515
4516 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4517 </p>
4518 <blockquote class="text">
4519 <p>if audio output channel was set, but there are noteworthy
4520 issue(s) related, providing an appropriate warning code and
4521 warning message
4522 </p>
4523 </blockquote>
4524
4525
4526 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4527 </p>
4528 <blockquote class="text">
4529 <p>in case it failed, providing an appropriate error code and error message
4530 </p>
4531 </blockquote>
4532
4533
4534 </blockquote><p>
4535
4536 </p>
4537 <p>Examples:
4538 </p>
4539 <p>
4540 </p>
4541 <blockquote class="text">
4542 <p>
4543 </p>
4544 </blockquote><p>
4545
4546 </p>
4547 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4548 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4549 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4550 Setting MIDI input device</h3>
4551
4552 <p>The front-end can set the MIDI input device on a specific sampler
4553 channel by sending the following command:
4554 </p>
4555 <p>
4556 </p>
4557 <blockquote class="text">
4558 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4559 </p>
4560 </blockquote><p>
4561
4562 </p>
4563 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4564 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>
4565 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
4566 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4567 <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>
4568 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.
4569 </p>
4570 <p>Possible Answers:
4571 </p>
4572 <p>
4573 </p>
4574 <blockquote class="text">
4575 <p>"OK" -
4576 </p>
4577 <blockquote class="text">
4578 <p>on success
4579 </p>
4580 </blockquote>
4581
4582
4583 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4584 </p>
4585 <blockquote class="text">
4586 <p>if MIDI input device was set, but there are noteworthy
4587 issue(s) related, providing an appropriate warning code and
4588 warning message
4589 </p>
4590 </blockquote>
4591
4592
4593 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4594 </p>
4595 <blockquote class="text">
4596 <p>in case it failed, providing an appropriate error code and error message
4597 </p>
4598 </blockquote>
4599
4600
4601 </blockquote><p>
4602
4603 </p>
4604 <p>Examples:
4605 </p>
4606 <p>
4607 </p>
4608 <blockquote class="text">
4609 <p>
4610 </p>
4611 </blockquote><p>
4612
4613 </p>
4614 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4615 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4616 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4617 Setting MIDI input type</h3>
4618
4619 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4620 </p>
4621 <p>The front-end can alter the MIDI input type on a specific sampler
4622 channel by sending the following command:
4623 </p>
4624 <p>
4625 </p>
4626 <blockquote class="text">
4627 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4628 </p>
4629 </blockquote><p>
4630
4631 </p>
4632 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4633 &lt;sampler-channel&gt; is the respective sampler channel number.
4634 </p>
4635 <p>Possible Answers:
4636 </p>
4637 <p>
4638 </p>
4639 <blockquote class="text">
4640 <p>"OK" -
4641 </p>
4642 <blockquote class="text">
4643 <p>on success
4644 </p>
4645 </blockquote>
4646
4647
4648 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4649 </p>
4650 <blockquote class="text">
4651 <p>if MIDI input type was set, but there are noteworthy
4652 issue(s) related, providing an appropriate warning code and
4653 warning message
4654 </p>
4655 </blockquote>
4656
4657
4658 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4659 </p>
4660 <blockquote class="text">
4661 <p>in case it failed, providing an appropriate error code and error message
4662 </p>
4663 </blockquote>
4664
4665
4666 </blockquote><p>
4667
4668 </p>
4669 <p>Examples:
4670 </p>
4671 <p>
4672 </p>
4673 <blockquote class="text">
4674 <p>
4675 </p>
4676 </blockquote><p>
4677
4678 </p>
4679 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4680 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4681 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4682 Setting MIDI input port</h3>
4683
4684 <p>The front-end can alter the MIDI input port on a specific sampler
4685 channel by sending the following command:
4686 </p>
4687 <p>
4688 </p>
4689 <blockquote class="text">
4690 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4691 </p>
4692 </blockquote><p>
4693
4694 </p>
4695 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4696 MIDI input device connected to the sampler channel given by
4697 &lt;sampler-channel&gt;.
4698 </p>
4699 <p>Possible Answers:
4700 </p>
4701 <p>
4702 </p>
4703 <blockquote class="text">
4704 <p>"OK" -
4705 </p>
4706 <blockquote class="text">
4707 <p>on success
4708 </p>
4709 </blockquote>
4710
4711
4712 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4713 </p>
4714 <blockquote class="text">
4715 <p>if MIDI input port was set, but there are noteworthy
4716 issue(s) related, providing an appropriate warning code and
4717 warning message
4718 </p>
4719 </blockquote>
4720
4721
4722 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4723 </p>
4724 <blockquote class="text">
4725 <p>in case it failed, providing an appropriate error code and error message
4726 </p>
4727 </blockquote>
4728
4729
4730 </blockquote><p>
4731
4732 </p>
4733 <p>Examples:
4734 </p>
4735 <p>
4736 </p>
4737 <blockquote class="text">
4738 <p>
4739 </p>
4740 </blockquote><p>
4741
4742 </p>
4743 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4744 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4745 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4746 Setting MIDI input channel</h3>
4747
4748 <p>The front-end can alter the MIDI channel a sampler channel should
4749 listen to by sending the following command:
4750 </p>
4751 <p>
4752 </p>
4753 <blockquote class="text">
4754 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4755 </p>
4756 </blockquote><p>
4757
4758 </p>
4759 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4760 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4761 channels.
4762 </p>
4763 <p>Possible Answers:
4764 </p>
4765 <p>
4766 </p>
4767 <blockquote class="text">
4768 <p>"OK" -
4769 </p>
4770 <blockquote class="text">
4771 <p>on success
4772 </p>
4773 </blockquote>
4774
4775
4776 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4777 </p>
4778 <blockquote class="text">
4779 <p>if MIDI input channel was set, but there are noteworthy
4780 issue(s) related, providing an appropriate warning code and
4781 warning message
4782 </p>
4783 </blockquote>
4784
4785
4786 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4787 </p>
4788 <blockquote class="text">
4789 <p>in case it failed, providing an appropriate error code and error message
4790 </p>
4791 </blockquote>
4792
4793
4794 </blockquote><p>
4795
4796 </p>
4797 <p>Examples:
4798 </p>
4799 <p>
4800 </p>
4801 <blockquote class="text">
4802 <p>
4803 </p>
4804 </blockquote><p>
4805
4806 </p>
4807 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4808 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4809 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4810 Setting channel volume</h3>
4811
4812 <p>The front-end can alter the volume of a sampler channel by sending
4813 the following command:
4814 </p>
4815 <p>
4816 </p>
4817 <blockquote class="text">
4818 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4819 </p>
4820 </blockquote><p>
4821
4822 </p>
4823 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4824 smaller than 1.0 means attenuation, whereas a value greater than
4825 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4826 channel where this volume factor should be set.
4827 </p>
4828 <p>Possible Answers:
4829 </p>
4830 <p>
4831 </p>
4832 <blockquote class="text">
4833 <p>"OK" -
4834 </p>
4835 <blockquote class="text">
4836 <p>on success
4837 </p>
4838 </blockquote>
4839
4840
4841 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4842 </p>
4843 <blockquote class="text">
4844 <p>if channel volume was set, but there are noteworthy
4845 issue(s) related, providing an appropriate warning code and
4846 warning message
4847 </p>
4848 </blockquote>
4849
4850
4851 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4852 </p>
4853 <blockquote class="text">
4854 <p>in case it failed, providing an appropriate error code and error message
4855 </p>
4856 </blockquote>
4857
4858
4859 </blockquote><p>
4860
4861 </p>
4862 <p>Examples:
4863 </p>
4864 <p>
4865 </p>
4866 <blockquote class="text">
4867 <p>
4868 </p>
4869 </blockquote><p>
4870
4871 </p>
4872 <a name="SET CHANNEL MUTE"></a><br /><hr />
4873 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4874 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4875 Muting a sampler channel</h3>
4876
4877 <p>The front-end can mute/unmute a specific sampler
4878 channel by sending the following command:
4879 </p>
4880 <p>
4881 </p>
4882 <blockquote class="text">
4883 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4884 </p>
4885 </blockquote><p>
4886
4887 </p>
4888 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4889 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>
4890 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
4891 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4892 to unmute the channel.
4893 </p>
4894 <p>Possible Answers:
4895 </p>
4896 <p>
4897 </p>
4898 <blockquote class="text">
4899 <p>"OK" -
4900 </p>
4901 <blockquote class="text">
4902 <p>on success
4903 </p>
4904 </blockquote>
4905
4906
4907 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4908 </p>
4909 <blockquote class="text">
4910 <p>if the channel was muted/unmuted, but there are noteworthy
4911 issue(s) related, providing an appropriate warning code and
4912 warning message
4913 </p>
4914 </blockquote>
4915
4916
4917 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4918 </p>
4919 <blockquote class="text">
4920 <p>in case it failed, providing an appropriate error code and error message
4921 </p>
4922 </blockquote>
4923
4924
4925 </blockquote><p>
4926
4927 </p>
4928 <p>Examples:
4929 </p>
4930 <p>
4931 </p>
4932 <blockquote class="text">
4933 <p>
4934 </p>
4935 </blockquote><p>
4936
4937 </p>
4938 <a name="SET CHANNEL SOLO"></a><br /><hr />
4939 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4940 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4941 Soloing a sampler channel</h3>
4942
4943 <p>The front-end can solo/unsolo a specific sampler channel
4944 by sending the following command:
4945 </p>
4946 <p>
4947 </p>
4948 <blockquote class="text">
4949 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4950 </p>
4951 </blockquote><p>
4952
4953 </p>
4954 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4955 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>
4956 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
4957 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4958 to unsolo the channel.
4959 </p>
4960 <p>Possible Answers:
4961 </p>
4962 <p>
4963 </p>
4964 <blockquote class="text">
4965 <p>"OK" -
4966 </p>
4967 <blockquote class="text">
4968 <p>on success
4969 </p>
4970 </blockquote>
4971
4972
4973 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4974 </p>
4975 <blockquote class="text">
4976 <p>if the channel was soloed/unsoloed, but there are noteworthy
4977 issue(s) related, providing an appropriate warning code and
4978 warning message
4979 </p>
4980 </blockquote>
4981
4982
4983 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4984 </p>
4985 <blockquote class="text">
4986 <p>in case it failed, providing an appropriate error code and error message
4987 </p>
4988 </blockquote>
4989
4990
4991 </blockquote><p>
4992
4993 </p>
4994 <p>Examples:
4995 </p>
4996 <p>
4997 </p>
4998 <blockquote class="text">
4999 <p>
5000 </p>
5001 </blockquote><p>
5002
5003 </p>
5004 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5005 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5006 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5007 Assigning a MIDI instrument map to a sampler channel</h3>
5008
5009 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5010 by sending the following command:
5011 </p>
5012 <p>
5013 </p>
5014 <blockquote class="text">
5015 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5016 </p>
5017 </blockquote><p>
5018
5019 </p>
5020 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5021 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>
5022 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
5023 &lt;map&gt; can have the following possibilites:
5024 </p>
5025 <p>
5026 </p>
5027 <blockquote class="text">
5028 <p>"NONE" -
5029 </p>
5030 <blockquote class="text">
5031 <p>This is the default setting. In this case
5032 the sampler channel is not assigned any MIDI
5033 instrument map and thus will ignore all MIDI
5034 program change messages.
5035 </p>
5036 </blockquote>
5037
5038
5039 <p>"DEFAULT" -
5040 </p>
5041 <blockquote class="text">
5042 <p>The sampler channel will always use the
5043 default MIDI instrument map to handle MIDI
5044 program change messages.
5045 </p>
5046 </blockquote>
5047
5048
5049 <p>numeric ID -
5050 </p>
5051 <blockquote class="text">
5052 <p>You can assign a specific MIDI instrument map
5053 by replacing &lt;map&gt; with the respective numeric
5054 ID of the MIDI instrument map as returned by the
5055 <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>
5056 command. Once that map will be deleted, the sampler
5057 channel would fall back to "NONE".
5058 </p>
5059 </blockquote>
5060
5061
5062 </blockquote><p>
5063
5064 </p>
5065 <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>
5066 for details regarding MIDI instrument mapping.
5067 </p>
5068 <p>Possible Answers:
5069 </p>
5070 <p>
5071 </p>
5072 <blockquote class="text">
5073 <p>"OK" -
5074 </p>
5075 <blockquote class="text">
5076 <p>on success
5077 </p>
5078 </blockquote>
5079
5080
5081 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5082 </p>
5083 <blockquote class="text">
5084 <p>in case it failed, providing an appropriate error code and error message
5085 </p>
5086 </blockquote>
5087
5088
5089 </blockquote><p>
5090
5091 </p>
5092 <p>Examples:
5093 </p>
5094 <p>
5095 </p>
5096 <blockquote class="text">
5097 <p>
5098 </p>
5099 </blockquote><p>
5100
5101 </p>
5102 <a name="CREATE FX_SEND"></a><br /><hr />
5103 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5104 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5105 Adding an effect send to a sampler channel</h3>
5106
5107 <p>The front-end can create an additional effect send on a specific sampler channel
5108 by sending the following command:
5109 </p>
5110 <p>
5111 </p>
5112 <blockquote class="text">
5113 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5114 </p>
5115 </blockquote><p>
5116
5117 </p>
5118 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5119 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>
5120 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
5121 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5122 is a number between 0..127 defining the MIDI controller which can alter the
5123 effect send level and &lt;name&gt; is an optional argument defining a name
5124 for the effect send entity. The name does not have to be unique, but MUST be
5125 encapsulated into apostrophes and supports escape sequences as described in chapter
5126 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
5127 </p>
5128 <p>By default, that is as initial routing, the effect send's audio channels
5129 are automatically routed to the last audio channels of the sampler channel's
5130 audio output device, that way you can i.e. first increase the amount of audio
5131 channels on the audio output device for having dedicated effect send output
5132 channels and when "CREATE FX_SEND" is called, those channels will automatically
5133 be picked. You can alter the destination channels however with
5134 <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>.
5135
5136 </p>
5137 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5138 sends on a sampler channel will decrease runtime performance, because for implementing channel
5139 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5140 the voices and route the audio signal afterwards to the master outputs and effect send
5141 outputs (along with their respective effect send levels). A sampler channel without effect
5142 sends however can mix its voices directly into the audio output devices's audio buffers
5143 and is thus faster.
5144
5145 </p>
5146 <p>Possible Answers:
5147 </p>
5148 <p>
5149 </p>
5150 <blockquote class="text">
5151 <p>"OK[&lt;fx-send-id&gt;]" -
5152 </p>
5153 <blockquote class="text">
5154 <p>in case a new effect send could be added to the
5155 sampler channel, where &lt;fx-send-id&gt; reflects the
5156 unique ID of the newly created effect send entity
5157 </p>
5158 </blockquote>
5159
5160
5161 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5162 </p>
5163 <blockquote class="text">
5164 <p>when a new effect send could not be added, i.e.
5165 due to invalid parameters
5166 </p>
5167 </blockquote>
5168
5169
5170 </blockquote><p>
5171
5172 </p>
5173 <p>Examples:
5174 </p>
5175 <p>
5176 </p>
5177 <blockquote class="text">
5178 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5179 </p>
5180 <p>S: "OK[0]"
5181 </p>
5182 </blockquote><p>
5183
5184 </p>
5185 <p>
5186 </p>
5187 <blockquote class="text">
5188 <p>C: "CREATE FX_SEND 0 93"
5189 </p>
5190 <p>S: "OK[1]"
5191 </p>
5192 </blockquote><p>
5193
5194 </p>
5195 <a name="DESTROY FX_SEND"></a><br /><hr />
5196 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5197 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5198 Removing an effect send from a sampler channel</h3>
5199
5200 <p>The front-end can remove an existing effect send on a specific sampler channel
5201 by sending the following command:
5202 </p>
5203 <p>
5204 </p>
5205 <blockquote class="text">
5206 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5207 </p>
5208 </blockquote><p>
5209
5210 </p>
5211 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5212 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>
5213 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
5214 sampler channel from which the effect send should be removed from and
5215 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5216 <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>
5217 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.
5218 </p>
5219 <p>Possible Answers:
5220 </p>
5221 <p>
5222 </p>
5223 <blockquote class="text">
5224 <p>"OK" -
5225 </p>
5226 <blockquote class="text">
5227 <p>on success
5228 </p>
5229 </blockquote>
5230
5231
5232 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5233 </p>
5234 <blockquote class="text">
5235 <p>in case it failed, providing an appropriate error code and
5236 error message
5237 </p>
5238 </blockquote>
5239
5240
5241 </blockquote><p>
5242
5243 </p>
5244 <p>Example:
5245 </p>
5246 <p>
5247 </p>
5248 <blockquote class="text">
5249 <p>C: "DESTROY FX_SEND 0 0"
5250 </p>
5251 <p>S: "OK"
5252 </p>
5253 </blockquote><p>
5254
5255 </p>
5256 <a name="GET FX_SENDS"></a><br /><hr />
5257 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5258 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5259 Getting amount of effect sends on a sampler channel</h3>
5260
5261 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5262 by sending the following command:
5263 </p>
5264 <p>
5265 </p>
5266 <blockquote class="text">
5267 <p>GET FX_SENDS &lt;sampler-channel&gt;
5268 </p>
5269 </blockquote><p>
5270
5271 </p>
5272 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5273 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>
5274 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.
5275 </p>
5276 <p>Possible Answers:
5277 </p>
5278 <p>
5279 </p>
5280 <blockquote class="text">
5281 <p>The sampler will answer by returning the number of effect
5282 sends on the given sampler channel.
5283 </p>
5284 </blockquote><p>
5285
5286 </p>
5287 <p>Example:
5288 </p>
5289 <p>
5290 </p>
5291 <blockquote class="text">
5292 <p>C: "GET FX_SENDS 0"
5293 </p>
5294 <p>S: "2"
5295 </p>
5296 </blockquote><p>
5297
5298 </p>
5299 <a name="LIST FX_SENDS"></a><br /><hr />
5300 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5301 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5302 Listing all effect sends on a sampler channel</h3>
5303
5304 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5305 by sending the following command:
5306 </p>
5307 <p>
5308 </p>
5309 <blockquote class="text">
5310 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5311 </p>
5312 </blockquote><p>
5313
5314 </p>
5315 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5316 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>
5317 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5318 </p>
5319 <p>Possible Answers:
5320 </p>
5321 <p>
5322 </p>
5323 <blockquote class="text">
5324 <p>The sampler will answer by returning a comma separated list
5325 with all effect sends' numerical IDs on the given sampler
5326 channel.
5327 </p>
5328 </blockquote><p>
5329
5330 </p>
5331 <p>Examples:
5332 </p>
5333 <p>
5334 </p>
5335 <blockquote class="text">
5336 <p>C: "LIST FX_SENDS 0"
5337 </p>
5338 <p>S: "0,1"
5339 </p>
5340 </blockquote><p>
5341
5342 </p>
5343 <p>
5344 </p>
5345 <blockquote class="text">
5346 <p>C: "LIST FX_SENDS 1"
5347 </p>
5348 <p>S: ""
5349 </p>
5350 </blockquote><p>
5351
5352 </p>
5353 <a name="GET FX_SEND INFO"></a><br /><hr />
5354 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5355 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5356 Getting effect send information</h3>
5357
5358 <p>The front-end can ask for the current settings of an effect send entity
5359 by sending the following command:
5360 </p>
5361 <p>
5362 </p>
5363 <blockquote class="text">
5364 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5365 </p>
5366 </blockquote><p>
5367
5368 </p>
5369 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5370 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>
5371 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
5372 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5373 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>
5374 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.
5375
5376 </p>
5377 <p>Possible Answers:
5378 </p>
5379 <p>
5380 </p>
5381 <blockquote class="text">
5382 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5383 Each answer line begins with the settings category name
5384 followed by a colon and then a space character &lt;SP&gt; and finally
5385 the info character string to that setting category. At the
5386 moment the following categories are defined:
5387 </p>
5388 <p>
5389 </p>
5390 <blockquote class="text">
5391 <p>NAME -
5392 </p>
5393 <blockquote class="text">
5394 <p>name of the effect send entity
5395 (note that this character string may contain
5396 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5397 </p>
5398 </blockquote>
5399
5400
5401 <p>MIDI_CONTROLLER -
5402 </p>
5403 <blockquote class="text">
5404 <p>a value between 0 and 127 reflecting the MIDI controller
5405 which is able to modify the effect send's send level
5406 </p>
5407 </blockquote>
5408
5409
5410 <p>LEVEL -
5411 </p>
5412 <blockquote class="text">
5413 <p>optionally dotted number reflecting the effect send's
5414 current send level (where a value &lt; 1.0 means attenuation
5415 and a value > 1.0 means amplification)
5416 </p>
5417 </blockquote>
5418
5419
5420 <p>AUDIO_OUTPUT_ROUTING -
5421 </p>
5422 <blockquote class="text">
5423 <p>comma separated list which reflects to which audio
5424 channel of the selected audio output device each
5425 effect send output channel is routed to, e.g. "0,3" would
5426 mean the effect send's output channel 0 is routed to channel
5427 0 of the audio output device and the effect send's output
5428 channel 1 is routed to the channel 3 of the audio
5429 output device (see
5430 <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>
5431 for details)
5432 </p>
5433 </blockquote>
5434
5435
5436 </blockquote>
5437
5438
5439 </blockquote><p>
5440
5441 </p>
5442 <p>The mentioned fields above don't have to be in particular order.
5443 </p>
5444 <p>Example:
5445 </p>
5446 <p>
5447 </p>
5448 <blockquote class="text">
5449 <p>C: "GET FX_SEND INFO 0 0"
5450 </p>
5451 <p>S: "NAME: Reverb Send"
5452 </p>
5453 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5454 </p>
5455 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5456 </p>
5457 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5458 </p>
5459 <p>&nbsp;&nbsp;&nbsp;"."
5460 </p>
5461 </blockquote><p>
5462
5463 </p>
5464 <a name="SET FX_SEND NAME"></a><br /><hr />
5465 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5466 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5467 Changing effect send's name</h3>
5468
5469 <p>The front-end can alter the current name of an effect
5470 send entity by sending the following command:
5471 </p>
5472 <p>
5473 </p>
5474 <blockquote class="text">
5475 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5476 </p>
5477 </blockquote><p>
5478
5479 </p>
5480 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5481 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>
5482 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,
5483 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5484 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>
5485 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
5486 &lt;name&gt; is the new name of the effect send entity, which
5487 does not have to be unique (name MUST be encapsulated into apostrophes
5488 and supports escape sequences as described in chapter
5489 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
5490
5491 </p>
5492 <p>Possible Answers:
5493 </p>
5494 <p>
5495 </p>
5496 <blockquote class="text">
5497 <p>"OK" -
5498 </p>
5499 <blockquote class="text">
5500 <p>on success
5501 </p>
5502 </blockquote>
5503
5504
5505 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5506 </p>
5507 <blockquote class="text">
5508 <p>in case it failed, providing an appropriate error code and error message
5509 </p>
5510 </blockquote>
5511
5512
5513 </blockquote><p>
5514
5515 </p>
5516 <p>Example:
5517 </p>
5518 <p>
5519 </p>
5520 <blockquote class="text">
5521 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5522 </p>
5523 <p>S: "OK"
5524 </p>
5525 </blockquote><p>
5526
5527 </p>
5528 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5529 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5530 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5531 Altering effect send's audio routing</h3>
5532
5533 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5534 sampler channel by sending the following command:
5535 </p>
5536 <p>
5537 </p>
5538 <blockquote class="text">
5539 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5540 </p>
5541 </blockquote><p>
5542
5543 </p>
5544 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5545 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>
5546 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,
5547 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5548 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>
5549 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,
5550 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5551 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5552 the audio channel of the selected audio output device where &lt;audio-src&gt;
5553 should be routed to.
5554 </p>
5555 <p>Note that effect sends can only route audio to the same audio output
5556 device as assigned to the effect send's sampler channel. Also note that an
5557 effect send entity does always have exactly as much audio channels as its
5558 sampler channel. So if the sampler channel is stereo, the effect send does
5559 have two audio channels as well. Also keep in mind that the amount of audio
5560 channels on a sampler channel might be dependant not only to the deployed
5561 sampler engine on the sampler channel, but also dependant to the instrument
5562 currently loaded. However you can (effectively) turn an i.e. stereo effect
5563 send into a mono one by simply altering its audio routing appropriately.
5564 </p>
5565 <p>Possible Answers:
5566 </p>
5567 <p>
5568 </p>
5569 <blockquote class="text">
5570 <p>"OK" -
5571 </p>
5572 <blockquote class="text">
5573 <p>on success
5574 </p>
5575 </blockquote>
5576
5577
5578 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5579 </p>
5580 <blockquote class="text">
5581 <p>if audio output channel was set, but there are noteworthy
5582 issue(s) related, providing an appropriate warning code and
5583 warning message
5584 </p>
5585 </blockquote>
5586
5587
5588 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5589 </p>
5590 <blockquote class="text">
5591 <p>in case it failed, providing an appropriate error code and error message
5592 </p>
5593 </blockquote>
5594
5595
5596 </blockquote><p>
5597
5598 </p>
5599 <p>Example:
5600 </p>
5601 <p>
5602 </p>
5603 <blockquote class="text">
5604 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5605 </p>
5606 <p>S: "OK"
5607 </p>
5608 </blockquote><p>
5609
5610 </p>
5611 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5612 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5613 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5614 Altering effect send's MIDI controller</h3>
5615
5616 <p>The front-end can alter the MIDI controller of an effect
5617 send entity by sending the following command:
5618 </p>
5619 <p>
5620 </p>
5621 <blockquote class="text">
5622 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5623 </p>
5624 </blockquote><p>
5625
5626 </p>
5627 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5628 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>
5629 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,
5630 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5631 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>
5632 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
5633 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5634 able to modify the effect send's send level.
5635 </p>
5636 <p>Possible Answers:
5637 </p>
5638 <p>
5639 </p>
5640 <blockquote class="text">
5641 <p>"OK" -
5642 </p>
5643 <blockquote class="text">
5644 <p>on success
5645 </p>
5646 </blockquote>
5647
5648
5649 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5650 </p>
5651 <blockquote class="text">
5652 <p>if MIDI controller was set, but there are noteworthy
5653 issue(s) related, providing an appropriate warning code and
5654 warning message
5655 </p>
5656 </blockquote>
5657
5658
5659 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5660 </p>
5661 <blockquote class="text">
5662 <p>in case it failed, providing an appropriate error code and error message
5663 </p>
5664 </blockquote>
5665
5666
5667 </blockquote><p>
5668
5669 </p>
5670 <p>Example:
5671 </p>
5672 <p>
5673 </p>
5674 <blockquote class="text">
5675 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5676 </p>
5677 <p>S: "OK"
5678 </p>
5679 </blockquote><p>
5680
5681 </p>
5682 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5683 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5684 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5685 Altering effect send's send level</h3>
5686
5687 <p>The front-end can alter the current send level of an effect
5688 send entity by sending the following command:
5689 </p>
5690 <p>
5691 </p>
5692 <blockquote class="text">
5693 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5694 </p>
5695 </blockquote><p>
5696
5697 </p>
5698 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5699 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>
5700 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,
5701 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5702 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>
5703 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
5704 &lt;volume&gt; is an optionally dotted positive number (a value
5705 smaller than 1.0 means attenuation, whereas a value greater than
5706 1.0 means amplification) reflecting the new send level.
5707 </p>
5708 <p>Possible Answers:
5709 </p>
5710 <p>
5711 </p>
5712 <blockquote class="text">
5713 <p>"OK" -
5714 </p>
5715 <blockquote class="text">
5716 <p>on success
5717 </p>
5718 </blockquote>
5719
5720
5721 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5722 </p>
5723 <blockquote class="text">
5724 <p>if new send level was set, but there are noteworthy
5725 issue(s) related, providing an appropriate warning code and
5726 warning message
5727 </p>
5728 </blockquote>
5729
5730
5731 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5732 </p>
5733 <blockquote class="text">
5734 <p>in case it failed, providing an appropriate error code and error message
5735 </p>
5736 </blockquote>
5737
5738
5739 </blockquote><p>
5740
5741 </p>
5742 <p>Example:
5743 </p>
5744 <p>
5745 </p>
5746 <blockquote class="text">
5747 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5748 </p>
5749 <p>S: "OK"
5750 </p>
5751 </blockquote><p>
5752
5753 </p>
5754 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5755 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5756 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5757 Sending MIDI messages to sampler channel</h3>
5758
5759 <p>The front-end can send MIDI events to specific sampler channel
5760 by sending the following command:
5761 </p>
5762 <p>
5763 </p>
5764 <blockquote class="text">
5765 <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
5766 </p>
5767 </blockquote><p>
5768
5769 </p>
5770 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5771 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>
5772 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,
5773 &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
5774 specifies the MIDI message type. Currently, the following MIDI messages are supported:
5775 </p>
5776 <p>
5777 </p>
5778 <blockquote class="text">
5779 <p>"NOTE_ON" -
5780 </p>
5781 <blockquote class="text">
5782 <p>For turning on MIDI notes, where &lt;arg1&gt;
5783 specifies the key number and &lt;arg2&gt; the velocity
5784 as described in the MIDI specification.
5785 </p>
5786 </blockquote>
5787
5788
5789 <p>"NOTE_OFF" -
5790 </p>
5791 <blockquote class="text">
5792 <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
5793 specifies the key number and &lt;arg2&gt; the velocity
5794 as described in the MIDI specification.
5795 </p>
5796 </blockquote>
5797
5798
5799 </blockquote><p>
5800
5801 </p>
5802 <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
5803 and no realtime guarantee whatsoever will be made!
5804 </p>
5805 <p>Possible Answers:
5806 </p>
5807 <p>
5808 </p>
5809 <blockquote class="text">
5810 <p>"OK" -
5811 </p>
5812 <blockquote class="text">
5813 <p>on success
5814 </p>
5815 </blockquote>
5816
5817
5818 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5819 </p>
5820 <blockquote class="text">
5821 <p>in case it failed, providing an appropriate error code and error message
5822 </p>
5823 </blockquote>
5824
5825
5826 </blockquote><p>
5827
5828 </p>
5829 <p>Example:
5830 </p>
5831 <p>
5832 </p>
5833 <blockquote class="text">
5834 <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
5835 </p>
5836 <p>S: "OK"
5837 </p>
5838 </blockquote><p>
5839
5840 </p>
5841 <a name="RESET CHANNEL"></a><br /><hr />
5842 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5843 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5844 Resetting a sampler channel</h3>
5845
5846 <p>The front-end can reset a particular sampler channel by sending the following command:
5847 </p>
5848 <p>
5849 </p>
5850 <blockquote class="text">
5851 <p>RESET CHANNEL &lt;sampler-channel&gt;
5852 </p>
5853 </blockquote><p>
5854
5855 </p>
5856 <p>
5857 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5858 This will cause the engine on that sampler channel, its voices and
5859 eventually disk streams and all control and status variables to be
5860 reset.
5861 </p>
5862 <p>Possible Answers:
5863 </p>
5864 <p>
5865 </p>
5866 <blockquote class="text">
5867 <p>"OK" -
5868 </p>
5869 <blockquote class="text">
5870 <p>on success
5871 </p>
5872 </blockquote>
5873
5874
5875 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5876 </p>
5877 <blockquote class="text">
5878 <p>if channel was reset, but there are noteworthy issue(s)
5879 related, providing an appropriate warning code and warning
5880 message
5881 </p>
5882 </blockquote>
5883
5884
5885 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5886 </p>
5887 <blockquote class="text">
5888 <p>in case it failed, providing an appropriate error code and
5889 error message
5890 </p>
5891 </blockquote>
5892
5893
5894 </blockquote><p>
5895
5896 </p>
5897 <p>Examples:
5898 </p>
5899 <p>
5900 </p>
5901 <blockquote class="text">
5902 <p>
5903 </p>
5904 </blockquote><p>
5905
5906 </p>
5907 <a name="anchor12"></a><br /><hr />
5908 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5909 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5910 Controlling connection</h3>
5911
5912 <p>The following commands are used to control the connection to LinuxSampler.
5913 </p>
5914 <a name="SUBSCRIBE"></a><br /><hr />
5915 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5916 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5917 Register front-end for receiving event messages</h3>
5918
5919 <p>The front-end can register itself to the LinuxSampler application to
5920 be informed about noteworthy events by sending this command:
5921 </p>
5922 <p>
5923 </p>
5924 <blockquote class="text">
5925 <p>SUBSCRIBE &lt;event-id&gt;
5926 </p>
5927 </blockquote><p>
5928
5929 </p>
5930 <p>where &lt;event-id&gt; will be replaced by the respective event that
5931 client wants to subscribe to.
5932 </p>
5933 <p>Possible Answers:
5934 </p>
5935 <p>
5936 </p>
5937 <blockquote class="text">
5938 <p>"OK" -
5939 </p>
5940 <blockquote class="text">
5941 <p>on success
5942 </p>
5943 </blockquote>
5944
5945
5946 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5947 </p>
5948 <blockquote class="text">
5949 <p>if registration succeeded, but there are noteworthy
5950 issue(s) related, providing an appropriate warning code and
5951 warning message
5952 </p>
5953 </blockquote>
5954
5955
5956 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5957 </p>
5958 <blockquote class="text">
5959 <p>in case it failed, providing an appropriate error code and
5960 error message
5961 </p>
5962 </blockquote>
5963
5964
5965 </blockquote><p>
5966
5967 </p>
5968 <p>Examples:
5969 </p>
5970 <p>
5971 </p>
5972 <blockquote class="text">
5973 <p>
5974 </p>
5975 </blockquote><p>
5976
5977 </p>
5978 <a name="UNSUBSCRIBE"></a><br /><hr />
5979 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5980 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5981 Unregister front-end for not receiving event messages</h3>
5982
5983 <p>The front-end can unregister itself if it doesn't want to receive event
5984 messages anymore by sending the following command:
5985 </p>
5986 <p>
5987 </p>
5988 <blockquote class="text">
5989 <p>UNSUBSCRIBE &lt;event-id&gt;
5990 </p>
5991 </blockquote><p>
5992
5993 </p>
5994 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5995 client doesn't want to receive anymore.
5996 </p>
5997 <p>Possible Answers:
5998 </p>
5999 <p>
6000 </p>
6001 <blockquote class="text">
6002 <p>"OK" -
6003 </p>
6004 <blockquote class="text">
6005 <p>on success
6006 </p>
6007 </blockquote>
6008
6009
6010 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6011 </p>
6012 <blockquote class="text">
6013 <p>if unregistration succeeded, but there are noteworthy
6014 issue(s) related, providing an appropriate warning code and
6015 warning message
6016 </p>
6017 </blockquote>
6018
6019
6020 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6021 </p>
6022 <blockquote class="text">
6023 <p>in case it failed, providing an appropriate error code and
6024 error message
6025 </p>
6026 </blockquote>
6027
6028
6029 </blockquote><p>
6030
6031 </p>
6032 <p>Examples:
6033 </p>
6034 <p>
6035 </p>
6036 <blockquote class="text">
6037 <p>
6038 </p>
6039 </blockquote><p>
6040
6041 </p>
6042 <a name="SET ECHO"></a><br /><hr />
6043 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6044 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6045 Enable or disable echo of commands</h3>
6046
6047 <p>To enable or disable back sending of commands to the client the following command can be used:
6048 </p>
6049 <p>
6050 </p>
6051 <blockquote class="text">
6052 <p>SET ECHO &lt;value&gt;
6053 </p>
6054 </blockquote><p>
6055
6056 </p>
6057 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6058 or "0" to disable echo mode. When echo mode is enabled, all
6059 commands send to LinuxSampler will be immediately send back and
6060 after this echo the actual response to the command will be
6061 returned. Echo mode will only be altered for the client connection
6062 that issued the "SET ECHO" command, not globally for all client
6063 connections.
6064 </p>
6065 <p>Possible Answers:
6066 </p>
6067 <p>
6068 </p>
6069 <blockquote class="text">
6070 <p>"OK" -
6071 </p>
6072 <blockquote class="text">
6073 <p>usually
6074 </p>
6075 </blockquote>
6076
6077
6078 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6079 </p>
6080 <blockquote class="text">
6081 <p>on syntax error, e.g. non boolean value
6082 </p>
6083 </blockquote>
6084
6085
6086 </blockquote><p>
6087
6088 </p>
6089 <p>Examples:
6090 </p>
6091 <p>
6092 </p>
6093 <blockquote class="text">
6094 <p>
6095 </p>
6096 </blockquote><p>
6097
6098 </p>
6099 <a name="QUIT"></a><br /><hr />
6100 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6101 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6102 Close client connection</h3>
6103
6104 <p>The client can close its network connection to LinuxSampler by sending the following command:
6105 </p>
6106 <p>
6107 </p>
6108 <blockquote class="text">
6109 <p>QUIT
6110 </p>
6111 </blockquote><p>
6112
6113 </p>
6114 <p>This is probably more interesting for manual telnet connections to
6115 LinuxSampler than really useful for a front-end implementation.
6116 </p>
6117 <a name="anchor13"></a><br /><hr />
6118 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6119 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6120 Global commands</h3>
6121
6122 <p>The following commands have global impact on the sampler.
6123 </p>
6124 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6125 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6126 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6127 Current number of active voices</h3>
6128
6129 <p>The front-end can ask for the current number of active voices on
6130 the sampler by sending the following command:
6131 </p>
6132 <p>
6133 </p>
6134 <blockquote class="text">
6135 <p>GET TOTAL_VOICE_COUNT
6136 </p>
6137 </blockquote><p>
6138
6139 </p>
6140 <p>Possible Answers:
6141 </p>
6142 <p>
6143 </p>
6144 <blockquote class="text">
6145 <p>LinuxSampler will answer by returning the number of all active
6146 voices on the sampler.
6147 </p>
6148 </blockquote><p>
6149
6150 </p>
6151 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6152 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6153 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6154 Maximum amount of active voices</h3>
6155
6156 <p>The front-end can ask for the maximum number of active voices
6157 by sending the following command:
6158 </p>
6159 <p>
6160 </p>
6161 <blockquote class="text">
6162 <p>GET TOTAL_VOICE_COUNT_MAX
6163 </p>
6164 </blockquote><p>
6165
6166 </p>
6167 <p>Possible Answers:
6168 </p>
6169 <p>
6170 </p>
6171 <blockquote class="text">
6172 <p>LinuxSampler will answer by returning the maximum number
6173 of active voices.
6174 </p>
6175 </blockquote><p>
6176
6177 </p>
6178 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6179 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6180 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6181 Current number of active disk streams</h3>
6182
6183 <p>The front-end can ask for the current number of active disk streams on
6184 the sampler by sending the following command:
6185 </p>
6186 <p>
6187 </p>
6188 <blockquote class="text">
6189 <p>GET TOTAL_STREAM_COUNT
6190 </p>
6191 </blockquote><p>
6192
6193 </p>
6194 <p>Possible Answers:
6195 </p>
6196 <p>
6197 </p>
6198 <blockquote class="text">
6199 <p>LinuxSampler will answer by returning the number of all active
6200 disk streams on the sampler.
6201 </p>
6202 </blockquote><p>
6203
6204 </p>
6205 <a name="RESET"></a><br /><hr />
6206 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6207 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6208 Reset sampler</h3>
6209
6210 <p>The front-end can reset the whole sampler by sending the following command:
6211 </p>
6212 <p>
6213 </p>
6214 <blockquote class="text">
6215 <p>RESET
6216 </p>
6217 </blockquote><p>
6218
6219 </p>
6220 <p>Possible Answers:
6221 </p>
6222 <p>
6223 </p>
6224 <blockquote class="text">
6225 <p>"OK" -
6226 </p>
6227 <blockquote class="text">
6228 <p>always
6229 </p>
6230 </blockquote>
6231
6232
6233 </blockquote><p>
6234
6235 </p>
6236 <p>Examples:
6237 </p>
6238 <p>
6239 </p>
6240 <blockquote class="text">
6241 <p>
6242 </p>
6243 </blockquote><p>
6244
6245 </p>
6246 <a name="GET SERVER INFO"></a><br /><hr />
6247 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6248 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6249 General sampler informations</h3>
6250
6251 <p>The client can ask for general informations about the LinuxSampler
6252 instance by sending the following command:
6253 </p>
6254 <p>
6255 </p>
6256 <blockquote class="text">
6257 <p>GET SERVER INFO
6258 </p>
6259 </blockquote><p>
6260
6261 </p>
6262 <p>Possible Answers:
6263 </p>
6264 <p>
6265 </p>
6266 <blockquote class="text">
6267 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6268 Each answer line begins with the information category name
6269 followed by a colon and then a space character &lt;SP&gt; and finally
6270 the info character string to that information category. At the
6271 moment the following categories are defined:
6272
6273 </p>
6274 <p>
6275 </p>
6276 <blockquote class="text">
6277 <p>DESCRIPTION -
6278 </p>
6279 <blockquote class="text">
6280 <p>arbitrary textual description about the sampler
6281 (note that the character string may contain
6282 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6283 </p>
6284 </blockquote>
6285
6286
6287 <p>VERSION -
6288 </p>
6289 <blockquote class="text">
6290 <p>version of the sampler
6291 </p>
6292 </blockquote>
6293
6294
6295 <p>PROTOCOL_VERSION -
6296 </p>
6297 <blockquote class="text">
6298 <p>version of the LSCP specification the sampler
6299 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)
6300 </p>
6301 </blockquote>
6302
6303
6304 <p>INSTRUMENTS_DB_SUPPORT -
6305 </p>
6306 <blockquote class="text">
6307 <p>either yes or no, specifies whether the
6308 sampler is build with instruments database support.
6309 </p>
6310 </blockquote>
6311
6312
6313 </blockquote>
6314
6315
6316 </blockquote><p>
6317
6318 </p>
6319 <p>The mentioned fields above don't have to be in particular order.
6320 Other fields might be added in future.
6321 </p>
6322 <a name="GET VOLUME"></a><br /><hr />
6323 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6324 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6325 Getting global volume attenuation</h3>
6326
6327 <p>The client can ask for the current global sampler-wide volume
6328 attenuation by sending the following command:
6329 </p>
6330 <p>
6331 </p>
6332 <blockquote class="text">
6333 <p>GET VOLUME
6334 </p>
6335 </blockquote><p>
6336
6337 </p>
6338 <p>Possible Answers:
6339 </p>
6340 <p>
6341 </p>
6342 <blockquote class="text">
6343 <p>The sampler will always answer by returning the optional
6344 dotted floating point coefficient, reflecting the current
6345 global volume attenuation.
6346
6347 </p>
6348 </blockquote><p>
6349
6350 </p>
6351 <p>Note: it is up to the respective sampler engine whether to obey
6352 that global volume parameter or not, but in general all engines SHOULD
6353 use this parameter.
6354 </p>
6355 <a name="SET VOLUME"></a><br /><hr />
6356 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6357 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6358 Setting global volume attenuation</h3>
6359
6360 <p>The client can alter the current global sampler-wide volume
6361 attenuation by sending the following command:
6362 </p>
6363 <p>
6364 </p>
6365 <blockquote class="text">
6366 <p>SET VOLUME &lt;volume&gt;
6367 </p>
6368 </blockquote><p>
6369
6370 </p>
6371 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6372 floating point value, reflecting the new global volume parameter.
6373 This value might usually be in the range between 0.0 and 1.0, that
6374 is for attenuating the overall volume.
6375 </p>
6376 <p>Possible Answers:
6377 </p>
6378 <p>
6379 </p>
6380 <blockquote class="text">
6381 <p>"OK" -
6382 </p>
6383 <blockquote class="text">
6384 <p>on success
6385 </p>
6386 </blockquote>
6387
6388
6389 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6390 </p>
6391 <blockquote class="text">
6392 <p>if the global volume was set, but there are noteworthy
6393 issue(s) related, providing an appropriate warning code and
6394 warning message
6395 </p>
6396 </blockquote>
6397
6398
6399 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6400 </p>
6401 <blockquote class="text">
6402 <p>in case it failed, providing an appropriate error code and error message
6403 </p>
6404 </blockquote>
6405
6406
6407 </blockquote><p>
6408
6409 </p>
6410 <a name="MIDI Instrument Mapping"></a><br /><hr />
6411 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6412 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6413 MIDI Instrument Mapping</h3>
6414
6415 <p>The MIDI protocol provides a way to switch between instruments
6416 by sending so called MIDI bank select and MIDI program change
6417 messages which are essentially just numbers. The following commands
6418 allow to actually map arbitrary MIDI bank select / program change
6419 numbers with real instruments.
6420 </p>
6421 <p>The sampler allows to manage an arbitrary amount of MIDI
6422 instrument maps which define which instrument to load on
6423 which MIDI program change message.
6424 </p>
6425 <p>By default, that is when the sampler is launched, there is no
6426 map, thus the sampler will simply ignore all program change
6427 messages. The front-end has to explicitly create at least one
6428 map, add entries to the map and tell the respective sampler
6429 channel(s) which MIDI instrument map to use, so the sampler
6430 knows how to react on a given program change message on the
6431 respective sampler channel, that is by switching to the
6432 respectively defined engine type and loading the respective
6433 instrument. See command
6434 <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>
6435 for how to assign a MIDI instrument map to a sampler channel.
6436 </p>
6437 <p>Also note per MIDI specification a bank select message does not
6438 cause to switch to another instrument. Instead when receiving a
6439 bank select message the bank value will be stored and a subsequent
6440 program change message (which may occur at any time) will finally
6441 cause the sampler to switch to the respective instrument as
6442 reflected by the current MIDI instrument map.
6443 </p>
6444 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6445 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6446 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6447 Create a new MIDI instrument map</h3>
6448
6449 <p>The front-end can add a new MIDI instrument map by sending
6450 the following command:
6451 </p>
6452 <p>
6453 </p>
6454 <blockquote class="text">
6455 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6456 </p>
6457 </blockquote><p>
6458
6459 </p>
6460 <p>Where &lt;name&gt; is an optional argument allowing to
6461 assign a custom name to the new map. MIDI instrument Map
6462 names do not have to be unique, but MUST be encapsulated
6463 into apostrophes and support escape sequences as described
6464 in chapter "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
6465
6466 </p>
6467 <p>Possible Answers:
6468 </p>
6469 <p>
6470 </p>
6471 <blockquote class="text">
6472 <p>"OK[&lt;map&gt;]" -
6473 </p>
6474 <blockquote class="text">
6475 <p>in case a new MIDI instrument map could
6476 be added, where &lt;map&gt; reflects the
6477 unique ID of the newly created MIDI
6478 instrument map
6479 </p>
6480 </blockquote>
6481
6482
6483 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6484 </p>
6485 <blockquote class="text">
6486 <p>when a new map could not be created, which
6487 might never occur in practice
6488 </p>
6489 </blockquote>
6490
6491
6492 </blockquote><p>
6493
6494 </p>
6495 <p>Examples:
6496 </p>
6497 <p>
6498 </p>
6499 <blockquote class="text">
6500 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6501 </p>
6502 <p>S: "OK[0]"
6503 </p>
6504 </blockquote><p>
6505
6506 </p>
6507 <p>
6508 </p>
6509 <blockquote class="text">
6510 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6511 </p>
6512 <p>S: "OK[1]"
6513 </p>
6514 </blockquote><p>
6515
6516 </p>
6517 <p>
6518 </p>
6519 <blockquote class="text">
6520 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6521 </p>
6522 <p>S: "OK[5]"
6523 </p>
6524 </blockquote><p>
6525
6526 </p>
6527 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6528 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6529 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6530 Delete one particular or all MIDI instrument maps</h3>
6531
6532 <p>The front-end can delete a particular MIDI instrument map
6533 by sending the following command:
6534 </p>
6535 <p>
6536 </p>
6537 <blockquote class="text">
6538 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6539 </p>
6540 </blockquote><p>
6541
6542 </p>
6543 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6544 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>
6545 command.
6546 </p>
6547 <p>The front-end can delete all MIDI instrument maps by
6548 sending the following command:
6549 </p>
6550 <p>
6551 </p>
6552 <blockquote class="text">
6553 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6554 </p>
6555 </blockquote><p>
6556
6557 </p>
6558 <p>Possible Answers:
6559 </p>
6560 <p>
6561 </p>
6562 <blockquote class="text">
6563 <p>"OK" -
6564 </p>
6565 <blockquote class="text">
6566 <p>in case the map(s) could be deleted
6567 </p>
6568 </blockquote>
6569
6570
6571 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6572 </p>
6573 <blockquote class="text">
6574 <p>when the given map does not exist
6575 </p>
6576 </blockquote>
6577
6578
6579 </blockquote><p>
6580
6581 </p>
6582 <p>Examples:
6583 </p>
6584 <p>
6585 </p>
6586 <blockquote class="text">
6587 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6588 </p>
6589 <p>S: "OK"
6590 </p>
6591 </blockquote><p>
6592
6593 </p>
6594 <p>
6595 </p>
6596 <blockquote class="text">
6597 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6598 </p>
6599 <p>S: "OK"
6600 </p>
6601 </blockquote><p>
6602
6603 </p>
6604 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6605 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6606 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6607 Get amount of existing MIDI instrument maps</h3>
6608
6609 <p>The front-end can retrieve the current amount of MIDI
6610 instrument maps by sending the following command:
6611 </p>
6612 <p>
6613 </p>
6614 <blockquote class="text">
6615 <p>GET MIDI_INSTRUMENT_MAPS
6616 </p>
6617 </blockquote><p>
6618
6619 </p>
6620 <p>Possible Answers:
6621 </p>
6622 <p>
6623 </p>
6624 <blockquote class="text">
6625 <p>The sampler will answer by returning the current
6626 number of MIDI instrument maps.
6627 </p>
6628 </blockquote><p>
6629
6630 </p>
6631 <p>Example:
6632 </p>
6633 <p>
6634 </p>
6635 <blockquote class="text">
6636 <p>C: "GET MIDI_INSTRUMENT_MAPS"
6637 </p>
6638 <p>S: "2"
6639 </p>
6640 </blockquote><p>
6641
6642 </p>
6643 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6644 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6645 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6646 Getting all created MIDI instrument maps</h3>
6647
6648 <p>The number of MIDI instrument maps can change on runtime. To get the
6649 current list of MIDI instrument maps, the front-end can send the
6650 following command:
6651 </p>
6652 <p>
6653 </p>
6654 <blockquote class="text">
6655 <p>LIST MIDI_INSTRUMENT_MAPS
6656 </p>
6657 </blockquote><p>
6658
6659 </p>
6660 <p>Possible Answers:
6661 </p>
6662 <p>
6663 </p>
6664 <blockquote class="text">
6665 <p>The sampler will answer by returning a comma separated list
6666 with all MIDI instrument maps' numerical IDs.
6667 </p>
6668 </blockquote><p>
6669
6670 </p>
6671 <p>Example:
6672 </p>
6673 <p>
6674 </p>
6675 <blockquote class="text">
6676 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6677 </p>
6678 <p>S: "0,1,5,12"
6679 </p>
6680 </blockquote><p>
6681
6682 </p>
6683 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6684 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6685 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6686 Getting MIDI instrument map information</h3>
6687
6688 <p>The front-end can ask for the current settings of a MIDI
6689 instrument map by sending the following command:
6690 </p>
6691 <p>
6692 </p>
6693 <blockquote class="text">
6694 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6695 </p>
6696 </blockquote><p>
6697
6698 </p>
6699 <p>Where &lt;map&gt; is the numerical ID of the map the
6700 front-end is interested in as returned by the
6701 <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>
6702 command.
6703 </p>
6704 <p>Possible Answers:
6705 </p>
6706 <p>
6707 </p>
6708 <blockquote class="text">
6709 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6710 Each answer line begins with the settings category name
6711 followed by a colon and then a space character &lt;SP&gt; and finally
6712 the info character string to that setting category. At the
6713 moment the following categories are defined:
6714 </p>
6715 <p>
6716 </p>
6717 <blockquote class="text">
6718 <p>NAME -
6719 </p>
6720 <blockquote class="text">
6721 <p>custom name of the given map,
6722 which does not have to be unique
6723 (note that this character string may contain
6724 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6725 </p>
6726 </blockquote>
6727
6728
6729 <p>DEFAULT -
6730 </p>
6731 <blockquote class="text">
6732 <p>either true or false,
6733 defines whether this map is the default map
6734 </p>
6735 </blockquote>
6736
6737
6738 </blockquote>
6739
6740
6741 </blockquote><p>
6742
6743 </p>
6744 <p>The mentioned fields above don't have to be in particular order.
6745 </p>
6746 <p>Example:
6747 </p>
6748 <p>
6749 </p>
6750 <blockquote class="text">
6751 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6752 </p>
6753 <p>S: "NAME: Standard Map"
6754 </p>
6755 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6756 </p>
6757 <p>&nbsp;&nbsp;&nbsp;"."
6758 </p>
6759 </blockquote><p>
6760
6761 </p>
6762 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6763 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6764 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6765 Renaming a MIDI instrument map</h3>
6766
6767 <p>The front-end can alter the custom name of a MIDI
6768 instrument map by sending the following command:
6769 </p>
6770 <p>
6771 </p>
6772 <blockquote class="text">
6773 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6774 </p>
6775 </blockquote><p>
6776
6777 </p>
6778 <p>Where &lt;map&gt; is the numerical ID of the map and
6779 &lt;name&gt; the new custom name of the map, which does not
6780 have to be unique (name MUST be encapsulated into apostrophes
6781 and supports escape sequences as described in chapter
6782 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
6783
6784 </p>
6785 <p>Possible Answers:
6786 </p>
6787 <p>
6788 </p>
6789 <blockquote class="text">
6790 <p>"OK" -
6791 </p>
6792 <blockquote class="text">
6793 <p>on success
6794 </p>
6795 </blockquote>
6796
6797
6798 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6799 </p>
6800 <blockquote class="text">
6801 <p>in case the given map does not exist
6802 </p>
6803 </blockquote>
6804
6805
6806 </blockquote><p>
6807
6808 </p>
6809 <p>Example:
6810 </p>
6811 <p>
6812 </p>
6813 <blockquote class="text">
6814 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6815 </p>
6816 <p>S: "OK"
6817 </p>
6818 </blockquote><p>
6819
6820 </p>
6821 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6822 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6823 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6824 Create or replace a MIDI instrument map entry</h3>
6825
6826 <p>The front-end can create a new or replace an existing entry
6827 in a sampler's MIDI instrument map by sending the following
6828 command:
6829 </p>
6830 <p>
6831 </p>
6832 <blockquote class="text">
6833 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6834 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6835 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6836 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6837 </p>
6838 </blockquote><p>
6839
6840 </p>
6841 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6842 &lt;midi_bank&gt; is an integer value between
6843 0..16383 reflecting the MIDI bank select index,
6844 &lt;midi_prog&gt; an
6845 integer value between 0..127 reflecting the MIDI program change
6846 index, &lt;engine_name&gt; a sampler engine name as returned by
6847 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6848 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6849 of the instrument's file to be deployed (encapsulated into apostrophes,
6850 supporting escape sequences as described in chapter
6851 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"),
6852 &lt;instrument_index&gt; the index (integer value) of the instrument
6853 within the given file, &lt;volume_value&gt; reflects the master
6854 volume of the instrument as optionally dotted number (where a
6855 value &lt; 1.0 means attenuation and a value > 1.0 means
6856 amplification). This parameter easily allows to adjust the
6857 volume of all intruments within a custom instrument map
6858 without having to adjust their instrument files. The
6859 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6860 time of the instrument, that is when the instrument should
6861 be loaded, when freed and has exactly the following
6862 possibilities:
6863 </p>
6864 <p>
6865 </p>
6866 <blockquote class="text">
6867 <p>"ON_DEMAND" -
6868 </p>
6869 <blockquote class="text">
6870 <p>The instrument will be loaded when needed,
6871 that is when demanded by at least one sampler
6872 channel. It will immediately be freed from memory
6873 when not needed by any sampler channel anymore.
6874 </p>
6875 </blockquote>
6876
6877
6878 <p>"ON_DEMAND_HOLD" -
6879 </p>
6880 <blockquote class="text">
6881 <p>The instrument will be loaded when needed,
6882 that is when demanded by at least one sampler
6883 channel. It will be kept in memory even when
6884 not needed by any sampler channel anymore.
6885 Instruments with this mode are only freed
6886 when the sampler is reset or all mapping
6887 entries with this mode (and respective
6888 instrument) are explicitly changed to
6889 "ON_DEMAND" and no sampler channel is using
6890 the instrument anymore.
6891 </p>
6892 </blockquote>
6893
6894
6895 <p>"PERSISTENT" -
6896 </p>
6897 <blockquote class="text">
6898 <p>The instrument will immediately be loaded
6899 into memory when this mapping
6900 command is sent and the instrument is kept all
6901 the time. Instruments with this mode are
6902 only freed when the sampler is reset or all
6903 mapping entries with this mode (and
6904 respective instrument) are explicitly
6905 changed to "ON_DEMAND" and no sampler
6906 channel is using the instrument anymore.
6907 </p>
6908 </blockquote>
6909
6910
6911 <p>not supplied -
6912 </p>
6913 <blockquote class="text">
6914 <p>In case there is no &lt;instr_load_mode&gt;
6915 argument given, it will be up to the
6916 InstrumentManager to decide which mode to use.
6917 Usually it will use "ON_DEMAND" if an entry
6918 for the given instrument does not exist in
6919 the InstrumentManager's list yet, otherwise
6920 if an entry already exists, it will simply
6921 stick with the mode currently reflected by
6922 the already existing entry, that is it will
6923 not change the mode.
6924 </p>
6925 </blockquote>
6926
6927
6928 </blockquote><p>
6929
6930 </p>
6931 <p>
6932 The &lt;instr_load_mode&gt; argument thus allows to define an
6933 appropriate strategy (low memory consumption vs. fast
6934 instrument switching) for each instrument individually. Note, the
6935 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6936 "PERSISTENT" have to be supported by the respective sampler engine
6937 (which is technically the case when the engine provides an
6938 InstrumentManager for its format). If this is not the case the
6939 argument will automatically fall back to the default value
6940 "ON_DEMAND". Also the load mode of one instrument may
6941 automatically change the laod mode of other instrument(s), i.e.
6942 because the instruments are part of the same file and the
6943 engine does not allow a way to manage load modes for them
6944 individually. Due to this, in case the frontend shows the
6945 load modes of entries, the frontend should retrieve the actual
6946 mode by i.e. sending
6947 <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>
6948 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6949 (encapsulated into apostrophes, supporting escape sequences as described in chapter
6950 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") for the
6951 mapping entry, useful for frontends for displaying an appropriate name for
6952 mapped instruments (using
6953 <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>).
6954
6955 </p>
6956 <p>
6957 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6958 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6959 however causes the respective "MAP MIDI_INSTRUMENT" command to return
6960 immediately, that is to let the sampler establish the mapping in the
6961 background. So this argument might be especially useful for mappings with
6962 a "PERSISTENT" type, because these have to load the respective instruments
6963 immediately and might thus block for a very long time. It is recommended
6964 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6965 because it has the following drawbacks: as "NON_MODAL" instructions return
6966 immediately, they may not necessarily return an error i.e. when the given
6967 instrument file turns out to be corrupt, beside that subsequent commands
6968 in a LSCP instruction sequence might fail, because mandatory mappings are
6969 not yet completed.
6970
6971 </p>
6972 <p>Possible Answers:
6973 </p>
6974 <p>
6975 </p>
6976 <blockquote class="text">
6977 <p>"OK" -
6978 </p>
6979 <blockquote class="text">
6980 <p>usually
6981 </p>
6982 </blockquote>
6983
6984
6985 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6986 </p>
6987 <blockquote class="text">
6988 <p>when the given map or engine does not exist or a value
6989 is out of range
6990 </p>
6991 </blockquote>
6992
6993
6994 </blockquote><p>
6995
6996 </p>
6997 <p>Examples:
6998 </p>
6999 <p>
7000 </p>
7001 <blockquote class="text">
7002 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7003 </p>
7004 <p>S: "OK"
7005 </p>
7006 </blockquote><p>
7007
7008 </p>
7009 <p>
7010 </p>
7011 <blockquote class="text">
7012 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7013 </p>
7014 <p>S: "OK"
7015 </p>
7016 </blockquote><p>
7017
7018 </p>
7019 <p>
7020 </p>
7021 <blockquote class="text">
7022 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7023 </p>
7024 <p>S: "OK"
7025 </p>
7026 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7027 </p>
7028 <p>S: "OK"
7029 </p>
7030 </blockquote><p>
7031
7032 </p>
7033 <p>
7034 </p>
7035 <blockquote class="text">
7036 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7037 </p>
7038 <p>S: "OK"
7039 </p>
7040 </blockquote><p>
7041
7042 </p>
7043 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7044 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7045 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7046 Getting ammount of MIDI instrument map entries</h3>
7047
7048 <p>The front-end can query the amount of currently existing
7049 entries in a MIDI instrument map by sending the following
7050 command:
7051 </p>
7052 <p>
7053 </p>
7054 <blockquote class="text">
7055 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7056 </p>
7057 </blockquote><p>
7058
7059 </p>
7060 <p>The front-end can query the amount of currently existing
7061 entries in all MIDI instrument maps by sending the following
7062 command:
7063 </p>
7064 <p>
7065 </p>
7066 <blockquote class="text">
7067 <p>GET MIDI_INSTRUMENTS ALL
7068 </p>
7069 </blockquote><p>
7070
7071 </p>
7072 <p>Possible Answers:
7073 </p>
7074 <p>
7075 </p>
7076 <blockquote class="text">
7077 <p>The sampler will answer by sending the current number of
7078 entries in the MIDI instrument map(s).
7079 </p>
7080 </blockquote><p>
7081
7082 </p>
7083 <p>Example:
7084 </p>
7085 <p>
7086 </p>
7087 <blockquote class="text">
7088 <p>C: "GET MIDI_INSTRUMENTS 0"
7089 </p>
7090 <p>S: "234"
7091 </p>
7092 </blockquote><p>
7093
7094 </p>
7095 <p>
7096 </p>
7097 <blockquote class="text">
7098 <p>C: "GET MIDI_INSTRUMENTS ALL"
7099 </p>
7100 <p>S: "954"
7101 </p>
7102 </blockquote><p>
7103
7104 </p>
7105 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7106 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7107 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7108 Getting indeces of all entries of a MIDI instrument map</h3>
7109
7110 <p>The front-end can query a list of all currently existing
7111 entries in a certain MIDI instrument map by sending the following
7112 command:
7113 </p>
7114 <p>
7115 </p>
7116 <blockquote class="text">
7117 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7118 </p>
7119 </blockquote><p>
7120
7121 </p>
7122 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7123 </p>
7124 <p>The front-end can query a list of all currently existing
7125 entries of all MIDI instrument maps by sending the following
7126 command:
7127 </p>
7128 <p>
7129 </p>
7130 <blockquote class="text">
7131 <p>LIST MIDI_INSTRUMENTS ALL
7132 </p>
7133 </blockquote><p>
7134
7135 </p>
7136 <p>Possible Answers:
7137 </p>
7138 <p>
7139 </p>
7140 <blockquote class="text">
7141 <p>The sampler will answer by sending a comma separated
7142 list of map ID - MIDI bank - MIDI program triples, where
7143 each triple is encapsulated into curly braces. The
7144 list is returned in one single line. Each triple
7145 just reflects the key of the respective map entry,
7146 thus subsequent
7147 <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>
7148 command(s) are necessary to retrieve detailed informations
7149 about each entry.
7150 </p>
7151 </blockquote><p>
7152
7153 </p>
7154 <p>Example:
7155 </p>
7156 <p>
7157 </p>
7158 <blockquote class="text">
7159 <p>C: "LIST MIDI_INSTRUMENTS 0"
7160 </p>
7161 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7162 </p>
7163 </blockquote><p>
7164
7165 </p>
7166 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7167 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7168 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7169 Remove an entry from the MIDI instrument map</h3>
7170
7171 <p>The front-end can delete an entry from a MIDI instrument
7172 map by sending the following command:
7173 </p>
7174 <p>
7175 </p>
7176 <blockquote class="text">
7177 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7178 </p>
7179 </blockquote><p>
7180
7181 </p>
7182 <p>
7183 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7184 &lt;midi_bank&gt; is an integer value between 0..16383
7185 reflecting the MIDI bank value and
7186 &lt;midi_prog&gt; an integer value between
7187 0..127 reflecting the MIDI program value of the map's entrie's key
7188 index triple.
7189
7190 </p>
7191 <p>Possible Answers:
7192 </p>
7193 <p>
7194 </p>
7195 <blockquote class="text">
7196 <p>"OK" -
7197 </p>
7198 <blockquote class="text">
7199 <p>usually
7200 </p>
7201 </blockquote>
7202
7203
7204 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7205 </p>
7206 <blockquote class="text">
7207 <p>when index out of bounds
7208 </p>
7209 </blockquote>
7210
7211
7212 </blockquote><p>
7213
7214 </p>
7215 <p>Example:
7216 </p>
7217 <p>
7218 </p>
7219 <blockquote class="text">
7220 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7221 </p>
7222 <p>S: "OK"
7223 </p>
7224 </blockquote><p>
7225
7226 </p>
7227 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7228 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7229 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7230 Get current settings of MIDI instrument map entry</h3>
7231
7232 <p>The front-end can retrieve the current settings of a certain
7233 instrument map entry by sending the following command:
7234 </p>
7235 <p>
7236 </p>
7237 <blockquote class="text">
7238 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7239 </p>
7240 </blockquote><p>
7241
7242 </p>
7243 <p>
7244 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7245 &lt;midi_bank&gt; is an integer value between 0..16383
7246 reflecting the MIDI bank value, &lt;midi_bank&gt;
7247 and &lt;midi_prog&gt; an integer value between
7248 0..127 reflecting the MIDI program value of the map's entrie's key
7249 index triple.
7250
7251 </p>
7252 <p>Possible Answers:
7253 </p>
7254 <p>
7255 </p>
7256 <blockquote class="text">
7257 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7258 separated list. Each answer line begins with the
7259 information category name followed by a colon and then
7260 a space character &lt;SP&gt; and finally the info
7261 character string to that info category. At the moment
7262 the following categories are defined:
7263 </p>
7264 <p>"NAME" -
7265 </p>
7266 <blockquote class="text">
7267 <p>Name for this MIDI instrument map entry (if defined).
7268 This name shall be used by frontends for displaying a
7269 name for this mapped instrument. It can be set and
7270 changed with the
7271 <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>
7272 command and does not have to be unique.
7273 (note that this character string may contain
7274 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7275 </p>
7276 </blockquote>
7277
7278
7279 <p>"ENGINE_NAME" -
7280 </p>
7281 <blockquote class="text">
7282 <p>Name of the engine to be deployed for this
7283 instrument.
7284 </p>
7285 </blockquote>
7286
7287
7288 <p>"INSTRUMENT_FILE" -
7289 </p>
7290 <blockquote class="text">
7291 <p>File name of the instrument
7292 (note that this path may contain
7293 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7294 </p>
7295 </blockquote>
7296
7297
7298 <p>"INSTRUMENT_NR" -
7299 </p>
7300 <blockquote class="text">
7301 <p>Index of the instrument within the file.
7302 </p>
7303 </blockquote>
7304
7305
7306 <p>"INSTRUMENT_NAME" -
7307 </p>
7308 <blockquote class="text">
7309 <p>Name of the loaded instrument as reflected by its file.
7310 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7311 cannot be changed (note that this character string may contain
7312 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7313 </p>
7314 </blockquote>
7315
7316
7317 <p>"LOAD_MODE" -
7318 </p>
7319 <blockquote class="text">
7320 <p>Life time of instrument
7321 (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).
7322 </p>
7323 </blockquote>
7324
7325
7326 <p>"VOLUME" -
7327 </p>
7328 <blockquote class="text">
7329 <p>master volume of the instrument as optionally
7330 dotted number (where a value &lt; 1.0 means attenuation
7331 and a value > 1.0 means amplification)
7332 </p>
7333 </blockquote>
7334
7335
7336 <p>The mentioned fields above don't have to be in particular order.
7337 </p>
7338 </blockquote><p>
7339
7340 </p>
7341 <p>Example:
7342 </p>
7343 <p>
7344 </p>
7345 <blockquote class="text">
7346 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7347 </p>
7348 <p>S: "NAME: Drums for Foo Song"
7349 </p>
7350 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7351 </p>
7352 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7353 </p>
7354 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7355 </p>
7356 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7357 </p>
7358 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7359 </p>
7360 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7361 </p>
7362 <p>&nbsp;&nbsp;&nbsp;"."
7363 </p>
7364 </blockquote><p>
7365
7366 </p>
7367 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7368 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7369 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7370 Clear MIDI instrument map</h3>
7371
7372 <p>The front-end can clear a whole MIDI instrument map, that
7373 is delete all its entries by sending the following command:
7374 </p>
7375 <p>
7376 </p>
7377 <blockquote class="text">
7378 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7379 </p>
7380 </blockquote><p>
7381
7382 </p>
7383 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7384 </p>
7385 <p>The front-end can clear all MIDI instrument maps, that
7386 is delete all entries of all maps by sending the following
7387 command:
7388 </p>
7389 <p>
7390 </p>
7391 <blockquote class="text">
7392 <p>CLEAR MIDI_INSTRUMENTS ALL
7393 </p>
7394 </blockquote><p>
7395
7396 </p>
7397 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7398 maps, only their entries, thus the map's settings like
7399 custom name will be preservevd.
7400 </p>
7401 <p>Possible Answers:
7402 </p>
7403 <p>
7404 </p>
7405 <blockquote class="text">
7406 <p>"OK" -
7407 </p>
7408 <blockquote class="text">
7409 <p>always
7410 </p>
7411 </blockquote>
7412
7413
7414 </blockquote><p>
7415
7416 </p>
7417 <p>Examples:
7418 </p>
7419 <p>
7420 </p>
7421 <blockquote class="text">
7422 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7423 </p>
7424 <p>S: "OK"
7425 </p>
7426 </blockquote><p>
7427
7428 </p>
7429 <p>
7430 </p>
7431 <blockquote class="text">
7432 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7433 </p>
7434 <p>S: "OK"
7435 </p>
7436 </blockquote><p>
7437
7438 </p>
7439 <a name="Managing Instruments Database"></a><br /><hr />
7440 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7441 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7442 Managing Instruments Database</h3>
7443
7444 <p>The following commands describe how to use and manage
7445 the instruments database.
7446 </p>
7447 <p>Notice:
7448 </p>
7449 <p>
7450 </p>
7451 <blockquote class="text">
7452 <p>All command arguments representing a path or
7453 instrument/directory name support escape sequences as described in chapter
7454 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
7455
7456 </p>
7457 <p>All occurrences of a forward slash in instrument and directory
7458 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7459
7460 </p>
7461 </blockquote><p>
7462
7463 </p>
7464 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7465 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7466 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7467 Creating a new instrument directory</h3>
7468
7469 <p>The front-end can add a new instrument directory to the
7470 instruments database by sending the following command:
7471 </p>
7472 <p>
7473 </p>
7474 <blockquote class="text">
7475 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7476 </p>
7477 </blockquote><p>
7478
7479 </p>
7480 <p>Where &lt;dir&gt; is the absolute path name of the directory
7481 to be created (encapsulated into apostrophes).
7482 </p>
7483 <p>Possible Answers:
7484 </p>
7485 <p>
7486 </p>
7487 <blockquote class="text">
7488 <p>"OK" -
7489 </p>
7490 <blockquote class="text">
7491 <p>on success
7492 </p>
7493 </blockquote>
7494
7495
7496 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7497 </p>
7498 <blockquote class="text">
7499 <p>when the directory could not be created, which
7500 can happen if the directory already exists or the
7501 name contains not allowed symbols
7502 </p>
7503 </blockquote>
7504
7505
7506 </blockquote><p>
7507
7508 </p>
7509 <p>Examples:
7510 </p>
7511 <p>
7512 </p>
7513 <blockquote class="text">
7514 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7515 </p>
7516 <p>S: "OK"
7517 </p>
7518 </blockquote><p>
7519
7520 </p>
7521 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7522 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7523 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7524 Deleting an instrument directory</h3>
7525
7526 <p>The front-end can delete a particular instrument directory
7527 from the instruments database by sending the following command:
7528 </p>
7529 <p>
7530 </p>
7531 <blockquote class="text">
7532 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7533 </p>
7534 </blockquote><p>
7535
7536 </p>
7537 <p>Where &lt;dir&gt; is the absolute path name of the directory
7538 to delete. The optional FORCE argument can be used to
7539 force the deletion of a non-empty directory and all its content.
7540 </p>
7541 <p>Possible Answers:
7542 </p>
7543 <p>
7544 </p>
7545 <blockquote class="text">
7546 <p>"OK" -
7547 </p>
7548 <blockquote class="text">
7549 <p>if the directory is deleted successfully
7550 </p>
7551 </blockquote>
7552
7553
7554 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7555 </p>
7556 <blockquote class="text">
7557 <p>if the given directory does not exist, or
7558 if trying to delete a non-empty directory,
7559 without using the FORCE argument.
7560 </p>
7561 </blockquote>
7562
7563
7564 </blockquote><p>
7565
7566 </p>
7567 <p>Examples:
7568 </p>
7569 <p>
7570 </p>
7571 <blockquote class="text">
7572 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7573 </p>
7574 <p>S: "OK"
7575 </p>
7576 </blockquote><p>
7577
7578 </p>
7579 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7580 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7581 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7582 Getting amount of instrument directories</h3>
7583
7584 <p>The front-end can retrieve the current amount of
7585 directories in a specific directory by sending the following command:
7586 </p>
7587 <p>
7588 </p>
7589 <blockquote class="text">
7590 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7591 </p>
7592 </blockquote><p>
7593
7594 </p>
7595 <p>Where &lt;dir&gt; should be replaced by the absolute path
7596 name of the directory. If RECURSIVE is specified, the number of
7597 all directories, including those located in subdirectories of the
7598 specified directory, will be returned.
7599 </p>
7600 <p>Possible Answers:
7601 </p>
7602 <p>
7603 </p>
7604 <blockquote class="text">
7605 <p>The current number of instrument directories
7606 in the specified directory.
7607 </p>
7608 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7609 </p>
7610 <blockquote class="text">
7611 <p>if the given directory does not exist.
7612 </p>
7613 </blockquote>
7614
7615
7616 </blockquote><p>
7617
7618 </p>
7619 <p>Example:
7620 </p>
7621 <p>
7622 </p>
7623 <blockquote class="text">
7624 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7625 </p>
7626 <p>S: "2"
7627 </p>
7628 </blockquote><p>
7629
7630 </p>
7631 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7632 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7633 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7634 Listing all directories in specific directory</h3>
7635
7636 <p>The front-end can retrieve the current list of directories
7637 in specific directory by sending the following command:
7638 </p>
7639 <p>
7640 </p>
7641 <blockquote class="text">
7642 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7643 </p>
7644 </blockquote><p>
7645
7646 </p>
7647 <p>Where &lt;dir&gt; should be replaced by the absolute path
7648 name of the directory. If RECURSIVE is specified, the absolute path names
7649 of all directories, including those located in subdirectories of the
7650 specified directory, will be returned.
7651 </p>
7652 <p>Possible Answers:
7653 </p>
7654 <p>
7655 </p>
7656 <blockquote class="text">
7657 <p>A comma separated list of all instrument directories
7658 (encapsulated into apostrophes) in the specified directory.
7659 </p>
7660 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7661 </p>
7662 <blockquote class="text">
7663 <p>if the given directory does not exist.
7664 </p>
7665 </blockquote>
7666
7667
7668 </blockquote><p>
7669
7670 </p>
7671 <p>Example:
7672 </p>
7673 <p>
7674 </p>
7675 <blockquote class="text">
7676 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7677 </p>
7678 <p>S: "'Piano Collection','Percussion Collection'"
7679 </p>
7680 </blockquote><p>
7681
7682 </p>
7683 <p>
7684 </p>
7685 <blockquote class="text">
7686 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7687 </p>
7688 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7689 </p>
7690 </blockquote><p>
7691
7692 </p>
7693 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7694 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7695 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7696 Getting instrument directory information</h3>
7697
7698 <p>The front-end can ask for the current settings of an
7699 instrument directory by sending the following command:
7700 </p>
7701 <p>
7702 </p>
7703 <blockquote class="text">
7704 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7705 </p>
7706 </blockquote><p>
7707
7708 </p>
7709 <p>Where &lt;dir&gt; should be replaced by the absolute path
7710 name of the directory the front-end is interested in.
7711 </p>
7712 <p>Possible Answers:
7713 </p>
7714 <p>
7715 </p>
7716 <blockquote class="text">
7717 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7718 Each answer line begins with the settings category name
7719 followed by a colon and then a space character &lt;SP&gt; and finally
7720 the info character string to that setting category. At the
7721 moment the following categories are defined:
7722 </p>
7723 <p>
7724 </p>
7725 <blockquote class="text">
7726 <p>DESCRIPTION -
7727 </p>
7728 <blockquote class="text">
7729 <p>A brief description of the directory content.
7730 Note that the character string may contain
7731 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7732 </p>
7733 </blockquote>
7734
7735
7736 <p>CREATED -
7737 </p>
7738 <blockquote class="text">
7739 <p>The creation date and time of the directory,
7740 represented in "YYYY-MM-DD HH:MM:SS" format
7741 </p>
7742 </blockquote>
7743
7744
7745 <p>MODIFIED -
7746 </p>
7747 <blockquote class="text">
7748 <p>The date and time of the last modification of the
7749 directory, represented in "YYYY-MM-DD HH:MM:SS" format
7750 </p>
7751 </blockquote>
7752
7753
7754 </blockquote>
7755
7756
7757 </blockquote><p>
7758
7759 </p>
7760 <p>The mentioned fields above don't have to be in particular order.
7761 </p>
7762 <p>Example:
7763 </p>
7764 <p>
7765 </p>
7766 <blockquote class="text">
7767 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7768 </p>
7769 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7770 </p>
7771 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7772 </p>
7773 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7774 </p>
7775 <p>&nbsp;&nbsp;&nbsp;"."
7776 </p>
7777 </blockquote><p>
7778
7779 </p>
7780 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7781 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7782 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7783 Renaming an instrument directory</h3>
7784
7785 <p>The front-end can alter the name of a specific
7786 instrument directory by sending the following command:
7787 </p>
7788 <p>
7789 </p>
7790 <blockquote class="text">
7791 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7792 </p>
7793 </blockquote><p>
7794
7795 </p>
7796 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7797 &lt;name&gt; is the new name for that directory.
7798 </p>
7799 <p>Possible Answers:
7800 </p>
7801 <p>
7802 </p>
7803 <blockquote class="text">
7804 <p>"OK" -
7805 </p>
7806 <blockquote class="text">
7807 <p>on success
7808 </p>
7809 </blockquote>
7810
7811
7812 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7813 </p>
7814 <blockquote class="text">
7815 <p>in case the given directory does not exists,
7816 or if a directory with name equal to the new
7817 name already exists.
7818 </p>
7819 </blockquote>
7820
7821
7822 </blockquote><p>
7823
7824 </p>
7825 <p>Example:
7826 </p>
7827 <p>
7828 </p>
7829 <blockquote class="text">
7830 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7831 </p>
7832 <p>S: "OK"
7833 </p>
7834 </blockquote><p>
7835
7836 </p>
7837 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7838 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7839 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7840 Moving an instrument directory</h3>
7841
7842 <p>The front-end can move a specific
7843 instrument directory by sending the following command:
7844 </p>
7845 <p>
7846 </p>
7847 <blockquote class="text">
7848 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7849 </p>
7850 </blockquote><p>
7851
7852 </p>
7853 <p>Where &lt;dir&gt; is the absolute path name of the directory
7854 to move and &lt;dst&gt; is the location where the directory will
7855 be moved to.
7856 </p>
7857 <p>Possible Answers:
7858 </p>
7859 <p>
7860 </p>
7861 <blockquote class="text">
7862 <p>"OK" -
7863 </p>
7864 <blockquote class="text">
7865 <p>on success
7866 </p>
7867 </blockquote>
7868
7869
7870 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7871 </p>
7872 <blockquote class="text">
7873 <p>in case a given directory does not exists,
7874 or if a directory with name equal to the name
7875 of the specified directory already exists in
7876 the destination directory. Error is also thrown
7877 when trying to move a directory to a subdirectory
7878 of itself.
7879 </p>
7880 </blockquote>
7881
7882
7883 </blockquote><p>
7884
7885 </p>
7886 <p>Example:
7887 </p>
7888 <p>
7889 </p>
7890 <blockquote class="text">
7891 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7892 </p>
7893 <p>S: "OK"
7894 </p>
7895 </blockquote><p>
7896
7897 </p>
7898 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7899 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7900 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7901 Copying instrument directories</h3>
7902
7903 <p>The front-end can copy a specific
7904 instrument directory by sending the following command:
7905 </p>
7906 <p>
7907 </p>
7908 <blockquote class="text">
7909 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7910 </p>
7911 </blockquote><p>
7912
7913 </p>
7914 <p>Where &lt;dir&gt; is the absolute path name of the directory
7915 to copy and &lt;dst&gt; is the location where the directory will
7916 be copied to.
7917 </p>
7918 <p>Possible Answers:
7919 </p>
7920 <p>
7921 </p>
7922 <blockquote class="text">
7923 <p>"OK" -
7924 </p>
7925 <blockquote class="text">
7926 <p>on success
7927 </p>
7928 </blockquote>
7929
7930
7931 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7932 </p>
7933 <blockquote class="text">
7934 <p>in case a given directory does not exists,
7935 or if a directory with name equal to the name
7936 of the specified directory already exists in
7937 the destination directory. Error is also thrown
7938 when trying to copy a directory to a subdirectory
7939 of itself.
7940 </p>
7941 </blockquote>
7942
7943
7944 </blockquote><p>
7945
7946 </p>
7947 <p>Example:
7948 </p>
7949 <p>
7950 </p>
7951 <blockquote class="text">
7952 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7953 </p>
7954 <p>S: "OK"
7955 </p>
7956 </blockquote><p>
7957
7958 </p>
7959 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7960 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7961 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7962 Changing the description of directory</h3>
7963
7964 <p>The front-end can alter the description of a specific
7965 instrument directory by sending the following command:
7966 </p>
7967 <p>
7968 </p>
7969 <blockquote class="text">
7970 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7971 </p>
7972 </blockquote><p>
7973
7974 </p>
7975 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7976 &lt;desc&gt; is the new description for the directory
7977 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7978 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7979 </p>
7980 <p>Possible Answers:
7981 </p>
7982 <p>
7983 </p>
7984 <blockquote class="text">
7985 <p>"OK" -
7986 </p>
7987 <blockquote class="text">
7988 <p>on success
7989 </p>
7990 </blockquote>
7991
7992
7993 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7994 </p>
7995 <blockquote class="text">
7996 <p>in case the given directory does not exists.
7997 </p>
7998 </blockquote>
7999
8000
8001 </blockquote><p>
8002
8003 </p>
8004 <p>Example:
8005 </p>
8006 <p>
8007 </p>
8008 <blockquote class="text">
8009 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8010 </p>
8011 <p>S: "OK"
8012 </p>
8013 </blockquote><p>
8014
8015 </p>
8016 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8017 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8018 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8019 Finding directories</h3>
8020
8021 <p>The front-end can search for directories
8022 in specific directory by sending the following command:
8023 </p>
8024 <p>
8025 </p>
8026 <blockquote class="text">
8027 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8028 </p>
8029 </blockquote><p>
8030
8031 </p>
8032 <p>Where &lt;dir&gt; should be replaced by the absolute path
8033 name of the directory to search in. If NON_RECURSIVE is specified, the
8034 directories located in subdirectories of the specified directory will not
8035 be searched. &lt;criteria-list&gt; is a list of search criterias
8036 in form of "key1=val1 key2=val2 ...". The following criterias are
8037 allowed:
8038 </p>
8039 <p>
8040
8041 <p>NAME='&lt;search-string&gt;'
8042 </p>
8043 <blockquote class="text">
8044 <p>Restricts the search to directories, which names
8045 satisfy the supplied search string (encapsulated into apostrophes,
8046 supporting escape sequences as described in chapter
8047 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8048 </p>
8049 </blockquote><p>
8050
8051 </p>
8052
8053
8054 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8055 </p>
8056 <blockquote class="text">
8057 <p>Restricts the search to directories, which creation
8058 date satisfies the specified period, where &lt;date-after&gt;
8059 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8060 If &lt;date-after&gt; is omitted the search is restricted to
8061 directories created before &lt;date-before&gt;. If
8062 &lt;date-before&gt; is omitted, the search is restricted
8063 to directories created after &lt;date-after&gt;.
8064 </p>
8065 </blockquote><p>
8066
8067 </p>
8068
8069
8070 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8071 </p>
8072 <blockquote class="text">
8073 <p>Restricts the search to directories, which
8074 date of last modification satisfies the specified period, where
8075 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8076 format. If &lt;date-after&gt; is omitted the search is restricted to
8077 directories, which are last modified before &lt;date-before&gt;. If
8078 &lt;date-before&gt; is omitted, the search is restricted to directories,
8079 which are last modified after &lt;date-after&gt;.
8080 </p>
8081 </blockquote><p>
8082
8083 </p>
8084
8085
8086 <p>DESCRIPTION='&lt;search-string&gt;'
8087 </p>
8088 <blockquote class="text">
8089 <p>Restricts the search to directories with description
8090 that satisfies the supplied search string
8091 (encapsulated into apostrophes, supporting escape
8092 sequences as described in chapter
8093 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8094 </p>
8095 </blockquote><p>
8096
8097 </p>
8098
8099
8100 <p>Where &lt;search-string&gt; is either a regular expression, or a
8101 word list separated with spaces for OR search and with '+' for AND search.
8102 </p>
8103 <p>Possible Answers:
8104 </p>
8105 <p>
8106 </p>
8107 <blockquote class="text">
8108 <p>A comma separated list with the absolute path names (encapsulated into
8109 apostrophes) of all directories in the specified directory that satisfy
8110 the supplied search criterias.
8111 </p>
8112 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8113 </p>
8114 <blockquote class="text">
8115 <p>if the given directory does not exist.
8116 </p>
8117 </blockquote>
8118
8119
8120 </blockquote><p>
8121
8122 </p>
8123 <p>Example:
8124 </p>
8125 <p>
8126 </p>
8127 <blockquote class="text">
8128 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8129 </p>
8130 <p>S: "'/Piano Collection'"
8131 </p>
8132 </blockquote><p>
8133
8134 </p>
8135 <p>
8136 </p>
8137 <blockquote class="text">
8138 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8139 </p>
8140 <p>S: "'/Piano Collection','/Percussions'"
8141 </p>
8142 </blockquote><p>
8143
8144 </p>
8145 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8146 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8147 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8148 Adding instruments to the instruments database</h3>
8149
8150 <p>The front-end can add one or more instruments
8151 to the instruments database by sending the following command:
8152 </p>
8153 <p>
8154 </p>
8155 <blockquote class="text">
8156 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8157 </p>
8158 </blockquote><p>
8159
8160 </p>
8161 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8162 (encapsulated into apostrophes) in the instruments database in which
8163 only the new instruments (that are not already in the database) will
8164 be added, &lt;file_path&gt; is the absolute path name of a file or
8165 directory in the file system (encapsulated into apostrophes). In case
8166 an instrument file is supplied, only the instruments in the specified
8167 file will be added to the instruments database. If the optional
8168 &lt;instr_index&gt; (the index of the instrument within the given file)
8169 is supplied too, then only the specified instrument will be added.
8170 In case a directory is supplied, the instruments in that directory
8171 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8172 when a directory is provided as &lt;file_path&gt; and specifies how the
8173 scanning will be done and has exactly the following possibilities:
8174 </p>
8175 <p>
8176 </p>
8177 <blockquote class="text">
8178 <p>"RECURSIVE" -
8179 </p>
8180 <blockquote class="text">
8181 <p>All instruments will be processed, including those
8182 in the subdirectories, and the respective subdirectory
8183 tree structure will be recreated in the instruments
8184 database
8185 </p>
8186 </blockquote>
8187
8188
8189 <p>"NON_RECURSIVE" -
8190 </p>
8191 <blockquote class="text">
8192 <p>Only the instruments in the specified directory
8193 will be added, the instruments in the subdirectories
8194 will not be processed.
8195 </p>
8196 </blockquote>
8197
8198
8199 <p>"FLAT" -
8200 </p>
8201 <blockquote class="text">
8202 <p>All instruments will be processed, including those
8203 in the subdirectories, but the respective subdirectory
8204 structure will not be recreated in the instruments
8205 database. All instruments will be added directly in
8206 the specified database directory.
8207 </p>
8208 </blockquote>
8209
8210
8211 </blockquote><p>
8212
8213 </p>
8214 <p>The difference between regular and NON_MODAL versions of the command
8215 is that the regular command returns when the scanning is finished
8216 while NON_MODAL version returns immediately and a background process is launched.
8217 The <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8218 command can be used to monitor the scanning progress.
8219 </p>
8220 <p>Possible Answers:
8221 </p>
8222 <p>
8223 </p>
8224 <blockquote class="text">
8225 <p>"OK" -
8226 </p>
8227 <blockquote class="text">
8228 <p>on success when NON_MODAL is not supplied
8229 </p>
8230 </blockquote>
8231
8232
8233 <p>"OK[&lt;job-id&gt;]" -
8234 </p>
8235 <blockquote class="text">
8236 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8237 is a numerical ID used to obtain status information about the job progress.
8238 See <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8239
8240 </p>
8241 </blockquote>
8242
8243
8244 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8245 </p>
8246 <blockquote class="text">
8247 <p>if an invalid path is specified.
8248 </p>
8249 </blockquote>
8250
8251
8252 </blockquote><p>
8253
8254 </p>
8255 <p>Examples:
8256 </p>
8257 <p>
8258 </p>
8259 <blockquote class="text">
8260 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8261 </p>
8262 <p>S: "OK"
8263 </p>
8264 </blockquote><p>
8265
8266 </p>
8267 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8268 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8269 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8270 Removing an instrument</h3>
8271
8272 <p>The front-end can remove a particular instrument
8273 from the instruments database by sending the following command:
8274 </p>
8275 <p>
8276 </p>
8277 <blockquote class="text">
8278 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8279 </p>
8280 </blockquote><p>
8281
8282 </p>
8283 <p>Where &lt;instr_path&gt; is the absolute path name
8284 (in the instruments database) of the instrument to remove.
8285 </p>
8286 <p>Possible Answers:
8287 </p>
8288 <p>
8289 </p>
8290 <blockquote class="text">
8291 <p>"OK" -
8292 </p>
8293 <blockquote class="text">
8294 <p>if the instrument is removed successfully
8295 </p>
8296 </blockquote>
8297
8298
8299 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8300 </p>
8301 <blockquote class="text">
8302 <p>if the given path does not exist or
8303 is a directory.
8304 </p>
8305 </blockquote>
8306
8307
8308 </blockquote><p>
8309
8310 </p>
8311 <p>Examples:
8312 </p>
8313 <p>
8314 </p>
8315 <blockquote class="text">
8316 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8317 </p>
8318 <p>S: "OK"
8319 </p>
8320 </blockquote><p>
8321
8322 </p>
8323 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8324 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8325 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8326 Getting amount of instruments</h3>
8327
8328 <p>The front-end can retrieve the current amount of
8329 instruments in a specific directory by sending the following command:
8330 </p>
8331 <p>
8332 </p>
8333 <blockquote class="text">
8334 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8335 </p>
8336 </blockquote><p>
8337
8338 </p>
8339 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8340 of the directory. If RECURSIVE is specified, the number of all
8341 instruments, including those located in subdirectories of the
8342 specified directory, will be returned.
8343 </p>
8344 <p>Possible Answers:
8345 </p>
8346 <p>
8347 </p>
8348 <blockquote class="text">
8349 <p>The current number of instruments
8350 in the specified directory.
8351 </p>
8352 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8353 </p>
8354 <blockquote class="text">
8355 <p>if the given directory does not exist.
8356 </p>
8357 </blockquote>
8358
8359
8360 </blockquote><p>
8361
8362 </p>
8363 <p>Example:
8364 </p>
8365 <p>
8366 </p>
8367 <blockquote class="text">
8368 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8369 </p>
8370 <p>S: "2"
8371 </p>
8372 </blockquote><p>
8373
8374 </p>
8375 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8376 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8377 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8378 Listing all instruments in specific directory</h3>
8379
8380 <p>The front-end can retrieve the current list of instruments
8381 in specific directory by sending the following command:
8382 </p>
8383 <p>
8384 </p>
8385 <blockquote class="text">
8386 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8387 </p>
8388 </blockquote><p>
8389
8390 </p>
8391 <p>Where &lt;dir&gt; should be replaced by the absolute path
8392 name of the directory. If RECURSIVE is specified, the absolute path
8393 names of all instruments, including those located in subdirectories
8394 of the specified directory, will be returned.
8395 </p>
8396 <p>Possible Answers:
8397 </p>
8398 <p>
8399 </p>
8400 <blockquote class="text">
8401 <p>A comma separated list of all instruments
8402 (encapsulated into apostrophes) in the specified directory.
8403 </p>
8404 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8405 </p>
8406 <blockquote class="text">
8407 <p>if the given directory does not exist.
8408 </p>
8409 </blockquote>
8410
8411
8412 </blockquote><p>
8413
8414 </p>
8415 <p>Example:
8416 </p>
8417 <p>
8418 </p>
8419 <blockquote class="text">
8420 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8421 </p>
8422 <p>S: "'Bosendorfer 290','Steinway D'"
8423 </p>
8424 </blockquote><p>
8425
8426 </p>
8427 <p>
8428 </p>
8429 <blockquote class="text">
8430 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8431 </p>
8432 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8433 </p>
8434 </blockquote><p>
8435
8436 </p>
8437 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8438 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8439 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8440 Getting instrument information</h3>
8441
8442 <p>The front-end can ask for the current settings of an
8443 instrument by sending the following command:
8444 </p>
8445 <p>
8446 </p>
8447 <blockquote class="text">
8448 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8449 </p>
8450 </blockquote><p>
8451
8452 </p>
8453 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8454 name of the instrument the front-end is interested in.
8455 </p>
8456 <p>Possible Answers:
8457 </p>
8458 <p>
8459 </p>
8460 <blockquote class="text">
8461 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8462 Each answer line begins with the settings category name
8463 followed by a colon and then a space character &lt;SP&gt; and finally
8464 the info character string to that setting category. At the
8465 moment the following categories are defined:
8466 </p>
8467 <p>
8468 </p>
8469 <blockquote class="text">
8470 <p>INSTRUMENT_FILE -
8471 </p>
8472 <blockquote class="text">
8473 <p>File name of the instrument.
8474 Note that the character string may contain
8475 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8476 </p>
8477 </blockquote>
8478
8479
8480 <p>INSTRUMENT_NR -
8481 </p>
8482 <blockquote class="text">
8483 <p>Index of the instrument within the file.
8484 </p>
8485 </blockquote>
8486
8487
8488 <p>FORMAT_FAMILY -
8489 </p>
8490 <blockquote class="text">
8491 <p>The format family of the instrument.
8492 </p>
8493 </blockquote>
8494
8495
8496 <p>FORMAT_VERSION -
8497 </p>
8498 <blockquote class="text">
8499 <p>The format version of the instrument.
8500 </p>
8501 </blockquote>
8502
8503
8504 <p>SIZE -
8505 </p>
8506 <blockquote class="text">
8507 <p>The size of the instrument in bytes.
8508 </p>
8509 </blockquote>
8510
8511
8512 <p>CREATED -
8513 </p>
8514 <blockquote class="text">
8515 <p>The date and time when the instrument is added
8516 in the instruments database, represented in
8517 "YYYY-MM-DD HH:MM:SS" format
8518 </p>
8519 </blockquote>
8520
8521
8522 <p>MODIFIED -
8523 </p>
8524 <blockquote class="text">
8525 <p>The date and time of the last modification of the
8526 instrument's database settings, represented in
8527 "YYYY-MM-DD HH:MM:SS" format
8528 </p>
8529 </blockquote>
8530
8531
8532 <p>DESCRIPTION -
8533 </p>
8534 <blockquote class="text">
8535 <p>A brief description of the instrument.
8536 Note that the character string may contain
8537 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8538 </p>
8539 </blockquote>
8540
8541
8542 <p>IS_DRUM -
8543 </p>
8544 <blockquote class="text">
8545 <p>either true or false, determines whether the
8546 instrument is a drumkit or a chromatic instrument
8547 </p>
8548 </blockquote>
8549
8550
8551 <p>PRODUCT -
8552 </p>
8553 <blockquote class="text">
8554 <p>The product title of the instrument.
8555 Note that the character string may contain
8556 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8557 </p>
8558 </blockquote>
8559
8560
8561 <p>ARTISTS -
8562 </p>
8563 <blockquote class="text">
8564 <p>Lists the artist names.
8565 Note that the character string may contain
8566 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8567 </p>
8568 </blockquote>
8569
8570
8571 <p>KEYWORDS -
8572 </p>
8573 <blockquote class="text">
8574 <p>Provides a list of keywords that refer to the instrument.
8575 Keywords are separated with semicolon and blank.
8576 Note that the character string may contain
8577 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8578 </p>
8579 </blockquote>
8580
8581
8582 </blockquote>
8583
8584
8585 </blockquote><p>
8586
8587 </p>
8588 <p>The mentioned fields above don't have to be in particular order.
8589 </p>
8590 <p>Example:
8591 </p>
8592 <p>
8593 </p>
8594 <blockquote class="text">
8595 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8596 </p>
8597 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8598 </p>
8599 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8600 </p>
8601 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8602 </p>
8603 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8604 </p>
8605 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8606 </p>
8607 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8608 </p>
8609 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8610 </p>
8611 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8612 </p>
8613 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8614 </p>
8615 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8616 </p>
8617 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8618 </p>
8619 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8620 </p>
8621 <p>&nbsp;&nbsp;&nbsp;"."
8622 </p>
8623 </blockquote><p>
8624
8625 </p>
8626 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8627 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8628 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8629 Renaming an instrument</h3>
8630
8631 <p>The front-end can alter the name of a specific
8632 instrument by sending the following command:
8633 </p>
8634 <p>
8635 </p>
8636 <blockquote class="text">
8637 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8638 </p>
8639 </blockquote><p>
8640
8641 </p>
8642 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8643 &lt;name&gt; is the new name for that instrument.
8644 </p>
8645 <p>Possible Answers:
8646 </p>
8647 <p>
8648 </p>
8649 <blockquote class="text">
8650 <p>"OK" -
8651 </p>
8652 <blockquote class="text">
8653 <p>on success
8654 </p>
8655 </blockquote>
8656
8657
8658 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8659 </p>
8660 <blockquote class="text">
8661 <p>in case the given instrument does not exists,
8662 or if an instrument with name equal to the new
8663 name already exists.
8664 </p>
8665 </blockquote>
8666
8667
8668 </blockquote><p>
8669
8670 </p>
8671 <p>Example:
8672 </p>
8673 <p>
8674 </p>
8675 <blockquote class="text">
8676 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8677 </p>
8678 <p>S: "OK"
8679 </p>
8680 </blockquote><p>
8681
8682 </p>
8683 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8684 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8685 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8686 Moving an instrument</h3>
8687
8688 <p>The front-end can move a specific instrument to another directory by
8689 sending the following command:
8690 </p>
8691 <p>
8692 </p>
8693 <blockquote class="text">
8694 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8695 </p>
8696 </blockquote><p>
8697
8698 </p>
8699 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8700 to move and &lt;dst&gt; is the directory where the instrument will
8701 be moved to.
8702 </p>
8703 <p>Possible Answers:
8704 </p>
8705 <p>
8706 </p>
8707 <blockquote class="text">
8708 <p>"OK" -
8709 </p>
8710 <blockquote class="text">
8711 <p>on success
8712 </p>
8713 </blockquote>
8714
8715
8716 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8717 </p>
8718 <blockquote class="text">
8719 <p>in case the given instrument does not exists,
8720 or if an instrument with name equal to the name of the
8721 specified instrument already exists in the destination
8722 directory.
8723 </p>
8724 </blockquote>
8725
8726
8727 </blockquote><p>
8728
8729 </p>
8730 <p>Example:
8731 </p>
8732 <p>
8733 </p>
8734 <blockquote class="text">
8735 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8736 </p>
8737 <p>S: "OK"
8738 </p>
8739 </blockquote><p>
8740
8741 </p>
8742 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8743 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8744 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8745 Copying instruments</h3>
8746
8747 <p>The front-end can copy a specific instrument to another directory by
8748 sending the following command:
8749 </p>
8750 <p>
8751 </p>
8752 <blockquote class="text">
8753 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8754 </p>
8755 </blockquote><p>
8756
8757 </p>
8758 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8759 to copy and &lt;dst&gt; is the directory where the instrument will
8760 be copied to.
8761 </p>
8762 <p>Possible Answers:
8763 </p>
8764 <p>
8765 </p>
8766 <blockquote class="text">
8767 <p>"OK" -
8768 </p>
8769 <blockquote class="text">
8770 <p>on success
8771 </p>
8772 </blockquote>
8773
8774
8775 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8776 </p>
8777 <blockquote class="text">
8778 <p>in case the given instrument does not exists,
8779 or if an instrument with name equal to the name of the
8780 specified instrument already exists in the destination
8781 directory.
8782 </p>
8783 </blockquote>
8784
8785
8786 </blockquote><p>
8787
8788 </p>
8789 <p>Example:
8790 </p>
8791 <p>
8792 </p>
8793 <blockquote class="text">
8794 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8795 </p>
8796 <p>S: "OK"
8797 </p>
8798 </blockquote><p>
8799
8800 </p>
8801 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8802 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8803 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8804 Changing the description of instrument</h3>
8805
8806 <p>The front-end can alter the description of a specific
8807 instrument by sending the following command:
8808 </p>
8809 <p>
8810 </p>
8811 <blockquote class="text">
8812 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8813 </p>
8814 </blockquote><p>
8815
8816 </p>
8817 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8818 &lt;desc&gt; is the new description for the instrument
8819 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8820 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8821 </p>
8822 <p>Possible Answers:
8823 </p>
8824 <p>
8825 </p>
8826 <blockquote class="text">
8827 <p>"OK" -
8828 </p>
8829 <blockquote class="text">
8830 <p>on success
8831 </p>
8832 </blockquote>
8833
8834
8835 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8836 </p>
8837 <blockquote class="text">
8838 <p>in case the given instrument does not exists.
8839 </p>
8840 </blockquote>
8841
8842
8843 </blockquote><p>
8844
8845 </p>
8846 <p>Example:
8847 </p>
8848 <p>
8849 </p>
8850 <blockquote class="text">
8851 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8852 </p>
8853 <p>S: "OK"
8854 </p>
8855 </blockquote><p>
8856
8857 </p>
8858 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8859 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8860 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8861 Finding instruments</h3>
8862
8863 <p>The front-end can search for instruments
8864 in specific directory by sending the following command:
8865 </p>
8866 <p>
8867 </p>
8868 <blockquote class="text">
8869 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8870 </p>
8871 </blockquote><p>
8872
8873 </p>
8874 <p>Where &lt;dir&gt; should be replaced by the absolute path
8875 name of the directory to search in. If NON_RECURSIVE is specified, the
8876 directories located in subdirectories of the specified directory will not
8877 be searched. &lt;criteria-list&gt; is a list of search criterias
8878 in form of "key1=val1 key2=val2 ...". The following criterias are
8879 allowed:
8880 </p>
8881 <p>
8882
8883 <p>NAME='&lt;search-string&gt;'
8884 </p>
8885 <blockquote class="text">
8886 <p>Restricts the search to instruments, which names
8887 satisfy the supplied search string (encapsulated into apostrophes,
8888 supporting escape sequences as described in chapter
8889 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8890 </p>
8891 </blockquote><p>
8892
8893 </p>
8894
8895
8896 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8897 </p>
8898 <blockquote class="text">
8899 <p>Restricts the search to instruments, which
8900 size is in the specified range. If &lt;min&gt; is omitted,
8901 the search results are restricted to instruments with size less then
8902 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8903 search is restricted to instruments with size greater then
8904 or equal to &lt;min&gt;.
8905 </p>
8906 </blockquote><p>
8907
8908 </p>
8909
8910
8911 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8912 </p>
8913 <blockquote class="text">
8914 <p>Restricts the search to instruments, which creation
8915 date satisfies the specified period, where &lt;date-after&gt;
8916 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8917 If &lt;date-after&gt; is omitted the search is restricted to
8918 instruments created before &lt;date-before&gt;. If
8919 &lt;date-before&gt; is omitted, the search is restricted
8920 to instruments created after &lt;date-after&gt;.
8921 </p>
8922 </blockquote><p>
8923
8924 </p>
8925
8926
8927 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8928 </p>
8929 <blockquote class="text">
8930 <p>Restricts the search to instruments, which
8931 date of last modification satisfies the specified period, where
8932 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8933 format. If &lt;date-after&gt; is omitted the search is restricted to
8934 instruments, which are last modified before &lt;date-before&gt;. If
8935 &lt;date-before&gt; is omitted, the search is restricted to instruments,
8936 which are last modified after &lt;date-after&gt;.
8937 </p>
8938 </blockquote><p>
8939
8940 </p>
8941
8942
8943 <p>DESCRIPTION='&lt;search-string&gt;'
8944 </p>
8945 <blockquote class="text">
8946 <p>Restricts the search to instruments with description
8947 that satisfies the supplied search string (encapsulated into apostrophes,
8948 supporting escape sequences as described in chapter
8949 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8950 </p>
8951 </blockquote><p>
8952
8953 </p>
8954
8955
8956 <p>PRODUCT='&lt;search-string&gt;'
8957 </p>
8958 <blockquote class="text">
8959 <p>Restricts the search to instruments with product info
8960 that satisfies the supplied search string (encapsulated into apostrophes,
8961 supporting escape sequences as described in chapter
8962 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8963 </p>
8964 </blockquote><p>
8965
8966 </p>
8967
8968
8969 <p>ARTISTS='&lt;search-string&gt;'
8970 </p>
8971 <blockquote class="text">
8972 <p>Restricts the search to instruments with artists info
8973 that satisfies the supplied search string (encapsulated into apostrophes,
8974 supporting escape sequences as described in chapter
8975 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8976 </p>
8977 </blockquote><p>
8978
8979 </p>
8980
8981
8982 <p>KEYWORDS='&lt;search-string&gt;'
8983 </p>
8984 <blockquote class="text">
8985 <p>Restricts the search to instruments with keyword list
8986 that satisfies the supplied search string (encapsulated into apostrophes,
8987 supporting escape sequences as described in chapter
8988 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8989 </p>
8990 </blockquote><p>
8991
8992 </p>
8993
8994
8995 <p>IS_DRUM=true | false
8996 </p>
8997 <blockquote class="text">
8998 <p>Either true or false. Restricts the search to
8999 drum kits or chromatic instruments.
9000 </p>
9001 </blockquote><p>
9002
9003 </p>
9004
9005
9006 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9007 </p>
9008 <blockquote class="text">
9009 <p>Restricts the search to instruments of the supplied format families,
9010 where &lt;format-list&gt; is a comma separated list of format families.
9011 </p>
9012 </blockquote><p>
9013
9014 </p>
9015
9016
9017 <p>Where &lt;search-string&gt; is either a regular expression, or a
9018 word list separated with spaces for OR search and with '+' for AND search.
9019 </p>
9020 <p>Possible Answers:
9021 </p>
9022 <p>
9023 </p>
9024 <blockquote class="text">
9025 <p>A comma separated list with the absolute path names (encapsulated into
9026 apostrophes) of all instruments in the specified directory that satisfy
9027 the supplied search criterias.
9028 </p>
9029 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9030 </p>
9031 <blockquote class="text">
9032 <p>if the given directory does not exist.
9033 </p>
9034 </blockquote>
9035
9036
9037 </blockquote><p>
9038
9039 </p>
9040 <p>Example:
9041 </p>
9042 <p>
9043 </p>
9044 <blockquote class="text">
9045 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9046 </p>
9047 <p>S: "'/Piano Collection/Bosendorfer 290'"
9048 </p>
9049 </blockquote><p>
9050
9051 </p>
9052 <p>
9053 </p>
9054 <blockquote class="text">
9055 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9056 </p>
9057 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9058 </p>
9059 </blockquote><p>
9060
9061 </p>
9062 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9063 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9064 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9065 Getting job status information</h3>
9066
9067 <p>The front-end can ask for the current status of a
9068 particular database instruments job by sending the following command:
9069 </p>
9070 <p>
9071 </p>
9072 <blockquote class="text">
9073 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9074 </p>
9075 </blockquote><p>
9076
9077 </p>
9078 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9079 of the job the front-end is interested in.
9080 </p>
9081 <p>Possible Answers:
9082 </p>
9083 <p>
9084 </p>
9085 <blockquote class="text">
9086 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9087 Each answer line begins with the settings category name
9088 followed by a colon and then a space character &lt;SP&gt; and finally
9089 the info character string to that setting category. At the
9090 moment the following categories are defined:
9091 </p>
9092 <p>
9093 </p>
9094 <blockquote class="text">
9095 <p>FILES_TOTAL -
9096 </p>
9097 <blockquote class="text">
9098 <p>The total number of files scheduled for scanning
9099 </p>
9100 </blockquote>
9101
9102
9103 <p>FILES_SCANNED -
9104 </p>
9105 <blockquote class="text">
9106 <p>The current number of scanned files
9107 </p>
9108 </blockquote>
9109
9110
9111 <p>SCANNING -
9112 </p>
9113 <blockquote class="text">
9114 <p>The absolute path name of the file which is currently
9115 being scanned
9116 </p>
9117 </blockquote>
9118
9119
9120 <p>STATUS -
9121 </p>
9122 <blockquote class="text">
9123 <p>An integer value between 0 and 100 indicating the
9124 scanning progress percentage of the file which is
9125 currently being scanned
9126 </p>
9127 </blockquote>
9128
9129
9130 </blockquote>
9131
9132
9133 </blockquote><p>
9134
9135 </p>
9136 <p>The mentioned fields above don't have to be in particular order.
9137 </p>
9138 <p>Example:
9139 </p>
9140 <p>
9141 </p>
9142 <blockquote class="text">
9143 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9144 </p>
9145 <p>S: "FILES_TOTAL: 12"
9146 </p>
9147 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9148 </p>
9149 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9150 </p>
9151 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9152 </p>
9153 <p>&nbsp;&nbsp;&nbsp;"."
9154 </p>
9155 </blockquote><p>
9156
9157 </p>
9158 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9159 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9160 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9161 Formatting the instruments database</h3>
9162
9163 <p>The front-end can remove all instruments and directories and re-create
9164 the instruments database structure (e.g., in case of a database corruption)
9165 by sending the following command:
9166 </p>
9167 <p>
9168 </p>
9169 <blockquote class="text">
9170 <p>FORMAT INSTRUMENTS_DB
9171 </p>
9172 </blockquote><p>
9173
9174 </p>
9175 <p>Possible Answers:
9176 </p>
9177 <p>
9178 </p>
9179 <blockquote class="text">
9180 <p>"OK" -
9181 </p>
9182 <blockquote class="text">
9183 <p>on success
9184 </p>
9185 </blockquote>
9186
9187
9188 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9189 </p>
9190 <blockquote class="text">
9191 <p>If the formatting of the instruments database
9192 failed.
9193 </p>
9194 </blockquote>
9195
9196
9197 </blockquote><p>
9198
9199 </p>
9200 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9201 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9202 <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9203 Checking for lost instrument files</h3>
9204
9205 <p>The front-end can retrieve the list of all instrument files in the instruments database
9206 that don't exist in the filesystem by sending the following command:
9207 </p>
9208 <p>
9209 </p>
9210 <blockquote class="text">
9211 <p>FIND LOST DB_INSTRUMENT_FILES
9212 </p>
9213 </blockquote><p>
9214
9215 </p>
9216 <p>Possible Answers:
9217 </p>
9218 <p>
9219 </p>
9220 <blockquote class="text">
9221 <p>A comma separated list with the absolute path names
9222 (encapsulated into apostrophes) of all lost instrument files.
9223 </p>
9224 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9225 </p>
9226 <blockquote class="text">
9227 <p>in case it failed, providing an appropriate error code and error message.
9228 </p>
9229 </blockquote>
9230
9231
9232 </blockquote><p>
9233
9234 </p>
9235 <p>Example:
9236 </p>
9237 <p>
9238 </p>
9239 <blockquote class="text">
9240 <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9241 </p>
9242 <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9243 </p>
9244 </blockquote><p>
9245
9246 </p>
9247 <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9248 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9249 <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9250 Replacing an instrument file</h3>
9251
9252 <p>The front-end can substitute all occurrences of an instrument file
9253 in the instruments database with a new one by sending the following command:
9254 </p>
9255 <p>
9256 </p>
9257 <blockquote class="text">
9258 <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9259 </p>
9260 </blockquote><p>
9261
9262 </p>
9263 <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9264 to substitute with &lt;new_path&gt;.
9265 </p>
9266 <p>Possible Answers:
9267 </p>
9268 <p>
9269 </p>
9270 <blockquote class="text">
9271 <p>"OK" -
9272 </p>
9273 <blockquote class="text">
9274 <p>on success
9275 </p>
9276 </blockquote>
9277
9278
9279 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9280 </p>
9281 <blockquote class="text">
9282 <p>in case it failed, providing an appropriate error code and error message.
9283 </p>
9284 </blockquote>
9285
9286
9287 </blockquote><p>
9288
9289 </p>
9290 <p>Example:
9291 </p>
9292 <p>
9293 </p>
9294 <blockquote class="text">
9295 <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9296 </p>
9297 <p>S: "OK"
9298 </p>
9299 </blockquote><p>
9300
9301 </p>
9302 <a name="editing_instruments"></a><br /><hr />
9303 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9304 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9305 Editing Instruments</h3>
9306
9307 <p>The sampler allows to edit instruments while playing with the
9308 sampler by spawning an external (3rd party) instrument editor
9309 application for a given instrument. The 3rd party instrument
9310 editor applications have to place a respective plugin DLL file
9311 into the sampler's plugins directory. The sampler will
9312 automatically try to load all plugin DLLs in that directory on
9313 startup and only on startup!
9314 </p>
9315 <p>At the moment there is only one command for this feature set,
9316 but this will most probably change in future.
9317 </p>
9318 <a name="EDIT INSTRUMENT"></a><br /><hr />
9319 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9320 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9321 Opening an appropriate instrument editor application</h3>
9322
9323 <p>The front-end can request to open an appropriate instrument
9324 editor application by sending the following command:
9325 </p>
9326 <p>
9327 </p>
9328 <blockquote class="text">
9329 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9330 </p>
9331 </blockquote><p>
9332
9333 </p>
9334 <p>Where &lt;sampler-channel&gt; should be replaced by the
9335 number of the sampler channel as given by the
9336 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9337 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9338 command.
9339 </p>
9340 <p>The sampler will try to ask all registered instrument
9341 editors (or to be more specific: their sampler plugins)
9342 whether they are capable to handle the instrument on the
9343 given sampler channel. The sampler will simply use the first
9344 instrument editor application which replied with a positive
9345 answer and spawn that instrument editor application within
9346 the sampler's process and provide that application access
9347 to the instrument's data structures, so both applications
9348 can share and access the same instruments data at the same
9349 time, thus allowing to immediately hear changes with the
9350 sampler made by the instrument editor.
9351 </p>
9352 <p>Note: consequently instrument editors are always spawned
9353 locally on the same machine where the sampler is running
9354 on!
9355 </p>
9356 <p>Possible Answers:
9357 </p>
9358 <p>
9359 </p>
9360 <blockquote class="text">
9361 <p>"OK" -
9362 </p>
9363 <blockquote class="text">
9364 <p>when an appropriate instrument editor was
9365 launched
9366 </p>
9367 </blockquote>
9368
9369
9370 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9371 </p>
9372 <blockquote class="text">
9373 <p>when an appropriate instrument editor was
9374 launched, but there are noteworthy issues
9375 </p>
9376 </blockquote>
9377
9378
9379 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9380 </p>
9381 <blockquote class="text">
9382 <p>when an appropriate instrument editor
9383 could not be launched
9384 </p>
9385 </blockquote>
9386
9387
9388 </blockquote><p>
9389
9390 </p>
9391 <p>Examples:
9392 </p>
9393 <p>
9394 </p>
9395 <blockquote class="text">
9396 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9397 </p>
9398 <p>S: "OK"
9399 </p>
9400 </blockquote><p>
9401
9402 </p>
9403 <a name="file_management"></a><br /><hr />
9404 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9405 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9406 Managing Files</h3>
9407
9408 <p>You can query detailed informations about files located
9409 at the same system where the sampler instance is running on.
9410 Using this command set allows to retrieve file informations
9411 even remotely from another machine.
9412 </p>
9413 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9414 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9415 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9416 Retrieving amount of instruments of a file</h3>
9417
9418 <p>The front-end can retrieve the amount of instruments
9419 within a given instrument file by sending the
9420 following command:
9421 </p>
9422 <p>
9423 </p>
9424 <blockquote class="text">
9425 <p>GET FILE INSTRUMENTS &lt;filename&gt;
9426 </p>
9427 </blockquote><p>
9428
9429 </p>
9430 <p>Where &lt;filename&gt; is the name of the instrument
9431 file (encapsulated into apostrophes, supporting escape
9432 sequences as described in chapter
9433 "<a class='info' href='#character_set'>Character Set and Escape
9434 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9435 </p>
9436 <p>The sampler will try to ask all sampler engines,
9437 whether they support the given file and ask the first
9438 engine with a positive answer for the amount of
9439 instruments.
9440 </p>
9441 <p>Possible Answers:
9442 </p>
9443 <p>
9444 </p>
9445 <blockquote class="text">
9446 <p>On success, the sampler will answer by
9447 returning the amount of instruments.
9448
9449 </p>
9450 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9451 </p>
9452 <blockquote class="text">
9453 <p>if the file could not be handled
9454 </p>
9455 </blockquote>
9456
9457
9458 </blockquote><p>
9459
9460 </p>
9461 <p>Examples:
9462 </p>
9463 <p>
9464 </p>
9465 <blockquote class="text">
9466 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9467 </p>
9468 <p>S: "10"
9469 </p>
9470 </blockquote><p>
9471
9472 </p>
9473 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9474 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9475 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9476 Retrieving all instruments of a file</h3>
9477
9478 <p>The front-end can retrieve a list of all instruments
9479 within a given instrument file by sending the
9480 following command:
9481 </p>
9482 <p>
9483 </p>
9484 <blockquote class="text">
9485 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9486 </p>
9487 </blockquote><p>
9488
9489 </p>
9490 <p>Where &lt;filename&gt; is the name of the instrument
9491 file (encapsulated into apostrophes, supporting escape
9492 sequences as described in chapter
9493 "<a class='info' href='#character_set'>Character Set and Escape
9494 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9495 </p>
9496 <p>The sampler will try to ask all sampler engines,
9497 whether they support the given file and ask the first
9498 engine with a positive answer for a list of IDs for the
9499 instruments in the given file.
9500 </p>
9501 <p>Possible Answers:
9502 </p>
9503 <p>
9504 </p>
9505 <blockquote class="text">
9506 <p>On success, the sampler will answer by
9507 returning a comma separated list of
9508 instrument IDs.
9509
9510 </p>
9511 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9512 </p>
9513 <blockquote class="text">
9514 <p>if the file could not be handled
9515 </p>
9516 </blockquote>
9517
9518
9519 </blockquote><p>
9520
9521 </p>
9522 <p>Examples:
9523 </p>
9524 <p>
9525 </p>
9526 <blockquote class="text">
9527 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9528 </p>
9529 <p>S: "0,1,2,3,4,5,6,7,8,9"
9530 </p>
9531 </blockquote><p>
9532
9533 </p>
9534 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9535 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9536 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9537 Retrieving informations about one instrument in a file</h3>
9538
9539 <p>The front-end can retrieve detailed informations
9540 about a specific instrument within a given instrument
9541 file by sending the following command:
9542 </p>
9543 <p>
9544 </p>
9545 <blockquote class="text">
9546 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9547 &lt;instr-id&gt;
9548 </p>
9549 </blockquote><p>
9550
9551 </p>
9552 <p>Where &lt;filename&gt; is the name of the instrument
9553 file (encapsulated into apostrophes, supporting escape
9554 sequences as described in chapter
9555 "<a class='info' href='#character_set'>Character Set and Escape
9556 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9557 instrument ID as returned by the
9558 <a class='info' href='#LIST FILE INSTRUMENTS'>"LIST FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving all instruments of a file</span><span>)</span></a> command.
9559 </p>
9560 <p>The sampler will try to ask all sampler engines,
9561 whether they support the given file and ask the first
9562 engine with a positive answer for informations about the
9563 specific instrument in the given file.
9564 </p>
9565 <p>Possible Answers:
9566 </p>
9567 <p>
9568 </p>
9569 <blockquote class="text">
9570 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9571 Each answer line begins with the settings category name
9572 followed by a colon and then a space character &lt;SP&gt; and finally
9573 the info character string to that setting category. At the
9574 moment the following categories are defined:
9575 </p>
9576 <p>
9577 </p>
9578 <blockquote class="text">
9579 <p>NAME -
9580 </p>
9581 <blockquote class="text">
9582 <p>name of the instrument as
9583 stored in the instrument file
9584 </p>
9585 </blockquote>
9586
9587
9588 <p>FORMAT_FAMILY -
9589 </p>
9590 <blockquote class="text">
9591 <p>name of the sampler format
9592 of the given instrument
9593 </p>
9594 </blockquote>
9595
9596
9597 <p>FORMAT_VERSION -
9598 </p>
9599 <blockquote class="text">
9600 <p>version of the sampler format
9601 the instrumen is stored as
9602 </p>
9603 </blockquote>
9604
9605
9606 <p>PRODUCT -
9607 </p>
9608 <blockquote class="text">
9609 <p>official product name of the
9610 instrument as stored in the file
9611
9612 </p>
9613 </blockquote>
9614
9615
9616 <p>ARTISTS -
9617 </p>
9618 <blockquote class="text">
9619 <p>artists / sample library
9620 vendor of the instrument
9621 </p>
9622 </blockquote>
9623
9624
9625 <p>KEY_BINDINGS -
9626 </p>
9627 <blockquote class="text">
9628 <p>comma separated list of integer values representing
9629 the instrument's key mapping in the range between 0 .. 127,
9630 reflecting the analog meaning of the MIDI specification.
9631 </p>
9632 </blockquote>
9633
9634
9635 <p>KEYSWITCH_BINDINGS -
9636 </p>
9637 <blockquote class="text">
9638 <p>comma separated list of integer values representing
9639 the instrument's keyswitch mapping in the range between 0 .. 127,
9640 reflecting the analog meaning of the MIDI specification.
9641 </p>
9642 </blockquote>
9643
9644
9645 </blockquote>
9646
9647
9648 </blockquote><p>
9649
9650 </p>
9651 <p>The mentioned fields above don't have to be in particular order.
9652 </p>
9653 <p>Example:
9654 </p>
9655 <p>
9656 </p>
9657 <blockquote class="text">
9658 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
9659 </p>
9660 <p>S: "NAME: Lunatic Loops"
9661 </p>
9662 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9663 </p>
9664 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
9665 </p>
9666 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
9667 </p>
9668 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
9669 </p>
9670 <p>&nbsp;&nbsp;&nbsp;"."
9671 </p>
9672 </blockquote><p>
9673
9674 </p>
9675 <a name="command_syntax"></a><br /><hr />
9676 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9677 <a name="rfc.section.7"></a><h3>7.&nbsp;
9678 Command Syntax</h3>
9679
9680 <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>
9681 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>)
9682 where applicable.
9683
9684 </p>
9685 <p>input =
9686 </p>
9687 <blockquote class="text">
9688 <p>line LF
9689
9690 </p>
9691 <p>/ line CR LF
9692
9693 </p>
9694 </blockquote><p>
9695
9696 </p>
9697 <p>line =
9698 </p>
9699 <blockquote class="text">
9700 <p>/* epsilon (empty line ignored) */
9701
9702 </p>
9703 <p>/ comment
9704
9705 </p>
9706 <p>/ command
9707
9708 </p>
9709 <p>/ error
9710
9711 </p>
9712 </blockquote><p>
9713
9714 </p>
9715 <p>comment =
9716 </p>
9717 <blockquote class="text">
9718 <p>'#'
9719
9720 </p>
9721 <p>/ comment '#'
9722
9723 </p>
9724 <p>/ comment SP
9725
9726 </p>
9727 <p>/ comment number
9728
9729 </p>
9730 <p>/ comment string
9731
9732 </p>
9733 </blockquote><p>
9734
9735 </p>
9736 <p>command =
9737 </p>
9738 <blockquote class="text">
9739 <p>ADD SP add_instruction
9740
9741 </p>
9742 <p>/ MAP SP map_instruction
9743
9744 </p>
9745 <p>/ UNMAP SP unmap_instruction
9746
9747 </p>
9748 <p>/ GET SP get_instruction
9749
9750 </p>
9751 <p>/ CREATE SP create_instruction
9752
9753 </p>
9754 <p>/ DESTROY SP destroy_instruction
9755
9756 </p>
9757 <p>/ LIST SP list_instruction
9758
9759 </p>
9760 <p>/ LOAD SP load_instruction
9761
9762 </p>
9763 <p>/ REMOVE SP remove_instruction
9764
9765 </p>
9766 <p>/ SET SP set_instruction
9767
9768 </p>
9769 <p>/ SUBSCRIBE SP subscribe_event
9770
9771 </p>
9772 <p>/ UNSUBSCRIBE SP unsubscribe_event
9773
9774 </p>
9775 <p>/ RESET SP reset_instruction
9776
9777 </p>
9778 <p>/ CLEAR SP clear_instruction
9779
9780 </p>
9781 <p>/ FIND SP find_instruction
9782
9783 </p>
9784 <p>/ MOVE SP move_instruction
9785
9786 </p>
9787 <p>/ COPY SP copy_instruction
9788
9789 </p>
9790 <p>/ EDIT SP edit_instruction
9791
9792 </p>
9793 <p>/ FORMAT SP format_instruction
9794
9795 </p>
9796 <p>SEND SP send_instruction
9797
9798 </p>
9799 <p>/ RESET
9800
9801 </p>
9802 <p>/ QUIT
9803
9804 </p>
9805 </blockquote><p>
9806
9807 </p>
9808 <p>add_instruction =
9809 </p>
9810 <blockquote class="text">
9811 <p>CHANNEL
9812
9813 </p>
9814 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9815
9816 </p>
9817 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9818
9819 </p>
9820 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9821
9822 </p>
9823 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9824
9825 </p>
9826 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9827
9828 </p>
9829 <p>/ DB_INSTRUMENTS SP db_path SP filename
9830
9831 </p>
9832 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9833
9834 </p>
9835 <p>/ MIDI_INSTRUMENT_MAP
9836
9837 </p>
9838 <p>/ MIDI_INSTRUMENT_MAP SP map_name
9839
9840 </p>
9841 </blockquote><p>
9842
9843 </p>
9844 <p>subscribe_event =
9845 </p>
9846 <blockquote class="text">
9847 <p>AUDIO_OUTPUT_DEVICE_COUNT
9848
9849 </p>
9850 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9851
9852 </p>
9853 <p>/ MIDI_INPUT_DEVICE_COUNT
9854
9855 </p>
9856 <p>/ MIDI_INPUT_DEVICE_INFO
9857
9858 </p>
9859 <p>/ CHANNEL_COUNT
9860
9861 </p>
9862 <p>/ CHANNEL_MIDI
9863
9864 </p>
9865 <p>/ DEVICE_MIDI
9866
9867 </p>
9868 <p>/ VOICE_COUNT
9869
9870 </p>
9871 <p>/ STREAM_COUNT
9872
9873 </p>
9874 <p>/ BUFFER_FILL
9875
9876 </p>
9877 <p>/ CHANNEL_INFO
9878
9879 </p>
9880 <p>/ FX_SEND_COUNT
9881
9882 </p>
9883 <p>/ FX_SEND_INFO
9884
9885 </p>
9886 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9887
9888 </p>
9889 <p>/ MIDI_INSTRUMENT_MAP_INFO
9890
9891 </p>
9892 <p>/ MIDI_INSTRUMENT_COUNT
9893
9894 </p>
9895 <p>/ MIDI_INSTRUMENT_INFO
9896
9897 </p>
9898 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9899
9900 </p>
9901 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9902
9903 </p>
9904 <p>/ DB_INSTRUMENT_COUNT
9905
9906 </p>
9907 <p>/ DB_INSTRUMENT_INFO
9908
9909 </p>
9910 <p>/ DB_INSTRUMENTS_JOB_INFO
9911
9912 </p>
9913 <p>/ MISCELLANEOUS
9914
9915 </p>
9916 <p>/ TOTAL_STREAM_COUNT
9917
9918 </p>
9919 <p>/ TOTAL_VOICE_COUNT
9920
9921 </p>
9922 <p>/ GLOBAL_INFO
9923
9924 </p>
9925 </blockquote><p>
9926
9927 </p>
9928 <p>unsubscribe_event =
9929 </p>
9930 <blockquote class="text">
9931 <p>AUDIO_OUTPUT_DEVICE_COUNT
9932
9933 </p>
9934 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9935
9936 </p>
9937 <p>/ MIDI_INPUT_DEVICE_COUNT
9938
9939 </p>
9940 <p>/ MIDI_INPUT_DEVICE_INFO
9941
9942 </p>
9943 <p>/ CHANNEL_COUNT
9944
9945 </p>
9946 <p>/ CHANNEL_MIDI
9947
9948 </p>
9949 <p>/ DEVICE_MIDI
9950
9951 </p>
9952 <p>/ VOICE_COUNT
9953
9954 </p>
9955 <p>/ STREAM_COUNT
9956
9957 </p>
9958 <p>/ BUFFER_FILL
9959
9960 </p>
9961 <p>/ CHANNEL_INFO
9962
9963 </p>
9964 <p>/ FX_SEND_COUNT
9965
9966 </p>
9967 <p>/ FX_SEND_INFO
9968
9969 </p>
9970 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9971
9972 </p>
9973 <p>/ MIDI_INSTRUMENT_MAP_INFO
9974
9975 </p>
9976 <p>/ MIDI_INSTRUMENT_COUNT
9977
9978 </p>
9979 <p>/ MIDI_INSTRUMENT_INFO
9980
9981 </p>
9982 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9983
9984 </p>
9985 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9986
9987 </p>
9988 <p>/ DB_INSTRUMENT_COUNT
9989
9990 </p>
9991 <p>/ DB_INSTRUMENT_INFO
9992
9993 </p>
9994 <p>/ DB_INSTRUMENTS_JOB_INFO
9995
9996 </p>
9997 <p>/ MISCELLANEOUS
9998
9999 </p>
10000 <p>/ TOTAL_STREAM_COUNT
10001
10002 </p>
10003 <p>/ TOTAL_VOICE_COUNT
10004
10005 </p>
10006 <p>/ GLOBAL_INFO
10007
10008 </p>
10009 </blockquote><p>
10010
10011 </p>
10012 <p>map_instruction =
10013 </p>
10014 <blockquote class="text">
10015 <p>MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
10016
10017 </p>
10018 <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
10019
10020 </p>
10021 <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
10022
10023 </p>
10024 <p>/ MIDI_INSTRUMENT SP modal_arg 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
10025
10026 </p>
10027 </blockquote><p>
10028
10029 </p>
10030 <p>unmap_instruction =
10031 </p>
10032 <blockquote class="text">
10033 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
10034
10035 </p>
10036 </blockquote><p>
10037
10038 </p>
10039 <p>remove_instruction =
10040 </p>
10041 <blockquote class="text">
10042 <p>CHANNEL SP sampler_channel
10043
10044 </p>
10045 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
10046
10047 </p>
10048 <p>/ MIDI_INSTRUMENT_MAP SP ALL
10049
10050 </p>
10051 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
10052
10053 </p>
10054 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
10055
10056 </p>
10057 <p>/ DB_INSTRUMENT SP db_path
10058
10059 </p>
10060 </blockquote><p>
10061
10062 </p>
10063 <p>get_instruction =
10064 </p>
10065 <blockquote class="text">
10066 <p>AVAILABLE_ENGINES
10067
10068 </p>
10069 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10070
10071 </p>
10072 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
10073
10074 </p>
10075 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
10076
10077 </p>
10078 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
10079
10080 </p>
10081 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10082
10083 </p>
10084 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
10085
10086 </p>
10087 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
10088
10089 </p>
10090 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
10091
10092 </p>
10093 <p>/ AUDIO_OUTPUT_DEVICES
10094
10095 </p>
10096 <p>/ MIDI_INPUT_DEVICES
10097
10098 </p>
10099 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
10100
10101 </p>
10102 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
10103
10104 </p>
10105 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
10106
10107 </p>
10108 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
10109
10110 </p>
10111 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
10112
10113 </p>
10114 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
10115
10116 </p>
10117 <p>/ CHANNELS
10118
10119 </p>
10120 <p>/ CHANNEL SP INFO SP sampler_channel
10121
10122 </p>
10123 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
10124
10125 </p>
10126 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
10127
10128 </p>
10129 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
10130
10131 </p>
10132 <p>/ ENGINE SP INFO SP engine_name
10133
10134 </p>
10135 <p>/ SERVER SP INFO
10136
10137 </p>
10138 <p>/ TOTAL_STREAM_COUNT
10139
10140 </p>
10141 <p>/ TOTAL_VOICE_COUNT
10142
10143 </p>
10144 <p>/ TOTAL_VOICE_COUNT_MAX
10145
10146 </p>
10147 <p>/ MIDI_INSTRUMENTS SP midi_map
10148
10149 </p>
10150 <p>/ MIDI_INSTRUMENTS SP ALL
10151
10152 </p>
10153 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
10154
10155 </p>
10156 <p>/ MIDI_INSTRUMENT_MAPS
10157
10158 </p>
10159 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
10160
10161 </p>
10162 <p>/ FX_SENDS SP sampler_channel
10163
10164 </p>
10165 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
10166
10167 </p>
10168 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10169
10170 </p>
10171 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10172
10173 </p>
10174 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
10175
10176 </p>
10177 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10178
10179 </p>
10180 <p>/ DB_INSTRUMENTS SP db_path
10181
10182 </p>
10183 <p>/ DB_INSTRUMENT SP INFO SP db_path
10184
10185 </p>
10186 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
10187
10188 </p>
10189 <p>/ VOLUME
10190
10191 </p>
10192 <p>/ FILE SP INSTRUMENTS SP filename
10193
10194 </p>
10195 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
10196
10197 </p>
10198 </blockquote><p>
10199
10200 </p>
10201 <p>set_instruction =
10202 </p>
10203 <blockquote class="text">
10204 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
10205
10206 </p>
10207 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
10208
10209 </p>
10210 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
10211
10212 </p>
10213 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
10214
10215 </p>
10216 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
10217
10218 </p>
10219 <p>/ CHANNEL SP set_chan_instruction
10220
10221 </p>
10222 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
10223
10224 </p>
10225 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
10226
10227 </p>
10228 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
10229
10230 </p>
10231 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
10232
10233 </p>
10234 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
10235
10236 </p>
10237 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10238
10239 </p>
10240 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10241
10242 </p>
10243 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10244
10245 </p>
10246 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10247
10248 </p>
10249 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
10250
10251 </p>
10252 <p>/ ECHO SP boolean
10253
10254 </p>
10255 <p>/ VOLUME SP volume_value
10256
10257 </p>
10258 </blockquote><p>
10259
10260 </p>
10261 <p>create_instruction =
10262 </p>
10263 <blockquote class="text">
10264 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10265
10266 </p>
10267 <p>/ AUDIO_OUTPUT_DEVICE SP string
10268
10269 </p>
10270 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10271
10272 </p>
10273 <p>/ MIDI_INPUT_DEVICE SP string
10274
10275 </p>
10276 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
10277
10278 </p>
10279 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
10280
10281 </p>
10282 </blockquote><p>
10283
10284 </p>
10285 <p>reset_instruction =
10286 </p>
10287 <blockquote class="text">
10288 <p>CHANNEL SP sampler_channel
10289
10290 </p>
10291 </blockquote><p>
10292
10293 </p>
10294 <p>clear_instruction =
10295 </p>
10296 <blockquote class="text">
10297 <p>MIDI_INSTRUMENTS SP midi_map
10298
10299 </p>
10300 <p>/ MIDI_INSTRUMENTS SP ALL
10301
10302 </p>
10303 </blockquote><p>
10304
10305 </p>
10306 <p>find_instruction =
10307 </p>
10308 <blockquote class="text">
10309 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10310
10311 </p>
10312 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10313
10314 </p>
10315 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10316
10317 </p>
10318 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10319
10320 </p>
10321 <p>/ LOST SP DB_INSTRUMENT_FILES
10322
10323 </p>
10324 </blockquote><p>
10325
10326 </p>
10327 <p>move_instruction =
10328 </p>
10329 <blockquote class="text">
10330 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10331
10332 </p>
10333 <p>/ DB_INSTRUMENT SP db_path SP db_path
10334
10335 </p>
10336 </blockquote><p>
10337
10338 </p>
10339 <p>copy_instruction =
10340 </p>
10341 <blockquote class="text">
10342 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10343
10344 </p>
10345 <p>/ DB_INSTRUMENT SP db_path SP db_path
10346
10347 </p>
10348 </blockquote><p>
10349
10350 </p>
10351 <p>destroy_instruction =
10352 </p>
10353 <blockquote class="text">
10354 <p>AUDIO_OUTPUT_DEVICE SP number
10355
10356 </p>
10357 <p>/ MIDI_INPUT_DEVICE SP number
10358
10359 </p>
10360 <p>/ FX_SEND SP sampler_channel SP fx_send_id
10361
10362 </p>
10363 </blockquote><p>
10364
10365 </p>
10366 <p>load_instruction =
10367 </p>
10368 <blockquote class="text">
10369 <p>INSTRUMENT SP load_instr_args
10370
10371 </p>
10372 <p>/ ENGINE SP load_engine_args
10373
10374 </p>
10375 </blockquote><p>
10376
10377 </p>
10378 <p>set_chan_instruction =
10379 </p>
10380 <blockquote class="text">
10381 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10382
10383 </p>
10384 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10385
10386 </p>
10387 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10388
10389 </p>
10390 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10391
10392 </p>
10393 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10394
10395 </p>
10396 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10397
10398 </p>
10399 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10400
10401 </p>
10402 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10403
10404 </p>
10405 <p>/ VOLUME SP sampler_channel SP volume_value
10406
10407 </p>
10408 <p>/ MUTE SP sampler_channel SP boolean
10409
10410 </p>
10411 <p>/ SOLO SP sampler_channel SP boolean
10412
10413 </p>
10414 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
10415
10416 </p>
10417 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
10418
10419 </p>
10420 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
10421
10422 </p>
10423 </blockquote><p>
10424
10425 </p>
10426 <p>edit_instruction =
10427 </p>
10428 <blockquote class="text">
10429 <p>CHANNEL SP INSTRUMENT SP sampler_channel
10430
10431 </p>
10432 </blockquote><p>
10433
10434 </p>
10435 <p>format_instruction =
10436 </p>
10437 <blockquote class="text">
10438 <p>INSTRUMENTS_DB
10439
10440 </p>
10441 </blockquote><p>
10442
10443 </p>
10444 <p>modal_arg =
10445 </p>
10446 <blockquote class="text">
10447 <p>/* epsilon (empty argument) */
10448
10449 </p>
10450 <p>/ NON_MODAL SP
10451
10452 </p>
10453 </blockquote><p>
10454
10455 </p>
10456 <p>key_val_list =
10457 </p>
10458 <blockquote class="text">
10459 <p>string '=' param_val_list
10460
10461 </p>
10462 <p>/ key_val_list SP string '=' param_val_list
10463
10464 </p>
10465 </blockquote><p>
10466
10467 </p>
10468 <p>buffer_size_type =
10469 </p>
10470 <blockquote class="text">
10471 <p>BYTES
10472
10473 </p>
10474 <p>/ PERCENTAGE
10475
10476 </p>
10477 </blockquote><p>
10478
10479 </p>
10480 <p>list_instruction =
10481 </p>
10482 <blockquote class="text">
10483 <p>AUDIO_OUTPUT_DEVICES
10484
10485 </p>
10486 <p>/ MIDI_INPUT_DEVICES
10487
10488 </p>
10489 <p>/ CHANNELS
10490
10491 </p>
10492 <p>/ AVAILABLE_ENGINES
10493
10494 </p>
10495 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10496
10497 </p>
10498 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10499
10500 </p>
10501 <p>/ MIDI_INSTRUMENTS SP midi_map
10502
10503 </p>
10504 <p>/ MIDI_INSTRUMENTS SP ALL
10505
10506 </p>
10507 <p>/ MIDI_INSTRUMENT_MAPS
10508
10509 </p>
10510 <p>/ FX_SENDS SP sampler_channel
10511
10512 </p>
10513 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10514
10515 </p>
10516 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10517
10518 </p>
10519 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10520
10521 </p>
10522 <p>/ DB_INSTRUMENTS SP db_path
10523
10524 </p>
10525 <p>/ FILE SP INSTRUMENTS SP filename
10526
10527 </p>
10528 </blockquote><p>
10529
10530 </p>
10531 <p>send_instruction =
10532 </p>
10533 <blockquote class="text">
10534 <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
10535
10536 </p>
10537 </blockquote><p>
10538
10539 </p>
10540 <p>load_instr_args =
10541 </p>
10542 <blockquote class="text">
10543 <p>filename SP instrument_index SP sampler_channel
10544
10545 </p>
10546 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10547
10548 </p>
10549 </blockquote><p>
10550
10551 </p>
10552 <p>load_engine_args =
10553 </p>
10554 <blockquote class="text">
10555 <p>engine_name SP sampler_channel
10556
10557 </p>
10558 </blockquote><p>
10559
10560 </p>
10561 <p>instr_load_mode =
10562 </p>
10563 <blockquote class="text">
10564 <p>ON_DEMAND
10565
10566 </p>
10567 <p>/ ON_DEMAND_HOLD
10568
10569 </p>
10570 <p>/ PERSISTENT
10571
10572 </p>
10573 </blockquote><p>
10574
10575 </p>
10576 <p>device_index =
10577 </p>
10578 <blockquote class="text">
10579 <p>number
10580
10581 </p>
10582 </blockquote><p>
10583
10584 </p>
10585 <p>audio_channel_index =
10586 </p>
10587 <blockquote class="text">
10588 <p>number
10589
10590 </p>
10591 </blockquote><p>
10592
10593 </p>
10594 <p>audio_output_type_name =
10595 </p>
10596 <blockquote class="text">
10597 <p>string
10598
10599 </p>
10600 </blockquote><p>
10601
10602 </p>
10603 <p>midi_input_port_index =
10604 </p>
10605 <blockquote class="text">
10606 <p>number
10607
10608 </p>
10609 </blockquote><p>
10610
10611 </p>
10612 <p>midi_input_channel_index =
10613 </p>
10614 <blockquote class="text">
10615 <p>number
10616
10617 </p>
10618 <p>/ ALL
10619
10620 </p>
10621 </blockquote><p>
10622
10623 </p>
10624 <p>midi_input_type_name =
10625 </p>
10626 <blockquote class="text">
10627 <p>string
10628
10629 </p>
10630 </blockquote><p>
10631
10632 </p>
10633 <p>midi_map =
10634 </p>
10635 <blockquote class="text">
10636 <p>number
10637
10638 </p>
10639 </blockquote><p>
10640
10641 </p>
10642 <p>midi_bank =
10643 </p>
10644 <blockquote class="text">
10645 <p>number
10646
10647 </p>
10648 </blockquote><p>
10649
10650 </p>
10651 <p>midi_prog =
10652 </p>
10653 <blockquote class="text">
10654 <p>number
10655
10656 </p>
10657 </blockquote><p>
10658
10659 </p>
10660 <p>midi_ctrl =
10661 </p>
10662 <blockquote class="text">
10663 <p>number
10664
10665 </p>
10666 </blockquote><p>
10667
10668 </p>
10669 <p>volume_value =
10670 </p>
10671 <blockquote class="text">
10672 <p>dotnum
10673
10674 </p>
10675 <p>/ number
10676
10677 </p>
10678 </blockquote><p>
10679
10680 </p>
10681 <p>sampler_channel =
10682 </p>
10683 <blockquote class="text">
10684 <p>number
10685
10686 </p>
10687 </blockquote><p>
10688
10689 </p>
10690 <p>instrument_index =
10691 </p>
10692 <blockquote class="text">
10693 <p>number
10694
10695 </p>
10696 </blockquote><p>
10697
10698 </p>
10699 <p>fx_send_id =
10700 </p>
10701 <blockquote class="text">
10702 <p>number
10703
10704 </p>
10705 </blockquote><p>
10706
10707 </p>
10708 <p>engine_name =
10709 </p>
10710 <blockquote class="text">
10711 <p>string
10712
10713 </p>
10714 </blockquote><p>
10715
10716 </p>
10717 <p>filename =
10718 </p>
10719 <blockquote class="text">
10720 <p>path
10721
10722 </p>
10723 </blockquote><p>
10724
10725 </p>
10726 <p>db_path =
10727 </p>
10728 <blockquote class="text">
10729 <p>path
10730
10731 </p>
10732 </blockquote><p>
10733
10734 </p>
10735 <p>map_name =
10736 </p>
10737 <blockquote class="text">
10738 <p>stringval_escaped
10739
10740 </p>
10741 </blockquote><p>
10742
10743 </p>
10744 <p>entry_name =
10745 </p>
10746 <blockquote class="text">
10747 <p>stringval_escaped
10748
10749 </p>
10750 </blockquote><p>
10751
10752 </p>
10753 <p>fx_send_name =
10754 </p>
10755 <blockquote class="text">
10756 <p>stringval_escaped
10757
10758 </p>
10759 </blockquote><p>
10760
10761 </p>
10762 <p>param_val_list =
10763 </p>
10764 <blockquote class="text">
10765 <p>param_val
10766
10767 </p>
10768 <p>/ param_val_list','param_val
10769
10770 </p>
10771 </blockquote><p>
10772
10773 </p>
10774 <p>param_val =
10775 </p>
10776 <blockquote class="text">
10777 <p>string
10778
10779 </p>
10780 <p>/ stringval
10781
10782 </p>
10783 <p>/ number
10784
10785 </p>
10786 <p>/ dotnum
10787
10788 </p>
10789 </blockquote><p>
10790
10791 </p>
10792 <p>query_val_list =
10793 </p>
10794 <blockquote class="text">
10795 <p>string '=' query_val
10796
10797 </p>
10798 <p>/ query_val_list SP string '=' query_val
10799
10800 </p>
10801 </blockquote><p>
10802
10803 </p>
10804 <p>query_val =
10805 </p>
10806 <blockquote class="text">
10807 <p>text_escaped
10808
10809 </p>
10810 <p>/ stringval_escaped
10811
10812 </p>
10813 </blockquote><p>
10814
10815 </p>
10816 <p>scan_mode =
10817 </p>
10818 <blockquote class="text">
10819 <p>RECURSIVE
10820
10821 </p>
10822 <p>/ NON_RECURSIVE
10823
10824 </p>
10825 <p>/ FLAT
10826
10827 </p>
10828 </blockquote><p>
10829
10830 </p>
10831 <a name="character_set"></a><br /><hr />
10832 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10833 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10834 Character Set and Escape Sequences</h3>
10835
10836 <p>Older versions of this protocol up to and including v1.1 only
10837 supported the standard ASCII character set (ASCII code 0 - 127)
10838 <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>, all younger versions of this protocol
10839 however support the Extended ASCII character set (ASCII code
10840 0 - 255). The same group of younger protocols also support
10841 escape sequences, but only for certain, explicitly declared
10842 parts of the protocol. The supported escape sequences are
10843 defined as follows:
10844 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10845 <col align="left"><col align="left">
10846 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10847 <tr>
10848 <td align="left">\n</td>
10849 <td align="left">new line</td>
10850 </tr>
10851 <tr>
10852 <td align="left">\r</td>
10853 <td align="left">carriage return</td>
10854 </tr>
10855 <tr>
10856 <td align="left">\f</td>
10857 <td align="left">form feed</td>
10858 </tr>
10859 <tr>
10860 <td align="left">\t</td>
10861 <td align="left">horizontal tab</td>
10862 </tr>
10863 <tr>
10864 <td align="left">\v</td>
10865 <td align="left">vertical tab</td>
10866 </tr>
10867 <tr>
10868 <td align="left">\'</td>
10869 <td align="left">apostrophe</td>
10870 </tr>
10871 <tr>
10872 <td align="left">\"</td>
10873 <td align="left">quotation mark</td>
10874 </tr>
10875 <tr>
10876 <td align="left">\\</td>
10877 <td align="left">backslash</td>
10878 </tr>
10879 <tr>
10880 <td align="left">\OOO</td>
10881 <td align="left">three digit octal ASCII code of the character</td>
10882 </tr>
10883 <tr>
10884 <td align="left">\xHH</td>
10885 <td align="left">two digit hex ASCII code of the character</td>
10886 </tr>
10887 </table>
10888
10889 <p>Notice: due to the transition of certain parts of the
10890 protocol which now support escape sequences, a slight backward
10891 incompatibility to protocols version v1.1 and younger has been
10892 introduced. The only difference is that in parts of the protocol
10893 where escape characters are now supported, a backslash characters
10894 MUST be escaped as well (that is as double backslash), whereas
10895 in the old versions a single backslash was sufficient.
10896 </p>
10897 <p>The following LSCP commands support escape sequences as part
10898 of their filename / path based arguments and / or may contain
10899 a filename / path with escape sequences in their response:
10900 </p>
10901 <blockquote class="text">
10902 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10903 </p>
10904 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10905 </p>
10906 <p><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>
10907 </p>
10908 <p><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>
10909 </p>
10910 <p><a class='info' href='#ADD DB_INSTRUMENT_DIRECTORY'>"ADD DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Creating a new instrument directory</span><span>)</span></a>
10911 </p>
10912 <p><a class='info' href='#ADD DB_INSTRUMENTS'>"ADD DB_INSTRUMENTS"<span> (</span><span class='info'>Adding instruments to the instruments database</span><span>)</span></a>
10913 </p>
10914 <p><a class='info' href='#REMOVE DB_INSTRUMENT_DIRECTORY'>"REMOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Deleting an instrument directory</span><span>)</span></a>
10915 </p>
10916 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10917 </p>
10918 <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORIES'>"GET DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Getting amount of instrument directories</span><span>)</span></a>
10919 </p>
10920 <p><a class='info' href='#LIST DB_INSTRUMENT_DIRECTORIES'>"LIST DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Listing all directories in specific directory</span><span>)</span></a>
10921 </p>
10922 <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
10923 </p>
10924 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10925 </p>
10926 <p><a class='info' href='#LIST DB_INSTRUMENTS'>"LIST DB_INSTRUMENTS"<span> (</span><span class='info'>Listing all instruments in specific directory</span><span>)</span></a>
10927 </p>
10928 <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
10929 </p>
10930 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10931 </p>
10932 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10933 </p>
10934 <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10935 </p>
10936 <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10937 </p>
10938 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10939 </p>
10940 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10941 </p>
10942 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10943 </p>
10944 <p><a class='info' href='#MOVE DB_INSTRUMENT_DIRECTORY'>"MOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Moving an instrument directory</span><span>)</span></a>
10945 </p>
10946 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10947 </p>
10948 <p><a class='info' href='#COPY DB_INSTRUMENT_DIRECTORY'>"COPY DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Copying instrument directories</span><span>)</span></a>
10949 </p>
10950 <p><a class='info' href='#FIND LOST DB_INSTRUMENT_FILES'>"FIND LOST DB_INSTRUMENT_FILES"<span> (</span><span class='info'>Checking for lost instrument files</span><span>)</span></a>
10951 </p>
10952 <p><a class='info' href='#SET DB_INSTRUMENT FILE_PATH'>"SET DB_INSTRUMENT FILE_PATH"<span> (</span><span class='info'>Replacing an instrument file</span><span>)</span></a>
10953 </p>
10954 <p><a class='info' href='#GET FILE INSTRUMENTS'>"GET FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving amount of instruments of a file</span><span>)</span></a>
10955 </p>
10956 <p><a class='info' href='#LIST FILE INSTRUMENTS'>"LIST FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving all instruments of a file</span><span>)</span></a>
10957 </p>
10958 <p><a class='info' href='#GET FILE INSTRUMENT INFO'>"GET FILE INSTRUMENT INFO"<span> (</span><span class='info'>Retrieving informations about one instrument in a file</span><span>)</span></a>
10959 </p>
10960 </blockquote><p>
10961 Note that the forward slash character ('/') has a special meaning in
10962 filename / path based arguments: it acts as separator of the nodes in
10963 the path, thus if a directory- or filename includes a forward slash
10964 (not intended as path node separator), you MUST escape that slash
10965 either with the respective hex escape sequence ("\x2f") or with the
10966 respective octal escape sequence ("\057").
10967
10968 </p>
10969 <p>
10970 Note for Windows: file path arguments in LSCP are expected
10971 to use forward slashes as directory node separator similar
10972 to Unix based operating systems. In contrast to Unix however
10973 a Windows typical drive character is expected to be
10974 prefixed to the path. That is an original Windows file path
10975 like "D:\Sounds\My.gig" would become in LSCP:
10976 "D:/Sounds/My.gig".
10977
10978 </p>
10979 <p>
10980 The following LSCP commands even support escape sequences as
10981 part of at least one of their text-based arguments (i.e. entity name,
10982 description) and / or may contain escape sequences in at least one of
10983 their text-based fields in their response:
10984 </p>
10985 <blockquote class="text">
10986 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
10987 </p>
10988 <p><a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>
10989 </p>
10990 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10991 </p>
10992 <p><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>
10993 </p>
10994 <p><a class='info' href='#GET FX_SEND INFO'>"GET FX_SEND INFO"<span> (</span><span class='info'>Getting effect send information</span><span>)</span></a>
10995 </p>
10996 <p><a class='info' href='#SET FX_SEND NAME'>"SET FX_SEND NAME"<span> (</span><span class='info'>Changing effect send's name</span><span>)</span></a>
10997 </p>
10998 <p><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>
10999 </p>
11000 <p><a class='info' href='#GET MIDI_INSTRUMENT_MAP INFO'>"GET MIDI_INSTRUMENT_MAP INFO"<span> (</span><span class='info'>Getting MIDI instrument map information</span><span>)</span></a>
11001 </p>
11002 <p><a class='info' href='#ADD MIDI_INSTRUMENT_MAP'>"ADD MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Create a new MIDI instrument map</span><span>)</span></a>
11003 </p>
11004 <p><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>
11005 </p>
11006 <p><a class='info' href='#SET MIDI_INSTRUMENT_MAP NAME'>"SET MIDI_INSTRUMENT_MAP NAME"<span> (</span><span class='info'>Renaming a MIDI instrument map</span><span>)</span></a>
11007 </p>
11008 <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
11009 </p>
11010 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
11011 </p>
11012 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
11013 </p>
11014 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
11015 </p>
11016 <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
11017 </p>
11018 <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
11019 </p>
11020 <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
11021 </p>
11022 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
11023 </p>
11024 </blockquote><p>
11025 Please note that these lists are manually maintained. If you
11026 find a command that also supports escape sequences we forgot to
11027 mention here, please report it!
11028
11029 </p>
11030 <a name="events"></a><br /><hr />
11031 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11032 <a name="rfc.section.8"></a><h3>8.&nbsp;
11033 Events</h3>
11034
11035 <p>This chapter will describe all currently defined events supported by LinuxSampler.
11036 </p>
11037 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
11038 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11039 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
11040 Number of audio output devices changed</h3>
11041
11042 <p>Client may want to be notified when the total number of audio output devices on the
11043 back-end changes by issuing the following command:
11044 </p>
11045 <p>
11046 </p>
11047 <blockquote class="text">
11048 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
11049 </p>
11050 </blockquote><p>
11051
11052 </p>
11053 <p>Server will start sending the following notification messages:
11054 </p>
11055 <p>
11056 </p>
11057 <blockquote class="text">
11058 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
11059 </p>
11060 </blockquote><p>
11061
11062 </p>
11063 <p>where &lt;devices&gt; will be replaced by the new number
11064 of audio output devices.
11065 </p>
11066 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
11067 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11068 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
11069 Audio output device's settings changed</h3>
11070
11071 <p>Client may want to be notified when changes were made to audio output devices on the
11072 back-end by issuing the following command:
11073 </p>
11074 <p>
11075 </p>
11076 <blockquote class="text">
11077 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
11078 </p>
11079 </blockquote><p>
11080
11081 </p>
11082 <p>Server will start sending the following notification messages:
11083 </p>
11084 <p>
11085 </p>
11086 <blockquote class="text">
11087 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
11088 </p>
11089 </blockquote><p>
11090
11091 </p>
11092 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
11093 which settings has been changed. The front-end will have to send
11094 the respective command to actually get the audio output device info. Because these messages
11095 will be triggered by LSCP commands issued by other clients rather than real
11096 time events happening on the server, it is believed that an empty notification
11097 message is sufficient here.
11098 </p>
11099 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
11100 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11101 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
11102 Number of MIDI input devices changed</h3>
11103
11104 <p>Client may want to be notified when the total number of MIDI input devices on the
11105 back-end changes by issuing the following command:
11106 </p>
11107 <p>
11108 </p>
11109 <blockquote class="text">
11110 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
11111 </p>
11112 </blockquote><p>
11113
11114 </p>
11115 <p>Server will start sending the following notification messages:
11116 </p>
11117 <p>
11118 </p>
11119 <blockquote class="text">
11120 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
11121 </p>
11122 </blockquote><p>
11123
11124 </p>
11125 <p>where &lt;devices&gt; will be replaced by the new number
11126 of MIDI input devices.
11127 </p>
11128 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
11129 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11130 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
11131 MIDI input device's settings changed</h3>
11132
11133 <p>Client may want to be notified when changes were made to MIDI input devices on the
11134 back-end by issuing the following command:
11135 </p>
11136 <p>
11137 </p>
11138 <blockquote class="text">
11139 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
11140 </p>
11141 </blockquote><p>
11142
11143 </p>
11144 <p>Server will start sending the following notification messages:
11145 </p>
11146 <p>
11147 </p>
11148 <blockquote class="text">
11149 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
11150 </p>
11151 </blockquote><p>
11152
11153 </p>
11154 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
11155 which settings has been changed. The front-end will have to send
11156 the respective command to actually get the MIDI input device info. Because these messages
11157 will be triggered by LSCP commands issued by other clients rather than real
11158 time events happening on the server, it is believed that an empty notification
11159 message is sufficient here.
11160 </p>
11161 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
11162 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11163 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
11164 Number of sampler channels changed</h3>
11165
11166 <p>Client may want to be notified when the total number of channels on the
11167 back-end changes by issuing the following command:
11168 </p>
11169 <p>
11170 </p>
11171 <blockquote class="text">
11172 <p>SUBSCRIBE CHANNEL_COUNT
11173 </p>
11174 </blockquote><p>
11175
11176 </p>
11177 <p>Server will start sending the following notification messages:
11178 </p>
11179 <p>
11180 </p>
11181 <blockquote class="text">
11182 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
11183 </p>
11184 </blockquote><p>
11185
11186 </p>
11187 <p>where &lt;channels&gt; will be replaced by the new number
11188 of sampler channels.
11189 </p>
11190 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
11191 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11192 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
11193 MIDI data on a sampler channel arrived</h3>
11194
11195 <p>Client may want to be notified when MIDI data arrive on sampler channels on
11196 back-end side, by issuing the following command:
11197 </p>
11198 <p>
11199 </p>
11200 <blockquote class="text">
11201 <p>SUBSCRIBE CHANNEL_MIDI
11202 </p>
11203 </blockquote><p>
11204
11205 </p>
11206 <p>Server will start sending one of the the following notification messages:
11207 </p>
11208 <p>
11209 </p>
11210 <blockquote class="text">
11211 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
11212 </p>
11213 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
11214 </p>
11215 </blockquote><p>
11216
11217 </p>
11218 <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
11219 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
11220 0 .. 127, reflecting the analog meaning of the MIDI specification.
11221
11222 </p>
11223 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
11224 delivered by this mechanism! With other words: events could be lost at any time!
11225 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
11226 thread unaffected by this feature.
11227 </p>
11228 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
11229 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11230 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
11231 MIDI data on a MIDI input device arrived</h3>
11232
11233 <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
11234 </p>
11235 <p>
11236 </p>
11237 <blockquote class="text">
11238 <p>SUBSCRIBE DEVICE_MIDI
11239 </p>
11240 </blockquote><p>
11241
11242 </p>
11243 <p>Server will start sending one of the the following notification messages:
11244 </p>
11245 <p>
11246 </p>
11247 <blockquote class="text">
11248 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
11249 </p>
11250 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
11251 </p>
11252 </blockquote><p>
11253
11254 </p>
11255 <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
11256 by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
11257 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
11258 0 .. 127, reflecting the analog meaning of the MIDI specification.
11259
11260 </p>
11261 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
11262 delivered by this mechanism! With other words: events could be lost at any time!
11263 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
11264 thread unaffected by this feature.
11265 </p>
11266 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
11267 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11268 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11269 Number of active voices changed</h3>
11270
11271 <p>Client may want to be notified when the number of voices on the
11272 back-end changes by issuing the following command:
11273 </p>
11274 <p>
11275 </p>
11276 <blockquote class="text">
11277 <p>SUBSCRIBE VOICE_COUNT
11278 </p>
11279 </blockquote><p>
11280
11281 </p>
11282 <p>Server will start sending the following notification messages:
11283 </p>
11284 <p>
11285 </p>
11286 <blockquote class="text">
11287 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
11288 </p>
11289 </blockquote><p>
11290
11291 </p>
11292 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11293 voice count change occurred and &lt;voices&gt; by the new number of
11294 active voices on that channel.
11295 </p>
11296 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
11297 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11298 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11299 Number of active disk streams changed</h3>
11300
11301 <p>Client may want to be notified when the number of streams on the back-end
11302 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
11303 </p>
11304 <p>
11305 </p>
11306 <blockquote class="text">
11307 <p>SUBSCRIBE STREAM_COUNT
11308 </p>
11309 </blockquote><p>
11310
11311 </p>
11312 <p>Server will start sending the following notification messages:
11313 </p>
11314 <p>
11315 </p>
11316 <blockquote class="text">
11317 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
11318 </p>
11319 </blockquote><p>
11320
11321 </p>
11322 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11323 stream count change occurred and &lt;streams&gt; by the new number of
11324 active disk streams on that channel.
11325 </p>
11326 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
11327 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11328 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11329 Disk stream buffer fill state changed</h3>
11330
11331 <p>Client may want to be notified when the buffer fill state of a disk stream
11332 on the back-end changes by issuing the following command:
11333 </p>
11334 <p>
11335 </p>
11336 <blockquote class="text">
11337 <p>SUBSCRIBE BUFFER_FILL
11338 </p>
11339 </blockquote><p>
11340
11341 </p>
11342 <p>Server will start sending the following notification messages:
11343 </p>
11344 <p>
11345 </p>
11346 <blockquote class="text">
11347 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11348 </p>
11349 </blockquote><p>
11350
11351 </p>
11352 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11353 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
11354 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>
11355 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.
11356 </p>
11357 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11358 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11359 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11360 Channel information changed</h3>
11361
11362 <p>Client may want to be notified when changes were made to sampler channels on the
11363 back-end by issuing the following command:
11364 </p>
11365 <p>
11366 </p>
11367 <blockquote class="text">
11368 <p>SUBSCRIBE CHANNEL_INFO
11369 </p>
11370 </blockquote><p>
11371
11372 </p>
11373 <p>Server will start sending the following notification messages:
11374 </p>
11375 <p>
11376 </p>
11377 <blockquote class="text">
11378 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11379 </p>
11380 </blockquote><p>
11381
11382 </p>
11383 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11384 channel info change occurred. The front-end will have to send
11385 the respective command to actually get the channel info. Because these messages
11386 will be triggered by LSCP commands issued by other clients rather than real
11387 time events happening on the server, it is believed that an empty notification
11388 message is sufficient here.
11389 </p>
11390 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
11391 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11392 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11393 Number of effect sends changed</h3>
11394
11395 <p>Client may want to be notified when the number of effect sends on
11396 a particular sampler channel is changed by issuing the following command:
11397 </p>
11398 <p>
11399 </p>
11400 <blockquote class="text">
11401 <p>SUBSCRIBE FX_SEND_COUNT
11402 </p>
11403 </blockquote><p>
11404
11405 </p>
11406 <p>Server will start sending the following notification messages:
11407 </p>
11408 <p>
11409 </p>
11410 <blockquote class="text">
11411 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
11412 </p>
11413 </blockquote><p>
11414
11415 </p>
11416 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11417 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
11418 be replaced by the new number of effect sends on that channel.
11419 </p>
11420 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
11421 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11422 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11423 Effect send information changed</h3>
11424
11425 <p>Client may want to be notified when changes were made to effect sends on a
11426 a particular sampler channel by issuing the following command:
11427 </p>
11428 <p>
11429 </p>
11430 <blockquote class="text">
11431 <p>SUBSCRIBE FX_SEND_INFO
11432 </p>
11433 </blockquote><p>
11434
11435 </p>
11436 <p>Server will start sending the following notification messages:
11437 </p>
11438 <p>
11439 </p>
11440 <blockquote class="text">
11441 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
11442 </p>
11443 </blockquote><p>
11444
11445 </p>
11446 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11447 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
11448 be replaced by the numerical ID of the changed effect send.
11449 </p>
11450 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11451 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11452 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11453 Total number of active voices changed</h3>
11454
11455 <p>Client may want to be notified when the total number of voices on the
11456 back-end changes by issuing the following command:
11457 </p>
11458 <p>
11459 </p>
11460 <blockquote class="text">
11461 <p>SUBSCRIBE TOTAL_VOICE_COUNT
11462 </p>
11463 </blockquote><p>
11464
11465 </p>
11466 <p>Server will start sending the following notification messages:
11467 </p>
11468 <p>
11469 </p>
11470 <blockquote class="text">
11471 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11472 </p>
11473 </blockquote><p>
11474
11475 </p>
11476 <p>where &lt;voices&gt; will be replaced by the new number of
11477 all currently active voices.
11478 </p>
11479 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
11480 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11481 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11482 Total number of active disk streams changed</h3>
11483
11484 <p>Client may want to be notified when the total number of disk streams on the
11485 back-end changes by issuing the following command:
11486 </p>
11487 <p>
11488 </p>
11489 <blockquote class="text">
11490 <p>SUBSCRIBE TOTAL_STREAM_COUNT
11491 </p>
11492 </blockquote><p>
11493
11494 </p>
11495 <p>Server will start sending the following notification messages:
11496 </p>
11497 <p>
11498 </p>
11499 <blockquote class="text">
11500 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
11501 </p>
11502 </blockquote><p>
11503
11504 </p>
11505 <p>where &lt;streams&gt; will be replaced by the new number of
11506 all currently active disk streams.
11507 </p>
11508 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
11509 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11510 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11511 Number of MIDI instrument maps changed</h3>
11512
11513 <p>Client may want to be notified when the number of MIDI instrument maps on the
11514 back-end changes by issuing the following command:
11515 </p>
11516 <p>
11517 </p>
11518 <blockquote class="text">
11519 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
11520 </p>
11521 </blockquote><p>
11522
11523 </p>
11524 <p>Server will start sending the following notification messages:
11525 </p>
11526 <p>
11527 </p>
11528 <blockquote class="text">
11529 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
11530 </p>
11531 </blockquote><p>
11532
11533 </p>
11534 <p>where &lt;maps&gt; will be replaced by the new number
11535 of MIDI instrument maps.
11536 </p>
11537 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
11538 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11539 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11540 MIDI instrument map information changed</h3>
11541
11542 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
11543 back-end by issuing the following command:
11544 </p>
11545 <p>
11546 </p>
11547 <blockquote class="text">
11548 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
11549 </p>
11550 </blockquote><p>
11551
11552 </p>
11553 <p>Server will start sending the following notification messages:
11554 </p>
11555 <p>
11556 </p>
11557 <blockquote class="text">
11558 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
11559 </p>
11560 </blockquote><p>
11561
11562 </p>
11563 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11564 for which information changes occurred. The front-end will have to send
11565 the respective command to actually get the MIDI instrument map info. Because these messages
11566 will be triggered by LSCP commands issued by other clients rather than real
11567 time events happening on the server, it is believed that an empty notification
11568 message is sufficient here.
11569 </p>
11570 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
11571 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11572 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11573 Number of MIDI instruments changed</h3>
11574
11575 <p>Client may want to be notified when the number of MIDI instrument maps on the
11576 back-end changes by issuing the following command:
11577 </p>
11578 <p>
11579 </p>
11580 <blockquote class="text">
11581 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
11582 </p>
11583 </blockquote><p>
11584
11585 </p>
11586 <p>Server will start sending the following notification messages:
11587 </p>
11588 <p>
11589 </p>
11590 <blockquote class="text">
11591 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
11592 </p>
11593 </blockquote><p>
11594
11595 </p>
11596 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
11597 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
11598 the new number of MIDI instruments in the specified map.
11599 </p>
11600 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
11601 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11602 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11603 MIDI instrument information changed</h3>
11604
11605 <p>Client may want to be notified when changes were made to MIDI instruments on the
11606 back-end by issuing the following command:
11607 </p>
11608 <p>
11609 </p>
11610 <blockquote class="text">
11611 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
11612 </p>
11613 </blockquote><p>
11614
11615 </p>
11616 <p>Server will start sending the following notification messages:
11617 </p>
11618 <p>
11619 </p>
11620 <blockquote class="text">
11621 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
11622 </p>
11623 </blockquote><p>
11624
11625 </p>
11626 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11627 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
11628 the location of the changed MIDI instrument in the map. The front-end will have to send
11629 the respective command to actually get the MIDI instrument info. Because these messages
11630 will be triggered by LSCP commands issued by other clients rather than real
11631 time events happening on the server, it is believed that an empty notification
11632 message is sufficient here.
11633 </p>
11634 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
11635 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11636 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11637 Global settings changed</h3>
11638
11639 <p>Client may want to be notified when changes to the global settings
11640 of the sampler were made by issuing the following command:
11641 </p>
11642 <p>
11643 </p>
11644 <blockquote class="text">
11645 <p>SUBSCRIBE GLOBAL_INFO
11646 </p>
11647 </blockquote><p>
11648
11649 </p>
11650 <p>Server will start sending the following types of notification messages:
11651 </p>
11652 <p>
11653 </p>
11654 <blockquote class="text">
11655 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
11656 golbal volume of the sampler is changed, where &lt;volume&gt; will be
11657 replaced by the optional dotted floating point value, reflecting the
11658 new global volume parameter.
11659 </p>
11660 </blockquote><p>
11661
11662 </p>
11663 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
11664 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11665 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11666 Number of database instrument directories changed</h3>
11667
11668 <p>Client may want to be notified when the number of instrument
11669 directories in a particular directory in the instruments database
11670 is changed by issuing the following command:
11671 </p>
11672 <p>
11673 </p>
11674 <blockquote class="text">
11675 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
11676 </p>
11677 </blockquote><p>
11678
11679 </p>
11680 <p>Server will start sending the following notification messages:
11681 </p>
11682 <p>
11683 </p>
11684 <blockquote class="text">
11685 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
11686 </p>
11687 </blockquote><p>
11688
11689 </p>
11690 <p>where &lt;dir-path&gt; will be replaced by the absolute path
11691 name of the directory in the instruments database,
11692 in which the number of directories is changed.
11693 </p>
11694 <p>Note that when a non-empty directory is removed, this event
11695 is not sent for the subdirectories in that directory.
11696 </p>
11697 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
11698 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11699 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11700 Database instrument directory information changed</h3>
11701
11702 <p>Client may want to be notified when changes were made to directories
11703 in the instruments database by issuing the following command:
11704 </p>
11705 <p>
11706 </p>
11707 <blockquote class="text">
11708 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11709 </p>
11710 </blockquote><p>
11711
11712 </p>
11713 <p>Server will start sending the following notification messages:
11714 </p>
11715 <p>
11716 </p>
11717 <blockquote class="text">
11718 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11719 </p>
11720 </blockquote><p>
11721
11722 </p>
11723 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11724 of the directory, for which information changes occurred. The front-end will have to send
11725 the respective command to actually get the updated directory info. Because these messages
11726 will be triggered by LSCP commands issued by other clients rather than real
11727 time events happening on the server, it is believed that an empty notification
11728 message is sufficient here.
11729 </p>
11730 <p>
11731 </p>
11732 <blockquote class="text">
11733 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11734 </p>
11735 </blockquote><p>
11736
11737 </p>
11738 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11739 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11740 the new name of the directory, encapsulated into apostrophes.
11741 </p>
11742 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11743 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11744 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11745 Number of database instruments changed</h3>
11746
11747 <p>Client may want to be notified when the number of instruments
11748 in a particular directory in the instruments database
11749 is changed by issuing the following command:
11750 </p>
11751 <p>
11752 </p>
11753 <blockquote class="text">
11754 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11755 </p>
11756 </blockquote><p>
11757
11758 </p>
11759 <p>Server will start sending the following notification messages:
11760 </p>
11761 <p>
11762 </p>
11763 <blockquote class="text">
11764 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11765 </p>
11766 </blockquote><p>
11767
11768 </p>
11769 <p>where &lt;dir-path&gt; will be replaced by the absolute path
11770 name of the directory in the instruments database,
11771 in which the number of instruments is changed.
11772 </p>
11773 <p>Note that when a non-empty directory is removed, this event
11774 is not sent for the instruments in that directory.
11775 </p>
11776 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11777 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11778 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11779 Database instrument information changed</h3>
11780
11781 <p>Client may want to be notified when changes were made to instruments
11782 in the instruments database by issuing the following command:
11783 </p>
11784 <p>
11785 </p>
11786 <blockquote class="text">
11787 <p>SUBSCRIBE DB_INSTRUMENT_INFO
11788 </p>
11789 </blockquote><p>
11790
11791 </p>
11792 <p>Server will start sending the following notification messages:
11793 </p>
11794 <p>
11795 </p>
11796 <blockquote class="text">
11797 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11798 </p>
11799 </blockquote><p>
11800
11801 </p>
11802 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11803 of the instrument, which settings are changed. The front-end will have to send
11804 the respective command to actually get the updated directory info. Because these messages
11805 will be triggered by LSCP commands issued by other clients rather than real
11806 time events happening on the server, it is believed that an empty notification
11807 message is sufficient here.
11808 </p>
11809 <p>
11810 </p>
11811 <blockquote class="text">
11812 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11813 </p>
11814 </blockquote><p>
11815
11816 </p>
11817 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11818 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11819 the new name of the instrument, encapsulated into apostrophes.
11820 </p>
11821 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11822 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11823 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
11824 Database job status information changed</h3>
11825
11826 <p>Client may want to be notified when the status of particular database
11827 instruments job is changed by issuing the following command:
11828 </p>
11829 <p>
11830 </p>
11831 <blockquote class="text">
11832 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11833 </p>
11834 </blockquote><p>
11835
11836 </p>
11837 <p>Server will start sending the following notification messages:
11838 </p>
11839 <p>
11840 </p>
11841 <blockquote class="text">
11842 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11843 </p>
11844 </blockquote><p>
11845
11846 </p>
11847 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11848 which status is changed. The front-end will have to send the respective
11849 command to actually get the status info. Because these messages
11850 will be triggered by LSCP commands issued by other clients rather than real
11851 time events happening on the server, it is believed that an empty notification
11852 message is sufficient here.
11853 </p>
11854 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11855 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11856 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
11857 Miscellaneous and debugging events</h3>
11858
11859 <p>Client may want to be notified of miscellaneous and debugging events occurring at
11860 the server by issuing the following command:
11861 </p>
11862 <p>
11863 </p>
11864 <blockquote class="text">
11865 <p>SUBSCRIBE MISCELLANEOUS
11866 </p>
11867 </blockquote><p>
11868
11869 </p>
11870 <p>Server will start sending the following notification messages:
11871 </p>
11872 <p>
11873 </p>
11874 <blockquote class="text">
11875 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11876 </p>
11877 </blockquote><p>
11878
11879 </p>
11880 <p>where &lt;string&gt; will be replaced by whatever data server
11881 wants to send to the client. Client MAY display this data to the
11882 user AS IS to facilitate debugging.
11883 </p>
11884 <a name="anchor14"></a><br /><hr />
11885 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11886 <a name="rfc.section.9"></a><h3>9.&nbsp;
11887 Security Considerations</h3>
11888
11889 <p>As there is so far no method of authentication and authorization
11890 defined and so not required for a client applications to succeed to
11891 connect, running LinuxSampler might be a security risk for the host
11892 system the LinuxSampler instance is running on.
11893 </p>
11894 <a name="anchor15"></a><br /><hr />
11895 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11896 <a name="rfc.section.10"></a><h3>10.&nbsp;
11897 Acknowledgments</h3>
11898
11899 <p>This document has benefited greatly from the comments of the
11900 following people, discussed on the LinuxSampler developer's mailing
11901 list:
11902 </p>
11903 <p>
11904 </p>
11905 <blockquote class="text">
11906 <p>Rui Nuno Capela
11907 </p>
11908 <p>Vladimir Senkov
11909 </p>
11910 <p>Mark Knecht
11911 </p>
11912 <p>Grigor Iliev
11913 </p>
11914 </blockquote><p>
11915
11916 </p>
11917 <a name="rfc.references1"></a><br /><hr />
11918 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11919 <h3>11.&nbsp;References</h3>
11920 <table width="99%" border="0">
11921 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11922 <td class="author-text">UCLA, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc20.txt">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
11923 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11924 <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>
11925 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11926 <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>
11927 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11928 <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>
11929 </table>
11930
11931 <a name="rfc.authors"></a><br /><hr />
11932 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11933 <h3>Author's Address</h3>
11934 <table width="99%" border="0" cellpadding="0" cellspacing="0">
11935 <tr><td class="author-text">&nbsp;</td>
11936 <td class="author-text">C.
11937 Schoenebeck</td></tr>
11938 <tr><td class="author-text">&nbsp;</td>
11939 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11940 <tr><td class="author-text">&nbsp;</td>
11941 <td class="author-text">Max-Planck-Str. 39</td></tr>
11942 <tr><td class="author-text">&nbsp;</td>
11943 <td class="author-text">74081 Heilbronn</td></tr>
11944 <tr><td class="author-text">&nbsp;</td>
11945 <td class="author-text">Germany</td></tr>
11946 <tr><td class="author" align="right">Email:&nbsp;</td>
11947 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
11948 </table>
11949 <a name="rfc.copyright"></a><br /><hr />
11950 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11951 <h3>Full Copyright Statement</h3>
11952 <p class='copyright'>
11953 Copyright &copy; The IETF Trust (2008).</p>
11954 <p class='copyright'>
11955 This document is subject to the rights,
11956 licenses and restrictions contained in BCP&nbsp;78,
11957 and except as set forth therein,
11958 the authors retain all their rights.</p>
11959 <p class='copyright'>
11960 This document and the information contained herein are provided
11961 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11962 THE ORGANIZATION HE/SHE REPRESENTS
11963 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11964 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11965 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11966 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11967 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11968 PURPOSE.</p>
11969 <h3>Intellectual Property</h3>
11970 <p class='copyright'>
11971 The IETF takes no position regarding the validity or scope of any
11972 Intellectual Property Rights or other rights that might be claimed
11973 to pertain to the implementation or use of the technology
11974 described in this document or the extent to which any license
11975 under such rights might or might not be available; nor does it
11976 represent that it has made any independent effort to identify any
11977 such rights.
11978 Information on the procedures with respect to
11979 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11980 <p class='copyright'>
11981 Copies of IPR disclosures made to the IETF Secretariat and any
11982 assurances of licenses to be made available,
11983 or the result of an attempt made to obtain a general license or
11984 permission for the use of such proprietary rights by implementers or
11985 users of this specification can be obtained from the IETF on-line IPR
11986 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11987 <p class='copyright'>
11988 The IETF invites any interested party to bring to its attention
11989 any copyrights,
11990 patents or patent applications,
11991 or other
11992 proprietary rights that may cover technology that may be required
11993 to implement this standard.
11994 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11995 <h3>Acknowledgment</h3>
11996 <p class='copyright'>
11997 Funding for the RFC Editor function is provided by
11998 the IETF Administrative Support Activity (IASA).</p>
11999 </body></html>

  ViewVC Help
Powered by ViewVC