/[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 2498 - (show annotations) (download) (as text)
Thu Jan 9 22:05:21 2014 UTC (10 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 520441 byte(s)
* New LSCP specs (LSCP 1.6).

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 <meta name="description" content="LinuxSampler Control Protocol">
5 <meta name="keywords" content="LSCP">
6 <meta name="generator" content="xml2rfc v1.35 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">LinuxSampler.org</td></tr>
147 <tr><td class="header">Intended status: Standards Track</td><td class="header">January 9, 2014</td></tr>
148 <tr><td class="header">Expires: July 13, 2014</td><td class="header">&nbsp;</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.6</h1>
151
152 <h3>Abstract</h3>
153
154 <p>The LinuxSampler Control Protocol (LSCP) is an
155 application-level protocol primarily intended for local and
156 remote controlling the LinuxSampler backend application, which is a
157 sophisticated server-like console application essentially playing
158 back audio samples and manipulating the samples in real time to
159 certain extent.
160 </p>
161 <h3>Status of this Memo</h3>
162 <p>
163 By submitting this Internet-Draft,
164 each author represents that any applicable patent or other IPR claims of which
165 he or she is aware have been or will be disclosed,
166 and any of which he or she becomes aware will be disclosed,
167 in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
168 <p>
169 Internet-Drafts are working documents of the Internet Engineering
170 Task Force (IETF). Note that other groups may also distribute
171 working documents as Internet-Drafts. The list of current
172 Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.</p>
173 <p>
174 Internet-Drafts are draft documents valid for a maximum of six months
175 and may be updated, replaced, or obsoleted by other documents at any time.
176 It is inappropriate to use Internet-Drafts as reference material or to cite
177 them other than as &ldquo;work in progress.&rdquo;</p>
178 <p>
179 This Internet-Draft will expire on July 13, 2014.</p>
180 <a name="toc"></a><br /><hr />
181 <h3>Table of Contents</h3>
182 <p class="toc">
183 <a href="#anchor1">1.</a>&nbsp;
184 Requirements notation<br />
185 <a href="#LSCP versioning">2.</a>&nbsp;
186 Versioning of this specification<br />
187 <a href="#anchor2">3.</a>&nbsp;
188 Introduction<br />
189 <a href="#anchor3">4.</a>&nbsp;
190 Focus of this protocol<br />
191 <a href="#anchor4">5.</a>&nbsp;
192 Communication Overview<br />
193 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194 Request/response communication method<br />
195 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196 Result format<br />
197 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198 Subscribe/notify communication method<br />
199 <a href="#control_commands">6.</a>&nbsp;
200 Description for control commands<br />
201 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202 Ignored lines and comments<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204 Configuring audio drivers<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206 Getting amount of available audio output drivers<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208 Getting all available audio output drivers<br />
209 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210 Getting information about a specific audio
211 output driver<br />
212 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213 Getting information about specific audio
214 output driver parameter<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216 Creating an audio output device<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218 Destroying an audio output device<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220 Getting all created audio output device count<br />
221 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222 Getting all created audio output device list<br />
223 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224 Getting current settings of an audio output device<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226 Changing settings of audio output devices<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228 Getting information about an audio channel<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230 Getting information about specific audio channel parameter<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232 Changing settings of audio output channels<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234 Configuring MIDI input drivers<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236 Getting amount of available MIDI input drivers<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238 Getting all available MIDI input drivers<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240 Getting information about a specific MIDI input driver<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242 Getting information about specific MIDI input driver parameter<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244 Creating a MIDI input device<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246 Destroying a MIDI input device<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248 Getting all created MIDI input device count<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250 Getting all created MIDI input device list<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252 Getting current settings of a MIDI input device<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254 Changing settings of MIDI input devices<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256 Getting information about a MIDI port<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258 Getting information about specific MIDI port parameter<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260 Changing settings of MIDI input ports<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262 Configuring sampler channels<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264 Loading an instrument<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266 Loading a sampler engine<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268 Getting all created sampler channel count<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270 Getting all created sampler channel list<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272 Adding a new sampler channel<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274 Removing a sampler channel<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276 Getting amount of available engines<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278 Getting all available engines<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280 Getting information about an engine<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282 Getting sampler channel information<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284 Current number of active voices<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286 Current number of active disk streams<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288 Current fill state of disk stream buffers<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290 Setting audio output device<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292 Setting audio output type<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294 Setting audio output channel<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL MIDI_INPUT">6.4.17.</a>&nbsp;
296 Add MIDI input to sampler channel<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL MIDI_INPUT">6.4.18.</a>&nbsp;
298 Remove MIDI input(s) from sampler channel<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNEL MIDI_INPUTS">6.4.19.</a>&nbsp;
300 Getting all MIDI inputs of a sampler channel<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.20.</a>&nbsp;
302 Setting MIDI input device<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.21.</a>&nbsp;
304 Setting MIDI input type<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.22.</a>&nbsp;
306 Setting MIDI input port<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.23.</a>&nbsp;
308 Setting MIDI input channel<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.24.</a>&nbsp;
310 Setting channel volume<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.25.</a>&nbsp;
312 Muting a sampler channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.26.</a>&nbsp;
314 Soloing a sampler channel<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.27.</a>&nbsp;
316 Assigning a MIDI instrument map to a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.28.</a>&nbsp;
318 Adding an effect send to a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.29.</a>&nbsp;
320 Removing an effect send from a sampler channel<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.30.</a>&nbsp;
322 Getting amount of effect sends on a sampler channel<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.31.</a>&nbsp;
324 Listing all effect sends on a sampler channel<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.32.</a>&nbsp;
326 Getting effect send information<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.33.</a>&nbsp;
328 Changing effect send's name<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.34.</a>&nbsp;
330 Altering effect send's audio routing<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.35.</a>&nbsp;
332 Assigning destination effect to an effect send<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.36.</a>&nbsp;
334 Removing destination effect from an effect send<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.37.</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.38.</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.39.</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.40.</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;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
370 Getting global voice limit<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
372 Setting global voice limit<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
374 Getting global disk stream limit<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
376 Setting global disk stream limit<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
378 MIDI Instrument Mapping<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
380 Create a new MIDI instrument map<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
382 Delete one particular or all MIDI instrument maps<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
384 Get amount of existing MIDI instrument maps<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
386 Getting all created MIDI instrument maps<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
388 Getting MIDI instrument map information<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
390 Renaming a MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
392 Create or replace a MIDI instrument map entry<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
394 Getting amount of MIDI instrument map entries<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
396 Getting indeces of all entries of a MIDI instrument map<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
398 Remove an entry from the MIDI instrument map<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
400 Get current settings of MIDI instrument map entry<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
402 Clear MIDI instrument map<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
404 Managing Instruments Database<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
406 Creating a new instrument directory<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
408 Deleting an instrument directory<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
410 Getting amount of instrument directories<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
412 Listing all directories in specific directory<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
414 Getting instrument directory information<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
416 Renaming an instrument directory<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
418 Moving an instrument directory<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
420 Copying instrument directories<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
422 Changing the description of directory<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
424 Finding directories<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
426 Adding instruments to the instruments database<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
428 Removing an instrument<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
430 Getting amount of instruments<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
432 Listing all instruments in specific directory<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
434 Getting instrument information<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
436 Renaming an instrument<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
438 Moving an instrument<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
440 Copying instruments<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
442 Changing the description of instrument<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
444 Finding instruments<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
446 Getting job status information<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
448 Formatting the instruments database<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
450 Checking for lost instrument files<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
452 Replacing an instrument file<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
454 Editing Instruments<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
456 Opening an appropriate instrument editor application<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
458 Managing Files<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
460 Retrieving amount of instruments of a file<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
462 Retrieving all instruments of a file<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
464 Retrieving informations about one instrument in a file<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
466 Managing Effects<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
468 Retrieve amount of available effects<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
470 Get list of available effects<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
472 Retrieving general information about an effect<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
474 Creating an instance of an effect by its portable ID<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
476 Creating an instance of an effect by its numerical ID<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
478 Destroy an effect instance<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
480 Retrieve amount of effect instances<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
482 Get list of effect instances<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
484 Retrieving current information about an effect instance<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
486 Retrieving information about an effect parameter<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
488 Altering an effect parameter<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
490 Retrieve amount of send effect chains<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
492 Retrieve list of send effect chains<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
494 Add send effect chain<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
496 Remove send effect chain<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
498 Retrieving information about a send effect chain<br />
499 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
500 Append effect instance to a send effect chain<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
502 Insert effect instance to a send effect chain<br />
503 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
504 Remove effect instance from send effect chain<br />
505 <a href="#command_syntax">7.</a>&nbsp;
506 Command Syntax<br />
507 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
508 Character Set and Escape Sequences<br />
509 <a href="#events">8.</a>&nbsp;
510 Events<br />
511 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
512 Number of audio output devices changed<br />
513 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
514 Audio output device's settings changed<br />
515 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
516 Number of MIDI input devices changed<br />
517 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
518 MIDI input device's settings changed<br />
519 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
520 Number of sampler channels changed<br />
521 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
522 MIDI data on a sampler channel arrived<br />
523 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
524 MIDI data on a MIDI input device arrived<br />
525 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
526 Number of active voices changed<br />
527 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
528 Number of active disk streams changed<br />
529 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
530 Disk stream buffer fill state changed<br />
531 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
532 Channel information changed<br />
533 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
534 Number of effect sends changed<br />
535 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
536 Effect send information changed<br />
537 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
538 Total number of active voices changed<br />
539 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
540 Total number of active disk streams changed<br />
541 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
542 Number of MIDI instrument maps changed<br />
543 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
544 MIDI instrument map information changed<br />
545 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
546 Number of MIDI instruments changed<br />
547 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
548 MIDI instrument information changed<br />
549 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
550 Global settings changed<br />
551 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
552 Number of database instrument directories changed<br />
553 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
554 Database instrument directory information changed<br />
555 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
556 Number of database instruments changed<br />
557 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
558 Database instrument information changed<br />
559 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
560 Database job status information changed<br />
561 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_COUNT">8.26.</a>&nbsp;
562 Number of effect instances changed<br />
563 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_INFO">8.27.</a>&nbsp;
564 Effect instance information changed<br />
565 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_COUNT">8.28.</a>&nbsp;
566 Number of send effect chains changed<br />
567 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_INFO">8.29.</a>&nbsp;
568 Send effect chain information changed<br />
569 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.30.</a>&nbsp;
570 Miscellaneous and debugging events<br />
571 <a href="#anchor14">9.</a>&nbsp;
572 Security Considerations<br />
573 <a href="#anchor15">10.</a>&nbsp;
574 Acknowledgments<br />
575 <a href="#rfc.references1">11.</a>&nbsp;
576 References<br />
577 <a href="#rfc.authors">&#167;</a>&nbsp;
578 Author's Address<br />
579 <a href="#rfc.copyright">&#167;</a>&nbsp;
580 Intellectual Property and Copyright Statements<br />
581 </p>
582 <br clear="all" />
583
584 <a name="anchor1"></a><br /><hr />
585 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
586 <a name="rfc.section.1"></a><h3>1.&nbsp;
587 Requirements notation</h3>
588
589 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
590 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
591 and "OPTIONAL" in this document are to be interpreted as
592 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>.
593 </p>
594 <p>This protocol is always case-sensitive if not explicitly
595 claimed the opposite.
596 </p>
597 <p>In examples, "C:" and "S:" indicate lines sent by the client
598 (front-end) and server (LinuxSampler) respectively. Lines in
599 examples must be interpreted as every line being CRLF
600 terminated (carriage return character followed by line feed
601 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>),
602 thus the following example:
603 </p>
604 <p>
605 </p>
606 <blockquote class="text">
607 <p>C: "some line"
608 </p>
609 <p>&nbsp;&nbsp;&nbsp;"another line"
610 </p>
611 </blockquote><p>
612
613 </p>
614 <p>must actually be interpreted as client sending the following
615 message:
616 </p>
617 <p>
618 </p>
619 <blockquote class="text">
620 <p>"some line&lt;CR&gt;&lt;LF&gt;another
621 line&lt;CR&gt;&lt;LF&gt;"
622 </p>
623 </blockquote><p>
624
625 </p>
626 <p>where &lt;CR&gt; symbolizes the carriage return character and
627 &lt;LF&gt; the line feed character as defined in the ASCII
628 standard.
629 </p>
630 <p>Due to technical reasons, messages can arbitrary be
631 fragmented, means the following example:
632 </p>
633 <p>
634 </p>
635 <blockquote class="text">
636 <p>S: "abcd"
637 </p>
638 </blockquote><p>
639
640 </p>
641 <p>could also happen to be sent in three messages like in the
642 following sequence scenario:
643 </p>
644 <p>
645 </p>
646 <ul class="text">
647 <li>server sending message "a"
648 </li>
649 <li>followed by a delay (pause) with
650 arbitrary duration
651 </li>
652 <li>followed by server sending message
653 "bcd&lt;CR&gt;"
654 </li>
655 <li>again followed by a delay (pause) with arbitrary
656 duration
657 </li>
658 <li>followed by server sending the message
659 "&lt;LF&gt;"
660 </li>
661 </ul><p>
662
663 </p>
664 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
665 return and line feed characters respectively.
666 </p>
667 <a name="LSCP versioning"></a><br /><hr />
668 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
669 <a name="rfc.section.2"></a><h3>2.&nbsp;
670 Versioning of this specification</h3>
671
672 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
673 release of the LSCP specification will be tagged with a unique version
674 tuple. The version tuple consists at least of a major and minor version
675 number like:
676
677 </p>
678 <p>
679 </p>
680 <blockquote class="text">
681 <p>"1.2"
682 </p>
683 </blockquote><p>
684
685 </p>
686 <p>
687 In this example the major version number would be "1" and the minor
688 version number would be "2". Note that the version tuple might also
689 have more than two elements. The major version number defines a
690 group of backward compatible versions. That means a frontend is
691 compatible to the connected sampler if and only if the LSCP versions
692 to which each of the two parties complies to, match both of the
693 following rules:
694
695 </p>
696 <p>Compatibility:
697 </p>
698 <p>
699 </p>
700 <ol class="text">
701 <li>The frontend's LSCP major version and the sampler's LSCP
702 major version are exactly equal.
703 </li>
704 <li>The frontend's LSCP minor version is less or equal than
705 the sampler's LSCP minor version.
706 </li>
707 </ol><p>
708
709 </p>
710 <p>
711 Compatibility can only be claimed if both rules are true.
712 The frontend can use the
713 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
714 get the version of the LSCP specification the sampler complies with.
715
716 </p>
717 <a name="anchor2"></a><br /><hr />
718 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
719 <a name="rfc.section.3"></a><h3>3.&nbsp;
720 Introduction</h3>
721
722 <p>LinuxSampler is a so called software sampler application
723 capable to playback audio samples from a computer's Random
724 Access Memory (RAM) as well as directly streaming it from disk.
725 LinuxSampler is designed to be modular. It provides several so
726 called "sampler engines" where each engine is specialized for a
727 certain purpose. LinuxSampler has virtual channels which will be
728 referred in this document as "sampler channels". The channels
729 are in such way virtual as they can be connected to an
730 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
731 sampler channel 17 could be connected to an ALSA sequencer
732 device 64:0 and listening to MIDI channel 1 there). Each sampler
733 channel will be associated with an instance of one of the available
734 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
735 each sampler channel can be routed to an arbitrary audio output
736 method (ALSA / JACK) and an arbitrary audio output channel
737 there.
738 </p>
739 <a name="anchor3"></a><br /><hr />
740 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
741 <a name="rfc.section.4"></a><h3>4.&nbsp;
742 Focus of this protocol</h3>
743
744 <p>Main focus of this protocol is to provide a way to configure
745 a running LinuxSampler instance and to retrieve information
746 about it. The focus of this protocol is not to provide a way to
747 control synthesis parameters or even to trigger or release
748 notes. Or in other words; the focus are those functionalities
749 which are not covered by MIDI or which may at most be handled
750 via MIDI System Exclusive Messages.
751 </p>
752 <a name="anchor4"></a><br /><hr />
753 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
754 <a name="rfc.section.5"></a><h3>5.&nbsp;
755 Communication Overview</h3>
756
757 <p>There are two distinct methods of communication between a
758 running instance of LinuxSampler and one or more control
759 applications, so called "front-ends": a simple request/response
760 communication method used by the clients to give commands to the
761 server as well as to inquire about server's status and a
762 subscribe/notify communication method used by the client to
763 subscribe to and receive notifications of certain events as they
764 happen on the server. The latter needs more effort to be
765 implemented in the front-end application. The two communication
766 methods will be described next.
767 </p>
768 <a name="anchor5"></a><br /><hr />
769 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
770 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
771 Request/response communication method</h3>
772
773 <p>This simple communication method is based on
774 <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
775 front-end application establishes a TCP connection to the
776 LinuxSampler instance on a certain host system. Then the
777 front-end application will send certain ASCII based commands
778 as defined in this document (every command line must be CRLF
779 terminated - see "Conventions used in this document" at the
780 beginning of this document) and the LinuxSampler application
781 will response after a certain process time with an
782 appropriate ASCII based answer, also as defined in this
783 document. So this TCP communication is simply based on query
784 and answer paradigm. That way LinuxSampler is only able to
785 answer on queries from front-ends, but not able to
786 automatically send messages to the client if it's not asked
787 to. The fronted should not reconnect to LinuxSampler for
788 every single command, instead it should keep the connection
789 established and simply resend message(s) for subsequent
790 commands. To keep information in the front-end up-to-date
791 the front-end has to periodically send new requests to get
792 the current information from the LinuxSampler instance. This
793 is often referred to as "polling". While polling is simple
794 to implement and may be OK to use in some cases, there may
795 be disadvantages to polling such as network traffic overhead
796 and information being out of date.
797 It is possible for a client or several clients to open more
798 than one connection to the server at the same time. It is
799 also possible to send more than one request to the server
800 at the same time but if those requests are sent over the
801 same connection server MUST execute them sequentially. Upon
802 executing a request server will produce a result set and
803 send it to the client. Each and every request made by the
804 client MUST result in a result set being sent back to the
805 client. No other data other than a result set may be sent by
806 a server to a client. No result set may be sent to a client
807 without the client sending request to the server first. On
808 any particular connection, result sets MUST be sent in their
809 entirety without being interrupted by other result sets. If
810 several requests got queued up at the server they MUST be
811 processed in the order they were received and result sets
812 MUST be sent back in the same order.
813 </p>
814 <a name="anchor6"></a><br /><hr />
815 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
816 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
817 Result format</h3>
818
819 <p>Result set could be one of the following types:
820 </p>
821 <p>
822 </p>
823 <ol class="text">
824 <li>Normal
825 </li>
826 <li>Warning
827 </li>
828 <li>Error
829 </li>
830 </ol><p>
831
832 </p>
833 <p>Warning and Error result sets MUST be single line and
834 have the following format:
835 </p>
836 <p>
837 </p>
838 <ul class="text">
839 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
840 </li>
841 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
842 </li>
843 </ul><p>
844
845 </p>
846 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
847 numeric unique identifiers of the warning or error and
848 &lt;warning-message&gt; and &lt;error-message&gt; are
849 human readable descriptions of the warning or error
850 respectively.
851 </p>
852 <p>Examples:
853 </p>
854 <p>
855 </p>
856 <blockquote class="text">
857 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
858 </p>
859 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
860 </p>
861 </blockquote><p>
862
863 </p>
864 <p>
865 </p>
866 <blockquote class="text">
867 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
868 </p>
869 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
870 </p>
871 </blockquote><p>
872
873 </p>
874 <p>
875 </p>
876 <blockquote class="text">
877 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
878 </p>
879 <p>S: "ERR:9:There is no audio output device with index 123456."
880 </p>
881 </blockquote><p>
882
883 </p>
884 <p>Normal result sets could be:
885 </p>
886 <p>
887 </p>
888 <ol class="text">
889 <li>Empty
890 </li>
891 <li>Single line
892 </li>
893 <li>Multi-line
894 </li>
895 </ol><p>
896
897 </p>
898 <p> Empty result set is issued when the server only
899 needed to acknowledge the fact that the request was
900 received and it was processed successfully and no
901 additional information is available. This result set has
902 the following format:
903 </p>
904 <p>
905 </p>
906 <blockquote class="text">
907 <p>"OK"
908 </p>
909 </blockquote><p>
910
911 </p>
912 <p>Example:
913 </p>
914 <p>
915 </p>
916 <blockquote class="text">
917 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
918 </p>
919 <p>S: "OK"
920 </p>
921 </blockquote><p>
922
923 </p>
924 <p>Single line result sets are command specific. One
925 example of a single line result set is an empty line.
926 Multi-line result sets are command specific and may
927 include one or more lines of information. They MUST
928 always end with the following line:
929 </p>
930 <p>
931 </p>
932 <blockquote class="text">
933 <p>"."
934 </p>
935 </blockquote><p>
936
937 </p>
938 <p>Example:
939 </p>
940 <p>
941 </p>
942 <blockquote class="text">
943 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
944 </p>
945 <p>S: "DRIVER: ALSA"
946 </p>
947 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
948 </p>
949 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
950 </p>
951 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
952 </p>
953 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
954 </p>
955 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
956 </p>
957 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
958 </p>
959 <p>&nbsp;&nbsp;&nbsp;"."
960 </p>
961 </blockquote><p>
962
963 </p>
964 <p>In addition to above mentioned formats, warnings and
965 empty result sets MAY be indexed. In this case, they
966 have the following formats respectively:
967 </p>
968 <p>
969 </p>
970 <ul class="text">
971 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
972 </li>
973 <li>"OK[&lt;index&gt;]"
974 </li>
975 </ul><p>
976
977 </p>
978 <p>where &lt;index&gt; is command specific and is used
979 to indicate channel number that the result set was
980 related to or other integer value.
981 </p>
982 <p>Each line of the result set MUST end with
983 &lt;CRLF&gt;.
984 </p>
985 <p>Examples:
986 </p>
987 <p>
988 </p>
989 <blockquote class="text">
990 <p>C: "ADD CHANNEL"
991 </p>
992 <p>S: "OK[12]"
993 </p>
994 </blockquote><p>
995
996 </p>
997 <p>
998 </p>
999 <blockquote class="text">
1000 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
1001 </p>
1002 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
1003 </p>
1004 </blockquote><p>
1005
1006 </p>
1007 <a name="anchor7"></a><br /><hr />
1008 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1009 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
1010 Subscribe/notify communication method</h3>
1011
1012 <p>This more sophisticated communication method is actually
1013 only an extension of the simple request/response
1014 communication method. The front-end still uses a TCP
1015 connection and sends the same commands on the TCP
1016 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1017 commands that allow a client to tell the server that it is
1018 interested in receiving notifications about certain events
1019 as they happen on the server. The SUBSCRIBE command has the
1020 following syntax:
1021 </p>
1022 <p>
1023 </p>
1024 <blockquote class="text">
1025 <p>SUBSCRIBE &lt;event-id&gt;
1026 </p>
1027 </blockquote><p>
1028
1029 </p>
1030 <p>where &lt;event-id&gt; will be replaced by the respective
1031 event that client wants to subscribe to. Upon receiving such
1032 request, server SHOULD respond with OK and start sending
1033 EVENT notifications when a given even has occurred to the
1034 front-end when an event has occurred. It MAY be possible
1035 certain events may be sent before OK response during real
1036 time nature of their generation. Event messages have the
1037 following format:
1038 </p>
1039 <p>
1040 </p>
1041 <blockquote class="text">
1042 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1043 </p>
1044 </blockquote><p>
1045
1046 </p>
1047 <p>where &lt;event-id&gt; uniquely identifies the event that
1048 has occurred and &lt;custom-event-data&gt; is event
1049 specific.
1050 </p>
1051 <p>Several rules must be followed by the server when
1052 generating events:
1053 </p>
1054 <p>
1055 </p>
1056 <ol class="text">
1057 <li>Events MUST NOT be sent to any client who has not
1058 issued an appropriate SUBSCRIBE command.
1059 </li>
1060 <li>Events MUST only be sent using the same
1061 connection that was used to subscribe to them.
1062 </li>
1063 <li>When response is being sent to the client, event
1064 MUST be inserted in the stream before or after the
1065 response, but NOT in the middle. Same is true about
1066 the response. It should never be inserted in the
1067 middle of the event message as well as any other
1068 response.
1069 </li>
1070 </ol><p>
1071
1072 </p>
1073 <p>If the client is not interested in a particular event
1074 anymore it MAY issue UNSUBSCRIBE command using the following
1075 syntax:
1076 </p>
1077 <p>
1078 </p>
1079 <blockquote class="text">
1080 <p>UNSUBSCRIBE &lt;event-id&gt;
1081 </p>
1082 </blockquote><p>
1083
1084 </p>
1085 <p>where &lt;event-id&gt; will be replace by the respective
1086 event that client is no longer interested in receiving. For
1087 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1088 </p>
1089 <p>Example: the fill states of disk stream buffers have
1090 changed on sampler channel 4 and the LinuxSampler instance
1091 will react by sending the following message to all clients
1092 who subscribed to this event:
1093 </p>
1094 <p>
1095 </p>
1096 <blockquote class="text">
1097 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1098 </p>
1099 </blockquote><p>
1100
1101 </p>
1102 <p>Which means there are currently three active streams on
1103 sampler channel 4, where the stream with ID "35" is filled
1104 by 62%, stream with ID 33 is filled by 80% and stream with
1105 ID 37 is filled by 98%.
1106 </p>
1107 <p>Clients may choose to open more than one connection to
1108 the server and use some connections to receive notifications
1109 while using other connections to issue commands to the
1110 back-end. This is entirely legal and up to the
1111 implementation. This does not change the protocol in any way
1112 and no special restrictions exist on the server to allow or
1113 disallow this or to track what connections belong to what
1114 front-ends. Server will listen on a single port, accept
1115 multiple connections and support protocol described in this
1116 specification in it's entirety on this single port on each
1117 connection that it accepted.
1118 </p>
1119 <p>Due to the fact that TCP is used for this communication,
1120 dead peers will be detected automatically by the OS TCP
1121 stack. While it may take a while to detect dead peers if no
1122 traffic is being sent from server to client (TCP keep-alive
1123 timer is set to 2 hours on many OSes) it will not be an
1124 issue here as when notifications are sent by the server,
1125 dead client will be detected quickly.
1126 </p>
1127 <p>When connection is closed for any reason server MUST
1128 forget all subscriptions that were made on this connection.
1129 If client reconnects it MUST resubscribe to all events that
1130 it wants to receive.
1131 </p>
1132 <a name="control_commands"></a><br /><hr />
1133 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1134 <a name="rfc.section.6"></a><h3>6.&nbsp;
1135 Description for control commands</h3>
1136
1137 <p>This chapter will describe the available control commands
1138 that can be sent on the TCP connection in detail. Some certain
1139 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>
1140 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
1141 multiple-line responses. In this case LinuxSampler signals the
1142 end of the response by a "." (single dot) line.
1143 </p>
1144 <a name="anchor8"></a><br /><hr />
1145 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1146 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1147 Ignored lines and comments</h3>
1148
1149 <p>White lines, that is lines which only contain space and
1150 tabulator characters, and lines that start with a "#"
1151 character are ignored, thus it's possible for example to
1152 group commands and to place comments in a LSCP script
1153 file.
1154 </p>
1155 <a name="anchor9"></a><br /><hr />
1156 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1157 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1158 Configuring audio drivers</h3>
1159
1160 <p>Instances of drivers in LinuxSampler are called devices.
1161 You can use multiple audio devices simultaneously, e.g. to
1162 output the sound of one sampler channel using the ALSA audio
1163 output driver, and on another sampler channel you might want
1164 to use the JACK audio output driver. For particular audio
1165 output systems it's also possible to create several devices
1166 of the same audio output driver, e.g. two separate ALSA
1167 audio output devices for using two different sound cards at
1168 the same time. This chapter describes all commands to
1169 configure LinuxSampler's audio output devices and their
1170 parameters.
1171 </p>
1172 <p>Instead of defining commands and parameters for each
1173 driver individually, all possible parameters, their meanings
1174 and possible values have to be obtained at runtime. This
1175 makes the protocol a bit abstract, but has the advantage,
1176 that front-ends can be written independently of what drivers
1177 are currently implemented and what parameters these drivers
1178 are actually offering. This means front-ends can even handle
1179 drivers which are implemented somewhere in future without
1180 modifying the front-end at all.
1181 </p>
1182 <p>Note: examples in this chapter showing particular
1183 parameters of drivers are not meant as specification of the
1184 drivers' parameters. Driver implementations in LinuxSampler
1185 might have complete different parameter names and meanings
1186 than shown in these examples or might change in future, so
1187 these examples are only meant for showing how to retrieve
1188 what parameters drivers are offering, how to retrieve their
1189 possible values, etc.
1190 </p>
1191 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1192 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1193 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1194 Getting amount of available audio output drivers</h3>
1195
1196 <p>Use the following command to get the number of
1197 audio output drivers currently available for the
1198 LinuxSampler instance:
1199 </p>
1200 <p>
1201 </p>
1202 <blockquote class="text">
1203 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1204 </p>
1205 </blockquote><p>
1206
1207 </p>
1208 <p>Possible Answers:
1209 </p>
1210 <p>
1211 </p>
1212 <blockquote class="text">
1213 <p>LinuxSampler will answer by sending the
1214 number of audio output drivers.
1215 </p>
1216 </blockquote><p>
1217
1218 </p>
1219 <p>Example:
1220 </p>
1221 <p>
1222 </p>
1223 <blockquote class="text">
1224 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1225 </p>
1226 <p>S: "2"
1227 </p>
1228 </blockquote><p>
1229
1230 </p>
1231 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1232 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1233 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1234 Getting all available audio output drivers</h3>
1235
1236 <p>Use the following command to list all audio output
1237 drivers currently available for the LinuxSampler
1238 instance:
1239 </p>
1240 <p>
1241 </p>
1242 <blockquote class="text">
1243 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1244 </p>
1245 </blockquote><p>
1246
1247 </p>
1248 <p>Possible Answers:
1249 </p>
1250 <p>
1251 </p>
1252 <blockquote class="text">
1253 <p>LinuxSampler will answer by sending comma
1254 separated character strings, each symbolizing an
1255 audio output driver.
1256 </p>
1257 </blockquote><p>
1258
1259 </p>
1260 <p>Example:
1261 </p>
1262 <p>
1263 </p>
1264 <blockquote class="text">
1265 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1266 </p>
1267 <p>S: "ALSA,JACK"
1268 </p>
1269 </blockquote><p>
1270
1271 </p>
1272 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1273 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1274 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1275 Getting information about a specific audio
1276 output driver</h3>
1277
1278 <p>Use the following command to get detailed information
1279 about a specific audio output driver:
1280 </p>
1281 <p>
1282 </p>
1283 <blockquote class="text">
1284 <p>GET AUDIO_OUTPUT_DRIVER INFO
1285 &lt;audio-output-driver&gt;
1286 </p>
1287 </blockquote><p>
1288
1289 </p>
1290 <p>Where &lt;audio-output-driver&gt; is the name of the
1291 audio output driver, returned by the
1292 <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.
1293 </p>
1294 <p>Possible Answers:
1295 </p>
1296 <p>
1297 </p>
1298 <blockquote class="text">
1299 <p>LinuxSampler will answer by sending a
1300 &lt;CRLF&gt; separated list. Each answer line
1301 begins with the information category name
1302 followed by a colon and then a space character
1303 &lt;SP&gt; and finally the info character string
1304 to that info category. At the moment the
1305 following information categories are
1306 defined:
1307 </p>
1308 <p>
1309 </p>
1310 <blockquote class="text">
1311 <p>DESCRIPTION -
1312 </p>
1313 <blockquote class="text">
1314 <p> character string describing the
1315 audio output driver
1316 </p>
1317 </blockquote>
1318
1319
1320 <p>VERSION -
1321 </p>
1322 <blockquote class="text">
1323 <p>character string reflecting the
1324 driver's version
1325 </p>
1326 </blockquote>
1327
1328
1329 <p>PARAMETERS -
1330 </p>
1331 <blockquote class="text">
1332 <p>comma separated list of all
1333 parameters available for the given
1334 audio output driver, at least
1335 parameters 'channels', 'samplerate'
1336 and 'active' are offered by all audio
1337 output drivers
1338 </p>
1339 </blockquote>
1340
1341
1342 </blockquote>
1343
1344
1345 <p>The mentioned fields above don't have to be
1346 in particular order.
1347 </p>
1348 </blockquote><p>
1349
1350 </p>
1351 <p>Example:
1352 </p>
1353 <p>
1354 </p>
1355 <blockquote class="text">
1356 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1357 </p>
1358 <p>S: "DESCRIPTION: Advanced Linux Sound
1359 Architecture"
1360 </p>
1361 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1362 </p>
1363 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1364 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1365 FRAGMENTSIZE,CARD"
1366 </p>
1367 <p>&nbsp;&nbsp;&nbsp;"."
1368 </p>
1369 </blockquote><p>
1370
1371 </p>
1372 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1373 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1374 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1375 Getting information about specific audio
1376 output driver parameter</h3>
1377
1378 <p>Use the following command to get detailed information
1379 about a specific audio output driver parameter:
1380 </p>
1381 <p>
1382 </p>
1383 <blockquote class="text">
1384 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1385 </p>
1386 </blockquote><p>
1387
1388 </p>
1389 <p>Where &lt;audio&gt; is the name of the audio output
1390 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,
1391 &lt;prm&gt; a specific parameter name for which information should be
1392 obtained (as returned by the
1393 <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
1394 &lt;deplist&gt; is an optional list of parameters on which the sought
1395 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1396 pairs in form of "key1=val1 key2=val2 ...", where character string values
1397 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1398 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1399 the front-end application can simply put all parameters into &lt;deplist&gt;
1400 with the values already selected by the user.
1401 </p>
1402 <p>Possible Answers:
1403 </p>
1404 <p>
1405 </p>
1406 <blockquote class="text">
1407 <p>LinuxSampler will answer by sending a
1408 &lt;CRLF&gt; separated list.
1409 Each answer line begins with the information category name
1410 followed by a colon and then a space character &lt;SP&gt; and
1411 finally
1412 the info character string to that info category. There are
1413 information which is always returned, independently of the
1414 given driver parameter and there are optional information
1415 which is only shown dependently to given driver parameter. At
1416 the moment the following information categories are defined:
1417 </p>
1418 </blockquote><p>
1419
1420 </p>
1421 <p>
1422 </p>
1423 <blockquote class="text">
1424 <p>TYPE -
1425 </p>
1426 <blockquote class="text">
1427 <p>either "BOOL" for boolean value(s) or
1428 "INT" for integer
1429 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1430 character string(s)
1431 (always returned, no matter which driver parameter)
1432 </p>
1433 </blockquote>
1434
1435
1436 <p>DESCRIPTION -
1437 </p>
1438 <blockquote class="text">
1439 <p>arbitrary text describing the purpose of the parameter
1440 (always returned, no matter which driver parameter)
1441 </p>
1442 </blockquote>
1443
1444
1445 <p>MANDATORY -
1446 </p>
1447 <blockquote class="text">
1448 <p>either true or false, defines if this parameter must be
1449 given when the device is to be created with the
1450 <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>
1451 command (always returned, no matter which driver parameter)
1452 </p>
1453 </blockquote>
1454
1455
1456 <p>FIX -
1457 </p>
1458 <blockquote class="text">
1459 <p>either true or false, if false then this parameter can
1460 be changed at any time, once the device is created by
1461 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>
1462 command (always returned, no matter which driver parameter)
1463 </p>
1464 </blockquote>
1465
1466
1467 <p>MULTIPLICITY -
1468 </p>
1469 <blockquote class="text">
1470 <p>either true or false, defines if this parameter allows
1471 only one value or a list of values, where true means
1472 multiple values and false only a single value allowed
1473 (always returned, no matter which driver parameter)
1474 </p>
1475 </blockquote>
1476
1477
1478 <p>DEPENDS -
1479 </p>
1480 <blockquote class="text">
1481 <p>comma separated list of parameters this parameter depends
1482 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1483 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1484 listed parameters, for example assuming that an audio
1485 driver (like the ALSA driver) offers parameters 'card'
1486 and 'samplerate' then parameter 'samplerate' would
1487 depend on 'card' because the possible values for
1488 'samplerate' depends on the sound card which can be
1489 chosen by the 'card' parameter
1490 (optionally returned, dependent to driver parameter)
1491 </p>
1492 </blockquote>
1493
1494
1495 <p>DEFAULT -
1496 </p>
1497 <blockquote class="text">
1498 <p>reflects the default value for this parameter which is
1499 used when the device is created and not explicitly
1500 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,
1501 in case of MULTIPLCITY=true, this is a comma separated
1502 list, that's why character strings are encapsulated into
1503 apostrophes (')
1504 (optionally returned, dependent to driver parameter)
1505 </p>
1506 </blockquote>
1507
1508
1509 <p>RANGE_MIN -
1510 </p>
1511 <blockquote class="text">
1512 <p>defines lower limit of the allowed value range for this
1513 parameter, can be an integer value as well as a dotted
1514 number, this parameter is often used in conjunction
1515 with RANGE_MAX, but may also appear without
1516 (optionally returned, dependent to driver parameter)
1517 </p>
1518 </blockquote>
1519
1520
1521 <p>RANGE_MAX -
1522 </p>
1523 <blockquote class="text">
1524 <p>defines upper limit of the allowed value range for this
1525 parameter, can be an integer value as well as a dotted
1526 number, this parameter is often used in conjunction with
1527 RANGE_MIN, but may also appear without
1528 (optionally returned, dependent to driver parameter)
1529 </p>
1530 </blockquote>
1531
1532
1533 <p>POSSIBILITIES -
1534 </p>
1535 <blockquote class="text">
1536 <p>comma separated list of possible values for this
1537 parameter, character strings are encapsulated into
1538 apostrophes
1539 (optionally returned, dependent to driver parameter)
1540 </p>
1541 </blockquote>
1542
1543
1544 </blockquote><p>
1545
1546 </p>
1547 <p>The mentioned fields above don't have to be in particular order.
1548 </p>
1549 <p>Examples:
1550 </p>
1551 <p>
1552 </p>
1553 <blockquote class="text">
1554 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1555 </p>
1556 <p>S: "DESCRIPTION: sound card to be used"
1557 </p>
1558 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1559 </p>
1560 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1561 </p>
1562 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1563 </p>
1564 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1565 </p>
1566 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1567 </p>
1568 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1569 </p>
1570 <p>&nbsp;&nbsp;&nbsp;"."
1571 </p>
1572 </blockquote><p>
1573
1574 </p>
1575 <p>
1576 </p>
1577 <blockquote class="text">
1578 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1579 </p>
1580 <p>S: "DESCRIPTION: output sample rate in Hz"
1581 </p>
1582 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1583 </p>
1584 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1585 </p>
1586 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1587 </p>
1588 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1589 </p>
1590 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1591 </p>
1592 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1593 </p>
1594 <p>&nbsp;&nbsp;&nbsp;"."
1595 </p>
1596 </blockquote><p>
1597
1598 </p>
1599 <p>
1600 </p>
1601 <blockquote class="text">
1602 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1603 </p>
1604 <p>S: "DESCRIPTION: output sample rate in Hz"
1605 </p>
1606 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1607 </p>
1608 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1609 </p>
1610 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1611 </p>
1612 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1613 </p>
1614 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1615 </p>
1616 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1617 </p>
1618 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1619 </p>
1620 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1621 </p>
1622 <p>&nbsp;&nbsp;&nbsp;"."
1623 </p>
1624 </blockquote><p>
1625
1626 </p>
1627 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1628 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1629 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1630 Creating an audio output device</h3>
1631
1632 <p>Use the following command to create a new audio output device for the desired audio output system:
1633 </p>
1634 <p>
1635 </p>
1636 <blockquote class="text">
1637 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1638 </p>
1639 </blockquote><p>
1640
1641 </p>
1642 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1643 output system as returned by the
1644 <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>
1645 command and &lt;param-list&gt; by an optional list of driver
1646 specific parameters in form of "key1=val1 key2=val2 ...", where
1647 character string values should be encapsulated into apostrophes (').
1648 Note that there might be drivers which require parameter(s) to be
1649 given with this command. Use the previously described commands in
1650 this chapter to get this information.
1651 </p>
1652 <p>Possible Answers:
1653 </p>
1654 <p>
1655 </p>
1656 <blockquote class="text">
1657 <p>"OK[&lt;device-id&gt;]" -
1658 </p>
1659 <blockquote class="text">
1660 <p>in case the device was successfully created, where
1661 &lt;device-id&gt; is the numerical ID of the new device
1662 </p>
1663 </blockquote>
1664
1665
1666 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1667 </p>
1668 <blockquote class="text">
1669 <p>in case the device was created successfully, where
1670 &lt;device-id&gt; is the numerical ID of the new device, but there
1671 are noteworthy issue(s) related (e.g. sound card doesn't
1672 support given hardware parameters and the driver is using
1673 fall-back values), providing an appropriate warning code and
1674 warning message
1675 </p>
1676 </blockquote>
1677
1678
1679 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1680 </p>
1681 <blockquote class="text">
1682 <p>in case it failed, providing an appropriate error code and error message
1683 </p>
1684 </blockquote>
1685
1686
1687 </blockquote><p>
1688
1689 </p>
1690 <p>Examples:
1691 </p>
1692 <p>
1693 </p>
1694 <blockquote class="text">
1695 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1696 </p>
1697 <p>S: "OK[0]"
1698 </p>
1699 </blockquote><p>
1700
1701 </p>
1702 <p>
1703 </p>
1704 <blockquote class="text">
1705 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1706 </p>
1707 <p>S: "OK[1]"
1708 </p>
1709 </blockquote><p>
1710
1711 </p>
1712 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1713 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1714 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1715 Destroying an audio output device</h3>
1716
1717 <p>Use the following command to destroy a created output device:
1718 </p>
1719 <p>
1720 </p>
1721 <blockquote class="text">
1722 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1723 </p>
1724 </blockquote><p>
1725
1726 </p>
1727 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1728 audio output device as given by the
1729 <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>
1730 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>
1731 command.
1732 </p>
1733 <p>Possible Answers:
1734 </p>
1735 <p>
1736 </p>
1737 <blockquote class="text">
1738 <p>"OK" -
1739 </p>
1740 <blockquote class="text">
1741 <p>in case the device was successfully destroyed
1742 </p>
1743 </blockquote>
1744
1745
1746 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1747 </p>
1748 <blockquote class="text">
1749 <p>in case the device was destroyed successfully, but there are
1750 noteworthy issue(s) related (e.g. an audio over ethernet
1751 driver was unloaded but the other host might not be
1752 informed about this situation), providing an appropriate
1753 warning code and warning message
1754 </p>
1755 </blockquote>
1756
1757
1758 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1759 </p>
1760 <blockquote class="text">
1761 <p>in case it failed, providing an appropriate error code and
1762 error message
1763 </p>
1764 </blockquote>
1765
1766
1767 </blockquote><p>
1768
1769 </p>
1770 <p>Example:
1771 </p>
1772 <p>
1773 </p>
1774 <blockquote class="text">
1775 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1776 </p>
1777 <p>S: "OK"
1778 </p>
1779 </blockquote><p>
1780
1781 </p>
1782 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1784 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1785 Getting all created audio output device count</h3>
1786
1787 <p>Use the following command to count all created audio output devices:
1788 </p>
1789 <p>
1790 </p>
1791 <blockquote class="text">
1792 <p>GET AUDIO_OUTPUT_DEVICES
1793 </p>
1794 </blockquote><p>
1795
1796 </p>
1797 <p>Possible Answers:
1798 </p>
1799 <p>
1800 </p>
1801 <blockquote class="text">
1802 <p>LinuxSampler will answer by sending the current number of all
1803 audio output devices.
1804 </p>
1805 </blockquote><p>
1806
1807 </p>
1808 <p>Example:
1809 </p>
1810 <p>
1811 </p>
1812 <blockquote class="text">
1813 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1814 </p>
1815 <p>S: "4"
1816 </p>
1817 </blockquote><p>
1818
1819 </p>
1820 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1821 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1822 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1823 Getting all created audio output device list</h3>
1824
1825 <p>Use the following command to list all created audio output devices:
1826 </p>
1827 <p>
1828 </p>
1829 <blockquote class="text">
1830 <p>LIST AUDIO_OUTPUT_DEVICES
1831 </p>
1832 </blockquote><p>
1833
1834 </p>
1835 <p>Possible Answers:
1836 </p>
1837 <p>
1838 </p>
1839 <blockquote class="text">
1840 <p>LinuxSampler will answer by sending a comma separated list with
1841 the numerical IDs of all audio output devices.
1842 </p>
1843 </blockquote><p>
1844
1845 </p>
1846 <p>Example:
1847 </p>
1848 <p>
1849 </p>
1850 <blockquote class="text">
1851 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1852 </p>
1853 <p>S: "0,1,4,5"
1854 </p>
1855 </blockquote><p>
1856
1857 </p>
1858 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1859 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1860 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1861 Getting current settings of an audio output device</h3>
1862
1863 <p>Use the following command to get current settings of a specific, created audio output device:
1864 </p>
1865 <p>
1866 </p>
1867 <blockquote class="text">
1868 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1869 </p>
1870 </blockquote><p>
1871
1872 </p>
1873 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1874 of the audio output device as e.g. returned by the
1875 <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.
1876 </p>
1877 <p>Possible Answers:
1878 </p>
1879 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1880 Each answer line begins with the information category name
1881 followed by a colon and then a space character &lt;SP&gt; and finally
1882 the info character string to that info category. As some
1883 parameters might allow multiple values, character strings are
1884 encapsulated into apostrophes ('). At the moment the following
1885 information categories are defined (independently of device):
1886 </p>
1887 <p>
1888 </p>
1889 <blockquote class="text">
1890 <p>DRIVER -
1891 </p>
1892 <blockquote class="text">
1893 <p>identifier of the used audio output driver, as also
1894 returned by the
1895 <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>
1896 command
1897 </p>
1898 </blockquote>
1899
1900
1901 <p>CHANNELS -
1902 </p>
1903 <blockquote class="text">
1904 <p>amount of audio output channels this device currently
1905 offers
1906 </p>
1907 </blockquote>
1908
1909
1910 <p>SAMPLERATE -
1911 </p>
1912 <blockquote class="text">
1913 <p>playback sample rate the device uses
1914 </p>
1915 </blockquote>
1916
1917
1918 <p>ACTIVE -
1919 </p>
1920 <blockquote class="text">
1921 <p>either true or false, if false then the audio device is
1922 inactive and doesn't output any sound, nor do the
1923 sampler channels connected to this audio device render
1924 any audio
1925 </p>
1926 </blockquote>
1927
1928
1929 </blockquote><p>
1930
1931 </p>
1932 <p>The mentioned fields above don't have to be in particular
1933 order. The fields above are only those fields which are
1934 returned by all audio output devices. Every audio output driver
1935 might have its own, additional driver specific parameters (see
1936 <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>)
1937 which are also returned by this command.
1938 </p>
1939 <p>Example:
1940 </p>
1941 <p>
1942 </p>
1943 <blockquote class="text">
1944 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1945 </p>
1946 <p>S: "DRIVER: ALSA"
1947 </p>
1948 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1949 </p>
1950 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1951 </p>
1952 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1953 </p>
1954 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1955 </p>
1956 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1957 </p>
1958 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1959 </p>
1960 <p>&nbsp;&nbsp;&nbsp;"."
1961 </p>
1962 </blockquote><p>
1963
1964 </p>
1965 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1966 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1967 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1968 Changing settings of audio output devices</h3>
1969
1970 <p>Use the following command to alter a specific setting of a created audio output device:
1971 </p>
1972 <p>
1973 </p>
1974 <blockquote class="text">
1975 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1976 </p>
1977 </blockquote><p>
1978
1979 </p>
1980 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1981 audio output device as given by the
1982 <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>
1983 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>
1984 command, &lt;key&gt; by the name of the parameter to change
1985 and &lt;value&gt; by the new value for this parameter.
1986 </p>
1987 <p>Possible Answers:
1988 </p>
1989 <p>
1990 </p>
1991 <blockquote class="text">
1992 <p>"OK" -
1993 </p>
1994 <blockquote class="text">
1995 <p>in case setting was successfully changed
1996 </p>
1997 </blockquote>
1998
1999
2000 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2001 </p>
2002 <blockquote class="text">
2003 <p>in case setting was changed successfully, but there are
2004 noteworthy issue(s) related, providing an appropriate
2005 warning code and warning message
2006 </p>
2007 </blockquote>
2008
2009
2010 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2011 </p>
2012 <blockquote class="text">
2013 <p>in case it failed, providing an appropriate error code and
2014 error message
2015 </p>
2016 </blockquote>
2017
2018
2019 </blockquote><p>
2020
2021 </p>
2022 <p>Example:
2023 </p>
2024 <p>
2025 </p>
2026 <blockquote class="text">
2027 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2028 </p>
2029 <p>S: "OK"
2030 </p>
2031 </blockquote><p>
2032
2033 </p>
2034 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2035 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2036 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2037 Getting information about an audio channel</h3>
2038
2039 <p>Use the following command to get information about an audio channel:
2040 </p>
2041 <p>
2042 </p>
2043 <blockquote class="text">
2044 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2045 </p>
2046 </blockquote><p>
2047
2048 </p>
2049 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2050 <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>
2051 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>
2052 command and &lt;audio-chan&gt; the audio channel number.
2053 </p>
2054 <p>Possible Answers:
2055 </p>
2056 <p>
2057 </p>
2058 <blockquote class="text">
2059 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2060 Each answer line begins with the information category name
2061 followed by a colon and then a space character &lt;SP&gt; and finally
2062 the info character string to that info category. At the moment
2063 the following information categories are defined:
2064 </p>
2065 <p>
2066 </p>
2067 <blockquote class="text">
2068 <p>NAME -
2069 </p>
2070 <blockquote class="text">
2071 <p>arbitrary character string naming the channel, which
2072 doesn't have to be unique (always returned by all audio channels)
2073 </p>
2074 </blockquote>
2075
2076
2077 <p>IS_MIX_CHANNEL -
2078 </p>
2079 <blockquote class="text">
2080 <p>either true or false, a mix-channel is not a real,
2081 independent audio channel, but a virtual channel which
2082 is mixed to another real channel, this mechanism is
2083 needed for sampler engines which need more audio
2084 channels than the used audio system might be able to offer
2085 (always returned by all audio channels)
2086 </p>
2087 </blockquote>
2088
2089
2090 <p>MIX_CHANNEL_DESTINATION -
2091 </p>
2092 <blockquote class="text">
2093 <p>numerical ID (positive integer including 0)
2094 which reflects the real audio channel (of the same audio
2095 output device) this mix channel refers to, means where
2096 the audio signal actually will be routed / added to
2097 (only returned in case the audio channel is mix channel)
2098 </p>
2099 </blockquote>
2100
2101
2102 </blockquote>
2103
2104
2105 </blockquote><p>
2106
2107 </p>
2108 <p>The mentioned fields above don't have to be in particular
2109 order. The fields above are only those fields which are
2110 generally returned for the described cases by all audio
2111 channels regardless of the audio driver. Every audio channel
2112 might have its own, additional driver and channel specific
2113 parameters.
2114 </p>
2115 <p>Examples:
2116 </p>
2117 <p>
2118 </p>
2119 <blockquote class="text">
2120 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2121 </p>
2122 <p>S: "NAME: studio monitor left"
2123 </p>
2124 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2125 </p>
2126 <p>&nbsp;&nbsp;&nbsp;"."
2127 </p>
2128 </blockquote><p>
2129
2130 </p>
2131 <p>
2132 </p>
2133 <blockquote class="text">
2134 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2135 </p>
2136 <p>S: "NAME: studio monitor right"
2137 </p>
2138 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2139 </p>
2140 <p>&nbsp;&nbsp;&nbsp;"."
2141 </p>
2142 </blockquote><p>
2143
2144 </p>
2145 <p>
2146 </p>
2147 <blockquote class="text">
2148 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2149 </p>
2150 <p>S: "NAME: studio monitor left"
2151 </p>
2152 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2153 </p>
2154 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2155 </p>
2156 <p>&nbsp;&nbsp;&nbsp;"."
2157 </p>
2158 </blockquote><p>
2159
2160 </p>
2161 <p>
2162 </p>
2163 <blockquote class="text">
2164 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2165 </p>
2166 <p>S: "NAME: 'ardour (left)'"
2167 </p>
2168 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2169 </p>
2170 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2171 </p>
2172 <p>&nbsp;&nbsp;&nbsp;"."
2173 </p>
2174 </blockquote><p>
2175
2176 </p>
2177 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2178 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2179 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2180 Getting information about specific audio channel parameter</h3>
2181
2182 <p>Use the following command to get detailed information about specific audio channel parameter:
2183 </p>
2184 <p>
2185 </p>
2186 <blockquote class="text">
2187 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2188 </p>
2189 </blockquote><p>
2190
2191 </p>
2192 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2193 <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>
2194 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>
2195 command, &lt;chan&gt; the audio channel number
2196 and &lt;param&gt; a specific channel parameter name for which information should
2197 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).
2198 </p>
2199 <p>Possible Answers:
2200 </p>
2201 <p>
2202 </p>
2203 <blockquote class="text">
2204 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2205 Each answer line begins with the information category name
2206 followed by a colon and then a space character &lt;SP&gt; and finally
2207 the info character string to that info category. There are
2208 information which is always returned, independently of the
2209 given channel parameter and there is optional information
2210 which is only shown dependently to the given audio channel. At
2211 the moment the following information categories are defined:
2212 </p>
2213 <p>
2214 </p>
2215 <blockquote class="text">
2216 <p>TYPE -
2217 </p>
2218 <blockquote class="text">
2219 <p>either "BOOL" for boolean value(s) or "INT" for integer
2220 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2221 character string(s)
2222 (always returned)
2223 </p>
2224 </blockquote>
2225
2226
2227 <p>DESCRIPTION -
2228 </p>
2229 <blockquote class="text">
2230 <p>arbitrary text describing the purpose of the parameter (always returned)
2231 </p>
2232 </blockquote>
2233
2234
2235 <p>FIX -
2236 </p>
2237 <blockquote class="text">
2238 <p>either true or false, if true then this parameter is
2239 read only, thus cannot be altered
2240 (always returned)
2241 </p>
2242 </blockquote>
2243
2244
2245 <p>MULTIPLICITY -
2246 </p>
2247 <blockquote class="text">
2248 <p>either true or false, defines if this parameter allows
2249 only one value or a list of values, where true means
2250 multiple values and false only a single value allowed
2251 (always returned)
2252 </p>
2253 </blockquote>
2254
2255
2256 <p>RANGE_MIN -
2257 </p>
2258 <blockquote class="text">
2259 <p>defines lower limit of the allowed value range for this
2260 parameter, can be an integer value as well as a dotted
2261 number, usually used in conjunction with 'RANGE_MAX',
2262 but may also appear without
2263 (optionally returned, dependent to driver and channel
2264 parameter)
2265 </p>
2266 </blockquote>
2267
2268
2269 <p>RANGE_MAX -
2270 </p>
2271 <blockquote class="text">
2272 <p>defines upper limit of the allowed value range for this
2273 parameter, can be an integer value as well as a dotted
2274 number, usually used in conjunction with 'RANGE_MIN',
2275 but may also appear without
2276 (optionally returned, dependent to driver and channel
2277 parameter)
2278 </p>
2279 </blockquote>
2280
2281
2282 <p>POSSIBILITIES -
2283 </p>
2284 <blockquote class="text">
2285 <p>comma separated list of possible values for this
2286 parameter, character strings are encapsulated into
2287 apostrophes
2288 (optionally returned, dependent to driver and channel
2289 parameter)
2290 </p>
2291 </blockquote>
2292
2293
2294 </blockquote>
2295
2296
2297 <p>The mentioned fields above don't have to be in particular order.
2298 </p>
2299 </blockquote><p>
2300
2301 </p>
2302 <p>Example:
2303 </p>
2304 <p>
2305 </p>
2306 <blockquote class="text">
2307 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2308 </p>
2309 <p>S: "DESCRIPTION: bindings to other JACK clients"
2310 </p>
2311 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2312 </p>
2313 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2314 </p>
2315 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2316 </p>
2317 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2318 </p>
2319 <p>&nbsp;&nbsp;&nbsp;"."
2320 </p>
2321 </blockquote><p>
2322
2323 </p>
2324 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2325 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2326 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2327 Changing settings of audio output channels</h3>
2328
2329 <p>Use the following command to alter a specific setting of an audio output channel:
2330 </p>
2331 <p>
2332 </p>
2333 <blockquote class="text">
2334 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2335 </p>
2336 </blockquote><p>
2337
2338 </p>
2339 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2340 <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>
2341 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>
2342 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2343 parameter to change and &lt;value&gt; by the new value for this parameter.
2344 </p>
2345 <p>Possible Answers:
2346 </p>
2347 <p>
2348 </p>
2349 <blockquote class="text">
2350 <p>"OK" -
2351 </p>
2352 <blockquote class="text">
2353 <p>in case setting was successfully changed
2354 </p>
2355 </blockquote>
2356
2357
2358 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2359 </p>
2360 <blockquote class="text">
2361 <p>in case setting was changed successfully, but there are
2362 noteworthy issue(s) related, providing an appropriate
2363 warning code and warning message
2364 </p>
2365 </blockquote>
2366
2367
2368 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2369 </p>
2370 <blockquote class="text">
2371 <p>in case it failed, providing an appropriate error code and
2372 error message
2373 </p>
2374 </blockquote>
2375
2376
2377 </blockquote><p>
2378
2379 </p>
2380 <p>Example:
2381 </p>
2382 <p>
2383 </p>
2384 <blockquote class="text">
2385 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2386 </p>
2387 <p>S: "OK"
2388 </p>
2389 </blockquote><p>
2390
2391 </p>
2392 <p>
2393 </p>
2394 <blockquote class="text">
2395 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2396 </p>
2397 <p>S: "OK"
2398 </p>
2399 </blockquote><p>
2400
2401 </p>
2402 <a name="anchor10"></a><br /><hr />
2403 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2404 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2405 Configuring MIDI input drivers</h3>
2406
2407 <p>Instances of drivers in LinuxSampler are called devices. You can use
2408 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2409 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2410 channel. For particular MIDI input systems it's also possible to create
2411 several devices of the same MIDI input type. This chapter describes all
2412 commands to configure LinuxSampler's MIDI input devices and their parameters.
2413 </p>
2414 <p>Instead of defining commands and parameters for each driver individually,
2415 all possible parameters, their meanings and possible values have to be obtained
2416 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2417 front-ends can be written independently of what drivers are currently implemented
2418 and what parameters these drivers are actually offering. This means front-ends can
2419 even handle drivers which are implemented somewhere in future without modifying
2420 the front-end at all.
2421 </p>
2422 <p>Commands for configuring MIDI input devices are pretty much the same as the
2423 commands for configuring audio output drivers, already described in the last
2424 chapter.
2425 </p>
2426 <p>Note: examples in this chapter showing particular parameters of drivers are
2427 not meant as specification of the drivers' parameters. Driver implementations in
2428 LinuxSampler might have complete different parameter names and meanings than shown
2429 in these examples or might change in future, so these examples are only meant for
2430 showing how to retrieve what parameters drivers are offering, how to retrieve their
2431 possible values, etc.
2432 </p>
2433 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2434 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2435 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2436 Getting amount of available MIDI input drivers</h3>
2437
2438 <p>Use the following command to get the number of
2439 MIDI input drivers currently available for the
2440 LinuxSampler instance:
2441 </p>
2442 <p>
2443 </p>
2444 <blockquote class="text">
2445 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2446 </p>
2447 </blockquote><p>
2448
2449 </p>
2450 <p>Possible Answers:
2451 </p>
2452 <p>
2453 </p>
2454 <blockquote class="text">
2455 <p>LinuxSampler will answer by sending the
2456 number of available MIDI input drivers.
2457 </p>
2458 </blockquote><p>
2459
2460 </p>
2461 <p>Example:
2462 </p>
2463 <p>
2464 </p>
2465 <blockquote class="text">
2466 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2467 </p>
2468 <p>S: "2"
2469 </p>
2470 </blockquote><p>
2471
2472 </p>
2473 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2474 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2475 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2476 Getting all available MIDI input drivers</h3>
2477
2478 <p>Use the following command to list all MIDI input drivers currently available
2479 for the LinuxSampler instance:
2480 </p>
2481 <p>
2482 </p>
2483 <blockquote class="text">
2484 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2485 </p>
2486 </blockquote><p>
2487
2488 </p>
2489 <p>Possible Answers:
2490 </p>
2491 <p>
2492 </p>
2493 <blockquote class="text">
2494 <p>LinuxSampler will answer by sending comma separated character
2495 strings, each symbolizing a MIDI input driver.
2496 </p>
2497 </blockquote><p>
2498
2499 </p>
2500 <p>Example:
2501 </p>
2502 <p>
2503 </p>
2504 <blockquote class="text">
2505 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2506 </p>
2507 <p>S: "ALSA,JACK"
2508 </p>
2509 </blockquote><p>
2510
2511 </p>
2512 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2513 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2514 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2515 Getting information about a specific MIDI input driver</h3>
2516
2517 <p>Use the following command to get detailed information about a specific MIDI input driver:
2518 </p>
2519 <p>
2520 </p>
2521 <blockquote class="text">
2522 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2523 </p>
2524 </blockquote><p>
2525
2526 </p>
2527 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2528 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.
2529 </p>
2530 <p>Possible Answers:
2531 </p>
2532 <p>
2533 </p>
2534 <blockquote class="text">
2535 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2536 Each answer line begins with the information category name
2537 followed by a colon and then a space character &lt;SP&gt; and finally
2538 the info character string to that info category. At the moment
2539 the following information categories are defined:
2540 </p>
2541 <p>
2542 </p>
2543 <blockquote class="text">
2544 <p>DESCRIPTION -
2545 </p>
2546 <blockquote class="text">
2547 <p>arbitrary description text about the MIDI input driver
2548 </p>
2549 </blockquote>
2550
2551
2552 <p>VERSION -
2553 </p>
2554 <blockquote class="text">
2555 <p>arbitrary character string regarding the driver's version
2556 </p>
2557 </blockquote>
2558
2559
2560 <p>PARAMETERS -
2561 </p>
2562 <blockquote class="text">
2563 <p>comma separated list of all parameters available for the given MIDI input driver
2564 </p>
2565 </blockquote>
2566
2567
2568 </blockquote>
2569
2570
2571 <p>The mentioned fields above don't have to be in particular order.
2572 </p>
2573 </blockquote><p>
2574
2575 </p>
2576 <p>Example:
2577 </p>
2578 <p>
2579 </p>
2580 <blockquote class="text">
2581 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2582 </p>
2583 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2584 </p>
2585 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2586 </p>
2587 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2588 </p>
2589 <p>&nbsp;&nbsp;&nbsp;"."
2590 </p>
2591 </blockquote><p>
2592
2593 </p>
2594 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2595 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2596 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2597 Getting information about specific MIDI input driver parameter</h3>
2598
2599 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2600 </p>
2601 <p>
2602 </p>
2603 <blockquote class="text">
2604 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2605 </p>
2606 </blockquote><p>
2607
2608 </p>
2609 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2610 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
2611 parameter name for which information should be obtained (as returned by the
2612 <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
2613 of parameters on which the sought parameter &lt;param&gt; depends on,
2614 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2615 where character string values are encapsulated into apostrophes ('). Arguments
2616 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2617 will be ignored, means the front-end application can simply put all parameters
2618 in &lt;deplist&gt; with the values selected by the user.
2619 </p>
2620 <p>Possible Answers:
2621 </p>
2622 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2623 Each answer line begins with the information category name
2624 followed by a colon and then a space character &lt;SP> and finally
2625 the info character string to that info category. There is
2626 information which is always returned, independent of the
2627 given driver parameter and there is optional information
2628 which is only shown dependent to given driver parameter. At
2629 the moment the following information categories are defined:
2630 </p>
2631 <p>
2632 </p>
2633 <blockquote class="text">
2634 <p>TYPE -
2635 </p>
2636 <blockquote class="text">
2637 <p>either "BOOL" for boolean value(s) or "INT" for integer
2638 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2639 character string(s)
2640 (always returned, no matter which driver parameter)
2641 </p>
2642 </blockquote>
2643
2644
2645 <p>DESCRIPTION -
2646 </p>
2647 <blockquote class="text">
2648 <p>arbitrary text describing the purpose of the parameter
2649 (always returned, no matter which driver parameter)
2650 </p>
2651 </blockquote>
2652
2653
2654 <p>MANDATORY -
2655 </p>
2656 <blockquote class="text">
2657 <p>either true or false, defines if this parameter must be
2658 given when the device is to be created with the
2659 <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
2660 (always returned, no matter which driver parameter)
2661 </p>
2662 </blockquote>
2663
2664
2665 <p>FIX -
2666 </p>
2667 <blockquote class="text">
2668 <p>either true or false, if false then this parameter can
2669 be changed at any time, once the device is created by
2670 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
2671 (always returned, no matter which driver parameter)
2672 </p>
2673 </blockquote>
2674
2675
2676 <p>MULTIPLICITY -
2677 </p>
2678 <blockquote class="text">
2679 <p>either true or false, defines if this parameter allows
2680 only one value or a list of values, where true means
2681 multiple values and false only a single value allowed
2682 (always returned, no matter which driver parameter)
2683 </p>
2684 </blockquote>
2685
2686
2687 <p>DEPENDS -
2688 </p>
2689 <blockquote class="text">
2690 <p>comma separated list of parameters this parameter depends
2691 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2692 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2693 listed parameters, for example assuming that an audio
2694 driver (like the ALSA driver) offers parameters 'card'
2695 and 'samplerate' then parameter 'samplerate' would
2696 depend on 'card' because the possible values for
2697 'samplerate' depends on the sound card which can be
2698 chosen by the 'card' parameter
2699 (optionally returned, dependent to driver parameter)
2700 </p>
2701 </blockquote>
2702
2703
2704 <p>DEFAULT -
2705 </p>
2706 <blockquote class="text">
2707 <p>reflects the default value for this parameter which is
2708 used when the device is created and not explicitly
2709 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,
2710 in case of MULTIPLCITY=true, this is a comma separated
2711 list, that's why character strings are encapsulated into
2712 apostrophes (')
2713 (optionally returned, dependent to driver parameter)
2714 </p>
2715 </blockquote>
2716
2717
2718 <p>RANGE_MIN -
2719 </p>
2720 <blockquote class="text">
2721 <p>defines lower limit of the allowed value range for this
2722 parameter, can be an integer value as well as a dotted
2723 number, this parameter is often used in conjunction
2724 with RANGE_MAX, but may also appear without
2725 (optionally returned, dependent to driver parameter)
2726 </p>
2727 </blockquote>
2728
2729
2730 <p>RANGE_MAX -
2731 </p>
2732 <blockquote class="text">
2733 <p>defines upper limit of the allowed value range for this
2734 parameter, can be an integer value as well as a dotted
2735 number, this parameter is often used in conjunction with
2736 RANGE_MIN, but may also appear without
2737 (optionally returned, dependent to driver parameter)
2738 </p>
2739 </blockquote>
2740
2741
2742 <p>POSSIBILITIES -
2743 </p>
2744 <blockquote class="text">
2745 <p>comma separated list of possible values for this
2746 parameter, character strings are encapsulated into
2747 apostrophes
2748 (optionally returned, dependent to driver parameter)
2749 </p>
2750 </blockquote>
2751
2752
2753 </blockquote><p>
2754
2755 </p>
2756 <p>The mentioned fields above don't have to be in particular order.
2757 </p>
2758 <p>Example:
2759 </p>
2760 <p>
2761 </p>
2762 <blockquote class="text">
2763 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2764 </p>
2765 <p>S: "DESCRIPTION: Whether device is enabled"
2766 </p>
2767 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2768 </p>
2769 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2770 </p>
2771 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2772 </p>
2773 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2774 </p>
2775 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2776 </p>
2777 <p>&nbsp;&nbsp;&nbsp;"."
2778 </p>
2779 </blockquote><p>
2780
2781 </p>
2782 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2784 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2785 Creating a MIDI input device</h3>
2786
2787 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2788 </p>
2789 <p>
2790 </p>
2791 <blockquote class="text">
2792 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2793 </p>
2794 </blockquote><p>
2795
2796 </p>
2797 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2798 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
2799 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2800 character string values should be encapsulated into apostrophes (').
2801 Note that there might be drivers which require parameter(s) to be
2802 given with this command. Use the previously described commands in
2803 this chapter to get that information.
2804 </p>
2805 <p>Possible Answers:
2806 </p>
2807 <p>
2808 </p>
2809 <blockquote class="text">
2810 <p>"OK[&lt;device-id&gt;]" -
2811 </p>
2812 <blockquote class="text">
2813 <p>in case the device was successfully created, where
2814 &lt;device-id&gt; is the numerical ID of the new device
2815 </p>
2816 </blockquote>
2817
2818
2819 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2820 </p>
2821 <blockquote class="text">
2822 <p>in case the driver was loaded successfully, where
2823 &lt;device-id&gt; is the numerical ID of the new device, but
2824 there are noteworthy issue(s) related, providing an
2825 appropriate warning code and warning message
2826 </p>
2827 </blockquote>
2828
2829
2830 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831 </p>
2832 <blockquote class="text">
2833 <p>in case it failed, providing an appropriate error code and error message
2834 </p>
2835 </blockquote>
2836
2837
2838 </blockquote><p>
2839
2840 </p>
2841 <p>Example:
2842 </p>
2843 <p>
2844 </p>
2845 <blockquote class="text">
2846 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2847 </p>
2848 <p>S: "OK[0]"
2849 </p>
2850 </blockquote><p>
2851
2852 </p>
2853 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2854 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2855 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2856 Destroying a MIDI input device</h3>
2857
2858 <p>Use the following command to destroy a created MIDI input device:
2859 </p>
2860 <p>
2861 </p>
2862 <blockquote class="text">
2863 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2864 </p>
2865 </blockquote><p>
2866
2867 </p>
2868 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2869 <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>
2870 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>
2871 command.
2872 </p>
2873 <p>Possible Answers:
2874 </p>
2875 <p>
2876 </p>
2877 <blockquote class="text">
2878 <p>"OK" -
2879 </p>
2880 <blockquote class="text">
2881 <p>in case the device was successfully destroyed
2882 </p>
2883 </blockquote>
2884
2885
2886 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2887 </p>
2888 <blockquote class="text">
2889 <p>in case the device was destroyed, but there are noteworthy
2890 issue(s) related, providing an appropriate warning code and
2891 warning message
2892 </p>
2893 </blockquote>
2894
2895
2896 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2897 </p>
2898 <blockquote class="text">
2899 <p>in case it failed, providing an appropriate error code and error message
2900 </p>
2901 </blockquote>
2902
2903
2904 </blockquote><p>
2905
2906 </p>
2907 <p>Example:
2908 </p>
2909 <p>
2910 </p>
2911 <blockquote class="text">
2912 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2913 </p>
2914 <p>S: "OK"
2915 </p>
2916 </blockquote><p>
2917
2918 </p>
2919 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2920 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2921 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2922 Getting all created MIDI input device count</h3>
2923
2924 <p>Use the following command to count all created MIDI input devices:
2925 </p>
2926 <p>
2927 </p>
2928 <blockquote class="text">
2929 <p>GET MIDI_INPUT_DEVICES
2930 </p>
2931 </blockquote><p>
2932
2933 </p>
2934 <p>Possible Answers:
2935 </p>
2936 <p>
2937 </p>
2938 <blockquote class="text">
2939 <p>LinuxSampler will answer by sending the current number of all
2940 MIDI input devices.
2941 </p>
2942 </blockquote><p>
2943
2944 </p>
2945 <p>Example:
2946 </p>
2947 <p>
2948 </p>
2949 <blockquote class="text">
2950 <p>C: "GET MIDI_INPUT_DEVICES"
2951 </p>
2952 <p>S: "3"
2953 </p>
2954 </blockquote><p>
2955
2956 </p>
2957 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2958 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2959 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2960 Getting all created MIDI input device list</h3>
2961
2962 <p>Use the following command to list all created MIDI input devices:
2963 </p>
2964 <p>
2965 </p>
2966 <blockquote class="text">
2967 <p>LIST MIDI_INPUT_DEVICES
2968 </p>
2969 </blockquote><p>
2970
2971 </p>
2972 <p>Possible Answers:
2973 </p>
2974 <p>
2975 </p>
2976 <blockquote class="text">
2977 <p>LinuxSampler will answer by sending a comma separated list
2978 with the numerical Ids of all created MIDI input devices.
2979 </p>
2980 </blockquote><p>
2981
2982 </p>
2983 <p>Examples:
2984 </p>
2985 <p>
2986 </p>
2987 <blockquote class="text">
2988 <p>C: "LIST MIDI_INPUT_DEVICES"
2989 </p>
2990 <p>S: "0,1,2"
2991 </p>
2992 </blockquote><p>
2993
2994 </p>
2995 <p>
2996 </p>
2997 <blockquote class="text">
2998 <p>C: "LIST MIDI_INPUT_DEVICES"
2999 </p>
3000 <p>S: "1,3"
3001 </p>
3002 </blockquote><p>
3003
3004 </p>
3005 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
3006 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3007 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
3008 Getting current settings of a MIDI input device</h3>
3009
3010 <p>Use the following command to get current settings of a specific, created MIDI input device:
3011 </p>
3012 <p>
3013 </p>
3014 <blockquote class="text">
3015 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3016 </p>
3017 </blockquote><p>
3018
3019 </p>
3020 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3021 <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>
3022 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>
3023 command.
3024 </p>
3025 <p>Possible Answers:
3026 </p>
3027 <p>
3028 </p>
3029 <blockquote class="text">
3030 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3031 Each answer line begins with the information category name
3032 followed by a colon and then a space character &lt;SP&gt; and finally
3033 the info character string to that info category. As some
3034 parameters might allow multiple values, character strings are
3035 encapsulated into apostrophes ('). At the moment the following
3036 information categories are defined (independent of driver):
3037 </p>
3038 <p>
3039 </p>
3040 <blockquote class="text">
3041 <p>DRIVER -
3042 </p>
3043 <blockquote class="text">
3044 <p>identifier of the used MIDI input driver, as e.g.
3045 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>
3046 command
3047 </p>
3048 </blockquote>
3049
3050
3051 </blockquote>
3052
3053 <blockquote class="text">
3054 <p>ACTIVE -
3055 </p>
3056 <blockquote class="text">
3057 <p>either true or false, if false then the MIDI device is
3058 inactive and doesn't listen to any incoming MIDI events
3059 and thus doesn't forward them to connected sampler
3060 channels
3061 </p>
3062 </blockquote>
3063
3064
3065 </blockquote>
3066
3067
3068 </blockquote><p>
3069
3070 </p>
3071 <p>The mentioned fields above don't have to be in particular
3072 order. The fields above are only those fields which are
3073 returned by all MIDI input devices. Every MIDI input driver
3074 might have its own, additional driver specific parameters (see
3075 <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
3076 by this command.
3077 </p>
3078 <p>Example:
3079 </p>
3080 <p>
3081 </p>
3082 <blockquote class="text">
3083 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3084 </p>
3085 <p>S: "DRIVER: ALSA"
3086 </p>
3087 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3088 </p>
3089 <p>&nbsp;&nbsp;&nbsp;"."
3090 </p>
3091 </blockquote><p>
3092
3093 </p>
3094 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3095 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3096 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3097 Changing settings of MIDI input devices</h3>
3098
3099 <p>Use the following command to alter a specific setting of a created MIDI input device:
3100 </p>
3101 <p>
3102 </p>
3103 <blockquote class="text">
3104 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3105 </p>
3106 </blockquote><p>
3107
3108 </p>
3109 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3110 MIDI input device as returned by the
3111 <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>
3112 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>
3113 command, &lt;key&gt; by the name of the parameter to change and
3114 &lt;value&gt; by the new value for this parameter.
3115 </p>
3116 <p>Possible Answers:
3117 </p>
3118 <p>
3119 </p>
3120 <blockquote class="text">
3121 <p>"OK" -
3122 </p>
3123 <blockquote class="text">
3124 <p>in case setting was successfully changed
3125 </p>
3126 </blockquote>
3127
3128
3129 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3130 </p>
3131 <blockquote class="text">
3132 <p>in case setting was changed successfully, but there are
3133 noteworthy issue(s) related, providing an appropriate
3134 warning code and warning message
3135 </p>
3136 </blockquote>
3137
3138
3139 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3140 </p>
3141 <blockquote class="text">
3142 <p>in case it failed, providing an appropriate error code and error message
3143 </p>
3144 </blockquote>
3145
3146
3147 </blockquote><p>
3148
3149 </p>
3150 <p>Example:
3151 </p>
3152 <p>
3153 </p>
3154 <blockquote class="text">
3155 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3156 </p>
3157 <p>S: "OK"
3158 </p>
3159 </blockquote><p>
3160
3161 </p>
3162 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3163 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3164 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3165 Getting information about a MIDI port</h3>
3166
3167 <p>Use the following command to get information about a MIDI port:
3168 </p>
3169 <p>
3170 </p>
3171 <blockquote class="text">
3172 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3173 </p>
3174 </blockquote><p>
3175
3176 </p>
3177 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3178 <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>
3179 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>
3180 command and &lt;midi-port&gt; the MIDI input port number.
3181 </p>
3182 <p>Possible Answers:
3183 </p>
3184 <p>
3185 </p>
3186 <blockquote class="text">
3187 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3188 Each answer line begins with the information category name
3189 followed by a colon and then a space character &lt;SP&gt; and finally
3190 the info character string to that info category. At the moment
3191 the following information categories are defined:
3192 </p>
3193 <p>NAME -
3194 </p>
3195 <blockquote class="text">
3196 <p>arbitrary character string naming the port
3197 </p>
3198 </blockquote>
3199
3200
3201 </blockquote><p>
3202
3203 </p>
3204 <p>The field above is only the one which is returned by all MIDI
3205 ports regardless of the MIDI driver and port. Every MIDI port
3206 might have its own, additional driver and port specific
3207 parameters.
3208 </p>
3209 <p>Example:
3210 </p>
3211 <p>
3212 </p>
3213 <blockquote class="text">
3214 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3215 </p>
3216 <p>S: "NAME: 'Masterkeyboard'"
3217 </p>
3218 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3219 </p>
3220 <p>&nbsp;&nbsp;&nbsp;"."
3221 </p>
3222 </blockquote><p>
3223
3224 </p>
3225 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3226 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3227 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3228 Getting information about specific MIDI port parameter</h3>
3229
3230 <p>Use the following command to get detailed information about specific MIDI port parameter:
3231 </p>
3232 <p>
3233 </p>
3234 <blockquote class="text">
3235 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3236 </p>
3237 </blockquote><p>
3238
3239 </p>
3240 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3241 <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>
3242 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>
3243 command, &lt;port&gt; the MIDI port number and
3244 &lt;param&gt; a specific port parameter name for which information should be
3245 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).
3246 </p>
3247 <p>Possible Answers:
3248 </p>
3249 <p>
3250 </p>
3251 <blockquote class="text">
3252 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3253 Each answer line begins with the information category name
3254 followed by a colon and then a space character &lt;SP&gt; and finally
3255 the info character string to that info category. There is
3256 information which is always returned, independently of the
3257 given channel parameter and there is optional information
3258 which are only shown dependently to the given MIDI port. At the
3259 moment the following information categories are defined:
3260 </p>
3261 <p>TYPE -
3262 </p>
3263 <blockquote class="text">
3264 <p>either "BOOL" for boolean value(s) or "INT" for integer
3265 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3266 character string(s)
3267 (always returned)
3268 </p>
3269 </blockquote>
3270
3271
3272 <p>DESCRIPTION -
3273 </p>
3274 <blockquote class="text">
3275 <p>arbitrary text describing the purpose of the parameter
3276 (always returned)
3277 </p>
3278 </blockquote>
3279
3280
3281 <p>FIX -
3282 </p>
3283 <blockquote class="text">
3284 <p>either true or false, if true then this parameter is
3285 read only, thus cannot be altered
3286 (always returned)
3287 </p>
3288 </blockquote>
3289
3290
3291 <p>MULTIPLICITY -
3292 </p>
3293 <blockquote class="text">
3294 <p>either true or false, defines if this parameter allows
3295 only one value or a list of values, where true means
3296 multiple values and false only a single value allowed
3297 (always returned)
3298 </p>
3299 </blockquote>
3300
3301
3302 <p>RANGE_MIN -
3303 </p>
3304 <blockquote class="text">
3305 <p>defines lower limit of the allowed value range for this
3306 parameter, can be an integer value as well as a dotted
3307 number, this parameter is usually used in conjunction
3308 with 'RANGE_MAX' but may also appear without
3309 (optionally returned, dependent to driver and port
3310 parameter)
3311 </p>
3312 </blockquote>
3313
3314
3315 <p>RANGE_MAX -
3316 </p>
3317 <blockquote class="text">
3318 <p>defines upper limit of the allowed value range for this
3319 parameter, can be an integer value as well as a dotted
3320 number, this parameter is usually used in conjunction
3321 with 'RANGE_MIN' but may also appear without
3322 (optionally returned, dependent to driver and port
3323 parameter)
3324 </p>
3325 </blockquote>
3326
3327
3328 <p>POSSIBILITIES -
3329 </p>
3330 <blockquote class="text">
3331 <p>comma separated list of possible values for this
3332 parameter, character strings are encapsulated into
3333 apostrophes
3334 (optionally returned, dependent to device and port
3335 parameter)
3336 </p>
3337 </blockquote>
3338
3339
3340 </blockquote><p>
3341
3342 </p>
3343 <p>The mentioned fields above don't have to be in particular order.
3344 </p>
3345 <p>Example:
3346 </p>
3347 <p>
3348 </p>
3349 <blockquote class="text">
3350 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3351 </p>
3352 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3353 </p>
3354 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3355 </p>
3356 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3357 </p>
3358 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3359 </p>
3360 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3361 </p>
3362 <p>&nbsp;&nbsp;&nbsp;"."
3363 </p>
3364 </blockquote><p>
3365
3366 </p>
3367 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3368 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3369 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3370 Changing settings of MIDI input ports</h3>
3371
3372 <p>Use the following command to alter a specific setting of a MIDI input port:
3373 </p>
3374 <p>
3375 </p>
3376 <blockquote class="text">
3377 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3378 </p>
3379 </blockquote><p>
3380
3381 </p>
3382 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3383 MIDI device as returned by the
3384 <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>
3385 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>
3386 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3387 the parameter to change and &lt;value&gt; by the new value for this
3388 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3389 for specifying no value for parameters allowing a list of values.
3390 </p>
3391 <p>Possible Answers:
3392 </p>
3393 <p>
3394 </p>
3395 <blockquote class="text">
3396 <p>"OK" -
3397 </p>
3398 <blockquote class="text">
3399 <p>in case setting was successfully changed
3400 </p>
3401 </blockquote>
3402
3403
3404 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3405 </p>
3406 <blockquote class="text">
3407 <p>in case setting was changed successfully, but there are
3408 noteworthy issue(s) related, providing an appropriate
3409 warning code and warning message
3410 </p>
3411 </blockquote>
3412
3413
3414 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3415 </p>
3416 <blockquote class="text">
3417 <p>in case it failed, providing an appropriate error code and error message
3418 </p>
3419 </blockquote>
3420
3421
3422 </blockquote><p>
3423
3424 </p>
3425 <p>Example:
3426 </p>
3427 <p>
3428 </p>
3429 <blockquote class="text">
3430 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3431 </p>
3432 <p>S: "OK"
3433 </p>
3434 </blockquote><p>
3435
3436 </p>
3437 <p>
3438 </p>
3439 <blockquote class="text">
3440 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3441 </p>
3442 <p>S: "OK"
3443 </p>
3444 </blockquote><p>
3445
3446 </p>
3447 <a name="anchor11"></a><br /><hr />
3448 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3449 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3450 Configuring sampler channels</h3>
3451
3452 <p>The following commands describe how to add and remove sampler channels, associate a
3453 sampler channel with a sampler engine, load instruments and connect sampler channels to
3454 MIDI and audio devices.
3455 </p>
3456 <a name="LOAD INSTRUMENT"></a><br /><hr />
3457 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3458 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3459 Loading an instrument</h3>
3460
3461 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3462 </p>
3463 <p>
3464 </p>
3465 <blockquote class="text">
3466 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3467 </p>
3468 </blockquote><p>
3469
3470 </p>
3471 <p>Where &lt;filename&gt; is the name of the instrument file on the
3472 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3473 instrument in the instrument file and &lt;sampler-channel> is the
3474 number of the sampler channel the instrument should be assigned to.
3475 Each sampler channel can only have one instrument.
3476 </p>
3477 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3478 escape characters for special characters (see chapter
3479 "<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>"
3480 for details) and accordingly backslash characters in the filename
3481 MUST now be escaped as well!
3482 </p>
3483 <p>The difference between regular and NON_MODAL versions of the command
3484 is that the regular command returns OK only after the instrument has been
3485 fully loaded and the channel is ready to be used while NON_MODAL version
3486 returns immediately and a background process is launched to load the instrument
3487 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>
3488 command can be used to obtain loading
3489 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3490 such as making sure that the file could be read and it is of a proper format
3491 and SHOULD return ERR and SHOULD not launch the background process should any
3492 errors be detected at that point.
3493 </p>
3494 <p>Possible Answers:
3495 </p>
3496 <p>
3497 </p>
3498 <blockquote class="text">
3499 <p>"OK" -
3500 </p>
3501 <blockquote class="text">
3502 <p>in case the instrument was successfully loaded
3503 </p>
3504 </blockquote>
3505
3506
3507 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3508 </p>
3509 <blockquote class="text">
3510 <p>in case the instrument was loaded successfully, but there
3511 are noteworthy issue(s) related (e.g. Engine doesn't support
3512 one or more patch parameters provided by the loaded
3513 instrument file), providing an appropriate warning code and
3514 warning message
3515 </p>
3516 </blockquote>
3517
3518
3519 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3520 </p>
3521 <blockquote class="text">
3522 <p>in case it failed, providing an appropriate error code and error message
3523 </p>
3524 </blockquote>
3525
3526
3527 </blockquote><p>
3528
3529 </p>
3530 <p>Example (Unix):
3531 </p>
3532 <p>
3533 </p>
3534 <blockquote class="text">
3535 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3536 </p>
3537 <p>S: OK
3538 </p>
3539 </blockquote><p>
3540
3541 </p>
3542 <p>Example (Windows):
3543 </p>
3544 <p>
3545 </p>
3546 <blockquote class="text">
3547 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3548 </p>
3549 <p>S: OK
3550 </p>
3551 </blockquote><p>
3552
3553 </p>
3554 <a name="LOAD ENGINE"></a><br /><hr />
3555 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3556 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3557 Loading a sampler engine</h3>
3558
3559 <p>A sampler engine type can be associated to a specific sampler
3560 channel by the following command:
3561 </p>
3562 <p>
3563 </p>
3564 <blockquote class="text">
3565 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3566 </p>
3567 </blockquote><p>
3568
3569 </p>
3570 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3571 <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;
3572 the sampler channel as returned by the
3573 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3574 <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
3575 the engine type should be assigned to. This command should be issued
3576 after adding a new sampler channel and before any other control
3577 commands on the new sampler channel. It can also be used to change
3578 the engine type of a sampler channel. This command has (currently) no
3579 way to define or force if a new engine instance should be created and
3580 assigned to the given sampler channel or if an already existing
3581 instance of that engine type, shared with other sampler channels,
3582 should be used.
3583 </p>
3584 <p>Possible Answers:
3585 </p>
3586 <p>
3587 </p>
3588 <blockquote class="text">
3589 <p>"OK" -
3590 </p>
3591 <blockquote class="text">
3592 <p>in case the engine was successfully deployed
3593 </p>
3594 </blockquote>
3595
3596
3597 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3598 </p>
3599 <blockquote class="text">
3600 <p>in case the engine was deployed successfully, but there
3601 are noteworthy issue(s) related, providing an appropriate
3602 warning code and warning message
3603 </p>
3604 </blockquote>
3605
3606
3607 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3608 </p>
3609 <blockquote class="text">
3610 <p>in case it failed, providing an appropriate error code and
3611 error message
3612 </p>
3613 </blockquote>
3614
3615
3616 </blockquote><p>
3617
3618 </p>
3619 <p>Example:
3620 </p>
3621 <p>
3622 </p>
3623 <blockquote class="text">
3624 <p>
3625 </p>
3626 </blockquote><p>
3627
3628 </p>
3629 <a name="GET CHANNELS"></a><br /><hr />
3630 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3631 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3632 Getting all created sampler channel count</h3>
3633
3634 <p>The number of sampler channels can change on runtime. To get the
3635 current amount of sampler channels, the front-end can send the
3636 following command:
3637 </p>
3638 <p>
3639 </p>
3640 <blockquote class="text">
3641 <p>GET CHANNELS
3642 </p>
3643 </blockquote><p>
3644
3645 </p>
3646 <p>Possible Answers:
3647 </p>
3648 <p>
3649 </p>
3650 <blockquote class="text">
3651 <p>LinuxSampler will answer by returning the current number of sampler channels.
3652 </p>
3653 </blockquote><p>
3654
3655 </p>
3656 <p>Example:
3657 </p>
3658 <p>
3659 </p>
3660 <blockquote class="text">
3661 <p>C: "GET CHANNELS"
3662 </p>
3663 <p>S: "12"
3664 </p>
3665 </blockquote><p>
3666
3667 </p>
3668 <a name="LIST CHANNELS"></a><br /><hr />
3669 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3670 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3671 Getting all created sampler channel list</h3>
3672
3673 <p>The number of sampler channels can change on runtime. To get the
3674 current list of sampler channels, the front-end can send the
3675 following command:
3676 </p>
3677 <p>
3678 </p>
3679 <blockquote class="text">
3680 <p>LIST CHANNELS
3681 </p>
3682 </blockquote><p>
3683
3684 </p>
3685 <p>Possible Answers:
3686 </p>
3687 <p>
3688 </p>
3689 <blockquote class="text">
3690 <p>LinuxSampler will answer by returning a comma separated list
3691 with all sampler channels numerical IDs.
3692 </p>
3693 </blockquote><p>
3694
3695 </p>
3696 <p>Example:
3697 </p>
3698 <p>
3699 </p>
3700 <blockquote class="text">
3701 <p>C: "LIST CHANNELS"
3702 </p>
3703 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3704 </p>
3705 </blockquote><p>
3706
3707 </p>
3708 <a name="ADD CHANNEL"></a><br /><hr />
3709 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3710 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3711 Adding a new sampler channel</h3>
3712
3713 <p>A new sampler channel can be added to the end of the sampler
3714 channel list by sending the following command:
3715 </p>
3716 <p>
3717 </p>
3718 <blockquote class="text">
3719 <p>ADD CHANNEL
3720 </p>
3721 </blockquote><p>
3722
3723 </p>
3724 <p>This will increment the sampler channel count by one and the new
3725 sampler channel will be appended to the end of the sampler channel
3726 list. The front-end should send the respective, related commands
3727 right after to e.g. load an engine, load an instrument and setting
3728 input, output method and eventually other commands to initialize
3729 the new channel. The front-end should use the sampler channel
3730 returned by the answer of this command to perform the previously
3731 recommended commands, to avoid race conditions e.g. with other
3732 front-ends that might also have sent an "ADD CHANNEL" command.
3733 </p>
3734 <p>Possible Answers:
3735 </p>
3736 <p>
3737 </p>
3738 <blockquote class="text">
3739 <p>"OK[&lt;sampler-channel&gt;]" -
3740 </p>
3741 <blockquote class="text">
3742 <p>in case a new sampler channel could be added, where
3743 &lt;sampler-channel&gt; reflects the channel number of the new
3744 created sampler channel which should be used to set up
3745 the sampler channel by sending subsequent initialization
3746 commands
3747 </p>
3748 </blockquote>
3749
3750
3751 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3752 </p>
3753 <blockquote class="text">
3754 <p>in case a new channel was added successfully, but there are
3755 noteworthy issue(s) related, providing an appropriate
3756 warning code and warning message
3757 </p>
3758 </blockquote>
3759
3760
3761 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3762 </p>
3763 <blockquote class="text">
3764 <p>in case it failed, providing an appropriate error code and
3765 error message
3766 </p>
3767 </blockquote>
3768
3769
3770 </blockquote><p>
3771
3772 </p>
3773 <p>Example:
3774 </p>
3775 <p>
3776 </p>
3777 <blockquote class="text">
3778 <p>
3779 </p>
3780 </blockquote><p>
3781
3782 </p>
3783 <a name="REMOVE CHANNEL"></a><br /><hr />
3784 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3785 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3786 Removing a sampler channel</h3>
3787
3788 <p>A sampler channel can be removed by sending the following command:
3789 </p>
3790 <p>
3791 </p>
3792 <blockquote class="text">
3793 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3794 </p>
3795 </blockquote><p>
3796
3797 </p>
3798 <p>Where &lt;sampler-channel&gt; should be replaced by the
3799 number of the sampler channel as given by the
3800 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3801 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3802 command. The channel numbers of all subsequent sampler channels
3803 remain the same.
3804 </p>
3805 <p>Possible Answers:
3806 </p>
3807 <p>
3808 </p>
3809 <blockquote class="text">
3810 <p>"OK" -
3811 </p>
3812 <blockquote class="text">
3813 <p>in case the given sampler channel could be removed
3814 </p>
3815 </blockquote>
3816
3817
3818 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3819 </p>
3820 <blockquote class="text">
3821 <p>in case the given channel was removed, but there are
3822 noteworthy issue(s) related, providing an appropriate
3823 warning code and warning message
3824 </p>
3825 </blockquote>
3826
3827
3828 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3829 </p>
3830 <blockquote class="text">
3831 <p>in case it failed, providing an appropriate error code and
3832 error message
3833 </p>
3834 </blockquote>
3835
3836
3837 </blockquote><p>
3838
3839 </p>
3840 <p>Example:
3841 </p>
3842 <p>
3843 </p>
3844 <blockquote class="text">
3845 <p>
3846 </p>
3847 </blockquote><p>
3848
3849 </p>
3850 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3851 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3852 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3853 Getting amount of available engines</h3>
3854
3855 <p>The front-end can ask for the number of available engines by sending the following command:
3856 </p>
3857 <p>
3858 </p>
3859 <blockquote class="text">
3860 <p>GET AVAILABLE_ENGINES
3861 </p>
3862 </blockquote><p>
3863
3864 </p>
3865 <p>Possible Answers:
3866 </p>
3867 <p>
3868 </p>
3869 <blockquote class="text">
3870 <p>LinuxSampler will answer by sending the number of available engines.
3871 </p>
3872 </blockquote><p>
3873
3874 </p>
3875 <p>Example:
3876 </p>
3877 <p>
3878 </p>
3879 <blockquote class="text">
3880 <p>C: "GET AVAILABLE_ENGINES"
3881 </p>
3882 <p>S: "4"
3883 </p>
3884 </blockquote><p>
3885
3886 </p>
3887 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3888 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3889 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3890 Getting all available engines</h3>
3891
3892 <p>The front-end can ask for a list of all available engines by sending the following command:
3893 </p>
3894 <p>
3895 </p>
3896 <blockquote class="text">
3897 <p>LIST AVAILABLE_ENGINES
3898 </p>
3899 </blockquote><p>
3900
3901 </p>
3902 <p>Possible Answers:
3903 </p>
3904 <p>
3905 </p>
3906 <blockquote class="text">
3907 <p>LinuxSampler will answer by sending a comma separated list
3908 of the engines' names encapsulated into apostrophes (').
3909 Engine names can consist of lower and upper cases,
3910 digits and underlines ("_" character).
3911 </p>
3912 </blockquote><p>
3913
3914 </p>
3915 <p>Example:
3916 </p>
3917 <p>
3918 </p>
3919 <blockquote class="text">
3920 <p>C: "LIST AVAILABLE_ENGINES"
3921 </p>
3922 <p>S: "'gig','sfz','sf2'"
3923 </p>
3924 </blockquote><p>
3925
3926 </p>
3927 <a name="GET ENGINE INFO"></a><br /><hr />
3928 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3929 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3930 Getting information about an engine</h3>
3931
3932 <p>The front-end can ask for information about a specific engine by
3933 sending the following command:
3934 </p>
3935 <p>
3936 </p>
3937 <blockquote class="text">
3938 <p>GET ENGINE INFO &lt;engine-name&gt;
3939 </p>
3940 </blockquote><p>
3941
3942 </p>
3943 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3944 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3945 </p>
3946 <p>Possible Answers:
3947 </p>
3948 <p>
3949 </p>
3950 <blockquote class="text">
3951 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3952 Each answer line begins with the information category name
3953 followed by a colon and then a space character &lt;SP&gt; and finally
3954 the info character string to that info category. At the moment
3955 the following categories are defined:
3956 </p>
3957 <p>
3958 </p>
3959 <blockquote class="text">
3960 <p>DESCRIPTION -
3961 </p>
3962 <blockquote class="text">
3963 <p>arbitrary description text about the engine
3964 (note that the character string may contain
3965 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3966 </p>
3967 </blockquote>
3968
3969
3970 <p>VERSION -
3971 </p>
3972 <blockquote class="text">
3973 <p>arbitrary character string regarding the engine's version
3974 </p>
3975 </blockquote>
3976
3977
3978 </blockquote>
3979
3980
3981 </blockquote><p>
3982
3983 </p>
3984 <p>The mentioned fields above don't have to be in particular order.
3985 </p>
3986 <p>Examples:
3987 </p>
3988 <p>
3989 </p>
3990 <blockquote class="text">
3991 <p>C: "GET ENGINE INFO gig"
3992 </p>
3993 <p>S: "DESCRIPTION: GigaSampler Format Engine"
3994 </p>
3995 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.110"
3996 </p>
3997 <p>&nbsp;&nbsp;&nbsp;"."
3998 </p>
3999 <p>C: "GET ENGINE INFO sf2"
4000 </p>
4001 <p>S: "DESCRIPTION: SoundFont Format Engine"
4002 </p>
4003 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.4"
4004 </p>
4005 <p>&nbsp;&nbsp;&nbsp;"."
4006 </p>
4007 <p>C: "GET ENGINE INFO sfz"
4008 </p>
4009 <p>S: "DESCRIPTION: SFZ Format Engine"
4010 </p>
4011 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.11"
4012 </p>
4013 <p>&nbsp;&nbsp;&nbsp;"."
4014 </p>
4015 </blockquote><p>
4016
4017 </p>
4018 <a name="GET CHANNEL INFO"></a><br /><hr />
4019 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4020 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
4021 Getting sampler channel information</h3>
4022
4023 <p>The front-end can ask for the current settings of a sampler channel
4024 by sending the following command:
4025 </p>
4026 <p>
4027 </p>
4028 <blockquote class="text">
4029 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4030 </p>
4031 </blockquote><p>
4032
4033 </p>
4034 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4035 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>
4036 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.
4037 </p>
4038 <p>Possible Answers:
4039 </p>
4040 <p>
4041 </p>
4042 <blockquote class="text">
4043 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4044 Each answer line begins with the settings category name
4045 followed by a colon and then a space character &lt;SP&gt; and finally
4046 the info character string to that setting category. At the
4047 moment the following categories are defined:
4048 </p>
4049 <p>
4050 </p>
4051 <blockquote class="text">
4052 <p>ENGINE_NAME -
4053 </p>
4054 <blockquote class="text">
4055 <p>name of the engine that is associated with the sampler
4056 channel, "NONE" if there's no engine associated yet for
4057 this sampler channel
4058 </p>
4059 </blockquote>
4060
4061
4062 <p>AUDIO_OUTPUT_DEVICE -
4063 </p>
4064 <blockquote class="text">
4065 <p>numerical ID of the audio output device which is
4066 currently connected to this sampler channel to output
4067 the audio signal, "-1" if there's no device
4068 connected to this sampler channel
4069 </p>
4070 </blockquote>
4071
4072
4073 <p>AUDIO_OUTPUT_CHANNELS -
4074 </p>
4075 <blockquote class="text">
4076 <p>number of output channels the sampler channel offers
4077 (dependent to used sampler engine and loaded instrument)
4078 </p>
4079 </blockquote>
4080
4081
4082 <p>AUDIO_OUTPUT_ROUTING -
4083 </p>
4084 <blockquote class="text">
4085 <p>comma separated list which reflects to which audio
4086 channel of the selected audio output device each
4087 sampler output channel is routed to, e.g. "0,3" would
4088 mean the engine's output channel 0 is routed to channel
4089 0 of the audio output device and the engine's output
4090 channel 1 is routed to the channel 3 of the audio
4091 output device
4092 </p>
4093 </blockquote>
4094
4095
4096 <p>INSTRUMENT_FILE -
4097 </p>
4098 <blockquote class="text">
4099 <p>the file name of the loaded instrument, "NONE" if
4100 there's no instrument yet loaded for this sampler
4101 channel (note: since LSCP 1.2 this path may contain
4102 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4103 </p>
4104 </blockquote>
4105
4106
4107 <p>INSTRUMENT_NR -
4108 </p>
4109 <blockquote class="text">
4110 <p>the instrument index number of the loaded instrument,
4111 "-1" if there's no instrument loaded for this sampler
4112 channel
4113 </p>
4114 </blockquote>
4115
4116
4117 <p>INSTRUMENT_NAME -
4118 </p>
4119 <blockquote class="text">
4120 <p>the instrument name of the loaded instrument
4121 (note: since LSCP 1.2 this character string may contain
4122 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4123 </p>
4124 </blockquote>
4125
4126
4127 <p>INSTRUMENT_STATUS -
4128 </p>
4129 <blockquote class="text">
4130 <p>Integer values 0 to 100 indicating loading progress
4131 percentage for the instrument. Negative
4132 value indicates a loading exception (also returns "-1" in case no
4133 instrument was yet to be loaded on the sampler channel).
4134 Value of 100 indicates that the instrument is fully
4135 loaded.
4136 </p>
4137 </blockquote>
4138
4139
4140 <p>MIDI_INPUT_DEVICE -
4141 </p>
4142 <blockquote class="text">
4143 <p>numerical ID of the MIDI input device which is
4144 currently connected to this sampler channel to deliver
4145 MIDI input commands, "-1" if there's no device
4146 connected to this sampler channel
4147 </p>
4148 </blockquote>
4149
4150
4151 <p>MIDI_INPUT_PORT -
4152 </p>
4153 <blockquote class="text">
4154 <p>port number of the MIDI input device (in case a
4155 MIDI device was already assigned to the sampler
4156 channel)
4157 </p>
4158 </blockquote>
4159
4160
4161 <p>MIDI_INPUT_CHANNEL -
4162 </p>
4163 <blockquote class="text">
4164 <p>the MIDI input channel number this sampler channel
4165 should listen to or "ALL" to listen on all MIDI channels
4166 </p>
4167 </blockquote>
4168
4169
4170 <p>VOLUME -
4171 </p>
4172 <blockquote class="text">
4173 <p>optionally dotted number for the channel volume factor
4174 (where a value &lt; 1.0 means attenuation and a value >
4175 1.0 means amplification)
4176 </p>
4177 </blockquote>
4178
4179
4180 <p>MUTE -
4181 </p>
4182 <blockquote class="text">
4183 <p>Determines whether the channel is muted, "true" if the
4184 channel is muted, "false" if the channel is not muted, and
4185 "MUTED_BY_SOLO" if the channel is muted because of the
4186 presence of a solo channel and will be unmuted when
4187 there are no solo channels left
4188 </p>
4189 </blockquote>
4190
4191
4192 <p>SOLO -
4193 </p>
4194 <blockquote class="text">
4195 <p>Determines whether this is a solo channel, "true" if
4196 the channel is a solo channel; "false" otherwise
4197 </p>
4198 </blockquote>
4199
4200
4201 <p>MIDI_INSTRUMENT_MAP -
4202 </p>
4203 <blockquote class="text">
4204 <p>Determines to which MIDI instrument map this sampler
4205 channel is assigned to. Read chapter
4206 <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>
4207 for a list of possible values.
4208 </p>
4209 </blockquote>
4210
4211
4212 </blockquote>
4213
4214
4215 </blockquote><p>
4216
4217 </p>
4218 <p>The mentioned fields above don't have to be in particular order.
4219 </p>
4220 <p>Example:
4221 </p>
4222 <p>
4223 </p>
4224 <blockquote class="text">
4225 <p>C: "GET CHANNEL INFO 34"
4226 </p>
4227 <p>S: "ENGINE_NAME: gig"
4228 </p>
4229 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4230 </p>
4231 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4232 </p>
4233 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4234 </p>
4235 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4236 </p>
4237 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4238 </p>
4239 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4240 </p>
4241 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4242 </p>
4243 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4244 </p>
4245 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4246 </p>
4247 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4248 </p>
4249 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4250 </p>
4251 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4252 </p>
4253 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4254 </p>
4255 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4256 </p>
4257 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4258 </p>
4259 <p>&nbsp;&nbsp;&nbsp;"."
4260 </p>
4261 </blockquote><p>
4262
4263 </p>
4264 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4265 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4266 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4267 Current number of active voices</h3>
4268
4269 <p>The front-end can ask for the current number of active voices on a
4270 sampler channel by sending the following command:
4271 </p>
4272 <p>
4273 </p>
4274 <blockquote class="text">
4275 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4276 </p>
4277 </blockquote><p>
4278
4279 </p>
4280 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4281 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>
4282 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.
4283 </p>
4284 <p>Possible Answers:
4285 </p>
4286 <p>
4287 </p>
4288 <blockquote class="text">
4289 <p>LinuxSampler will answer by returning the number of active
4290 voices on that channel.
4291 </p>
4292 </blockquote><p>
4293
4294 </p>
4295 <p>Example:
4296 </p>
4297 <p>
4298 </p>
4299 <blockquote class="text">
4300 <p>
4301 </p>
4302 </blockquote><p>
4303
4304 </p>
4305 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4306 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4307 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4308 Current number of active disk streams</h3>
4309
4310 <p>The front-end can ask for the current number of active disk streams
4311 on a sampler channel by sending the following command:
4312 </p>
4313 <p>
4314 </p>
4315 <blockquote class="text">
4316 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4317 </p>
4318 </blockquote><p>
4319
4320 </p>
4321 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4322 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>
4323 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.
4324 </p>
4325 <p>Possible Answers:
4326 </p>
4327 <p>
4328 </p>
4329 <blockquote class="text">
4330 <p>LinuxSampler will answer by returning the number of active
4331 disk streams on that channel in case the engine supports disk
4332 streaming, if the engine doesn't support disk streaming it will
4333 return "NA" for not available.
4334 </p>
4335 </blockquote><p>
4336
4337 </p>
4338 <p>Example:
4339 </p>
4340 <p>
4341 </p>
4342 <blockquote class="text">
4343 <p>
4344 </p>
4345 </blockquote><p>
4346
4347 </p>
4348 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4349 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4350 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4351 Current fill state of disk stream buffers</h3>
4352
4353 <p>The front-end can ask for the current fill state of all disk streams
4354 on a sampler channel by sending the following command:
4355 </p>
4356 <p>
4357 </p>
4358 <blockquote class="text">
4359 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4360 </p>
4361 </blockquote><p>
4362
4363 </p>
4364 <p>to get the fill state in bytes or
4365 </p>
4366 <p>
4367 </p>
4368 <blockquote class="text">
4369 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4370 </p>
4371 </blockquote><p>
4372
4373 </p>
4374 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4375 sampler channel number the front-end is interested in
4376 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>
4377 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.
4378 </p>
4379 <p>Possible Answers:
4380 </p>
4381 <p>
4382 </p>
4383 <blockquote class="text">
4384 <p>LinuxSampler will either answer by returning a comma separated
4385 string with the fill state of all disk stream buffers on that
4386 channel or an empty line if there are no active disk streams or
4387 "NA" for *not available* in case the engine which is deployed
4388 doesn't support disk streaming. Each entry in the answer list
4389 will begin with the stream's ID in brackets followed by the
4390 numerical representation of the fill size (either in bytes or
4391 percentage). Note: due to efficiency reasons the fill states in
4392 the response are not in particular order, thus the front-end has
4393 to sort them by itself if necessary.
4394 </p>
4395 </blockquote><p>
4396
4397 </p>
4398 <p>Examples:
4399 </p>
4400 <p>
4401 </p>
4402 <blockquote class="text">
4403 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4404 </p>
4405 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4406 </p>
4407 </blockquote><p>
4408
4409 </p>
4410 <blockquote class="text">
4411 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4412 </p>
4413 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4414 </p>
4415 </blockquote><p>
4416
4417 </p>
4418 <blockquote class="text">
4419 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4420 </p>
4421 <p>S: ""
4422 </p>
4423 </blockquote><p>
4424
4425 </p>
4426 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4427 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4428 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4429 Setting audio output device</h3>
4430
4431 <p>The front-end can set the audio output device on a specific sampler
4432 channel by sending the following command:
4433 </p>
4434 <p>
4435 </p>
4436 <blockquote class="text">
4437 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4438 </p>
4439 </blockquote><p>
4440
4441 </p>
4442 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4443 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>
4444 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
4445 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4446 <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>
4447 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>
4448 command.
4449 </p>
4450 <p>Possible Answers:
4451 </p>
4452 <p>
4453 </p>
4454 <blockquote class="text">
4455 <p>"OK" -
4456 </p>
4457 <blockquote class="text">
4458 <p>on success
4459 </p>
4460 </blockquote>
4461
4462
4463 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4464 </p>
4465 <blockquote class="text">
4466 <p>if audio output device was set, but there are noteworthy
4467 issue(s) related, providing an appropriate warning code and
4468 warning message
4469 </p>
4470 </blockquote>
4471
4472
4473 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4474 </p>
4475 <blockquote class="text">
4476 <p>in case it failed, providing an appropriate error code and error message
4477 </p>
4478 </blockquote>
4479
4480
4481 </blockquote><p>
4482
4483 </p>
4484 <p>Examples:
4485 </p>
4486 <p>
4487 </p>
4488 <blockquote class="text">
4489 <p>
4490 </p>
4491 </blockquote><p>
4492
4493 </p>
4494 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4495 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4496 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4497 Setting audio output type</h3>
4498
4499 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4500 </p>
4501 <p>The front-end can alter the audio output type on a specific sampler
4502 channel by sending the following command:
4503 </p>
4504 <p>
4505 </p>
4506 <blockquote class="text">
4507 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4508 </p>
4509 </blockquote><p>
4510
4511 </p>
4512 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4513 &lt;sampler-channel&gt; is the respective sampler channel number.
4514 </p>
4515 <p>Possible Answers:
4516 </p>
4517 <p>
4518 </p>
4519 <blockquote class="text">
4520 <p>"OK" -
4521 </p>
4522 <blockquote class="text">
4523 <p>on success
4524 </p>
4525 </blockquote>
4526
4527
4528 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4529 </p>
4530 <blockquote class="text">
4531 <p>if audio output type was set, but there are noteworthy
4532 issue(s) related, providing an appropriate warning code and
4533 warning message
4534 </p>
4535 </blockquote>
4536
4537
4538 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4539 </p>
4540 <blockquote class="text">
4541 <p>in case it failed, providing an appropriate error code and error message
4542 </p>
4543 </blockquote>
4544
4545
4546 </blockquote><p>
4547
4548 </p>
4549 <p>Examples:
4550 </p>
4551 <p>
4552 </p>
4553 <blockquote class="text">
4554 <p>
4555 </p>
4556 </blockquote><p>
4557
4558 </p>
4559 <p>Deprecated:
4560 </p>
4561 <p>
4562 </p>
4563 <blockquote class="text">
4564 <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
4565 </p>
4566 <p>This command is a relict from times where there was no sophisticated driver management yet. Use <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> and <a class='info' href='#SET CHANNEL AUDIO_OUTPUT_DEVICE'>"SET CHANNEL AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Setting audio output device</span><span>)</span></a> instead.
4567 </p>
4568 </blockquote><p>
4569
4570 </p>
4571 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4572 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4573 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4574 Setting audio output channel</h3>
4575
4576 <p>The front-end can alter the audio output channel on a specific
4577 sampler channel by sending the following command:
4578 </p>
4579 <p>
4580 </p>
4581 <blockquote class="text">
4582 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4583 </p>
4584 </blockquote><p>
4585
4586 </p>
4587 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4588 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>
4589 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
4590 numerical ID of the sampler channel's audio output channel which should be
4591 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4592 output device where &lt;audio-out&gt; should be routed to.
4593 </p>
4594 <p>Possible Answers:
4595 </p>
4596 <p>
4597 </p>
4598 <blockquote class="text">
4599 <p>"OK" -
4600 </p>
4601 <blockquote class="text">
4602 <p>on success
4603 </p>
4604 </blockquote>
4605
4606
4607 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4608 </p>
4609 <blockquote class="text">
4610 <p>if audio output channel was set, but there are noteworthy
4611 issue(s) related, providing an appropriate warning code and
4612 warning message
4613 </p>
4614 </blockquote>
4615
4616
4617 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4618 </p>
4619 <blockquote class="text">
4620 <p>in case it failed, providing an appropriate error code and error message
4621 </p>
4622 </blockquote>
4623
4624
4625 </blockquote><p>
4626
4627 </p>
4628 <p>Examples:
4629 </p>
4630 <p>
4631 </p>
4632 <blockquote class="text">
4633 <p>
4634 </p>
4635 </blockquote><p>
4636
4637 </p>
4638 <a name="ADD CHANNEL MIDI_INPUT"></a><br /><hr />
4639 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4640 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4641 Add MIDI input to sampler channel</h3>
4642
4643 <p>The front-end can add a MIDI input on a specific sampler
4644 channel by sending the following command:
4645 </p>
4646 <p>
4647 </p>
4648 <blockquote class="text">
4649 <p>ADD CHANNEL MIDI_INPUT &lt;sampler-channel&gt; &lt;midi-device-id&gt; [&lt;midi-input-port&gt;]
4650 </p>
4651 </blockquote><p>
4652
4653 </p>
4654 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4655 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>
4656 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
4657 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input
4658 device as returned by the
4659 <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>
4660 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,
4661 and &lt;midi-input-port&gt; is an optional MIDI input port number of that
4662 MIDI input device. If &lt;midi-input-port&gt; is omitted,
4663 then the MIDI input device's first port (port number 0) is
4664 used.
4665
4666 </p>
4667 <p>Possible Answers:
4668 </p>
4669 <p>
4670 </p>
4671 <blockquote class="text">
4672 <p>"OK" -
4673 </p>
4674 <blockquote class="text">
4675 <p>on success
4676 </p>
4677 </blockquote>
4678
4679
4680 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4681 </p>
4682 <blockquote class="text">
4683 <p>if MIDI input port was connected, but there are noteworthy
4684 issue(s) related, providing an appropriate warning code and
4685 warning message
4686 </p>
4687 </blockquote>
4688
4689
4690 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4691 </p>
4692 <blockquote class="text">
4693 <p>in case it failed, providing an appropriate error code and error message
4694 </p>
4695 </blockquote>
4696
4697
4698 </blockquote><p>
4699
4700 </p>
4701 <p>Examples:
4702 </p>
4703 <p>
4704 </p>
4705 <blockquote class="text">
4706 <p>C: "ADD CHANNEL MIDI_INPUT 0 0"
4707 </p>
4708 <p>S: "OK"
4709 </p>
4710 <p>C: "ADD CHANNEL MIDI_INPUT 1 0"
4711 </p>
4712 <p>S: "OK"
4713 </p>
4714 <p>C: "ADD CHANNEL MIDI_INPUT 1 1 1"
4715 </p>
4716 <p>S: "OK"
4717 </p>
4718 <p>C: "ADD CHANNEL MIDI_INPUT 1 2 0"
4719 </p>
4720 <p>S: "OK"
4721 </p>
4722 </blockquote><p>
4723
4724 </p>
4725 <p>Since:
4726 </p>
4727 <p>
4728 </p>
4729 <blockquote class="text">
4730 <p>Introduced with LSCP v1.6
4731 </p>
4732 </blockquote><p>
4733
4734 </p>
4735 <a name="REMOVE CHANNEL MIDI_INPUT"></a><br /><hr />
4736 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4737 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4738 Remove MIDI input(s) from sampler channel</h3>
4739
4740 <p>The front-end can remove one ore more MIDI input(s) on a
4741 specific sampler channel by sending the following command:
4742 </p>
4743 <p>
4744 </p>
4745 <blockquote class="text">
4746 <p>REMOVE CHANNEL MIDI_INPUT &lt;sampler-channel&gt; [&lt;midi-device-id&gt; [&lt;midi-input-port&gt;]]
4747 </p>
4748 </blockquote><p>
4749
4750 </p>
4751 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4752 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>
4753 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
4754 and &lt;midi-device-id&gt; and &lt;midi-input-port&gt; are
4755 optional numerical IDs defining the MIDI input device and
4756 one of its MIDI ports as returned by the
4757 <a class='info' href='#LIST CHANNEL MIDI_INPUTS'>"LIST CHANNEL MIDI_INPUTS"<span> (</span><span class='info'>Getting all MIDI inputs of a sampler channel</span><span>)</span></a> command.
4758
4759 </p>
4760 <p>
4761 If &lt;midi-input-port&gt; is omitted, then all MIDI input
4762 ports of &lt;midi-device-id&gt; are disconnected from this
4763 sampler channel.
4764
4765 </p>
4766 <p>
4767 If both, &lt;midi-device-id&gt; and &lt;midi-input-port&gt;
4768 are omitted, then all MIDI input ports currently connected
4769 to this sampler channel are disconnected from this sampler
4770 channel.
4771
4772 </p>
4773 <p>Possible Answers:
4774 </p>
4775 <p>
4776 </p>
4777 <blockquote class="text">
4778 <p>"OK" -
4779 </p>
4780 <blockquote class="text">
4781 <p>on success
4782 </p>
4783 </blockquote>
4784
4785
4786 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4787 </p>
4788 <blockquote class="text">
4789 <p>if MIDI input porst were disconnected, but there are noteworthy
4790 issue(s) related, providing an appropriate warning code and
4791 warning message
4792 </p>
4793 </blockquote>
4794
4795
4796 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4797 </p>
4798 <blockquote class="text">
4799 <p>in case it failed, providing an appropriate error code and error message
4800 </p>
4801 </blockquote>
4802
4803
4804 </blockquote><p>
4805
4806 </p>
4807 <p>Examples:
4808 </p>
4809 <p>
4810 </p>
4811 <blockquote class="text">
4812 <p>C: "REMOVE CHANNEL MIDI_INPUT 0"
4813 </p>
4814 <p>S: "OK"
4815 </p>
4816 <p>C: "REMOVE CHANNEL MIDI_INPUT 1"
4817 </p>
4818 <p>S: "OK"
4819 </p>
4820 <p>C: "REMOVE CHANNEL MIDI_INPUT 1 2 0"
4821 </p>
4822 <p>S: "OK"
4823 </p>
4824 </blockquote><p>
4825
4826 </p>
4827 <p>Since:
4828 </p>
4829 <p>
4830 </p>
4831 <blockquote class="text">
4832 <p>Introduced with LSCP v1.6
4833 </p>
4834 </blockquote><p>
4835
4836 </p>
4837 <a name="LIST CHANNEL MIDI_INPUTS"></a><br /><hr />
4838 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4839 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4840 Getting all MIDI inputs of a sampler channel</h3>
4841
4842 <p>The front-end can query a list of all currently connected
4843 MIDI inputs of a certain sampler channel by sending the following
4844 command:
4845 </p>
4846 <p>
4847 </p>
4848 <blockquote class="text">
4849 <p>LIST CHANNEL MIDI_INPUTS &lt;sampler-channel&gt;
4850 </p>
4851 </blockquote><p>
4852
4853 </p>
4854 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4855 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>
4856 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.
4857
4858 </p>
4859 <p>Possible Answers:
4860 </p>
4861 <p>
4862 </p>
4863 <blockquote class="text">
4864 <p>The sampler will answer by sending a comma separated
4865 list of MIDI input device ID - MIDI input port number pairs, where
4866 each pair is encapsulated into curly braces. The
4867 list is returned in one single line. The MIDI input
4868 device ID corresponds to the number returned by
4869 <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>
4870 and the port number is the index of the respective MIDI
4871 port of that MIDI input device.
4872 </p>
4873 </blockquote><p>
4874
4875 </p>
4876 <p>Example:
4877 </p>
4878 <p>
4879 </p>
4880 <blockquote class="text">
4881 <p>C: "LIST CHANNEL MIDI_INPUTS 0"
4882 </p>
4883 <p>S: "{0,0},{1,3},{2,0}"
4884 </p>
4885 </blockquote><p>
4886
4887 </p>
4888 <p>Since:
4889 </p>
4890 <p>
4891 </p>
4892 <blockquote class="text">
4893 <p>Introduced with LSCP v1.6
4894 </p>
4895 </blockquote><p>
4896
4897 </p>
4898 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4899 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4900 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4901 Setting MIDI input device</h3>
4902
4903 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4904 </p>
4905 <p>The front-end can set the MIDI input device on a specific sampler
4906 channel by sending the following command:
4907 </p>
4908 <p>
4909 </p>
4910 <blockquote class="text">
4911 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4912 </p>
4913 </blockquote><p>
4914
4915 </p>
4916 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4917 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>
4918 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
4919 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4920 <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>
4921 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.
4922 </p>
4923 <p>
4924 If more than 1 MIDI inputs are currently connected to this
4925 sampler channel: Sending this command will disconnect ALL
4926 currently connected MIDI input ports connected to this
4927 sampler channel before establishing the new MIDI input
4928 connection. So this command does NOT add the connection,
4929 it replaces all existing ones instead. This behavior is due
4930 to preserving full behavior backward compatibility.
4931
4932 </p>
4933 <p>Possible Answers:
4934 </p>
4935 <p>
4936 </p>
4937 <blockquote class="text">
4938 <p>"OK" -
4939 </p>
4940 <blockquote class="text">
4941 <p>on success
4942 </p>
4943 </blockquote>
4944
4945
4946 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4947 </p>
4948 <blockquote class="text">
4949 <p>if MIDI input device was set, but there are noteworthy
4950 issue(s) related, providing an appropriate warning code and
4951 warning message
4952 </p>
4953 </blockquote>
4954
4955
4956 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4957 </p>
4958 <blockquote class="text">
4959 <p>in case it failed, providing an appropriate error code and error message
4960 </p>
4961 </blockquote>
4962
4963
4964 </blockquote><p>
4965
4966 </p>
4967 <p>Examples:
4968 </p>
4969 <p>
4970 </p>
4971 <blockquote class="text">
4972 <p>
4973 </p>
4974 </blockquote><p>
4975
4976 </p>
4977 <p>Deprecated:
4978 </p>
4979 <p>
4980 </p>
4981 <blockquote class="text">
4982 <p>Should not be used anymore as of LSCP v1.6 and younger. This command is currently only preserved for backward compatibility.
4983 </p>
4984 <p>This command is a relict from times where only one MIDI input per sampler channel was allowed. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
4985 </p>
4986 </blockquote><p>
4987
4988 </p>
4989 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4990 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4991 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4992 Setting MIDI input type</h3>
4993
4994 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4995 </p>
4996 <p>The front-end can alter the MIDI input type on a specific sampler
4997 channel by sending the following command:
4998 </p>
4999 <p>
5000 </p>
5001 <blockquote class="text">
5002 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
5003 </p>
5004 </blockquote><p>
5005
5006 </p>
5007 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
5008 &lt;sampler-channel&gt; is the respective sampler channel number.
5009 </p>
5010 <p>
5011 If more than 1 MIDI inputs are currently connected to this
5012 sampler channel: Sending this command will disconnect ALL
5013 currently connected MIDI input ports connected to this
5014 sampler channel before establishing the new MIDI input
5015 connection. So this command does NOT add the connection,
5016 it replaces all existing ones instead. This behavior is due
5017 to preserving full behavior backward compatibility.
5018
5019 </p>
5020 <p>Possible Answers:
5021 </p>
5022 <p>
5023 </p>
5024 <blockquote class="text">
5025 <p>"OK" -
5026 </p>
5027 <blockquote class="text">
5028 <p>on success
5029 </p>
5030 </blockquote>
5031
5032
5033 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5034 </p>
5035 <blockquote class="text">
5036 <p>if MIDI input type was set, but there are noteworthy
5037 issue(s) related, providing an appropriate warning code and
5038 warning message
5039 </p>
5040 </blockquote>
5041
5042
5043 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5044 </p>
5045 <blockquote class="text">
5046 <p>in case it failed, providing an appropriate error code and error message
5047 </p>
5048 </blockquote>
5049
5050
5051 </blockquote><p>
5052
5053 </p>
5054 <p>Examples:
5055 </p>
5056 <p>
5057 </p>
5058 <blockquote class="text">
5059 <p>
5060 </p>
5061 </blockquote><p>
5062
5063 </p>
5064 <p>Deprecated:
5065 </p>
5066 <p>
5067 </p>
5068 <blockquote class="text">
5069 <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
5070 </p>
5071 <p>This command is a relict from times where only 1 MIDI input per sampler channels was allowed and where no sophisticated driver management existed yet. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5072 </p>
5073 </blockquote><p>
5074
5075 </p>
5076 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
5077 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5078 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
5079 Setting MIDI input port</h3>
5080
5081 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
5082 </p>
5083 <p>The front-end can alter the MIDI input port on a specific sampler
5084 channel by sending the following command:
5085 </p>
5086 <p>
5087 </p>
5088 <blockquote class="text">
5089 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
5090 </p>
5091 </blockquote><p>
5092
5093 </p>
5094 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
5095 MIDI input device connected to the sampler channel given by
5096 &lt;sampler-channel&gt;.
5097 </p>
5098 <p>
5099 If more than 1 MIDI inputs are currently connected to this
5100 sampler channel: Sending this command will switch the
5101 connection of the first (and only the first) MIDI input port
5102 currently being connected to this sampler channel, to
5103 another port of the same MIDI input device. Or in other
5104 words: the first MIDI input port currently connected to
5105 this sampler channel will be disconnected, and the requested
5106 other port of its MIDI input device will be connected to
5107 this sampler channel instead. This behavior is due
5108 to preserving full behavior backward compatibility.
5109
5110 </p>
5111 <p>Possible Answers:
5112 </p>
5113 <p>
5114 </p>
5115 <blockquote class="text">
5116 <p>"OK" -
5117 </p>
5118 <blockquote class="text">
5119 <p>on success
5120 </p>
5121 </blockquote>
5122
5123
5124 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5125 </p>
5126 <blockquote class="text">
5127 <p>if MIDI input port was set, but there are noteworthy
5128 issue(s) related, providing an appropriate warning code and
5129 warning message
5130 </p>
5131 </blockquote>
5132
5133
5134 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5135 </p>
5136 <blockquote class="text">
5137 <p>in case it failed, providing an appropriate error code and error message
5138 </p>
5139 </blockquote>
5140
5141
5142 </blockquote><p>
5143
5144 </p>
5145 <p>Examples:
5146 </p>
5147 <p>
5148 </p>
5149 <blockquote class="text">
5150 <p>
5151 </p>
5152 </blockquote><p>
5153
5154 </p>
5155 <p>Deprecated:
5156 </p>
5157 <p>
5158 </p>
5159 <blockquote class="text">
5160 <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
5161 </p>
5162 <p>This command is a relict from times where only one MIDI input per sampler channel was allowed. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5163 </p>
5164 </blockquote><p>
5165
5166 </p>
5167 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
5168 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5169 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
5170 Setting MIDI input channel</h3>
5171
5172 <p>The front-end can alter the MIDI channel a sampler channel should
5173 listen to by sending the following command:
5174 </p>
5175 <p>
5176 </p>
5177 <blockquote class="text">
5178 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
5179 </p>
5180 </blockquote><p>
5181
5182 </p>
5183 <p>Where &lt;midi-input-chan&gt; is the number
5184 of the new MIDI input channel (zero indexed!) where
5185 &lt;sampler-channel&gt; should listen to, or "ALL" to listen on all 16 MIDI
5186 channels.
5187 </p>
5188 <p>Possible Answers:
5189 </p>
5190 <p>
5191 </p>
5192 <blockquote class="text">
5193 <p>"OK" -
5194 </p>
5195 <blockquote class="text">
5196 <p>on success
5197 </p>
5198 </blockquote>
5199
5200
5201 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5202 </p>
5203 <blockquote class="text">
5204 <p>if MIDI input channel was set, but there are noteworthy
5205 issue(s) related, providing an appropriate warning code and
5206 warning message
5207 </p>
5208 </blockquote>
5209
5210
5211 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5212 </p>
5213 <blockquote class="text">
5214 <p>in case it failed, providing an appropriate error code and error message
5215 </p>
5216 </blockquote>
5217
5218
5219 </blockquote><p>
5220
5221 </p>
5222 <p>Examples:
5223 </p>
5224 <p>
5225 </p>
5226 <blockquote class="text">
5227 <p>C: "SET CHANNEL MIDI_INPUT_CHANNEL 0 0"
5228 </p>
5229 <p>S: "OK"
5230 </p>
5231 <p>C: "SET CHANNEL MIDI_INPUT_CHANNEL 1 ALL"
5232 </p>
5233 <p>S: "OK"
5234 </p>
5235 </blockquote><p>
5236
5237 </p>
5238 <a name="SET CHANNEL VOLUME"></a><br /><hr />
5239 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5240 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5241 Setting channel volume</h3>
5242
5243 <p>The front-end can alter the volume of a sampler channel by sending
5244 the following command:
5245 </p>
5246 <p>
5247 </p>
5248 <blockquote class="text">
5249 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
5250 </p>
5251 </blockquote><p>
5252
5253 </p>
5254 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
5255 smaller than 1.0 means attenuation, whereas a value greater than
5256 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
5257 channel where this volume factor should be set.
5258 </p>
5259 <p>Possible Answers:
5260 </p>
5261 <p>
5262 </p>
5263 <blockquote class="text">
5264 <p>"OK" -
5265 </p>
5266 <blockquote class="text">
5267 <p>on success
5268 </p>
5269 </blockquote>
5270
5271
5272 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5273 </p>
5274 <blockquote class="text">
5275 <p>if channel volume was set, but there are noteworthy
5276 issue(s) related, providing an appropriate warning code and
5277 warning message
5278 </p>
5279 </blockquote>
5280
5281
5282 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5283 </p>
5284 <blockquote class="text">
5285 <p>in case it failed, providing an appropriate error code and error message
5286 </p>
5287 </blockquote>
5288
5289
5290 </blockquote><p>
5291
5292 </p>
5293 <p>Examples:
5294 </p>
5295 <p>
5296 </p>
5297 <blockquote class="text">
5298 <p>
5299 </p>
5300 </blockquote><p>
5301
5302 </p>
5303 <a name="SET CHANNEL MUTE"></a><br /><hr />
5304 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5305 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5306 Muting a sampler channel</h3>
5307
5308 <p>The front-end can mute/unmute a specific sampler
5309 channel by sending the following command:
5310 </p>
5311 <p>
5312 </p>
5313 <blockquote class="text">
5314 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
5315 </p>
5316 </blockquote><p>
5317
5318 </p>
5319 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5320 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>
5321 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
5322 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
5323 to unmute the channel.
5324 </p>
5325 <p>Possible Answers:
5326 </p>
5327 <p>
5328 </p>
5329 <blockquote class="text">
5330 <p>"OK" -
5331 </p>
5332 <blockquote class="text">
5333 <p>on success
5334 </p>
5335 </blockquote>
5336
5337
5338 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5339 </p>
5340 <blockquote class="text">
5341 <p>if the channel was muted/unmuted, but there are noteworthy
5342 issue(s) related, providing an appropriate warning code and
5343 warning message
5344 </p>
5345 </blockquote>
5346
5347
5348 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5349 </p>
5350 <blockquote class="text">
5351 <p>in case it failed, providing an appropriate error code and error message
5352 </p>
5353 </blockquote>
5354
5355
5356 </blockquote><p>
5357
5358 </p>
5359 <p>Examples:
5360 </p>
5361 <p>
5362 </p>
5363 <blockquote class="text">
5364 <p>
5365 </p>
5366 </blockquote><p>
5367
5368 </p>
5369 <a name="SET CHANNEL SOLO"></a><br /><hr />
5370 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5371 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5372 Soloing a sampler channel</h3>
5373
5374 <p>The front-end can solo/unsolo a specific sampler channel
5375 by sending the following command:
5376 </p>
5377 <p>
5378 </p>
5379 <blockquote class="text">
5380 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5381 </p>
5382 </blockquote><p>
5383
5384 </p>
5385 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5386 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>
5387 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
5388 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5389 to unsolo the channel.
5390 </p>
5391 <p>Possible Answers:
5392 </p>
5393 <p>
5394 </p>
5395 <blockquote class="text">
5396 <p>"OK" -
5397 </p>
5398 <blockquote class="text">
5399 <p>on success
5400 </p>
5401 </blockquote>
5402
5403
5404 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5405 </p>
5406 <blockquote class="text">
5407 <p>if the channel was soloed/unsoloed, but there are noteworthy
5408 issue(s) related, providing an appropriate warning code and
5409 warning message
5410 </p>
5411 </blockquote>
5412
5413
5414 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5415 </p>
5416 <blockquote class="text">
5417 <p>in case it failed, providing an appropriate error code and error message
5418 </p>
5419 </blockquote>
5420
5421
5422 </blockquote><p>
5423
5424 </p>
5425 <p>Examples:
5426 </p>
5427 <p>
5428 </p>
5429 <blockquote class="text">
5430 <p>
5431 </p>
5432 </blockquote><p>
5433
5434 </p>
5435 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5436 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5437 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5438 Assigning a MIDI instrument map to a sampler channel</h3>
5439
5440 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5441 by sending the following command:
5442 </p>
5443 <p>
5444 </p>
5445 <blockquote class="text">
5446 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5447 </p>
5448 </blockquote><p>
5449
5450 </p>
5451 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5452 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>
5453 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
5454 &lt;map&gt; can have the following possibilites:
5455 </p>
5456 <p>
5457 </p>
5458 <blockquote class="text">
5459 <p>"NONE" -
5460 </p>
5461 <blockquote class="text">
5462 <p>This is the default setting. In this case
5463 the sampler channel is not assigned any MIDI
5464 instrument map and thus will ignore all MIDI
5465 program change messages.
5466 </p>
5467 </blockquote>
5468
5469
5470 <p>"DEFAULT" -
5471 </p>
5472 <blockquote class="text">
5473 <p>The sampler channel will always use the
5474 default MIDI instrument map to handle MIDI
5475 program change messages.
5476 </p>
5477 </blockquote>
5478
5479
5480 <p>numeric ID -
5481 </p>
5482 <blockquote class="text">
5483 <p>You can assign a specific MIDI instrument map
5484 by replacing &lt;map&gt; with the respective numeric
5485 ID of the MIDI instrument map as returned by the
5486 <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>
5487 command. Once that map will be deleted, the sampler
5488 channel would fall back to "NONE".
5489 </p>
5490 </blockquote>
5491
5492
5493 </blockquote><p>
5494
5495 </p>
5496 <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>
5497 for details regarding MIDI instrument mapping.
5498 </p>
5499 <p>Possible Answers:
5500 </p>
5501 <p>
5502 </p>
5503 <blockquote class="text">
5504 <p>"OK" -
5505 </p>
5506 <blockquote class="text">
5507 <p>on success
5508 </p>
5509 </blockquote>
5510
5511
5512 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5513 </p>
5514 <blockquote class="text">
5515 <p>in case it failed, providing an appropriate error code and error message
5516 </p>
5517 </blockquote>
5518
5519
5520 </blockquote><p>
5521
5522 </p>
5523 <p>Examples:
5524 </p>
5525 <p>
5526 </p>
5527 <blockquote class="text">
5528 <p>
5529 </p>
5530 </blockquote><p>
5531
5532 </p>
5533 <a name="CREATE FX_SEND"></a><br /><hr />
5534 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5535 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5536 Adding an effect send to a sampler channel</h3>
5537
5538 <p>The front-end can create an additional effect send on a specific sampler channel
5539 by sending the following command:
5540 </p>
5541 <p>
5542 </p>
5543 <blockquote class="text">
5544 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5545 </p>
5546 </blockquote><p>
5547
5548 </p>
5549 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5550 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>
5551 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
5552 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5553 is a number between 0..127 defining the MIDI controller which can alter the
5554 effect send level and &lt;name&gt; is an optional argument defining a name
5555 for the effect send entity. The name does not have to be unique, but MUST be
5556 encapsulated into apostrophes and supports escape sequences as described in chapter
5557 "<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>".
5558 </p>
5559 <p>By default, that is as initial routing, the effect send's audio channels
5560 are automatically routed to the last audio channels of the sampler channel's
5561 audio output device, that way you can i.e. first increase the amount of audio
5562 channels on the audio output device for having dedicated effect send output
5563 channels and when "CREATE FX_SEND" is called, those channels will automatically
5564 be picked. You can alter the destination channels however with
5565 <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>.
5566
5567 </p>
5568 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5569 sends on a sampler channel will decrease runtime performance, because for implementing channel
5570 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5571 the voices and route the audio signal afterwards to the master outputs and effect send
5572 outputs (along with their respective effect send levels). A sampler channel without effect
5573 sends however can mix its voices directly into the audio output devices's audio buffers
5574 and is thus faster.
5575
5576 </p>
5577 <p>Possible Answers:
5578 </p>
5579 <p>
5580 </p>
5581 <blockquote class="text">
5582 <p>"OK[&lt;fx-send-id&gt;]" -
5583 </p>
5584 <blockquote class="text">
5585 <p>in case a new effect send could be added to the
5586 sampler channel, where &lt;fx-send-id&gt; reflects the
5587 unique ID of the newly created effect send entity
5588 </p>
5589 </blockquote>
5590
5591
5592 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5593 </p>
5594 <blockquote class="text">
5595 <p>when a new effect send could not be added, i.e.
5596 due to invalid parameters
5597 </p>
5598 </blockquote>
5599
5600
5601 </blockquote><p>
5602
5603 </p>
5604 <p>Examples:
5605 </p>
5606 <p>
5607 </p>
5608 <blockquote class="text">
5609 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5610 </p>
5611 <p>S: "OK[0]"
5612 </p>
5613 </blockquote><p>
5614
5615 </p>
5616 <p>
5617 </p>
5618 <blockquote class="text">
5619 <p>C: "CREATE FX_SEND 0 93"
5620 </p>
5621 <p>S: "OK[1]"
5622 </p>
5623 </blockquote><p>
5624
5625 </p>
5626 <a name="DESTROY FX_SEND"></a><br /><hr />
5627 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5628 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5629 Removing an effect send from a sampler channel</h3>
5630
5631 <p>The front-end can remove an existing effect send on a specific sampler channel
5632 by sending the following command:
5633 </p>
5634 <p>
5635 </p>
5636 <blockquote class="text">
5637 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5638 </p>
5639 </blockquote><p>
5640
5641 </p>
5642 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5643 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>
5644 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
5645 sampler channel from which the effect send should be removed from and
5646 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5647 <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>
5648 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.
5649 </p>
5650 <p>Possible Answers:
5651 </p>
5652 <p>
5653 </p>
5654 <blockquote class="text">
5655 <p>"OK" -
5656 </p>
5657 <blockquote class="text">
5658 <p>on success
5659 </p>
5660 </blockquote>
5661
5662
5663 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5664 </p>
5665 <blockquote class="text">
5666 <p>in case it failed, providing an appropriate error code and
5667 error message
5668 </p>
5669 </blockquote>
5670
5671
5672 </blockquote><p>
5673
5674 </p>
5675 <p>Example:
5676 </p>
5677 <p>
5678 </p>
5679 <blockquote class="text">
5680 <p>C: "DESTROY FX_SEND 0 0"
5681 </p>
5682 <p>S: "OK"
5683 </p>
5684 </blockquote><p>
5685
5686 </p>
5687 <a name="GET FX_SENDS"></a><br /><hr />
5688 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5689 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5690 Getting amount of effect sends on a sampler channel</h3>
5691
5692 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5693 by sending the following command:
5694 </p>
5695 <p>
5696 </p>
5697 <blockquote class="text">
5698 <p>GET FX_SENDS &lt;sampler-channel&gt;
5699 </p>
5700 </blockquote><p>
5701
5702 </p>
5703 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5704 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>
5705 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.
5706 </p>
5707 <p>Possible Answers:
5708 </p>
5709 <p>
5710 </p>
5711 <blockquote class="text">
5712 <p>The sampler will answer by returning the number of effect
5713 sends on the given sampler channel.
5714 </p>
5715 </blockquote><p>
5716
5717 </p>
5718 <p>Example:
5719 </p>
5720 <p>
5721 </p>
5722 <blockquote class="text">
5723 <p>C: "GET FX_SENDS 0"
5724 </p>
5725 <p>S: "2"
5726 </p>
5727 </blockquote><p>
5728
5729 </p>
5730 <a name="LIST FX_SENDS"></a><br /><hr />
5731 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5732 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5733 Listing all effect sends on a sampler channel</h3>
5734
5735 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5736 by sending the following command:
5737 </p>
5738 <p>
5739 </p>
5740 <blockquote class="text">
5741 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5742 </p>
5743 </blockquote><p>
5744
5745 </p>
5746 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5747 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>
5748 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.
5749 </p>
5750 <p>Possible Answers:
5751 </p>
5752 <p>
5753 </p>
5754 <blockquote class="text">
5755 <p>The sampler will answer by returning a comma separated list
5756 with all effect sends' numerical IDs on the given sampler
5757 channel.
5758 </p>
5759 </blockquote><p>
5760
5761 </p>
5762 <p>Examples:
5763 </p>
5764 <p>
5765 </p>
5766 <blockquote class="text">
5767 <p>C: "LIST FX_SENDS 0"
5768 </p>
5769 <p>S: "0,1"
5770 </p>
5771 </blockquote><p>
5772
5773 </p>
5774 <p>
5775 </p>
5776 <blockquote class="text">
5777 <p>C: "LIST FX_SENDS 1"
5778 </p>
5779 <p>S: ""
5780 </p>
5781 </blockquote><p>
5782
5783 </p>
5784 <a name="GET FX_SEND INFO"></a><br /><hr />
5785 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5786 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5787 Getting effect send information</h3>
5788
5789 <p>The front-end can ask for the current settings of an effect send entity
5790 by sending the following command:
5791 </p>
5792 <p>
5793 </p>
5794 <blockquote class="text">
5795 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5796 </p>
5797 </blockquote><p>
5798
5799 </p>
5800 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5801 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>
5802 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
5803 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5804 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>
5805 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.
5806
5807 </p>
5808 <p>Possible Answers:
5809 </p>
5810 <p>
5811 </p>
5812 <blockquote class="text">
5813 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5814 Each answer line begins with the settings category name
5815 followed by a colon and then a space character &lt;SP&gt; and finally
5816 the info character string to that setting category. At the
5817 moment the following categories are defined:
5818 </p>
5819 <p>
5820 </p>
5821 <blockquote class="text">
5822 <p>NAME -
5823 </p>
5824 <blockquote class="text">
5825 <p>name of the effect send entity
5826 (note that this character string may contain
5827 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5828 </p>
5829 </blockquote>
5830
5831
5832 <p>MIDI_CONTROLLER -
5833 </p>
5834 <blockquote class="text">
5835 <p>a value between 0 and 127 reflecting the MIDI controller
5836 which is able to modify the effect send's send level
5837 </p>
5838 </blockquote>
5839
5840
5841 <p>LEVEL -
5842 </p>
5843 <blockquote class="text">
5844 <p>optionally dotted number reflecting the effect send's
5845 current send level (where a value &lt; 1.0 means attenuation
5846 and a value > 1.0 means amplification)
5847 </p>
5848 </blockquote>
5849
5850
5851 <p>AUDIO_OUTPUT_ROUTING -
5852 </p>
5853 <blockquote class="text">
5854 <p>comma separated list which reflects to which audio
5855 channel of the selected audio output device each
5856 effect send output channel is routed to, e.g. "0,3" would
5857 mean the effect send's output channel 0 is routed to channel
5858 0 of the audio output device and the effect send's output
5859 channel 1 is routed to the channel 3 of the audio
5860 output device (see
5861 <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>
5862 for details), if an internal send
5863 effect is assigned to the effect
5864 send, then this setting defines the
5865 audio channel routing to that
5866 effect instance respectively
5867 </p>
5868 </blockquote>
5869
5870
5871 <p>EFFECT -
5872 </p>
5873 <blockquote class="text">
5874 <p>destination send effect chain ID
5875 and destination effect chain
5876 position, separated by comma in the
5877 form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5878 or "NONE" if there is no send effect
5879 assigned to the effect send
5880 </p>
5881 </blockquote>
5882
5883
5884 </blockquote>
5885
5886
5887 </blockquote><p>
5888
5889 </p>
5890 <p>The mentioned fields above don't have to be in particular order.
5891 </p>
5892 <p>Example:
5893 </p>
5894 <p>
5895 </p>
5896 <blockquote class="text">
5897 <p>C: "GET FX_SEND INFO 0 0"
5898 </p>
5899 <p>S: "NAME: Reverb Send"
5900 </p>
5901 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5902 </p>
5903 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5904 </p>
5905 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5906 </p>
5907 <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5908 </p>
5909 <p>&nbsp;&nbsp;&nbsp;"."
5910 </p>
5911 </blockquote><p>
5912
5913 </p>
5914 <p>
5915 </p>
5916 <blockquote class="text">
5917 <p>C: "GET FX_SEND INFO 0 1"
5918 </p>
5919 <p>S: "NAME: Delay Send (Internal)"
5920 </p>
5921 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5922 </p>
5923 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5924 </p>
5925 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5926 </p>
5927 <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5928 </p>
5929 <p>&nbsp;&nbsp;&nbsp;"."
5930 </p>
5931 </blockquote><p>
5932
5933 </p>
5934 <a name="SET FX_SEND NAME"></a><br /><hr />
5935 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5936 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5937 Changing effect send's name</h3>
5938
5939 <p>The front-end can alter the current name of an effect
5940 send entity by sending the following command:
5941 </p>
5942 <p>
5943 </p>
5944 <blockquote class="text">
5945 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5946 </p>
5947 </blockquote><p>
5948
5949 </p>
5950 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5951 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>
5952 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,
5953 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5954 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>
5955 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
5956 &lt;name&gt; is the new name of the effect send entity, which
5957 does not have to be unique (name MUST be encapsulated into apostrophes
5958 and supports escape sequences as described in chapter
5959 "<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>").
5960
5961 </p>
5962 <p>Possible Answers:
5963 </p>
5964 <p>
5965 </p>
5966 <blockquote class="text">
5967 <p>"OK" -
5968 </p>
5969 <blockquote class="text">
5970 <p>on success
5971 </p>
5972 </blockquote>
5973
5974
5975 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5976 </p>
5977 <blockquote class="text">
5978 <p>in case it failed, providing an appropriate error code and error message
5979 </p>
5980 </blockquote>
5981
5982
5983 </blockquote><p>
5984
5985 </p>
5986 <p>Example:
5987 </p>
5988 <p>
5989 </p>
5990 <blockquote class="text">
5991 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5992 </p>
5993 <p>S: "OK"
5994 </p>
5995 </blockquote><p>
5996
5997 </p>
5998 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5999 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6000 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
6001 Altering effect send's audio routing</h3>
6002
6003 <p>The front-end can alter the destination of an effect send's audio channel on a specific
6004 sampler channel by sending the following command:
6005 </p>
6006 <p>
6007 </p>
6008 <blockquote class="text">
6009 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
6010 </p>
6011 </blockquote><p>
6012
6013 </p>
6014 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6015 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>
6016 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,
6017 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6018 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>
6019 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,
6020 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
6021 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
6022 the audio channel of the selected audio output device where &lt;audio-src&gt;
6023 should be routed to. If an internal send effect is assigned
6024 to the effect send, then this setting defines the audio
6025 channel routing to that effect instance respectively.
6026 </p>
6027 <p>Note that effect sends can only route audio to the same audio output
6028 device as assigned to the effect send's sampler channel. Also note that an
6029 effect send entity does always have exactly as much audio channels as its
6030 sampler channel. So if the sampler channel is stereo, the effect send does
6031 have two audio channels as well. Also keep in mind that the amount of audio
6032 channels on a sampler channel might be dependant not only to the deployed
6033 sampler engine on the sampler channel, but also dependant to the instrument
6034 currently loaded. However you can (effectively) turn an i.e. stereo effect
6035 send into a mono one by simply altering its audio routing appropriately.
6036 </p>
6037 <p>Possible Answers:
6038 </p>
6039 <p>
6040 </p>
6041 <blockquote class="text">
6042 <p>"OK" -
6043 </p>
6044 <blockquote class="text">
6045 <p>on success
6046 </p>
6047 </blockquote>
6048
6049
6050 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6051 </p>
6052 <blockquote class="text">
6053 <p>if audio output channel was set, but there are noteworthy
6054 issue(s) related, providing an appropriate warning code and
6055 warning message
6056 </p>
6057 </blockquote>
6058
6059
6060 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6061 </p>
6062 <blockquote class="text">
6063 <p>in case it failed, providing an appropriate error code and error message
6064 </p>
6065 </blockquote>
6066
6067
6068 </blockquote><p>
6069
6070 </p>
6071 <p>Example:
6072 </p>
6073 <p>
6074 </p>
6075 <blockquote class="text">
6076 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
6077 </p>
6078 <p>S: "OK"
6079 </p>
6080 </blockquote><p>
6081
6082 </p>
6083 <a name="SET FX_SEND EFFECT"></a><br /><hr />
6084 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6085 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
6086 Assigning destination effect to an effect send</h3>
6087
6088 <p>The front-end can (re-)assign a destination effect to an
6089 effect send by sending the following command:
6090 </p>
6091 <p>
6092 </p>
6093 <blockquote class="text">
6094 <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
6095 </p>
6096 </blockquote><p>
6097
6098 </p>
6099 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6100 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>
6101 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,
6102 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6103 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>
6104 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,
6105 &lt;effect-chain&gt; by the numerical ID of the destination
6106 effect chain as returned by the
6107 <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
6108 or
6109 <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
6110 command and &lt;chain-pos&gt; reflects the exact effect
6111 chain position in the effect chain which hosts the actual
6112 destination effect.
6113 </p>
6114 <p>Possible Answers:
6115 </p>
6116 <p>
6117 </p>
6118 <blockquote class="text">
6119 <p>"OK" -
6120 </p>
6121 <blockquote class="text">
6122 <p>on success
6123 </p>
6124 </blockquote>
6125
6126
6127 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6128 </p>
6129 <blockquote class="text">
6130 <p>in case it failed, providing an appropriate error code and error message
6131 </p>
6132 </blockquote>
6133
6134
6135 </blockquote><p>
6136
6137 </p>
6138 <p>Example:
6139 </p>
6140 <p>
6141 </p>
6142 <blockquote class="text">
6143 <p>C: "SET FX_SEND EFFECT 0 0 2 5"
6144 </p>
6145 <p>S: "OK"
6146 </p>
6147 </blockquote><p>
6148
6149 </p>
6150 <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
6151 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6152 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
6153 Removing destination effect from an effect send</h3>
6154
6155 <p>The front-end can (re-)assign a destination effect to an
6156 effect send by sending the following command:
6157 </p>
6158 <p>
6159 </p>
6160 <blockquote class="text">
6161 <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
6162 </p>
6163 </blockquote><p>
6164
6165 </p>
6166 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6167 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>
6168 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,
6169 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6170 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>
6171 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.
6172 </p>
6173 <p>After the destination effect has been removed from the
6174 effect send, the audio signal of the effect send will be
6175 routed directly to the audio output device, according to the
6176 audio channel routing setting of the effect send.
6177
6178 </p>
6179 <p>Possible Answers:
6180 </p>
6181 <p>
6182 </p>
6183 <blockquote class="text">
6184 <p>"OK" -
6185 </p>
6186 <blockquote class="text">
6187 <p>on success
6188 </p>
6189 </blockquote>
6190
6191
6192 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6193 </p>
6194 <blockquote class="text">
6195 <p>in case it failed, providing an appropriate error code and error message
6196 </p>
6197 </blockquote>
6198
6199
6200 </blockquote><p>
6201
6202 </p>
6203 <p>Example:
6204 </p>
6205 <p>
6206 </p>
6207 <blockquote class="text">
6208 <p>C: "REMOVE FX_SEND EFFECT 0 0"
6209 </p>
6210 <p>S: "OK"
6211 </p>
6212 </blockquote><p>
6213
6214 </p>
6215 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
6216 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6217 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6218 Altering effect send's MIDI controller</h3>
6219
6220 <p>The front-end can alter the MIDI controller of an effect
6221 send entity by sending the following command:
6222 </p>
6223 <p>
6224 </p>
6225 <blockquote class="text">
6226 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
6227 </p>
6228 </blockquote><p>
6229
6230 </p>
6231 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6232 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>
6233 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,
6234 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6235 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>
6236 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
6237 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
6238 able to modify the effect send's send level.
6239 </p>
6240 <p>Possible Answers:
6241 </p>
6242 <p>
6243 </p>
6244 <blockquote class="text">
6245 <p>"OK" -
6246 </p>
6247 <blockquote class="text">
6248 <p>on success
6249 </p>
6250 </blockquote>
6251
6252
6253 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6254 </p>
6255 <blockquote class="text">
6256 <p>if MIDI controller was set, but there are noteworthy
6257 issue(s) related, providing an appropriate warning code and
6258 warning message
6259 </p>
6260 </blockquote>
6261
6262
6263 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6264 </p>
6265 <blockquote class="text">
6266 <p>in case it failed, providing an appropriate error code and error message
6267 </p>
6268 </blockquote>
6269
6270
6271 </blockquote><p>
6272
6273 </p>
6274 <p>Example:
6275 </p>
6276 <p>
6277 </p>
6278 <blockquote class="text">
6279 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
6280 </p>
6281 <p>S: "OK"
6282 </p>
6283 </blockquote><p>
6284
6285 </p>
6286 <a name="SET FX_SEND LEVEL"></a><br /><hr />
6287 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6288 <a name="rfc.section.6.4.38"></a><h3>6.4.38.&nbsp;
6289 Altering effect send's send level</h3>
6290
6291 <p>The front-end can alter the current send level of an effect
6292 send entity by sending the following command:
6293 </p>
6294 <p>
6295 </p>
6296 <blockquote class="text">
6297 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
6298 </p>
6299 </blockquote><p>
6300
6301 </p>
6302 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6303 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>
6304 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,
6305 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6306 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>
6307 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
6308 &lt;volume&gt; is an optionally dotted positive number (a value
6309 smaller than 1.0 means attenuation, whereas a value greater than
6310 1.0 means amplification) reflecting the new send level.
6311 </p>
6312 <p>Possible Answers:
6313 </p>
6314 <p>
6315 </p>
6316 <blockquote class="text">
6317 <p>"OK" -
6318 </p>
6319 <blockquote class="text">
6320 <p>on success
6321 </p>
6322 </blockquote>
6323
6324
6325 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6326 </p>
6327 <blockquote class="text">
6328 <p>if new send level was set, but there are noteworthy
6329 issue(s) related, providing an appropriate warning code and
6330 warning message
6331 </p>
6332 </blockquote>
6333
6334
6335 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6336 </p>
6337 <blockquote class="text">
6338 <p>in case it failed, providing an appropriate error code and error message
6339 </p>
6340 </blockquote>
6341
6342
6343 </blockquote><p>
6344
6345 </p>
6346 <p>Example:
6347 </p>
6348 <p>
6349 </p>
6350 <blockquote class="text">
6351 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
6352 </p>
6353 <p>S: "OK"
6354 </p>
6355 </blockquote><p>
6356
6357 </p>
6358 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
6359 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6360 <a name="rfc.section.6.4.39"></a><h3>6.4.39.&nbsp;
6361 Sending MIDI messages to sampler channel</h3>
6362
6363 <p>The front-end can send MIDI events to a specific sampler channel
6364 by sending the following command:
6365 </p>
6366 <p>
6367 </p>
6368 <blockquote class="text">
6369 <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
6370 </p>
6371 </blockquote><p>
6372
6373 </p>
6374 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6375 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>
6376 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,
6377 &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6378 specifies the MIDI message type. Currently, the following MIDI messages are supported:
6379 </p>
6380 <p>
6381 </p>
6382 <blockquote class="text">
6383 <p>"NOTE_ON" -
6384 </p>
6385 <blockquote class="text">
6386 <p>For turning on MIDI notes, where &lt;arg1&gt;
6387 specifies the key number and &lt;arg2&gt; the velocity
6388 as described in the MIDI specification.
6389 </p>
6390 </blockquote>
6391
6392
6393 <p>"NOTE_OFF" -
6394 </p>
6395 <blockquote class="text">
6396 <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6397 specifies the key number and &lt;arg2&gt; the velocity
6398 as described in the MIDI specification.
6399 </p>
6400 </blockquote>
6401
6402
6403 <p>"CC" -
6404 </p>
6405 <blockquote class="text">
6406 <p>For changing a MIDI controller, where &lt;arg1&gt;
6407 specifies the controller number and &lt;arg2&gt; the
6408 new value of the controller as described in the Control
6409 Change section of the MIDI specification.
6410 </p>
6411 </blockquote>
6412
6413
6414 </blockquote><p>
6415
6416 </p>
6417 <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6418 and no realtime guarantee whatsoever will be made!
6419 </p>
6420 <p>Possible Answers:
6421 </p>
6422 <p>
6423 </p>
6424 <blockquote class="text">
6425 <p>"OK" -
6426 </p>
6427 <blockquote class="text">
6428 <p>on success
6429 </p>
6430 </blockquote>
6431
6432
6433 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6434 </p>
6435 <blockquote class="text">
6436 <p>in case it failed, providing an appropriate error code and error message
6437 </p>
6438 </blockquote>
6439
6440
6441 </blockquote><p>
6442
6443 </p>
6444 <p>Example:
6445 </p>
6446 <p>
6447 </p>
6448 <blockquote class="text">
6449 <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6450 </p>
6451 <p>S: "OK"
6452 </p>
6453 </blockquote><p>
6454
6455 </p>
6456 <a name="RESET CHANNEL"></a><br /><hr />
6457 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6458 <a name="rfc.section.6.4.40"></a><h3>6.4.40.&nbsp;
6459 Resetting a sampler channel</h3>
6460
6461 <p>The front-end can reset a particular sampler channel by sending the following command:
6462 </p>
6463 <p>
6464 </p>
6465 <blockquote class="text">
6466 <p>RESET CHANNEL &lt;sampler-channel&gt;
6467 </p>
6468 </blockquote><p>
6469
6470 </p>
6471 <p>
6472 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6473 This will cause the engine on that sampler channel, its voices and
6474 eventually disk streams and all control and status variables to be
6475 reset.
6476 </p>
6477 <p>Possible Answers:
6478 </p>
6479 <p>
6480 </p>
6481 <blockquote class="text">
6482 <p>"OK" -
6483 </p>
6484 <blockquote class="text">
6485 <p>on success
6486 </p>
6487 </blockquote>
6488
6489
6490 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6491 </p>
6492 <blockquote class="text">
6493 <p>if channel was reset, but there are noteworthy issue(s)
6494 related, providing an appropriate warning code and warning
6495 message
6496 </p>
6497 </blockquote>
6498
6499
6500 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6501 </p>
6502 <blockquote class="text">
6503 <p>in case it failed, providing an appropriate error code and
6504 error message
6505 </p>
6506 </blockquote>
6507
6508
6509 </blockquote><p>
6510
6511 </p>
6512 <p>Examples:
6513 </p>
6514 <p>
6515 </p>
6516 <blockquote class="text">
6517 <p>
6518 </p>
6519 </blockquote><p>
6520
6521 </p>
6522 <a name="anchor12"></a><br /><hr />
6523 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6524 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6525 Controlling connection</h3>
6526
6527 <p>The following commands are used to control the connection to LinuxSampler.
6528 </p>
6529 <a name="SUBSCRIBE"></a><br /><hr />
6530 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6531 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6532 Register front-end for receiving event messages</h3>
6533
6534 <p>The front-end can register itself to the LinuxSampler application to
6535 be informed about noteworthy events by sending this command:
6536 </p>
6537 <p>
6538 </p>
6539 <blockquote class="text">
6540 <p>SUBSCRIBE &lt;event-id&gt;
6541 </p>
6542 </blockquote><p>
6543
6544 </p>
6545 <p>where &lt;event-id&gt; will be replaced by the respective event that
6546 client wants to subscribe to.
6547 </p>
6548 <p>Possible Answers:
6549 </p>
6550 <p>
6551 </p>
6552 <blockquote class="text">
6553 <p>"OK" -
6554 </p>
6555 <blockquote class="text">
6556 <p>on success
6557 </p>
6558 </blockquote>
6559
6560
6561 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6562 </p>
6563 <blockquote class="text">
6564 <p>if registration succeeded, but there are noteworthy
6565 issue(s) related, providing an appropriate warning code and
6566 warning message
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>in case it failed, providing an appropriate error code and
6575 error message
6576 </p>
6577 </blockquote>
6578
6579
6580 </blockquote><p>
6581
6582 </p>
6583 <p>Examples:
6584 </p>
6585 <p>
6586 </p>
6587 <blockquote class="text">
6588 <p>
6589 </p>
6590 </blockquote><p>
6591
6592 </p>
6593 <a name="UNSUBSCRIBE"></a><br /><hr />
6594 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6595 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6596 Unregister front-end for not receiving event messages</h3>
6597
6598 <p>The front-end can unregister itself if it doesn't want to receive event
6599 messages anymore by sending the following command:
6600 </p>
6601 <p>
6602 </p>
6603 <blockquote class="text">
6604 <p>UNSUBSCRIBE &lt;event-id&gt;
6605 </p>
6606 </blockquote><p>
6607
6608 </p>
6609 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6610 client doesn't want to receive anymore.
6611 </p>
6612 <p>Possible Answers:
6613 </p>
6614 <p>
6615 </p>
6616 <blockquote class="text">
6617 <p>"OK" -
6618 </p>
6619 <blockquote class="text">
6620 <p>on success
6621 </p>
6622 </blockquote>
6623
6624
6625 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6626 </p>
6627 <blockquote class="text">
6628 <p>if unregistration succeeded, but there are noteworthy
6629 issue(s) related, providing an appropriate warning code and
6630 warning message
6631 </p>
6632 </blockquote>
6633
6634
6635 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6636 </p>
6637 <blockquote class="text">
6638 <p>in case it failed, providing an appropriate error code and
6639 error message
6640 </p>
6641 </blockquote>
6642
6643
6644 </blockquote><p>
6645
6646 </p>
6647 <p>Examples:
6648 </p>
6649 <p>
6650 </p>
6651 <blockquote class="text">
6652 <p>
6653 </p>
6654 </blockquote><p>
6655
6656 </p>
6657 <a name="SET ECHO"></a><br /><hr />
6658 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6659 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6660 Enable or disable echo of commands</h3>
6661
6662 <p>To enable or disable back sending of commands to the client the following command can be used:
6663 </p>
6664 <p>
6665 </p>
6666 <blockquote class="text">
6667 <p>SET ECHO &lt;value&gt;
6668 </p>
6669 </blockquote><p>
6670
6671 </p>
6672 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6673 or "0" to disable echo mode. When echo mode is enabled, all
6674 commands send to LinuxSampler will be immediately send back and
6675 after this echo the actual response to the command will be
6676 returned. Echo mode will only be altered for the client connection
6677 that issued the "SET ECHO" command, not globally for all client
6678 connections.
6679 </p>
6680 <p>Possible Answers:
6681 </p>
6682 <p>
6683 </p>
6684 <blockquote class="text">
6685 <p>"OK" -
6686 </p>
6687 <blockquote class="text">
6688 <p>usually
6689 </p>
6690 </blockquote>
6691
6692
6693 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6694 </p>
6695 <blockquote class="text">
6696 <p>on syntax error, e.g. non boolean value
6697 </p>
6698 </blockquote>
6699
6700
6701 </blockquote><p>
6702
6703 </p>
6704 <p>Examples:
6705 </p>
6706 <p>
6707 </p>
6708 <blockquote class="text">
6709 <p>
6710 </p>
6711 </blockquote><p>
6712
6713 </p>
6714 <a name="QUIT"></a><br /><hr />
6715 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6716 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6717 Close client connection</h3>
6718
6719 <p>The client can close its network connection to LinuxSampler by sending the following command:
6720 </p>
6721 <p>
6722 </p>
6723 <blockquote class="text">
6724 <p>QUIT
6725 </p>
6726 </blockquote><p>
6727
6728 </p>
6729 <p>This is probably more interesting for manual telnet connections to
6730 LinuxSampler than really useful for a front-end implementation.
6731 </p>
6732 <a name="anchor13"></a><br /><hr />
6733 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6734 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6735 Global commands</h3>
6736
6737 <p>The following commands have global impact on the sampler.
6738 </p>
6739 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6740 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6741 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6742 Current number of active voices</h3>
6743
6744 <p>The front-end can ask for the current number of active voices on
6745 the sampler by sending the following command:
6746 </p>
6747 <p>
6748 </p>
6749 <blockquote class="text">
6750 <p>GET TOTAL_VOICE_COUNT
6751 </p>
6752 </blockquote><p>
6753
6754 </p>
6755 <p>Possible Answers:
6756 </p>
6757 <p>
6758 </p>
6759 <blockquote class="text">
6760 <p>LinuxSampler will answer by returning the number of all active
6761 voices on the sampler.
6762 </p>
6763 </blockquote><p>
6764
6765 </p>
6766 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6767 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6768 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6769 Maximum amount of active voices</h3>
6770
6771 <p>The front-end can ask for the maximum number of active voices
6772 by sending the following command:
6773 </p>
6774 <p>
6775 </p>
6776 <blockquote class="text">
6777 <p>GET TOTAL_VOICE_COUNT_MAX
6778 </p>
6779 </blockquote><p>
6780
6781 </p>
6782 <p>Possible Answers:
6783 </p>
6784 <p>
6785 </p>
6786 <blockquote class="text">
6787 <p>LinuxSampler will answer by returning the maximum number
6788 of active voices.
6789 </p>
6790 </blockquote><p>
6791
6792 </p>
6793 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6794 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6795 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6796 Current number of active disk streams</h3>
6797
6798 <p>The front-end can ask for the current number of active disk streams on
6799 the sampler by sending the following command:
6800 </p>
6801 <p>
6802 </p>
6803 <blockquote class="text">
6804 <p>GET TOTAL_STREAM_COUNT
6805 </p>
6806 </blockquote><p>
6807
6808 </p>
6809 <p>Possible Answers:
6810 </p>
6811 <p>
6812 </p>
6813 <blockquote class="text">
6814 <p>LinuxSampler will answer by returning the number of all active
6815 disk streams on the sampler.
6816 </p>
6817 </blockquote><p>
6818
6819 </p>
6820 <a name="RESET"></a><br /><hr />
6821 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6822 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6823 Reset sampler</h3>
6824
6825 <p>The front-end can reset the whole sampler by sending the following command:
6826 </p>
6827 <p>
6828 </p>
6829 <blockquote class="text">
6830 <p>RESET
6831 </p>
6832 </blockquote><p>
6833
6834 </p>
6835 <p>Possible Answers:
6836 </p>
6837 <p>
6838 </p>
6839 <blockquote class="text">
6840 <p>"OK" -
6841 </p>
6842 <blockquote class="text">
6843 <p>always
6844 </p>
6845 </blockquote>
6846
6847
6848 </blockquote><p>
6849
6850 </p>
6851 <p>Examples:
6852 </p>
6853 <p>
6854 </p>
6855 <blockquote class="text">
6856 <p>
6857 </p>
6858 </blockquote><p>
6859
6860 </p>
6861 <a name="GET SERVER INFO"></a><br /><hr />
6862 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6863 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6864 General sampler informations</h3>
6865
6866 <p>The client can ask for general informations about the LinuxSampler
6867 instance by sending the following command:
6868 </p>
6869 <p>
6870 </p>
6871 <blockquote class="text">
6872 <p>GET SERVER INFO
6873 </p>
6874 </blockquote><p>
6875
6876 </p>
6877 <p>Possible Answers:
6878 </p>
6879 <p>
6880 </p>
6881 <blockquote class="text">
6882 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6883 Each answer line begins with the information category name
6884 followed by a colon and then a space character &lt;SP&gt; and finally
6885 the info character string to that information category. At the
6886 moment the following categories are defined:
6887
6888 </p>
6889 <p>
6890 </p>
6891 <blockquote class="text">
6892 <p>DESCRIPTION -
6893 </p>
6894 <blockquote class="text">
6895 <p>arbitrary textual description about the sampler
6896 (note that the character string may contain
6897 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6898 </p>
6899 </blockquote>
6900
6901
6902 <p>VERSION -
6903 </p>
6904 <blockquote class="text">
6905 <p>version of the sampler
6906 </p>
6907 </blockquote>
6908
6909
6910 <p>PROTOCOL_VERSION -
6911 </p>
6912 <blockquote class="text">
6913 <p>version of the LSCP specification the sampler
6914 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)
6915 </p>
6916 </blockquote>
6917
6918
6919 <p>INSTRUMENTS_DB_SUPPORT -
6920 </p>
6921 <blockquote class="text">
6922 <p>either yes or no, specifies whether the
6923 sampler is build with instruments database support.
6924 </p>
6925 </blockquote>
6926
6927
6928 </blockquote>
6929
6930
6931 </blockquote><p>
6932
6933 </p>
6934 <p>The mentioned fields above don't have to be in particular order.
6935 Other fields might be added in future.
6936 </p>
6937 <p>Example:
6938 </p>
6939 <p>
6940 </p>
6941 <blockquote class="text">
6942 <p>C: "GET SERVER INFO"
6943 </p>
6944 <p>S: "DESCRIPTION: LinuxSampler - modular, streaming capable sampler"
6945 </p>
6946 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0.0.svn23"
6947 </p>
6948 <p>&nbsp;&nbsp;&nbsp;"PROTOCOL_VERSION: 1.5"
6949 </p>
6950 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENTS_DB_SUPPORT: no"
6951 </p>
6952 <p>&nbsp;&nbsp;&nbsp;"."
6953 </p>
6954 </blockquote><p>
6955
6956 </p>
6957 <a name="GET VOLUME"></a><br /><hr />
6958 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6959 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6960 Getting global volume attenuation</h3>
6961
6962 <p>The client can ask for the current global sampler-wide volume
6963 attenuation by sending the following command:
6964 </p>
6965 <p>
6966 </p>
6967 <blockquote class="text">
6968 <p>GET VOLUME
6969 </p>
6970 </blockquote><p>
6971
6972 </p>
6973 <p>Possible Answers:
6974 </p>
6975 <p>
6976 </p>
6977 <blockquote class="text">
6978 <p>The sampler will always answer by returning the optional
6979 dotted floating point coefficient, reflecting the current
6980 global volume attenuation.
6981
6982 </p>
6983 </blockquote><p>
6984
6985 </p>
6986 <p>Note: it is up to the respective sampler engine whether to obey
6987 that global volume parameter or not, but in general all engines SHOULD
6988 use this parameter.
6989 </p>
6990 <a name="SET VOLUME"></a><br /><hr />
6991 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6992 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6993 Setting global volume attenuation</h3>
6994
6995 <p>The client can alter the current global sampler-wide volume
6996 attenuation by sending the following command:
6997 </p>
6998 <p>
6999 </p>
7000 <blockquote class="text">
7001 <p>SET VOLUME &lt;volume&gt;
7002 </p>
7003 </blockquote><p>
7004
7005 </p>
7006 <p>Where &lt;volume&gt; should be replaced by the optional dotted
7007 floating point value, reflecting the new global volume parameter.
7008 This value might usually be in the range between 0.0 and 1.0, that
7009 is for attenuating the overall volume.
7010 </p>
7011 <p>Possible Answers:
7012 </p>
7013 <p>
7014 </p>
7015 <blockquote class="text">
7016 <p>"OK" -
7017 </p>
7018 <blockquote class="text">
7019 <p>on success
7020 </p>
7021 </blockquote>
7022
7023
7024 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7025 </p>
7026 <blockquote class="text">
7027 <p>if the global volume was set, but there are noteworthy
7028 issue(s) related, providing an appropriate warning code and
7029 warning message
7030 </p>
7031 </blockquote>
7032
7033
7034 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7035 </p>
7036 <blockquote class="text">
7037 <p>in case it failed, providing an appropriate error code and error message
7038 </p>
7039 </blockquote>
7040
7041
7042 </blockquote><p>
7043
7044 </p>
7045 <a name="GET VOICES"></a><br /><hr />
7046 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7047 <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
7048 Getting global voice limit</h3>
7049
7050 <p>The client can ask for the current global sampler-wide limit
7051 for maximum voices by sending the following command:
7052 </p>
7053 <p>
7054 </p>
7055 <blockquote class="text">
7056 <p>GET VOICES
7057 </p>
7058 </blockquote><p>
7059
7060 </p>
7061 <p>Possible Answers:
7062 </p>
7063 <p>
7064 </p>
7065 <blockquote class="text">
7066 <p>LinuxSampler will answer by returning the number for
7067 the current limit of maximum voices.
7068 </p>
7069 </blockquote><p>
7070
7071 </p>
7072 <p>The voice limit setting defines how many voices should maximum
7073 be processed by the sampler at the same time. If the user
7074 triggers new notes which would exceed that voice limit, the
7075 sampler engine will react by stealing old voices for those
7076 newly triggered notes. Note that the amount of voices triggered
7077 by a new note can be larger than one and is dependent to the
7078 respective instrument and probably further criterias.
7079 </p>
7080 <a name="SET VOICES"></a><br /><hr />
7081 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7082 <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
7083 Setting global voice limit</h3>
7084
7085 <p>The client can alter the current global sampler-wide limit
7086 for maximum voices by sending the following command:
7087 </p>
7088 <p>
7089 </p>
7090 <blockquote class="text">
7091 <p>SET VOICES &lt;max-voices&gt;
7092 </p>
7093 </blockquote><p>
7094
7095 </p>
7096 <p>Where &lt;max-voices&gt; should be replaced by the integer
7097 value, reflecting the new global amount limit of maximum voices.
7098 This value has to be larger than 0.
7099 </p>
7100 <p>Possible Answers:
7101 </p>
7102 <p>
7103 </p>
7104 <blockquote class="text">
7105 <p>"OK" -
7106 </p>
7107 <blockquote class="text">
7108 <p>on success
7109 </p>
7110 </blockquote>
7111
7112
7113 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7114 </p>
7115 <blockquote class="text">
7116 <p>if the voice limit was set, but there are noteworthy
7117 issue(s) related, providing an appropriate warning code and
7118 warning message
7119 </p>
7120 </blockquote>
7121
7122
7123 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7124 </p>
7125 <blockquote class="text">
7126 <p>in case it failed, providing an appropriate error code and error message
7127 </p>
7128 </blockquote>
7129
7130
7131 </blockquote><p>
7132
7133 </p>
7134 <p>Note: the given value will be passed to all sampler engine instances.
7135 The total amount of maximum voices on the running system might thus
7136 be as big as the given value multiplied by the current amount of engine
7137 instances.
7138 </p>
7139 <p>Caution: when adjusting the voice limit, you SHOULD also
7140 adjust the disk stream limit respectively and vice versa.
7141 </p>
7142 <a name="GET STREAMS"></a><br /><hr />
7143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7144 <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
7145 Getting global disk stream limit</h3>
7146
7147 <p>The client can ask for the current global sampler-wide limit
7148 for maximum disk streams by sending the following command:
7149 </p>
7150 <p>
7151 </p>
7152 <blockquote class="text">
7153 <p>GET STREAMS
7154 </p>
7155 </blockquote><p>
7156
7157 </p>
7158 <p>Possible Answers:
7159 </p>
7160 <p>
7161 </p>
7162 <blockquote class="text">
7163 <p>LinuxSampler will answer by returning the number for
7164 the current limit of maximum disk streams.
7165 </p>
7166 </blockquote><p>
7167
7168 </p>
7169 <p>The disk stream limit setting defines how many disk streams should
7170 maximum be processed by a sampler engine at the same time. The
7171 higher this value, the more memory (RAM) will be occupied, since
7172 every disk streams allocates a certain buffer size for being able
7173 to perform its streaming operations.
7174 </p>
7175 <a name="SET STREAMS"></a><br /><hr />
7176 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7177 <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
7178 Setting global disk stream limit</h3>
7179
7180 <p>The client can alter the current global sampler-wide limit
7181 for maximum disk streams by sending the following command:
7182 </p>
7183 <p>
7184 </p>
7185 <blockquote class="text">
7186 <p>SET STREAMS &lt;max-streams&gt;
7187 </p>
7188 </blockquote><p>
7189
7190 </p>
7191 <p>Where &lt;max-streams&gt; should be replaced by the integer
7192 value, reflecting the new global amount limit of maximum disk streams.
7193 This value has to be positive.
7194 </p>
7195 <p>Possible Answers:
7196 </p>
7197 <p>
7198 </p>
7199 <blockquote class="text">
7200 <p>"OK" -
7201 </p>
7202 <blockquote class="text">
7203 <p>on success
7204 </p>
7205 </blockquote>
7206
7207
7208 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7209 </p>
7210 <blockquote class="text">
7211 <p>if the disk stream limit was set, but there are noteworthy
7212 issue(s) related, providing an appropriate warning code and
7213 warning message
7214 </p>
7215 </blockquote>
7216
7217
7218 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7219 </p>
7220 <blockquote class="text">
7221 <p>in case it failed, providing an appropriate error code and error message
7222 </p>
7223 </blockquote>
7224
7225
7226 </blockquote><p>
7227
7228 </p>
7229 <p>Note: the given value will be passed to all sampler engine instances.
7230 The total amount of maximum disk streams on the running system might
7231 thus be as big as the given value multiplied by the current amount of
7232 engine instances.
7233 </p>
7234 <p>Caution: when adjusting the disk stream limit, you SHOULD also
7235 adjust the voice limit respectively and vice versa.
7236 </p>
7237 <a name="MIDI Instrument Mapping"></a><br /><hr />
7238 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7239 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
7240 MIDI Instrument Mapping</h3>
7241
7242 <p>The MIDI protocol provides a way to switch between instruments
7243 by sending so called MIDI bank select and MIDI program change
7244 messages which are essentially just numbers. The following commands
7245 allow to actually map arbitrary MIDI bank select / program change
7246 numbers with real instruments.
7247 </p>
7248 <p>The sampler allows to manage an arbitrary amount of MIDI
7249 instrument maps which define which instrument to load on
7250 which MIDI program change message.
7251 </p>
7252 <p>By default, that is when the sampler is launched, there is no
7253 map, thus the sampler will simply ignore all program change
7254 messages. The front-end has to explicitly create at least one
7255 map, add entries to the map and tell the respective sampler
7256 channel(s) which MIDI instrument map to use, so the sampler
7257 knows how to react on a given program change message on the
7258 respective sampler channel, that is by switching to the
7259 respectively defined engine type and loading the respective
7260 instrument. See command
7261 <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>
7262 for how to assign a MIDI instrument map to a sampler channel.
7263 </p>
7264 <p>Also note per MIDI specification a bank select message does not
7265 cause to switch to another instrument. Instead when receiving a
7266 bank select message the bank value will be stored and a subsequent
7267 program change message (which may occur at any time) will finally
7268 cause the sampler to switch to the respective instrument as
7269 reflected by the current MIDI instrument map.
7270 </p>
7271 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
7272 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7273 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
7274 Create a new MIDI instrument map</h3>
7275
7276 <p>The front-end can add a new MIDI instrument map by sending
7277 the following command:
7278 </p>
7279 <p>
7280 </p>
7281 <blockquote class="text">
7282 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
7283 </p>
7284 </blockquote><p>
7285
7286 </p>
7287 <p>Where &lt;name&gt; is an optional argument allowing to
7288 assign a custom name to the new map. MIDI instrument Map
7289 names do not have to be unique, but MUST be encapsulated
7290 into apostrophes and support escape sequences as described
7291 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>".
7292
7293 </p>
7294 <p>Possible Answers:
7295 </p>
7296 <p>
7297 </p>
7298 <blockquote class="text">
7299 <p>"OK[&lt;map&gt;]" -
7300 </p>
7301 <blockquote class="text">
7302 <p>in case a new MIDI instrument map could
7303 be added, where &lt;map&gt; reflects the
7304 unique ID of the newly created MIDI
7305 instrument map
7306 </p>
7307 </blockquote>
7308
7309
7310 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7311 </p>
7312 <blockquote class="text">
7313 <p>when a new map could not be created, which
7314 might never occur in practice
7315 </p>
7316 </blockquote>
7317
7318
7319 </blockquote><p>
7320
7321 </p>
7322 <p>Examples:
7323 </p>
7324 <p>
7325 </p>
7326 <blockquote class="text">
7327 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
7328 </p>
7329 <p>S: "OK[0]"
7330 </p>
7331 </blockquote><p>
7332
7333 </p>
7334 <p>
7335 </p>
7336 <blockquote class="text">
7337 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
7338 </p>
7339 <p>S: "OK[1]"
7340 </p>
7341 </blockquote><p>
7342
7343 </p>
7344 <p>
7345 </p>
7346 <blockquote class="text">
7347 <p>C: "ADD MIDI_INSTRUMENT_MAP"
7348 </p>
7349 <p>S: "OK[5]"
7350 </p>
7351 </blockquote><p>
7352
7353 </p>
7354 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
7355 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7356 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
7357 Delete one particular or all MIDI instrument maps</h3>
7358
7359 <p>The front-end can delete a particular MIDI instrument map
7360 by sending the following command:
7361 </p>
7362 <p>
7363 </p>
7364 <blockquote class="text">
7365 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
7366 </p>
7367 </blockquote><p>
7368
7369 </p>
7370 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
7371 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>
7372 command.
7373 </p>
7374 <p>The front-end can delete all MIDI instrument maps by
7375 sending the following command:
7376 </p>
7377 <p>
7378 </p>
7379 <blockquote class="text">
7380 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
7381 </p>
7382 </blockquote><p>
7383
7384 </p>
7385 <p>Possible Answers:
7386 </p>
7387 <p>
7388 </p>
7389 <blockquote class="text">
7390 <p>"OK" -
7391 </p>
7392 <blockquote class="text">
7393 <p>in case the map(s) could be deleted
7394 </p>
7395 </blockquote>
7396
7397
7398 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7399 </p>
7400 <blockquote class="text">
7401 <p>when the given map does not exist
7402 </p>
7403 </blockquote>
7404
7405
7406 </blockquote><p>
7407
7408 </p>
7409 <p>Examples:
7410 </p>
7411 <p>
7412 </p>
7413 <blockquote class="text">
7414 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7415 </p>
7416 <p>S: "OK"
7417 </p>
7418 </blockquote><p>
7419
7420 </p>
7421 <p>
7422 </p>
7423 <blockquote class="text">
7424 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7425 </p>
7426 <p>S: "OK"
7427 </p>
7428 </blockquote><p>
7429
7430 </p>
7431 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7432 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7433 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7434 Get amount of existing MIDI instrument maps</h3>
7435
7436 <p>The front-end can retrieve the current amount of MIDI
7437 instrument maps by sending the following command:
7438 </p>
7439 <p>
7440 </p>
7441 <blockquote class="text">
7442 <p>GET MIDI_INSTRUMENT_MAPS
7443 </p>
7444 </blockquote><p>
7445
7446 </p>
7447 <p>Possible Answers:
7448 </p>
7449 <p>
7450 </p>
7451 <blockquote class="text">
7452 <p>The sampler will answer by returning the current
7453 number of MIDI instrument maps.
7454 </p>
7455 </blockquote><p>
7456
7457 </p>
7458 <p>Example:
7459 </p>
7460 <p>
7461 </p>
7462 <blockquote class="text">
7463 <p>C: "GET MIDI_INSTRUMENT_MAPS"
7464 </p>
7465 <p>S: "2"
7466 </p>
7467 </blockquote><p>
7468
7469 </p>
7470 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7471 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7472 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7473 Getting all created MIDI instrument maps</h3>
7474
7475 <p>The number of MIDI instrument maps can change on runtime. To get the
7476 current list of MIDI instrument maps, the front-end can send the
7477 following command:
7478 </p>
7479 <p>
7480 </p>
7481 <blockquote class="text">
7482 <p>LIST MIDI_INSTRUMENT_MAPS
7483 </p>
7484 </blockquote><p>
7485
7486 </p>
7487 <p>Possible Answers:
7488 </p>
7489 <p>
7490 </p>
7491 <blockquote class="text">
7492 <p>The sampler will answer by returning a comma separated list
7493 with all MIDI instrument maps' numerical IDs.
7494 </p>
7495 </blockquote><p>
7496
7497 </p>
7498 <p>Example:
7499 </p>
7500 <p>
7501 </p>
7502 <blockquote class="text">
7503 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7504 </p>
7505 <p>S: "0,1,5,12"
7506 </p>
7507 </blockquote><p>
7508
7509 </p>
7510 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7511 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7512 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7513 Getting MIDI instrument map information</h3>
7514
7515 <p>The front-end can ask for the current settings of a MIDI
7516 instrument map by sending the following command:
7517 </p>
7518 <p>
7519 </p>
7520 <blockquote class="text">
7521 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7522 </p>
7523 </blockquote><p>
7524
7525 </p>
7526 <p>Where &lt;map&gt; is the numerical ID of the map the
7527 front-end is interested in as returned by the
7528 <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>
7529 command.
7530 </p>
7531 <p>Possible Answers:
7532 </p>
7533 <p>
7534 </p>
7535 <blockquote class="text">
7536 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7537 Each answer line begins with the settings category name
7538 followed by a colon and then a space character &lt;SP&gt; and finally
7539 the info character string to that setting category. At the
7540 moment the following categories are defined:
7541 </p>
7542 <p>
7543 </p>
7544 <blockquote class="text">
7545 <p>NAME -
7546 </p>
7547 <blockquote class="text">
7548 <p>custom name of the given map,
7549 which does not have to be unique
7550 (note that this character string may contain
7551 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7552 </p>
7553 </blockquote>
7554
7555
7556 <p>DEFAULT -
7557 </p>
7558 <blockquote class="text">
7559 <p>either true or false,
7560 defines whether this map is the default map
7561 </p>
7562 </blockquote>
7563
7564
7565 </blockquote>
7566
7567
7568 </blockquote><p>
7569
7570 </p>
7571 <p>The mentioned fields above don't have to be in particular order.
7572 </p>
7573 <p>Example:
7574 </p>
7575 <p>
7576 </p>
7577 <blockquote class="text">
7578 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7579 </p>
7580 <p>S: "NAME: Standard Map"
7581 </p>
7582 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7583 </p>
7584 <p>&nbsp;&nbsp;&nbsp;"."
7585 </p>
7586 </blockquote><p>
7587
7588 </p>
7589 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7590 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7591 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7592 Renaming a MIDI instrument map</h3>
7593
7594 <p>The front-end can alter the custom name of a MIDI
7595 instrument map by sending the following command:
7596 </p>
7597 <p>
7598 </p>
7599 <blockquote class="text">
7600 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7601 </p>
7602 </blockquote><p>
7603
7604 </p>
7605 <p>Where &lt;map&gt; is the numerical ID of the map and
7606 &lt;name&gt; the new custom name of the map, which does not
7607 have to be unique (name MUST be encapsulated into apostrophes
7608 and supports escape sequences as described in chapter
7609 "<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>").
7610
7611 </p>
7612 <p>Possible Answers:
7613 </p>
7614 <p>
7615 </p>
7616 <blockquote class="text">
7617 <p>"OK" -
7618 </p>
7619 <blockquote class="text">
7620 <p>on success
7621 </p>
7622 </blockquote>
7623
7624
7625 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7626 </p>
7627 <blockquote class="text">
7628 <p>in case the given map does not exist
7629 </p>
7630 </blockquote>
7631
7632
7633 </blockquote><p>
7634
7635 </p>
7636 <p>Example:
7637 </p>
7638 <p>
7639 </p>
7640 <blockquote class="text">
7641 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7642 </p>
7643 <p>S: "OK"
7644 </p>
7645 </blockquote><p>
7646
7647 </p>
7648 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7649 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7650 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7651 Create or replace a MIDI instrument map entry</h3>
7652
7653 <p>The front-end can create a new or replace an existing entry
7654 in a sampler's MIDI instrument map by sending the following
7655 command:
7656 </p>
7657 <p>
7658 </p>
7659 <blockquote class="text">
7660 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7661 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7662 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7663 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7664 </p>
7665 </blockquote><p>
7666
7667 </p>
7668 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7669 &lt;midi_bank&gt; is an integer value between
7670 0..16383 reflecting the MIDI bank select index,
7671 &lt;midi_prog&gt; an
7672 integer value between 0..127 reflecting the MIDI program change
7673 index, &lt;engine_name&gt; a sampler engine name as returned by
7674 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
7675 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7676 of the instrument's file to be deployed (encapsulated into apostrophes,
7677 supporting escape sequences as described in chapter
7678 "<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>"),
7679 &lt;instrument_index&gt; the index (integer value) of the instrument
7680 within the given file, &lt;volume_value&gt; reflects the master
7681 volume of the instrument as optionally dotted number (where a
7682 value &lt; 1.0 means attenuation and a value > 1.0 means
7683 amplification). This parameter easily allows to adjust the
7684 volume of all intruments within a custom instrument map
7685 without having to adjust their instrument files. The
7686 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7687 time of the instrument, that is when the instrument should
7688 be loaded, when freed and has exactly the following
7689 possibilities:
7690 </p>
7691 <p>
7692 </p>
7693 <blockquote class="text">
7694 <p>"ON_DEMAND" -
7695 </p>
7696 <blockquote class="text">
7697 <p>The instrument will be loaded when needed,
7698 that is when demanded by at least one sampler
7699 channel. It will immediately be freed from memory
7700 when not needed by any sampler channel anymore.
7701 </p>
7702 </blockquote>
7703
7704
7705 <p>"ON_DEMAND_HOLD" -
7706 </p>
7707 <blockquote class="text">
7708 <p>The instrument will be loaded when needed,
7709 that is when demanded by at least one sampler
7710 channel. It will be kept in memory even when
7711 not needed by any sampler channel anymore.
7712 Instruments with this mode are only freed
7713 when the sampler is reset or all mapping
7714 entries with this mode (and respective
7715 instrument) are explicitly changed to
7716 "ON_DEMAND" and no sampler channel is using
7717 the instrument anymore.
7718 </p>
7719 </blockquote>
7720
7721
7722 <p>"PERSISTENT" -
7723 </p>
7724 <blockquote class="text">
7725 <p>The instrument will immediately be loaded
7726 into memory when this mapping
7727 command is sent and the instrument is kept all
7728 the time. Instruments with this mode are
7729 only freed when the sampler is reset or all
7730 mapping entries with this mode (and
7731 respective instrument) are explicitly
7732 changed to "ON_DEMAND" and no sampler
7733 channel is using the instrument anymore.
7734 </p>
7735 </blockquote>
7736
7737
7738 <p>not supplied -
7739 </p>
7740 <blockquote class="text">
7741 <p>In case there is no &lt;instr_load_mode&gt;
7742 argument given, it will be up to the
7743 InstrumentManager to decide which mode to use.
7744 Usually it will use "ON_DEMAND" if an entry
7745 for the given instrument does not exist in
7746 the InstrumentManager's list yet, otherwise
7747 if an entry already exists, it will simply
7748 stick with the mode currently reflected by
7749 the already existing entry, that is it will
7750 not change the mode.
7751 </p>
7752 </blockquote>
7753
7754
7755 </blockquote><p>
7756
7757 </p>
7758 <p>
7759 The &lt;instr_load_mode&gt; argument thus allows to define an
7760 appropriate strategy (low memory consumption vs. fast
7761 instrument switching) for each instrument individually. Note, the
7762 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7763 "PERSISTENT" have to be supported by the respective sampler engine
7764 (which is technically the case when the engine provides an
7765 InstrumentManager for its format). If this is not the case the
7766 argument will automatically fall back to the default value
7767 "ON_DEMAND". Also the load mode of one instrument may
7768 automatically change the laod mode of other instrument(s), i.e.
7769 because the instruments are part of the same file and the
7770 engine does not allow a way to manage load modes for them
7771 individually. Due to this, in case the frontend shows the
7772 load modes of entries, the frontend should retrieve the actual
7773 mode by i.e. sending
7774 <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>
7775 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7776 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7777 "<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
7778 mapping entry, useful for frontends for displaying an appropriate name for
7779 mapped instruments (using
7780 <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>).
7781
7782 </p>
7783 <p>
7784 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7785 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7786 however causes the respective "MAP MIDI_INSTRUMENT" command to return
7787 immediately, that is to let the sampler establish the mapping in the
7788 background. So this argument might be especially useful for mappings with
7789 a "PERSISTENT" type, because these have to load the respective instruments
7790 immediately and might thus block for a very long time. It is recommended
7791 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7792 because it has the following drawbacks: as "NON_MODAL" instructions return
7793 immediately, they may not necessarily return an error i.e. when the given
7794 instrument file turns out to be corrupt, beside that subsequent commands
7795 in a LSCP instruction sequence might fail, because mandatory mappings are
7796 not yet completed.
7797
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>usually
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>when the given map or engine does not exist or a value
7816 is out of range
7817 </p>
7818 </blockquote>
7819
7820
7821 </blockquote><p>
7822
7823 </p>
7824 <p>Examples:
7825 </p>
7826 <p>
7827 </p>
7828 <blockquote class="text">
7829 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7830 </p>
7831 <p>S: "OK"
7832 </p>
7833 </blockquote><p>
7834
7835 </p>
7836 <p>
7837 </p>
7838 <blockquote class="text">
7839 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7840 </p>
7841 <p>S: "OK"
7842 </p>
7843 </blockquote><p>
7844
7845 </p>
7846 <p>
7847 </p>
7848 <blockquote class="text">
7849 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7850 </p>
7851 <p>S: "OK"
7852 </p>
7853 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7854 </p>
7855 <p>S: "OK"
7856 </p>
7857 </blockquote><p>
7858
7859 </p>
7860 <p>
7861 </p>
7862 <blockquote class="text">
7863 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7864 </p>
7865 <p>S: "OK"
7866 </p>
7867 </blockquote><p>
7868
7869 </p>
7870 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7871 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7872 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7873 Getting amount of MIDI instrument map entries</h3>
7874
7875 <p>The front-end can query the amount of currently existing
7876 entries in a MIDI instrument map by sending the following
7877 command:
7878 </p>
7879 <p>
7880 </p>
7881 <blockquote class="text">
7882 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7883 </p>
7884 </blockquote><p>
7885
7886 </p>
7887 <p>The front-end can query the amount of currently existing
7888 entries in all MIDI instrument maps by sending the following
7889 command:
7890 </p>
7891 <p>
7892 </p>
7893 <blockquote class="text">
7894 <p>GET MIDI_INSTRUMENTS ALL
7895 </p>
7896 </blockquote><p>
7897
7898 </p>
7899 <p>Possible Answers:
7900 </p>
7901 <p>
7902 </p>
7903 <blockquote class="text">
7904 <p>The sampler will answer by sending the current number of
7905 entries in the MIDI instrument map(s).
7906 </p>
7907 </blockquote><p>
7908
7909 </p>
7910 <p>Example:
7911 </p>
7912 <p>
7913 </p>
7914 <blockquote class="text">
7915 <p>C: "GET MIDI_INSTRUMENTS 0"
7916 </p>
7917 <p>S: "234"
7918 </p>
7919 </blockquote><p>
7920
7921 </p>
7922 <p>
7923 </p>
7924 <blockquote class="text">
7925 <p>C: "GET MIDI_INSTRUMENTS ALL"
7926 </p>
7927 <p>S: "954"
7928 </p>
7929 </blockquote><p>
7930
7931 </p>
7932 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7933 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7934 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7935 Getting indeces of all entries of a MIDI instrument map</h3>
7936
7937 <p>The front-end can query a list of all currently existing
7938 entries in a certain MIDI instrument map by sending the following
7939 command:
7940 </p>
7941 <p>
7942 </p>
7943 <blockquote class="text">
7944 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7945 </p>
7946 </blockquote><p>
7947
7948 </p>
7949 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7950 </p>
7951 <p>The front-end can query a list of all currently existing
7952 entries of all MIDI instrument maps by sending the following
7953 command:
7954 </p>
7955 <p>
7956 </p>
7957 <blockquote class="text">
7958 <p>LIST MIDI_INSTRUMENTS ALL
7959 </p>
7960 </blockquote><p>
7961
7962 </p>
7963 <p>Possible Answers:
7964 </p>
7965 <p>
7966 </p>
7967 <blockquote class="text">
7968 <p>The sampler will answer by sending a comma separated
7969 list of map ID - MIDI bank - MIDI program triples, where
7970 each triple is encapsulated into curly braces. The
7971 list is returned in one single line. Each triple
7972 just reflects the key of the respective map entry,
7973 thus subsequent
7974 <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>
7975 command(s) are necessary to retrieve detailed informations
7976 about each entry.
7977 </p>
7978 </blockquote><p>
7979
7980 </p>
7981 <p>Example:
7982 </p>
7983 <p>
7984 </p>
7985 <blockquote class="text">
7986 <p>C: "LIST MIDI_INSTRUMENTS 0"
7987 </p>
7988 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7989 </p>
7990 </blockquote><p>
7991
7992 </p>
7993 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7994 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7995 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7996 Remove an entry from the MIDI instrument map</h3>
7997
7998 <p>The front-end can delete an entry from a MIDI instrument
7999 map by sending the following command:
8000 </p>
8001 <p>
8002 </p>
8003 <blockquote class="text">
8004 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
8005 </p>
8006 </blockquote><p>
8007
8008 </p>
8009 <p>
8010 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
8011 &lt;midi_bank&gt; is an integer value between 0..16383
8012 reflecting the MIDI bank value and
8013 &lt;midi_prog&gt; an integer value between
8014 0..127 reflecting the MIDI program value of the map's entrie's key
8015 index triple.
8016
8017 </p>
8018 <p>Possible Answers:
8019 </p>
8020 <p>
8021 </p>
8022 <blockquote class="text">
8023 <p>"OK" -
8024 </p>
8025 <blockquote class="text">
8026 <p>usually
8027 </p>
8028 </blockquote>
8029
8030
8031 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8032 </p>
8033 <blockquote class="text">
8034 <p>when index out of bounds
8035 </p>
8036 </blockquote>
8037
8038
8039 </blockquote><p>
8040
8041 </p>
8042 <p>Example:
8043 </p>
8044 <p>
8045 </p>
8046 <blockquote class="text">
8047 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
8048 </p>
8049 <p>S: "OK"
8050 </p>
8051 </blockquote><p>
8052
8053 </p>
8054 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
8055 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8056 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
8057 Get current settings of MIDI instrument map entry</h3>
8058
8059 <p>The front-end can retrieve the current settings of a certain
8060 instrument map entry by sending the following command:
8061 </p>
8062 <p>
8063 </p>
8064 <blockquote class="text">
8065 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
8066 </p>
8067 </blockquote><p>
8068
8069 </p>
8070 <p>
8071 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
8072 &lt;midi_bank&gt; is an integer value between 0..16383
8073 reflecting the MIDI bank value, &lt;midi_bank&gt;
8074 and &lt;midi_prog&gt; an integer value between
8075 0..127 reflecting the MIDI program value of the map's entrie's key
8076 index triple.
8077
8078 </p>
8079 <p>Possible Answers:
8080 </p>
8081 <p>
8082 </p>
8083 <blockquote class="text">
8084 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
8085 separated list. Each answer line begins with the
8086 information category name followed by a colon and then
8087 a space character &lt;SP&gt; and finally the info
8088 character string to that info category. At the moment
8089 the following categories are defined:
8090 </p>
8091 <p>"NAME" -
8092 </p>
8093 <blockquote class="text">
8094 <p>Name for this MIDI instrument map entry (if defined).
8095 This name shall be used by frontends for displaying a
8096 name for this mapped instrument. It can be set and
8097 changed with the
8098 <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>
8099 command and does not have to be unique.
8100 (note that this character string may contain
8101 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
8102 </p>
8103 </blockquote>
8104
8105
8106 <p>"ENGINE_NAME" -
8107 </p>
8108 <blockquote class="text">
8109 <p>Name of the engine to be deployed for this
8110 instrument.
8111 </p>
8112 </blockquote>
8113
8114
8115 <p>"INSTRUMENT_FILE" -
8116 </p>
8117 <blockquote class="text">
8118 <p>File name of the instrument
8119 (note that this path may contain
8120 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
8121 </p>
8122 </blockquote>
8123
8124
8125 <p>"INSTRUMENT_NR" -
8126 </p>
8127 <blockquote class="text">
8128 <p>Index of the instrument within the file.
8129 </p>
8130 </blockquote>
8131
8132
8133 <p>"INSTRUMENT_NAME" -
8134 </p>
8135 <blockquote class="text">
8136 <p>Name of the loaded instrument as reflected by its file.
8137 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
8138 cannot be changed (note that this character string may contain
8139 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
8140 </p>
8141 </blockquote>
8142
8143
8144 <p>"LOAD_MODE" -
8145 </p>
8146 <blockquote class="text">
8147 <p>Life time of instrument
8148 (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).
8149 </p>
8150 </blockquote>
8151
8152
8153 <p>"VOLUME" -
8154 </p>
8155 <blockquote class="text">
8156 <p>master volume of the instrument as optionally
8157 dotted number (where a value &lt; 1.0 means attenuation
8158 and a value > 1.0 means amplification)
8159 </p>
8160 </blockquote>
8161
8162
8163 <p>The mentioned fields above don't have to be in particular order.
8164 </p>
8165 </blockquote><p>
8166
8167 </p>
8168 <p>Example:
8169 </p>
8170 <p>
8171 </p>
8172 <blockquote class="text">
8173 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
8174 </p>
8175 <p>S: "NAME: Drums for Foo Song"
8176 </p>
8177 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
8178 </p>
8179 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
8180 </p>
8181 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8182 </p>
8183 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
8184 </p>
8185 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
8186 </p>
8187 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
8188 </p>
8189 <p>&nbsp;&nbsp;&nbsp;"."
8190 </p>
8191 </blockquote><p>
8192
8193 </p>
8194 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
8195 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8196 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
8197 Clear MIDI instrument map</h3>
8198
8199 <p>The front-end can clear a whole MIDI instrument map, that
8200 is delete all its entries by sending the following command:
8201 </p>
8202 <p>
8203 </p>
8204 <blockquote class="text">
8205 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
8206 </p>
8207 </blockquote><p>
8208
8209 </p>
8210 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
8211 </p>
8212 <p>The front-end can clear all MIDI instrument maps, that
8213 is delete all entries of all maps by sending the following
8214 command:
8215 </p>
8216 <p>
8217 </p>
8218 <blockquote class="text">
8219 <p>CLEAR MIDI_INSTRUMENTS ALL
8220 </p>
8221 </blockquote><p>
8222
8223 </p>
8224 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
8225 maps, only their entries, thus the map's settings like
8226 custom name will be preservevd.
8227 </p>
8228 <p>Possible Answers:
8229 </p>
8230 <p>
8231 </p>
8232 <blockquote class="text">
8233 <p>"OK" -
8234 </p>
8235 <blockquote class="text">
8236 <p>always
8237 </p>
8238 </blockquote>
8239
8240
8241 </blockquote><p>
8242
8243 </p>
8244 <p>Examples:
8245 </p>
8246 <p>
8247 </p>
8248 <blockquote class="text">
8249 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
8250 </p>
8251 <p>S: "OK"
8252 </p>
8253 </blockquote><p>
8254
8255 </p>
8256 <p>
8257 </p>
8258 <blockquote class="text">
8259 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
8260 </p>
8261 <p>S: "OK"
8262 </p>
8263 </blockquote><p>
8264
8265 </p>
8266 <a name="Managing Instruments Database"></a><br /><hr />
8267 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8268 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
8269 Managing Instruments Database</h3>
8270
8271 <p>The following commands describe how to use and manage
8272 the instruments database.
8273 </p>
8274 <p>Notice:
8275 </p>
8276 <p>
8277 </p>
8278 <blockquote class="text">
8279 <p>All command arguments representing a path or
8280 instrument/directory name support escape sequences as described in chapter
8281 "<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>".
8282
8283 </p>
8284 <p>All occurrences of a forward slash in instrument and directory
8285 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
8286
8287 </p>
8288 </blockquote><p>
8289
8290 </p>
8291 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8292 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8293 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
8294 Creating a new instrument directory</h3>
8295
8296 <p>The front-end can add a new instrument directory to the
8297 instruments database by sending the following command:
8298 </p>
8299 <p>
8300 </p>
8301 <blockquote class="text">
8302 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
8303 </p>
8304 </blockquote><p>
8305
8306 </p>
8307 <p>Where &lt;dir&gt; is the absolute path name of the directory
8308 to be created (encapsulated into apostrophes).
8309 </p>
8310 <p>Possible Answers:
8311 </p>
8312 <p>
8313 </p>
8314 <blockquote class="text">
8315 <p>"OK" -
8316 </p>
8317 <blockquote class="text">
8318 <p>on success
8319 </p>
8320 </blockquote>
8321
8322
8323 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8324 </p>
8325 <blockquote class="text">
8326 <p>when the directory could not be created, which
8327 can happen if the directory already exists or the
8328 name contains not allowed symbols
8329 </p>
8330 </blockquote>
8331
8332
8333 </blockquote><p>
8334
8335 </p>
8336 <p>Examples:
8337 </p>
8338 <p>
8339 </p>
8340 <blockquote class="text">
8341 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
8342 </p>
8343 <p>S: "OK"
8344 </p>
8345 </blockquote><p>
8346
8347 </p>
8348 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8349 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8350 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
8351 Deleting an instrument directory</h3>
8352
8353 <p>The front-end can delete a particular instrument directory
8354 from the instruments database by sending the following command:
8355 </p>
8356 <p>
8357 </p>
8358 <blockquote class="text">
8359 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
8360 </p>
8361 </blockquote><p>
8362
8363 </p>
8364 <p>Where &lt;dir&gt; is the absolute path name of the directory
8365 to delete. The optional FORCE argument can be used to
8366 force the deletion of a non-empty directory and all its content.
8367 </p>
8368 <p>Possible Answers:
8369 </p>
8370 <p>
8371 </p>
8372 <blockquote class="text">
8373 <p>"OK" -
8374 </p>
8375 <blockquote class="text">
8376 <p>if the directory is deleted successfully
8377 </p>
8378 </blockquote>
8379
8380
8381 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8382 </p>
8383 <blockquote class="text">
8384 <p>if the given directory does not exist, or
8385 if trying to delete a non-empty directory,
8386 without using the FORCE argument.
8387 </p>
8388 </blockquote>
8389
8390
8391 </blockquote><p>
8392
8393 </p>
8394 <p>Examples:
8395 </p>
8396 <p>
8397 </p>
8398 <blockquote class="text">
8399 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8400 </p>
8401 <p>S: "OK"
8402 </p>
8403 </blockquote><p>
8404
8405 </p>
8406 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8407 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8408 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8409 Getting amount of instrument directories</h3>
8410
8411 <p>The front-end can retrieve the current amount of
8412 directories in a specific directory by sending the following command:
8413 </p>
8414 <p>
8415 </p>
8416 <blockquote class="text">
8417 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8418 </p>
8419 </blockquote><p>
8420
8421 </p>
8422 <p>Where &lt;dir&gt; should be replaced by the absolute path
8423 name of the directory. If RECURSIVE is specified, the number of
8424 all directories, including those located in subdirectories of the
8425 specified directory, will be returned.
8426 </p>
8427 <p>Possible Answers:
8428 </p>
8429 <p>
8430 </p>
8431 <blockquote class="text">
8432 <p>The current number of instrument directories
8433 in the specified directory.
8434 </p>
8435 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8436 </p>
8437 <blockquote class="text">
8438 <p>if the given directory does not exist.
8439 </p>
8440 </blockquote>
8441
8442
8443 </blockquote><p>
8444
8445 </p>
8446 <p>Example:
8447 </p>
8448 <p>
8449 </p>
8450 <blockquote class="text">
8451 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8452 </p>
8453 <p>S: "2"
8454 </p>
8455 </blockquote><p>
8456
8457 </p>
8458 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8459 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8460 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8461 Listing all directories in specific directory</h3>
8462
8463 <p>The front-end can retrieve the current list of directories
8464 in specific directory by sending the following command:
8465 </p>
8466 <p>
8467 </p>
8468 <blockquote class="text">
8469 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8470 </p>
8471 </blockquote><p>
8472
8473 </p>
8474 <p>Where &lt;dir&gt; should be replaced by the absolute path
8475 name of the directory. If RECURSIVE is specified, the absolute path names
8476 of all directories, including those located in subdirectories of the
8477 specified directory, will be returned.
8478 </p>
8479 <p>Possible Answers:
8480 </p>
8481 <p>
8482 </p>
8483 <blockquote class="text">
8484 <p>A comma separated list of all instrument directories
8485 (encapsulated into apostrophes) in the specified directory.
8486 </p>
8487 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8488 </p>
8489 <blockquote class="text">
8490 <p>if the given directory does not exist.
8491 </p>
8492 </blockquote>
8493
8494
8495 </blockquote><p>
8496
8497 </p>
8498 <p>Example:
8499 </p>
8500 <p>
8501 </p>
8502 <blockquote class="text">
8503 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8504 </p>
8505 <p>S: "'Piano Collection','Percussion Collection'"
8506 </p>
8507 </blockquote><p>
8508
8509 </p>
8510 <p>
8511 </p>
8512 <blockquote class="text">
8513 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8514 </p>
8515 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8516 </p>
8517 </blockquote><p>
8518
8519 </p>
8520 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8521 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8522 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8523 Getting instrument directory information</h3>
8524
8525 <p>The front-end can ask for the current settings of an
8526 instrument directory by sending the following command:
8527 </p>
8528 <p>
8529 </p>
8530 <blockquote class="text">
8531 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8532 </p>
8533 </blockquote><p>
8534
8535 </p>
8536 <p>Where &lt;dir&gt; should be replaced by the absolute path
8537 name of the directory the front-end is interested in.
8538 </p>
8539 <p>Possible Answers:
8540 </p>
8541 <p>
8542 </p>
8543 <blockquote class="text">
8544 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8545 Each answer line begins with the settings category name
8546 followed by a colon and then a space character &lt;SP&gt; and finally
8547 the info character string to that setting category. At the
8548 moment the following categories are defined:
8549 </p>
8550 <p>
8551 </p>
8552 <blockquote class="text">
8553 <p>DESCRIPTION -
8554 </p>
8555 <blockquote class="text">
8556 <p>A brief description of the directory content.
8557 Note that the character string may contain
8558 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8559 </p>
8560 </blockquote>
8561
8562
8563 <p>CREATED -
8564 </p>
8565 <blockquote class="text">
8566 <p>The creation date and time of the directory,
8567 represented in "YYYY-MM-DD HH:MM:SS" format
8568 </p>
8569 </blockquote>
8570
8571
8572 <p>MODIFIED -
8573 </p>
8574 <blockquote class="text">
8575 <p>The date and time of the last modification of the
8576 directory, represented in "YYYY-MM-DD HH:MM:SS" format
8577 </p>
8578 </blockquote>
8579
8580
8581 </blockquote>
8582
8583
8584 </blockquote><p>
8585
8586 </p>
8587 <p>The mentioned fields above don't have to be in particular order.
8588 </p>
8589 <p>Example:
8590 </p>
8591 <p>
8592 </p>
8593 <blockquote class="text">
8594 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8595 </p>
8596 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8597 </p>
8598 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8599 </p>
8600 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8601 </p>
8602 <p>&nbsp;&nbsp;&nbsp;"."
8603 </p>
8604 </blockquote><p>
8605
8606 </p>
8607 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8608 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8609 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8610 Renaming an instrument directory</h3>
8611
8612 <p>The front-end can alter the name of a specific
8613 instrument directory by sending the following command:
8614 </p>
8615 <p>
8616 </p>
8617 <blockquote class="text">
8618 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8619 </p>
8620 </blockquote><p>
8621
8622 </p>
8623 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8624 &lt;name&gt; is the new name for that directory.
8625 </p>
8626 <p>Possible Answers:
8627 </p>
8628 <p>
8629 </p>
8630 <blockquote class="text">
8631 <p>"OK" -
8632 </p>
8633 <blockquote class="text">
8634 <p>on success
8635 </p>
8636 </blockquote>
8637
8638
8639 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8640 </p>
8641 <blockquote class="text">
8642 <p>in case the given directory does not exists,
8643 or if a directory with name equal to the new
8644 name already exists.
8645 </p>
8646 </blockquote>
8647
8648
8649 </blockquote><p>
8650
8651 </p>
8652 <p>Example:
8653 </p>
8654 <p>
8655 </p>
8656 <blockquote class="text">
8657 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8658 </p>
8659 <p>S: "OK"
8660 </p>
8661 </blockquote><p>
8662
8663 </p>
8664 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8665 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8666 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8667 Moving an instrument directory</h3>
8668
8669 <p>The front-end can move a specific
8670 instrument directory by sending the following command:
8671 </p>
8672 <p>
8673 </p>
8674 <blockquote class="text">
8675 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8676 </p>
8677 </blockquote><p>
8678
8679 </p>
8680 <p>Where &lt;dir&gt; is the absolute path name of the directory
8681 to move and &lt;dst&gt; is the location where the directory will
8682 be moved to.
8683 </p>
8684 <p>Possible Answers:
8685 </p>
8686 <p>
8687 </p>
8688 <blockquote class="text">
8689 <p>"OK" -
8690 </p>
8691 <blockquote class="text">
8692 <p>on success
8693 </p>
8694 </blockquote>
8695
8696
8697 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8698 </p>
8699 <blockquote class="text">
8700 <p>in case a given directory does not exists,
8701 or if a directory with name equal to the name
8702 of the specified directory already exists in
8703 the destination directory. Error is also thrown
8704 when trying to move a directory to a subdirectory
8705 of itself.
8706 </p>
8707 </blockquote>
8708
8709
8710 </blockquote><p>
8711
8712 </p>
8713 <p>Example:
8714 </p>
8715 <p>
8716 </p>
8717 <blockquote class="text">
8718 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8719 </p>
8720 <p>S: "OK"
8721 </p>
8722 </blockquote><p>
8723
8724 </p>
8725 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8726 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8727 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8728 Copying instrument directories</h3>
8729
8730 <p>The front-end can copy a specific
8731 instrument directory by sending the following command:
8732 </p>
8733 <p>
8734 </p>
8735 <blockquote class="text">
8736 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8737 </p>
8738 </blockquote><p>
8739
8740 </p>
8741 <p>Where &lt;dir&gt; is the absolute path name of the directory
8742 to copy and &lt;dst&gt; is the location where the directory will
8743 be copied to.
8744 </p>
8745 <p>Possible Answers:
8746 </p>
8747 <p>
8748 </p>
8749 <blockquote class="text">
8750 <p>"OK" -
8751 </p>
8752 <blockquote class="text">
8753 <p>on success
8754 </p>
8755 </blockquote>
8756
8757
8758 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8759 </p>
8760 <blockquote class="text">
8761 <p>in case a given directory does not exists,
8762 or if a directory with name equal to the name
8763 of the specified directory already exists in
8764 the destination directory. Error is also thrown
8765 when trying to copy a directory to a subdirectory
8766 of itself.
8767 </p>
8768 </blockquote>
8769
8770
8771 </blockquote><p>
8772
8773 </p>
8774 <p>Example:
8775 </p>
8776 <p>
8777 </p>
8778 <blockquote class="text">
8779 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8780 </p>
8781 <p>S: "OK"
8782 </p>
8783 </blockquote><p>
8784
8785 </p>
8786 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8787 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8788 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8789 Changing the description of directory</h3>
8790
8791 <p>The front-end can alter the description of a specific
8792 instrument directory by sending the following command:
8793 </p>
8794 <p>
8795 </p>
8796 <blockquote class="text">
8797 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8798 </p>
8799 </blockquote><p>
8800
8801 </p>
8802 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8803 &lt;desc&gt; is the new description for the directory
8804 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8805 "<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>").
8806 </p>
8807 <p>Possible Answers:
8808 </p>
8809 <p>
8810 </p>
8811 <blockquote class="text">
8812 <p>"OK" -
8813 </p>
8814 <blockquote class="text">
8815 <p>on success
8816 </p>
8817 </blockquote>
8818
8819
8820 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8821 </p>
8822 <blockquote class="text">
8823 <p>in case the given directory does not exists.
8824 </p>
8825 </blockquote>
8826
8827
8828 </blockquote><p>
8829
8830 </p>
8831 <p>Example:
8832 </p>
8833 <p>
8834 </p>
8835 <blockquote class="text">
8836 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8837 </p>
8838 <p>S: "OK"
8839 </p>
8840 </blockquote><p>
8841
8842 </p>
8843 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8844 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8845 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8846 Finding directories</h3>
8847
8848 <p>The front-end can search for directories
8849 in specific directory by sending the following command:
8850 </p>
8851 <p>
8852 </p>
8853 <blockquote class="text">
8854 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8855 </p>
8856 </blockquote><p>
8857
8858 </p>
8859 <p>Where &lt;dir&gt; should be replaced by the absolute path
8860 name of the directory to search in. If NON_RECURSIVE is specified, the
8861 directories located in subdirectories of the specified directory will not
8862 be searched. &lt;criteria-list&gt; is a list of search criterias
8863 in form of "key1=val1 key2=val2 ...". The following criterias are
8864 allowed:
8865 </p>
8866 <p>
8867
8868 <p>NAME='&lt;search-string&gt;'
8869 </p>
8870 <blockquote class="text">
8871 <p>Restricts the search to directories, which names
8872 satisfy the supplied search string (encapsulated into apostrophes,
8873 supporting escape sequences as described in chapter
8874 "<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>").
8875 </p>
8876 </blockquote><p>
8877
8878 </p>
8879
8880
8881 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8882 </p>
8883 <blockquote class="text">
8884 <p>Restricts the search to directories, which creation
8885 date satisfies the specified period, where &lt;date-after&gt;
8886 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8887 If &lt;date-after&gt; is omitted the search is restricted to
8888 directories created before &lt;date-before&gt;. If
8889 &lt;date-before&gt; is omitted, the search is restricted
8890 to directories created after &lt;date-after&gt;.
8891 </p>
8892 </blockquote><p>
8893
8894 </p>
8895
8896
8897 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8898 </p>
8899 <blockquote class="text">
8900 <p>Restricts the search to directories, which
8901 date of last modification satisfies the specified period, where
8902 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8903 format. If &lt;date-after&gt; is omitted the search is restricted to
8904 directories, which are last modified before &lt;date-before&gt;. If
8905 &lt;date-before&gt; is omitted, the search is restricted to directories,
8906 which are last modified after &lt;date-after&gt;.
8907 </p>
8908 </blockquote><p>
8909
8910 </p>
8911
8912
8913 <p>DESCRIPTION='&lt;search-string&gt;'
8914 </p>
8915 <blockquote class="text">
8916 <p>Restricts the search to directories with description
8917 that satisfies the supplied search string
8918 (encapsulated into apostrophes, supporting escape
8919 sequences as described in chapter
8920 "<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>").
8921 </p>
8922 </blockquote><p>
8923
8924 </p>
8925
8926
8927 <p>Where &lt;search-string&gt; is either a regular expression, or a
8928 word list separated with spaces for OR search and with '+' for AND search.
8929 </p>
8930 <p>Possible Answers:
8931 </p>
8932 <p>
8933 </p>
8934 <blockquote class="text">
8935 <p>A comma separated list with the absolute path names (encapsulated into
8936 apostrophes) of all directories in the specified directory that satisfy
8937 the supplied search criterias.
8938 </p>
8939 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8940 </p>
8941 <blockquote class="text">
8942 <p>if the given directory does not exist.
8943 </p>
8944 </blockquote>
8945
8946
8947 </blockquote><p>
8948
8949 </p>
8950 <p>Example:
8951 </p>
8952 <p>
8953 </p>
8954 <blockquote class="text">
8955 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8956 </p>
8957 <p>S: "'/Piano Collection'"
8958 </p>
8959 </blockquote><p>
8960
8961 </p>
8962 <p>
8963 </p>
8964 <blockquote class="text">
8965 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8966 </p>
8967 <p>S: "'/Piano Collection','/Percussions'"
8968 </p>
8969 </blockquote><p>
8970
8971 </p>
8972 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8973 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8974 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8975 Adding instruments to the instruments database</h3>
8976
8977 <p>The front-end can add one or more instruments
8978 to the instruments database by sending the following command:
8979 </p>
8980 <p>
8981 </p>
8982 <blockquote class="text">
8983 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8984 </p>
8985 </blockquote><p>
8986
8987 </p>
8988 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8989 (encapsulated into apostrophes) in the instruments database in which
8990 only the new instruments (that are not already in the database) will
8991 be added, &lt;file_path&gt; is the absolute path name of a file or
8992 directory in the file system (encapsulated into apostrophes). In case
8993 an instrument file is supplied, only the instruments in the specified
8994 file will be added to the instruments database. If the optional
8995 &lt;instr_index&gt; (the index of the instrument within the given file)
8996 is supplied too, then only the specified instrument will be added.
8997 In case a directory is supplied, the instruments in that directory
8998 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8999 when a directory is provided as &lt;file_path&gt; and specifies how the
9000 scanning will be done and has exactly the following possibilities:
9001 </p>
9002 <p>
9003 </p>
9004 <blockquote class="text">
9005 <p>"RECURSIVE" -
9006 </p>
9007 <blockquote class="text">
9008 <p>All instruments will be processed, including those
9009 in the subdirectories, and the respective subdirectory
9010 tree structure will be recreated in the instruments
9011 database
9012 </p>
9013 </blockquote>
9014
9015
9016 <p>"NON_RECURSIVE" -
9017 </p>
9018 <blockquote class="text">
9019 <p>Only the instruments in the specified directory
9020 will be added, the instruments in the subdirectories
9021 will not be processed.
9022 </p>
9023 </blockquote>
9024
9025
9026 <p>"FLAT" -
9027 </p>
9028 <blockquote class="text">
9029 <p>All instruments will be processed, including those
9030 in the subdirectories, but the respective subdirectory
9031 structure will not be recreated in the instruments
9032 database. All instruments will be added directly in
9033 the specified database directory.
9034 </p>
9035 </blockquote>
9036
9037
9038 </blockquote><p>
9039
9040 </p>
9041 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
9042 file will be added to a separate directory in the instruments database, which
9043 name will be the name of the instrument file with the file extension stripped off.
9044
9045 </p>
9046 <p>The difference between regular and NON_MODAL versions of the command
9047 is that the regular command returns when the scanning is finished
9048 while NON_MODAL version returns immediately and a background process is launched.
9049 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>
9050 command can be used to monitor the scanning progress.
9051 </p>
9052 <p>Possible Answers:
9053 </p>
9054 <p>
9055 </p>
9056 <blockquote class="text">
9057 <p>"OK" -
9058 </p>
9059 <blockquote class="text">
9060 <p>on success when NON_MODAL is not supplied
9061 </p>
9062 </blockquote>
9063
9064
9065 <p>"OK[&lt;job-id&gt;]" -
9066 </p>
9067 <blockquote class="text">
9068 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
9069 is a numerical ID used to obtain status information about the job progress.
9070 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>
9071
9072 </p>
9073 </blockquote>
9074
9075
9076 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9077 </p>
9078 <blockquote class="text">
9079 <p>if an invalid path is specified.
9080 </p>
9081 </blockquote>
9082
9083
9084 </blockquote><p>
9085
9086 </p>
9087 <p>Examples:
9088 </p>
9089 <p>
9090 </p>
9091 <blockquote class="text">
9092 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
9093 </p>
9094 <p>S: "OK"
9095 </p>
9096 </blockquote><p>
9097
9098 </p>
9099 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
9100 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9101 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
9102 Removing an instrument</h3>
9103
9104 <p>The front-end can remove a particular instrument
9105 from the instruments database by sending the following command:
9106 </p>
9107 <p>
9108 </p>
9109 <blockquote class="text">
9110 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
9111 </p>
9112 </blockquote><p>
9113
9114 </p>
9115 <p>Where &lt;instr_path&gt; is the absolute path name
9116 (in the instruments database) of the instrument to remove.
9117 </p>
9118 <p>Possible Answers:
9119 </p>
9120 <p>
9121 </p>
9122 <blockquote class="text">
9123 <p>"OK" -
9124 </p>
9125 <blockquote class="text">
9126 <p>if the instrument is removed successfully
9127 </p>
9128 </blockquote>
9129
9130
9131 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9132 </p>
9133 <blockquote class="text">
9134 <p>if the given path does not exist or
9135 is a directory.
9136 </p>
9137 </blockquote>
9138
9139
9140 </blockquote><p>
9141
9142 </p>
9143 <p>Examples:
9144 </p>
9145 <p>
9146 </p>
9147 <blockquote class="text">
9148 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
9149 </p>
9150 <p>S: "OK"
9151 </p>
9152 </blockquote><p>
9153
9154 </p>
9155 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
9156 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9157 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
9158 Getting amount of instruments</h3>
9159
9160 <p>The front-end can retrieve the current amount of
9161 instruments in a specific directory by sending the following command:
9162 </p>
9163 <p>
9164 </p>
9165 <blockquote class="text">
9166 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
9167 </p>
9168 </blockquote><p>
9169
9170 </p>
9171 <p>Where &lt;dir&gt; should be replaced by the absolute path name
9172 of the directory. If RECURSIVE is specified, the number of all
9173 instruments, including those located in subdirectories of the
9174 specified directory, will be returned.
9175 </p>
9176 <p>Possible Answers:
9177 </p>
9178 <p>
9179 </p>
9180 <blockquote class="text">
9181 <p>The current number of instruments
9182 in the specified directory.
9183 </p>
9184 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9185 </p>
9186 <blockquote class="text">
9187 <p>if the given directory does not exist.
9188 </p>
9189 </blockquote>
9190
9191
9192 </blockquote><p>
9193
9194 </p>
9195 <p>Example:
9196 </p>
9197 <p>
9198 </p>
9199 <blockquote class="text">
9200 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
9201 </p>
9202 <p>S: "2"
9203 </p>
9204 </blockquote><p>
9205
9206 </p>
9207 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
9208 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9209 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
9210 Listing all instruments in specific directory</h3>
9211
9212 <p>The front-end can retrieve the current list of instruments
9213 in specific directory by sending the following command:
9214 </p>
9215 <p>
9216 </p>
9217 <blockquote class="text">
9218 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
9219 </p>
9220 </blockquote><p>
9221
9222 </p>
9223 <p>Where &lt;dir&gt; should be replaced by the absolute path
9224 name of the directory. If RECURSIVE is specified, the absolute path
9225 names of all instruments, including those located in subdirectories
9226 of the specified directory, will be returned.
9227 </p>
9228 <p>Possible Answers:
9229 </p>
9230 <p>
9231 </p>
9232 <blockquote class="text">
9233 <p>A comma separated list of all instruments
9234 (encapsulated into apostrophes) in the specified directory.
9235 </p>
9236 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9237 </p>
9238 <blockquote class="text">
9239 <p>if the given directory does not exist.
9240 </p>
9241 </blockquote>
9242
9243
9244 </blockquote><p>
9245
9246 </p>
9247 <p>Example:
9248 </p>
9249 <p>
9250 </p>
9251 <blockquote class="text">
9252 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
9253 </p>
9254 <p>S: "'Bosendorfer 290','Steinway D'"
9255 </p>
9256 </blockquote><p>
9257
9258 </p>
9259 <p>
9260 </p>
9261 <blockquote class="text">
9262 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
9263 </p>
9264 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
9265 </p>
9266 </blockquote><p>
9267
9268 </p>
9269 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
9270 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9271 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
9272 Getting instrument information</h3>
9273
9274 <p>The front-end can ask for the current settings of an
9275 instrument by sending the following command:
9276 </p>
9277 <p>
9278 </p>
9279 <blockquote class="text">
9280 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
9281 </p>
9282 </blockquote><p>
9283
9284 </p>
9285 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
9286 name of the instrument the front-end is interested in.
9287 </p>
9288 <p>Possible Answers:
9289 </p>
9290 <p>
9291 </p>
9292 <blockquote class="text">
9293 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9294 Each answer line begins with the settings category name
9295 followed by a colon and then a space character &lt;SP&gt; and finally
9296 the info character string to that setting category. At the
9297 moment the following categories are defined:
9298 </p>
9299 <p>
9300 </p>
9301 <blockquote class="text">
9302 <p>INSTRUMENT_FILE -
9303 </p>
9304 <blockquote class="text">
9305 <p>File name of the instrument.
9306 Note that the character string may contain
9307 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9308 </p>
9309 </blockquote>
9310
9311
9312 <p>INSTRUMENT_NR -
9313 </p>
9314 <blockquote class="text">
9315 <p>Index of the instrument within the file.
9316 </p>
9317 </blockquote>
9318
9319
9320 <p>FORMAT_FAMILY -
9321 </p>
9322 <blockquote class="text">
9323 <p>The format family of the instrument.
9324 </p>
9325 </blockquote>
9326
9327
9328 <p>FORMAT_VERSION -
9329 </p>
9330 <blockquote class="text">
9331 <p>The format version of the instrument.
9332 </p>
9333 </blockquote>
9334
9335
9336 <p>SIZE -
9337 </p>
9338 <blockquote class="text">
9339 <p>The size of the instrument in bytes.
9340 </p>
9341 </blockquote>
9342
9343
9344 <p>CREATED -
9345 </p>
9346 <blockquote class="text">
9347 <p>The date and time when the instrument is added
9348 in the instruments database, represented in
9349 "YYYY-MM-DD HH:MM:SS" format
9350 </p>
9351 </blockquote>
9352
9353
9354 <p>MODIFIED -
9355 </p>
9356 <blockquote class="text">
9357 <p>The date and time of the last modification of the
9358 instrument's database settings, represented in
9359 "YYYY-MM-DD HH:MM:SS" format
9360 </p>
9361 </blockquote>
9362
9363
9364 <p>DESCRIPTION -
9365 </p>
9366 <blockquote class="text">
9367 <p>A brief description of the instrument.
9368 Note that the character string may contain
9369 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9370 </p>
9371 </blockquote>
9372
9373
9374 <p>IS_DRUM -
9375 </p>
9376 <blockquote class="text">
9377 <p>either true or false, determines whether the
9378 instrument is a drumkit or a chromatic instrument
9379 </p>
9380 </blockquote>
9381
9382
9383 <p>PRODUCT -
9384 </p>
9385 <blockquote class="text">
9386 <p>The product title of the instrument.
9387 Note that the character string may contain
9388 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9389 </p>
9390 </blockquote>
9391
9392
9393 <p>ARTISTS -
9394 </p>
9395 <blockquote class="text">
9396 <p>Lists the artist names.
9397 Note that the character string may contain
9398 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9399 </p>
9400 </blockquote>
9401
9402
9403 <p>KEYWORDS -
9404 </p>
9405 <blockquote class="text">
9406 <p>Provides a list of keywords that refer to the instrument.
9407 Keywords are separated with semicolon and blank.
9408 Note that the character string may contain
9409 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9410 </p>
9411 </blockquote>
9412
9413
9414 </blockquote>
9415
9416
9417 </blockquote><p>
9418
9419 </p>
9420 <p>The mentioned fields above don't have to be in particular order.
9421 </p>
9422 <p>Example:
9423 </p>
9424 <p>
9425 </p>
9426 <blockquote class="text">
9427 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9428 </p>
9429 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9430 </p>
9431 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9432 </p>
9433 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9434 </p>
9435 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9436 </p>
9437 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9438 </p>
9439 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9440 </p>
9441 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9442 </p>
9443 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9444 </p>
9445 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9446 </p>
9447 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9448 </p>
9449 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9450 </p>
9451 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9452 </p>
9453 <p>&nbsp;&nbsp;&nbsp;"."
9454 </p>
9455 </blockquote><p>
9456
9457 </p>
9458 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9459 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9460 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9461 Renaming an instrument</h3>
9462
9463 <p>The front-end can alter the name of a specific
9464 instrument by sending the following command:
9465 </p>
9466 <p>
9467 </p>
9468 <blockquote class="text">
9469 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9470 </p>
9471 </blockquote><p>
9472
9473 </p>
9474 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9475 &lt;name&gt; is the new name for that instrument.
9476 </p>
9477 <p>Possible Answers:
9478 </p>
9479 <p>
9480 </p>
9481 <blockquote class="text">
9482 <p>"OK" -
9483 </p>
9484 <blockquote class="text">
9485 <p>on success
9486 </p>
9487 </blockquote>
9488
9489
9490 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9491 </p>
9492 <blockquote class="text">
9493 <p>in case the given instrument does not exists,
9494 or if an instrument with name equal to the new
9495 name already exists.
9496 </p>
9497 </blockquote>
9498
9499
9500 </blockquote><p>
9501
9502 </p>
9503 <p>Example:
9504 </p>
9505 <p>
9506 </p>
9507 <blockquote class="text">
9508 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9509 </p>
9510 <p>S: "OK"
9511 </p>
9512 </blockquote><p>
9513
9514 </p>
9515 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9516 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9517 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9518 Moving an instrument</h3>
9519
9520 <p>The front-end can move a specific instrument to another directory by
9521 sending the following command:
9522 </p>
9523 <p>
9524 </p>
9525 <blockquote class="text">
9526 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9527 </p>
9528 </blockquote><p>
9529
9530 </p>
9531 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9532 to move and &lt;dst&gt; is the directory where the instrument will
9533 be moved to.
9534 </p>
9535 <p>Possible Answers:
9536 </p>
9537 <p>
9538 </p>
9539 <blockquote class="text">
9540 <p>"OK" -
9541 </p>
9542 <blockquote class="text">
9543 <p>on success
9544 </p>
9545 </blockquote>
9546
9547
9548 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9549 </p>
9550 <blockquote class="text">
9551 <p>in case the given instrument does not exists,
9552 or if an instrument with name equal to the name of the
9553 specified instrument already exists in the destination
9554 directory.
9555 </p>
9556 </blockquote>
9557
9558
9559 </blockquote><p>
9560
9561 </p>
9562 <p>Example:
9563 </p>
9564 <p>
9565 </p>
9566 <blockquote class="text">
9567 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9568 </p>
9569 <p>S: "OK"
9570 </p>
9571 </blockquote><p>
9572
9573 </p>
9574 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9575 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9576 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9577 Copying instruments</h3>
9578
9579 <p>The front-end can copy a specific instrument to another directory by
9580 sending the following command:
9581 </p>
9582 <p>
9583 </p>
9584 <blockquote class="text">
9585 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9586 </p>
9587 </blockquote><p>
9588
9589 </p>
9590 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9591 to copy and &lt;dst&gt; is the directory where the instrument will
9592 be copied to.
9593 </p>
9594 <p>Possible Answers:
9595 </p>
9596 <p>
9597 </p>
9598 <blockquote class="text">
9599 <p>"OK" -
9600 </p>
9601 <blockquote class="text">
9602 <p>on success
9603 </p>
9604 </blockquote>
9605
9606
9607 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9608 </p>
9609 <blockquote class="text">
9610 <p>in case the given instrument does not exists,
9611 or if an instrument with name equal to the name of the
9612 specified instrument already exists in the destination
9613 directory.
9614 </p>
9615 </blockquote>
9616
9617
9618 </blockquote><p>
9619
9620 </p>
9621 <p>Example:
9622 </p>
9623 <p>
9624 </p>
9625 <blockquote class="text">
9626 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9627 </p>
9628 <p>S: "OK"
9629 </p>
9630 </blockquote><p>
9631
9632 </p>
9633 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9634 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9635 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9636 Changing the description of instrument</h3>
9637
9638 <p>The front-end can alter the description of a specific
9639 instrument by sending the following command:
9640 </p>
9641 <p>
9642 </p>
9643 <blockquote class="text">
9644 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9645 </p>
9646 </blockquote><p>
9647
9648 </p>
9649 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9650 &lt;desc&gt; is the new description for the instrument
9651 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9652 "<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>").
9653 </p>
9654 <p>Possible Answers:
9655 </p>
9656 <p>
9657 </p>
9658 <blockquote class="text">
9659 <p>"OK" -
9660 </p>
9661 <blockquote class="text">
9662 <p>on success
9663 </p>
9664 </blockquote>
9665
9666
9667 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9668 </p>
9669 <blockquote class="text">
9670 <p>in case the given instrument does not exists.
9671 </p>
9672 </blockquote>
9673
9674
9675 </blockquote><p>
9676
9677 </p>
9678 <p>Example:
9679 </p>
9680 <p>
9681 </p>
9682 <blockquote class="text">
9683 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9684 </p>
9685 <p>S: "OK"
9686 </p>
9687 </blockquote><p>
9688
9689 </p>
9690 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9691 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9692 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9693 Finding instruments</h3>
9694
9695 <p>The front-end can search for instruments
9696 in specific directory by sending the following command:
9697 </p>
9698 <p>
9699 </p>
9700 <blockquote class="text">
9701 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9702 </p>
9703 </blockquote><p>
9704
9705 </p>
9706 <p>Where &lt;dir&gt; should be replaced by the absolute path
9707 name of the directory to search in. If NON_RECURSIVE is specified, the
9708 directories located in subdirectories of the specified directory will not
9709 be searched. &lt;criteria-list&gt; is a list of search criterias
9710 in form of "key1=val1 key2=val2 ...". The following criterias are
9711 allowed:
9712 </p>
9713 <p>
9714
9715 <p>NAME='&lt;search-string&gt;'
9716 </p>
9717 <blockquote class="text">
9718 <p>Restricts the search to instruments, which names
9719 satisfy the supplied search string (encapsulated into apostrophes,
9720 supporting escape sequences as described in chapter
9721 "<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>").
9722 </p>
9723 </blockquote><p>
9724
9725 </p>
9726
9727
9728 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9729 </p>
9730 <blockquote class="text">
9731 <p>Restricts the search to instruments, which
9732 size is in the specified range. If &lt;min&gt; is omitted,
9733 the search results are restricted to instruments with size less then
9734 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9735 search is restricted to instruments with size greater then
9736 or equal to &lt;min&gt;.
9737 </p>
9738 </blockquote><p>
9739
9740 </p>
9741
9742
9743 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9744 </p>
9745 <blockquote class="text">
9746 <p>Restricts the search to instruments, which creation
9747 date satisfies the specified period, where &lt;date-after&gt;
9748 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9749 If &lt;date-after&gt; is omitted the search is restricted to
9750 instruments created before &lt;date-before&gt;. If
9751 &lt;date-before&gt; is omitted, the search is restricted
9752 to instruments created after &lt;date-after&gt;.
9753 </p>
9754 </blockquote><p>
9755
9756 </p>
9757
9758
9759 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9760 </p>
9761 <blockquote class="text">
9762 <p>Restricts the search to instruments, which
9763 date of last modification satisfies the specified period, where
9764 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9765 format. If &lt;date-after&gt; is omitted the search is restricted to
9766 instruments, which are last modified before &lt;date-before&gt;. If
9767 &lt;date-before&gt; is omitted, the search is restricted to instruments,
9768 which are last modified after &lt;date-after&gt;.
9769 </p>
9770 </blockquote><p>
9771
9772 </p>
9773
9774
9775 <p>DESCRIPTION='&lt;search-string&gt;'
9776 </p>
9777 <blockquote class="text">
9778 <p>Restricts the search to instruments with description
9779 that satisfies the supplied search string (encapsulated into apostrophes,
9780 supporting escape sequences as described in chapter
9781 "<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>").
9782 </p>
9783 </blockquote><p>
9784
9785 </p>
9786
9787
9788 <p>PRODUCT='&lt;search-string&gt;'
9789 </p>
9790 <blockquote class="text">
9791 <p>Restricts the search to instruments with product info
9792 that satisfies the supplied search string (encapsulated into apostrophes,
9793 supporting escape sequences as described in chapter
9794 "<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>").
9795 </p>
9796 </blockquote><p>
9797
9798 </p>
9799
9800
9801 <p>ARTISTS='&lt;search-string&gt;'
9802 </p>
9803 <blockquote class="text">
9804 <p>Restricts the search to instruments with artists info
9805 that satisfies the supplied search string (encapsulated into apostrophes,
9806 supporting escape sequences as described in chapter
9807 "<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>").
9808 </p>
9809 </blockquote><p>
9810
9811 </p>
9812
9813
9814 <p>KEYWORDS='&lt;search-string&gt;'
9815 </p>
9816 <blockquote class="text">
9817 <p>Restricts the search to instruments with keyword list
9818 that satisfies the supplied search string (encapsulated into apostrophes,
9819 supporting escape sequences as described in chapter
9820 "<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>").
9821 </p>
9822 </blockquote><p>
9823
9824 </p>
9825
9826
9827 <p>IS_DRUM=true | false
9828 </p>
9829 <blockquote class="text">
9830 <p>Either true or false. Restricts the search to
9831 drum kits or chromatic instruments.
9832 </p>
9833 </blockquote><p>
9834
9835 </p>
9836
9837
9838 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9839 </p>
9840 <blockquote class="text">
9841 <p>Restricts the search to instruments of the supplied format families,
9842 where &lt;format-list&gt; is a comma separated list of format families.
9843 </p>
9844 </blockquote><p>
9845
9846 </p>
9847
9848
9849 <p>Where &lt;search-string&gt; is either a regular expression, or a
9850 word list separated with spaces for OR search and with '+' for AND search.
9851 </p>
9852 <p>Possible Answers:
9853 </p>
9854 <p>
9855 </p>
9856 <blockquote class="text">
9857 <p>A comma separated list with the absolute path names (encapsulated into
9858 apostrophes) of all instruments in the specified directory that satisfy
9859 the supplied search criterias.
9860 </p>
9861 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9862 </p>
9863 <blockquote class="text">
9864 <p>if the given directory does not exist.
9865 </p>
9866 </blockquote>
9867
9868
9869 </blockquote><p>
9870
9871 </p>
9872 <p>Example:
9873 </p>
9874 <p>
9875 </p>
9876 <blockquote class="text">
9877 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9878 </p>
9879 <p>S: "'/Piano Collection/Bosendorfer 290'"
9880 </p>
9881 </blockquote><p>
9882
9883 </p>
9884 <p>
9885 </p>
9886 <blockquote class="text">
9887 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9888 </p>
9889 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9890 </p>
9891 </blockquote><p>
9892
9893 </p>
9894 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9895 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9896 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9897 Getting job status information</h3>
9898
9899 <p>The front-end can ask for the current status of a
9900 particular database instruments job by sending the following command:
9901 </p>
9902 <p>
9903 </p>
9904 <blockquote class="text">
9905 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9906 </p>
9907 </blockquote><p>
9908
9909 </p>
9910 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9911 of the job the front-end is interested in.
9912 </p>
9913 <p>Possible Answers:
9914 </p>
9915 <p>
9916 </p>
9917 <blockquote class="text">
9918 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9919 Each answer line begins with the settings category name
9920 followed by a colon and then a space character &lt;SP&gt; and finally
9921 the info character string to that setting category. At the
9922 moment the following categories are defined:
9923 </p>
9924 <p>
9925 </p>
9926 <blockquote class="text">
9927 <p>FILES_TOTAL -
9928 </p>
9929 <blockquote class="text">
9930 <p>The total number of files scheduled for scanning
9931 </p>
9932 </blockquote>
9933
9934
9935 <p>FILES_SCANNED -
9936 </p>
9937 <blockquote class="text">
9938 <p>The current number of scanned files
9939 </p>
9940 </blockquote>
9941
9942
9943 <p>SCANNING -
9944 </p>
9945 <blockquote class="text">
9946 <p>The absolute path name of the file which is currently
9947 being scanned
9948 </p>
9949 </blockquote>
9950
9951
9952 <p>STATUS -
9953 </p>
9954 <blockquote class="text">
9955 <p>An integer value between 0 and 100 indicating the
9956 scanning progress percentage of the file which is
9957 currently being scanned
9958 </p>
9959 </blockquote>
9960
9961
9962 </blockquote>
9963
9964
9965 </blockquote><p>
9966
9967 </p>
9968 <p>The mentioned fields above don't have to be in particular order.
9969 </p>
9970 <p>Example:
9971 </p>
9972 <p>
9973 </p>
9974 <blockquote class="text">
9975 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9976 </p>
9977 <p>S: "FILES_TOTAL: 12"
9978 </p>
9979 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9980 </p>
9981 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9982 </p>
9983 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9984 </p>
9985 <p>&nbsp;&nbsp;&nbsp;"."
9986 </p>
9987 </blockquote><p>
9988
9989 </p>
9990 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9991 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9992 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9993 Formatting the instruments database</h3>
9994
9995 <p>The front-end can remove all instruments and directories and re-create
9996 the instruments database structure (e.g., in case of a database corruption)
9997 by sending the following command:
9998 </p>
9999 <p>
10000 </p>
10001 <blockquote class="text">
10002 <p>FORMAT INSTRUMENTS_DB
10003 </p>
10004 </blockquote><p>
10005
10006 </p>
10007 <p>Possible Answers:
10008 </p>
10009 <p>
10010 </p>
10011 <blockquote class="text">
10012 <p>"OK" -
10013 </p>
10014 <blockquote class="text">
10015 <p>on success
10016 </p>
10017 </blockquote>
10018
10019
10020 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10021 </p>
10022 <blockquote class="text">
10023 <p>If the formatting of the instruments database
10024 failed.
10025 </p>
10026 </blockquote>
10027
10028
10029 </blockquote><p>
10030
10031 </p>
10032 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
10033 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10034 <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
10035 Checking for lost instrument files</h3>
10036
10037 <p>The front-end can retrieve the list of all instrument files in the instruments database
10038 that don't exist in the filesystem by sending the following command:
10039 </p>
10040 <p>
10041 </p>
10042 <blockquote class="text">
10043 <p>FIND LOST DB_INSTRUMENT_FILES
10044 </p>
10045 </blockquote><p>
10046
10047 </p>
10048 <p>Possible Answers:
10049 </p>
10050 <p>
10051 </p>
10052 <blockquote class="text">
10053 <p>A comma separated list with the absolute path names
10054 (encapsulated into apostrophes) of all lost instrument files.
10055 </p>
10056 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10057 </p>
10058 <blockquote class="text">
10059 <p>in case it failed, providing an appropriate error code and error message.
10060 </p>
10061 </blockquote>
10062
10063
10064 </blockquote><p>
10065
10066 </p>
10067 <p>Example:
10068 </p>
10069 <p>
10070 </p>
10071 <blockquote class="text">
10072 <p>C: "FIND LOST DB_INSTRUMENT_FILES"
10073 </p>
10074 <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
10075 </p>
10076 </blockquote><p>
10077
10078 </p>
10079 <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
10080 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10081 <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
10082 Replacing an instrument file</h3>
10083
10084 <p>The front-end can substitute all occurrences of an instrument file
10085 in the instruments database with a new one by sending the following command:
10086 </p>
10087 <p>
10088 </p>
10089 <blockquote class="text">
10090 <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
10091 </p>
10092 </blockquote><p>
10093
10094 </p>
10095 <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
10096 to substitute with &lt;new_path&gt;.
10097 </p>
10098 <p>Possible Answers:
10099 </p>
10100 <p>
10101 </p>
10102 <blockquote class="text">
10103 <p>"OK" -
10104 </p>
10105 <blockquote class="text">
10106 <p>on success
10107 </p>
10108 </blockquote>
10109
10110
10111 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10112 </p>
10113 <blockquote class="text">
10114 <p>in case it failed, providing an appropriate error code and error message.
10115 </p>
10116 </blockquote>
10117
10118
10119 </blockquote><p>
10120
10121 </p>
10122 <p>Example:
10123 </p>
10124 <p>
10125 </p>
10126 <blockquote class="text">
10127 <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
10128 </p>
10129 <p>S: "OK"
10130 </p>
10131 </blockquote><p>
10132
10133 </p>
10134 <a name="editing_instruments"></a><br /><hr />
10135 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10136 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
10137 Editing Instruments</h3>
10138
10139 <p>The sampler allows to edit instruments while playing with the
10140 sampler by spawning an external (3rd party) instrument editor
10141 application for a given instrument. The 3rd party instrument
10142 editor applications have to place a respective plugin DLL file
10143 into the sampler's plugins directory. The sampler will
10144 automatically try to load all plugin DLLs in that directory on
10145 startup and only on startup!
10146 </p>
10147 <p>At the moment there is only one command for this feature set,
10148 but this will most probably change in future.
10149 </p>
10150 <a name="EDIT INSTRUMENT"></a><br /><hr />
10151 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10152 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
10153 Opening an appropriate instrument editor application</h3>
10154
10155 <p>The front-end can request to open an appropriate instrument
10156 editor application by sending the following command:
10157 </p>
10158 <p>
10159 </p>
10160 <blockquote class="text">
10161 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
10162 </p>
10163 </blockquote><p>
10164
10165 </p>
10166 <p>Where &lt;sampler-channel&gt; should be replaced by the
10167 number of the sampler channel as given by the
10168 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
10169 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
10170 command.
10171 </p>
10172 <p>The sampler will try to ask all registered instrument
10173 editors (or to be more specific: their sampler plugins)
10174 whether they are capable to handle the instrument on the
10175 given sampler channel. The sampler will simply use the first
10176 instrument editor application which replied with a positive
10177 answer and spawn that instrument editor application within
10178 the sampler's process and provide that application access
10179 to the instrument's data structures, so both applications
10180 can share and access the same instruments data at the same
10181 time, thus allowing to immediately hear changes with the
10182 sampler made by the instrument editor.
10183 </p>
10184 <p>Note: consequently instrument editors are always spawned
10185 locally on the same machine where the sampler is running
10186 on!
10187 </p>
10188 <p>Possible Answers:
10189 </p>
10190 <p>
10191 </p>
10192 <blockquote class="text">
10193 <p>"OK" -
10194 </p>
10195 <blockquote class="text">
10196 <p>when an appropriate instrument editor was
10197 launched
10198 </p>
10199 </blockquote>
10200
10201
10202 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10203 </p>
10204 <blockquote class="text">
10205 <p>when an appropriate instrument editor was
10206 launched, but there are noteworthy issues
10207 </p>
10208 </blockquote>
10209
10210
10211 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10212 </p>
10213 <blockquote class="text">
10214 <p>when an appropriate instrument editor
10215 could not be launched
10216 </p>
10217 </blockquote>
10218
10219
10220 </blockquote><p>
10221
10222 </p>
10223 <p>Examples:
10224 </p>
10225 <p>
10226 </p>
10227 <blockquote class="text">
10228 <p>C: "EDIT CHANNEL INSTRUMENT 0"
10229 </p>
10230 <p>S: "OK"
10231 </p>
10232 </blockquote><p>
10233
10234 </p>
10235 <a name="file_management"></a><br /><hr />
10236 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10237 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
10238 Managing Files</h3>
10239
10240 <p>You can query detailed informations about files located
10241 at the same system where the sampler instance is running on.
10242 Using this command set allows to retrieve file informations
10243 even remotely from another machine.
10244 </p>
10245 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
10246 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10247 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
10248 Retrieving amount of instruments of a file</h3>
10249
10250 <p>The front-end can retrieve the amount of instruments
10251 within a given instrument file by sending the
10252 following command:
10253 </p>
10254 <p>
10255 </p>
10256 <blockquote class="text">
10257 <p>GET FILE INSTRUMENTS &lt;filename&gt;
10258 </p>
10259 </blockquote><p>
10260
10261 </p>
10262 <p>Where &lt;filename&gt; is the name of the instrument
10263 file (encapsulated into apostrophes, supporting escape
10264 sequences as described in chapter
10265 "<a class='info' href='#character_set'>Character Set and Escape
10266 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
10267 </p>
10268 <p>The sampler will try to ask all sampler engines,
10269 whether they support the given file and ask the first
10270 engine with a positive answer for the amount of
10271 instruments.
10272 </p>
10273 <p>Possible Answers:
10274 </p>
10275 <p>
10276 </p>
10277 <blockquote class="text">
10278 <p>On success, the sampler will answer by
10279 returning the amount of instruments.
10280
10281 </p>
10282 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10283 </p>
10284 <blockquote class="text">
10285 <p>if the file could not be handled
10286 </p>
10287 </blockquote>
10288
10289
10290 </blockquote><p>
10291
10292 </p>
10293 <p>Examples:
10294 </p>
10295 <p>
10296 </p>
10297 <blockquote class="text">
10298 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
10299 </p>
10300 <p>S: "10"
10301 </p>
10302 </blockquote><p>
10303
10304 </p>
10305 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
10306 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10307 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
10308 Retrieving all instruments of a file</h3>
10309
10310 <p>The front-end can retrieve a list of all instruments
10311 within a given instrument file by sending the
10312 following command:
10313 </p>
10314 <p>
10315 </p>
10316 <blockquote class="text">
10317 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
10318 </p>
10319 </blockquote><p>
10320
10321 </p>
10322 <p>Where &lt;filename&gt; is the name of the instrument
10323 file (encapsulated into apostrophes, supporting escape
10324 sequences as described in chapter
10325 "<a class='info' href='#character_set'>Character Set and Escape
10326 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
10327 </p>
10328 <p>The sampler will try to ask all sampler engines,
10329 whether they support the given file and ask the first
10330 engine with a positive answer for a list of IDs for the
10331 instruments in the given file.
10332 </p>
10333 <p>Possible Answers:
10334 </p>
10335 <p>
10336 </p>
10337 <blockquote class="text">
10338 <p>On success, the sampler will answer by
10339 returning a comma separated list of
10340 instrument IDs.
10341
10342 </p>
10343 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10344 </p>
10345 <blockquote class="text">
10346 <p>if the file could not be handled
10347 </p>
10348 </blockquote>
10349
10350
10351 </blockquote><p>
10352
10353 </p>
10354 <p>Examples:
10355 </p>
10356 <p>
10357 </p>
10358 <blockquote class="text">
10359 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
10360 </p>
10361 <p>S: "0,1,2,3,4,5,6,7,8,9"
10362 </p>
10363 </blockquote><p>
10364
10365 </p>
10366 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
10367 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10368 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
10369 Retrieving informations about one instrument in a file</h3>
10370
10371 <p>The front-end can retrieve detailed informations
10372 about a specific instrument within a given instrument
10373 file by sending the following command:
10374 </p>
10375 <p>
10376 </p>
10377 <blockquote class="text">
10378 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
10379 &lt;instr-id&gt;
10380 </p>
10381 </blockquote><p>
10382
10383 </p>
10384 <p>Where &lt;filename&gt; is the name of the instrument
10385 file (encapsulated into apostrophes, supporting escape
10386 sequences as described in chapter
10387 "<a class='info' href='#character_set'>Character Set and Escape
10388 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
10389 instrument ID as returned by the
10390 <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.
10391 </p>
10392 <p>The sampler will try to ask all sampler engines,
10393 whether they support the given file and ask the first
10394 engine with a positive answer for informations about the
10395 specific instrument in the given file.
10396 </p>
10397 <p>Possible Answers:
10398 </p>
10399 <p>
10400 </p>
10401 <blockquote class="text">
10402 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10403 Each answer line begins with the settings category name
10404 followed by a colon and then a space character &lt;SP&gt; and finally
10405 the info character string to that setting category. At the
10406 moment the following categories are defined:
10407 </p>
10408 <p>
10409 </p>
10410 <blockquote class="text">
10411 <p>NAME -
10412 </p>
10413 <blockquote class="text">
10414 <p>name of the instrument as
10415 stored in the instrument file
10416 </p>
10417 </blockquote>
10418
10419
10420 <p>FORMAT_FAMILY -
10421 </p>
10422 <blockquote class="text">
10423 <p>name of the sampler format
10424 of the given instrument
10425 </p>
10426 </blockquote>
10427
10428
10429 <p>FORMAT_VERSION -
10430 </p>
10431 <blockquote class="text">
10432 <p>version of the sampler format
10433 the instrumen is stored as
10434 </p>
10435 </blockquote>
10436
10437
10438 <p>PRODUCT -
10439 </p>
10440 <blockquote class="text">
10441 <p>official product name of the
10442 instrument as stored in the file
10443
10444 </p>
10445 </blockquote>
10446
10447
10448 <p>ARTISTS -
10449 </p>
10450 <blockquote class="text">
10451 <p>artists / sample library
10452 vendor of the instrument
10453 </p>
10454 </blockquote>
10455
10456
10457 <p>KEY_BINDINGS -
10458 </p>
10459 <blockquote class="text">
10460 <p>comma separated list of integer values representing
10461 the instrument's key mapping in the range between 0 .. 127,
10462 reflecting the analog meaning of the MIDI specification.
10463 </p>
10464 </blockquote>
10465
10466
10467 <p>KEYSWITCH_BINDINGS -
10468 </p>
10469 <blockquote class="text">
10470 <p>comma separated list of integer values representing
10471 the instrument's keyswitch mapping in the range between 0 .. 127,
10472 reflecting the analog meaning of the MIDI specification.
10473 </p>
10474 </blockquote>
10475
10476
10477 </blockquote>
10478
10479
10480 </blockquote><p>
10481
10482 </p>
10483 <p>The mentioned fields above don't have to be in particular order.
10484 </p>
10485 <p>Example:
10486 </p>
10487 <p>
10488 </p>
10489 <blockquote class="text">
10490 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10491 </p>
10492 <p>S: "NAME: Lunatic Loops"
10493 </p>
10494 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10495 </p>
10496 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10497 </p>
10498 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10499 </p>
10500 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10501 </p>
10502 <p>&nbsp;&nbsp;&nbsp;"."
10503 </p>
10504 </blockquote><p>
10505
10506 </p>
10507 <a name="effects"></a><br /><hr />
10508 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10509 <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10510 Managing Effects</h3>
10511
10512 <p>Audio effects (e.g. reverb, delay, compression) can be
10513 applied to the audio signals generated by the sampler. The
10514 sampler usually provides a set of internal audio effects for
10515 this task. The exact set of effects depends on the availability
10516 of third party effect plugins installed on the system where the
10517 sampler runs on.
10518 </p>
10519 <p>At the moment only "send effects" are supported. Support for
10520 "insert effects" and "master effects" is planned to be added at
10521 a later point.
10522 </p>
10523 <p>The following commands allow to retrieve the set of internal
10524 effects available to the sampler, detailed informations about
10525 those effects and to create and destroy instances of such
10526 effects. After an instance of an effect is created, the effect
10527 instance can be inserted into the audio signal path of the
10528 sampler, e.g. as send effect.
10529 </p>
10530 <p>The sampler allows to create an arbitrary amount of so called
10531 send effect chains. Each effect chain can host an arbitrary
10532 amount of effect instances. The output of the first effect
10533 instance in an effect chain is fed to the input of the second
10534 effect instance of the chain and so on. So effects in one chain
10535 are processed sequentially. Send effect chains however are
10536 processed in parallel to other send effect chains. Audio signals
10537 of sampler channels are fed to send effects by creating FX sends
10538 to the respective sampler channel and assigning a destination
10539 send effect to that FX by using the
10540 <a class='info' href='#SET FX_SEND EFFECT'>"SET FX_SEND EFFECT"<span> (</span><span class='info'>Assigning destination effect to an effect send</span><span>)</span></a>
10541 command. The latter allows to route the FX send to the beginning
10542 of a send effect chain, as well as directly to any other
10543 position of the send effect chain.
10544 </p>
10545 <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10546 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10547 <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10548 Retrieve amount of available effects</h3>
10549
10550 <p>The front-end can retrieve the amount of internal
10551 effects, available to the sampler by sending
10552 the following command:
10553 </p>
10554 <p>
10555 </p>
10556 <blockquote class="text">
10557 <p>GET AVAILABLE_EFFECTS
10558 </p>
10559 </blockquote><p>
10560
10561 </p>
10562 <p>Possible Answers:
10563 </p>
10564 <p>
10565 </p>
10566 <blockquote class="text">
10567 <p>The sampler will answer by returning the current
10568 number of effects available to the sampler.
10569 </p>
10570 </blockquote><p>
10571
10572 </p>
10573 <p>Examples:
10574 </p>
10575 <p>
10576 </p>
10577 <blockquote class="text">
10578 <p>C: "GET AVAILABLE_EFFECTS"
10579 </p>
10580 <p>S: "129"
10581 </p>
10582 </blockquote><p>
10583
10584 </p>
10585 <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10586 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10587 <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10588 Get list of available effects</h3>
10589
10590 <p>The set of available internal effects can change at
10591 runtime. The front-end can retrieve the list of internal
10592 effects, available to the sampler by sending the following
10593 command:
10594 </p>
10595 <p>
10596 </p>
10597 <blockquote class="text">
10598 <p>LIST AVAILABLE_EFFECTS
10599 </p>
10600 </blockquote><p>
10601
10602 </p>
10603 <p>Possible Answers:
10604 </p>
10605 <p>
10606 </p>
10607 <blockquote class="text">
10608 <p>The sampler will answer by returning a comma
10609 separated list with numerical IDs of effects. Note:
10610 the numercial ID of an effect is generated by the
10611 sampler for the current moment. The numerical ID of
10612 the same effect can change at runtime, e.g. when the
10613 user requests a rescan of available effect plugins.
10614
10615 </p>
10616 </blockquote><p>
10617
10618 </p>
10619 <p>Example:
10620 </p>
10621 <p>
10622 </p>
10623 <blockquote class="text">
10624 <p>C: "LIST AVAILABLE_EFFECTS"
10625 </p>
10626 <p>S: "5,6,7,120,121,122,123,124"
10627 </p>
10628 </blockquote><p>
10629
10630 </p>
10631 <a name="GET EFFECT INFO"></a><br /><hr />
10632 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10633 <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10634 Retrieving general information about an effect</h3>
10635
10636 <p>The front-end can ask for general informations about an
10637 effect by sending the following command:
10638 </p>
10639 <p>
10640 </p>
10641 <blockquote class="text">
10642 <p>GET EFFECT INFO &lt;effect-index&gt;
10643 </p>
10644 </blockquote><p>
10645
10646 </p>
10647 <p>Where &lt;effect-index&gt; is the numerical ID of an
10648 effect as returned by the
10649 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10650 command.
10651 </p>
10652 <p>Possible Answers:
10653 </p>
10654 <p>
10655 </p>
10656 <blockquote class="text">
10657 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10658 Each answer line begins with the effect information
10659 category name, followed by a colon and then a space
10660 character &lt;SP&gt; and finally the info character
10661 string to that effect information category. At the
10662 moment the following categories are defined:
10663 </p>
10664 <p>
10665 </p>
10666 <blockquote class="text">
10667 <p>SYSTEM -
10668 </p>
10669 <blockquote class="text">
10670 <p>name of the effect plugin system
10671 the effect is based on
10672 (e.g. "LADSPA")
10673 </p>
10674 </blockquote>
10675
10676
10677 <p>MODULE -
10678 </p>
10679 <blockquote class="text">
10680 <p>module of the effect plugin
10681 system that contains this effect,
10682 the module is usually the
10683 dynamic-linked library (DLL)
10684 filename of the effect plugin,
10685 including full path (note that this
10686 filename may contain
10687 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10688 </p>
10689 </blockquote>
10690
10691
10692 <p>NAME -
10693 </p>
10694 <blockquote class="text">
10695 <p>character string defining the
10696 unique name of the effect within its
10697 module (note that the character
10698 string may contain
10699 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10700 </p>
10701 </blockquote>
10702
10703
10704 <p>DESCRIPTION -
10705 </p>
10706 <blockquote class="text">
10707 <p>human readable name of the
10708 effect, intended to be displayed in
10709 user interfaces (note that the
10710 character string may contain
10711 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10712 </p>
10713 </blockquote>
10714
10715
10716 </blockquote>
10717
10718
10719 </blockquote><p>
10720
10721 </p>
10722 <p>The mentioned fields above don't have to be in particular order.
10723 </p>
10724 <p>Example:
10725 </p>
10726 <p>
10727 </p>
10728 <blockquote class="text">
10729 <p>C: "GET EFFECT INFO 121"
10730 </p>
10731 <p>S: "SYSTEM: LADSPA"
10732 </p>
10733 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10734 </p>
10735 <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10736 </p>
10737 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10738 </p>
10739 <p>&nbsp;&nbsp;&nbsp;"."
10740 </p>
10741 </blockquote><p>
10742
10743 </p>
10744 <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10745 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10746 <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10747 Creating an instance of an effect by its portable ID</h3>
10748
10749 <p>The front-end can spawn an instance of the desired
10750 effect by sending the following command:
10751 </p>
10752 <p>
10753 </p>
10754 <blockquote class="text">
10755 <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10756 </p>
10757 </blockquote><p>
10758
10759 </p>
10760 <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10761 &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10762 the "NAME" field as returned by the
10763 <a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
10764 command. The filename of argument &lt;module&gt; and the
10765 character string of argument &lt;effect-name&gt; may contain
10766 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10767 </p>
10768 <p>The sampler will try to load the requested effect and to
10769 create an instance of it. To allow loading the same effect
10770 on a different machine, probably even running a completely
10771 different operating system (e.g. Linux vs. Windows), the
10772 sampler tries to match &lt;module&gt; "softly". That means
10773 it first tries to find an effect that exactly matches the
10774 given &lt;module&gt; argument. If there is no exact match,
10775 the sampler will try to lower the restrictions on matching
10776 the &lt;module&gt; argument more and more, e.g. by ignoring
10777 upper / lower case differences and by ignoring the path of
10778 the DLL filename and file extension. If there is still no
10779 match at the end, the sampler will try to ignore the
10780 &lt;module&gt; argument completely and as a last resort
10781 search for an effect that only matches the given
10782 &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10783 </p>
10784 <p>Possible Answers:
10785 </p>
10786 <p>
10787 </p>
10788 <blockquote class="text">
10789 <p>"OK[&lt;effect-instance&gt;]" -
10790 </p>
10791 <blockquote class="text">
10792 <p>in case the effect instance was
10793 successfully created, where
10794 &lt;effect-instance&gt; is the numerical ID
10795 of the new effect instance
10796 </p>
10797 </blockquote>
10798
10799
10800 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10801 </p>
10802 <blockquote class="text">
10803 <p>in case the effect instance was spawned
10804 successfully, but there are noteworthy
10805 issue(s) related, providing an appropriate
10806 warning code and warning message
10807 </p>
10808 </blockquote>
10809
10810
10811 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10812 </p>
10813 <blockquote class="text">
10814 <p>if the effect could not be instantiated
10815 </p>
10816 </blockquote>
10817
10818
10819 </blockquote><p>
10820
10821 </p>
10822 <p>Examples:
10823 </p>
10824 <p>
10825 </p>
10826 <blockquote class="text">
10827 <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10828 </p>
10829 <p>S: "OK[0]"
10830 </p>
10831 </blockquote><p>
10832
10833 </p>
10834 <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10835 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10836 <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10837 Creating an instance of an effect by its numerical ID</h3>
10838
10839 <p>The front-end can spawn an instance of the desired
10840 effect by sending the following command:
10841 </p>
10842 <p>
10843 </p>
10844 <blockquote class="text">
10845 <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10846 </p>
10847 </blockquote><p>
10848
10849 </p>
10850 <p>Where &lt;effect-index&gt; is the numerical ID of the
10851 effect as returned by the
10852 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10853 command.
10854 </p>
10855 <p>The sampler will try to load the requested effect and to
10856 create an instance of it.
10857 </p>
10858 <p>Note: Since the numerical ID of a certain effect can
10859 change at any time, you should not use this command in
10860 LSCP files to restore a certain effect at a later time! To
10861 store a sampler session including all its effects, use the
10862 <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10863 version of "CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> instead! This
10864 allows to restore a sampler session with all its effects
10865 also on other machines, possibly even running a completely
10866 different operating system (e.g. Linux vs. Windows), with
10867 different plugin directories or plugin DLL names.
10868 </p>
10869 <p>Possible Answers:
10870 </p>
10871 <p>
10872 </p>
10873 <blockquote class="text">
10874 <p>"OK[&lt;effect-instance&gt;]" -
10875 </p>
10876 <blockquote class="text">
10877 <p>in case the effect instance was
10878 successfully created, where
10879 &lt;effect-instance&gt; is the numerical ID
10880 of the new effect instance
10881 </p>
10882 </blockquote>
10883
10884
10885 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10886 </p>
10887 <blockquote class="text">
10888 <p>in case the effect instance was spawned
10889 successfully, but there are noteworthy
10890 issue(s) related, providing an appropriate
10891 warning code and warning message
10892 </p>
10893 </blockquote>
10894
10895
10896 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10897 </p>
10898 <blockquote class="text">
10899 <p>if the effect could not be instantiated
10900 </p>
10901 </blockquote>
10902
10903
10904 </blockquote><p>
10905
10906 </p>
10907 <p>Examples:
10908 </p>
10909 <p>
10910 </p>
10911 <blockquote class="text">
10912 <p>C: "CREATE EFFECT_INSTANCE 72"
10913 </p>
10914 <p>S: "OK[5]"
10915 </p>
10916 </blockquote><p>
10917
10918 </p>
10919 <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10920 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10921 <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10922 Destroy an effect instance</h3>
10923
10924 <p>The front-end can destroy an unusued effect instance and
10925 thus freeing it from memory by sending the following command:
10926 </p>
10927 <p>
10928 </p>
10929 <blockquote class="text">
10930 <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10931 </p>
10932 </blockquote><p>
10933
10934 </p>
10935 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10936 effect instance as returned by the
10937 <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
10938 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10939 command.
10940 </p>
10941 <p>The effect instance can only be destroyed if it's not
10942 used in any part of the sampler's audio signal path anymore.
10943 If the effect instance is still in use somewhere, trying to
10944 destroy the effect instance will result in an error
10945 message.
10946 </p>
10947 <p>Possible Answers:
10948 </p>
10949 <p>
10950 </p>
10951 <blockquote class="text">
10952 <p>"OK" -
10953 </p>
10954 <blockquote class="text">
10955 <p>in case the effect instance was successfully destroyed
10956 </p>
10957 </blockquote>
10958
10959
10960 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10961 </p>
10962 <blockquote class="text">
10963 <p>in case it failed, providing an appropriate error code and
10964 error message
10965 </p>
10966 </blockquote>
10967
10968
10969 </blockquote><p>
10970
10971 </p>
10972 <p>Examples:
10973 </p>
10974 <p>
10975 </p>
10976 <blockquote class="text">
10977 <p>C: "DESTROY EFFECT_INSTANCE 5"
10978 </p>
10979 <p>S: "OK"
10980 </p>
10981 </blockquote><p>
10982
10983 </p>
10984 <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10985 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10986 <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10987 Retrieve amount of effect instances</h3>
10988
10989 <p>The front-end can retrieve the current amount of effect
10990 instances by sending the following command:
10991 </p>
10992 <p>
10993 </p>
10994 <blockquote class="text">
10995 <p>GET EFFECT_INSTANCES
10996 </p>
10997 </blockquote><p>
10998
10999 </p>
11000 <p>Possible Answers:
11001 </p>
11002 <p>
11003 </p>
11004 <blockquote class="text">
11005 <p>The sampler will answer by returning the current
11006 number of effect instances created and not yet
11007 destroyed in the current sampler session.
11008 </p>
11009 </blockquote><p>
11010
11011 </p>
11012 <p>Examples:
11013 </p>
11014 <p>
11015 </p>
11016 <blockquote class="text">
11017 <p>C: "GET EFFECT_INSTANCES"
11018 </p>
11019 <p>S: "14"
11020 </p>
11021 </blockquote><p>
11022
11023 </p>
11024 <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
11025 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11026 <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
11027 Get list of effect instances</h3>
11028
11029 <p>The front-end can retrieve the current list of effect
11030 instances by sending the following command:
11031 </p>
11032 <p>
11033 </p>
11034 <blockquote class="text">
11035 <p>LIST EFFECT_INSTANCES
11036 </p>
11037 </blockquote><p>
11038
11039 </p>
11040 <p>Possible Answers:
11041 </p>
11042 <p>
11043 </p>
11044 <blockquote class="text">
11045 <p>The sampler will answer by returning a comma
11046 separated list with numerical IDs of effects
11047 instances.
11048
11049 </p>
11050 </blockquote><p>
11051
11052 </p>
11053 <p>Example:
11054 </p>
11055 <p>
11056 </p>
11057 <blockquote class="text">
11058 <p>C: "LIST EFFECT_INSTANCES"
11059 </p>
11060 <p>S: "9,11,14,15,16,17,25"
11061 </p>
11062 </blockquote><p>
11063
11064 </p>
11065 <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
11066 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11067 <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
11068 Retrieving current information about an effect instance</h3>
11069
11070 <p>The front-end can ask for the current informations about
11071 a particular effect instance by sending the following command:
11072 </p>
11073 <p>
11074 </p>
11075 <blockquote class="text">
11076 <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
11077 </p>
11078 </blockquote><p>
11079
11080 </p>
11081 <p>Where &lt;effect-instance&gt; is the numerical ID of an
11082 effect instance as returned by the
11083 <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
11084 or
11085 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11086 command.
11087 </p>
11088 <p>Possible Answers:
11089 </p>
11090 <p>
11091 </p>
11092 <blockquote class="text">
11093 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11094 Each answer line begins with the information
11095 category name, followed by a colon and then a space
11096 character &lt;SP&gt; and finally the info character
11097 string to that information category. At the
11098 moment the following categories are defined:
11099 </p>
11100 <p>
11101 </p>
11102 <blockquote class="text">
11103 <p>SYSTEM -
11104 </p>
11105 <blockquote class="text">
11106 <p>name of the effect plugin system
11107 the effect is based on
11108 (e.g. "LADSPA")
11109 </p>
11110 </blockquote>
11111
11112
11113 <p>MODULE -
11114 </p>
11115 <blockquote class="text">
11116 <p>module of the effect plugin
11117 system that contains this effect,
11118 the module is usually the
11119 dynamic-linked library (DLL)
11120 filename of the effect plugin,
11121 including full path (note that this
11122 filename may contain
11123 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11124 </p>
11125 </blockquote>
11126
11127
11128 <p>NAME -
11129 </p>
11130 <blockquote class="text">
11131 <p>character string defining the
11132 unique name of the effect within its
11133 module (note that the character
11134 string may contain
11135 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11136 </p>
11137 </blockquote>
11138
11139
11140 <p>DESCRIPTION -
11141 </p>
11142 <blockquote class="text">
11143 <p>human readable name of the
11144 effect, intended to be displayed in
11145 user interfaces (note that the
11146 character string may contain
11147 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11148 </p>
11149 </blockquote>
11150
11151
11152 <p>INPUT_CONTROLS -
11153 </p>
11154 <blockquote class="text">
11155 <p>amount of input controls the
11156 effect instance provides, to allow
11157 controlling the effect parameters in
11158 realtime
11159 </p>
11160 </blockquote>
11161
11162
11163 </blockquote>
11164
11165
11166 </blockquote><p>
11167
11168 </p>
11169 <p>The mentioned fields above don't have to be in particular order.
11170 </p>
11171 <p>Example:
11172 </p>
11173 <p>
11174 </p>
11175 <blockquote class="text">
11176 <p>C: "GET EFFECT_INSTANCE INFO 3"
11177 </p>
11178 <p>S: "SYSTEM: LADSPA"
11179 </p>
11180 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
11181 </p>
11182 <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
11183 </p>
11184 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
11185 </p>
11186 <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
11187 </p>
11188 <p>&nbsp;&nbsp;&nbsp;"."
11189 </p>
11190 </blockquote><p>
11191
11192 </p>
11193 <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
11194 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11195 <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
11196 Retrieving information about an effect parameter</h3>
11197
11198 <p>Effects typically provide a certain set of effect
11199 parameters which can be altered by the user in realtime
11200 (e.g. depth of a reverb effect, duration of a delay effect,
11201 dry / wet signal ratio). Those controllable effect parameters
11202 are called "input controls". The front-end can ask for the
11203 current informations of an effect instance's input control
11204 by sending the following command:
11205 </p>
11206 <p>
11207 </p>
11208 <blockquote class="text">
11209 <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
11210 </p>
11211 </blockquote><p>
11212
11213 </p>
11214 <p>Where &lt;effect-instance&gt; is the numerical ID of an
11215 effect instance as returned by the
11216 <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
11217 or
11218 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11219 command and &lt;input-control&gt; is the index of the input
11220 control within the numerical bounds as returned by the
11221 "INPUT_CONTROLS" field of the
11222 <a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
11223 command.
11224 </p>
11225 <p>Possible Answers:
11226 </p>
11227 <p>
11228 </p>
11229 <blockquote class="text">
11230 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11231 Each answer line begins with the information
11232 category name, followed by a colon and then a space
11233 character &lt;SP&gt; and finally the info character
11234 string to that information category. There are
11235 information categories which are always returned,
11236 independent of the respective effect parameter and
11237 there are optional information categories
11238 which are only shown for certain effect parameters.
11239 At the moment the following categories are defined:
11240 </p>
11241 <p>
11242 </p>
11243 <blockquote class="text">
11244 <p>DESCRIPTION -
11245 </p>
11246 <blockquote class="text">
11247 <p>(always returned)
11248 human readable name of the
11249 effect parameter, intended to be
11250 displayed in user interfaces (note
11251 that the character string may
11252 contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11253 </p>
11254 </blockquote>
11255
11256
11257 <p>VALUE -
11258 </p>
11259 <blockquote class="text">
11260 <p>
11261 (always returned)
11262 current (optional dotted)
11263 floating point value of this effect
11264 parameter
11265 </p>
11266 </blockquote>
11267
11268
11269 <p>RANGE_MIN -
11270 </p>
11271 <blockquote class="text">
11272 <p>
11273 (optionally returned)
11274 minimum allowed value for this
11275 effect parameter
11276 </p>
11277 </blockquote>
11278
11279
11280 <p>RANGE_MAX -
11281 </p>
11282 <blockquote class="text">
11283 <p>
11284 (optionally returned)
11285 maximum allowed value for this
11286 effect parameter
11287 </p>
11288 </blockquote>
11289
11290
11291 <p>POSSIBILITIES -
11292 </p>
11293 <blockquote class="text">
11294 <p>
11295 (optionally returned)
11296 comma separated list of
11297 (optional dotted) floating point
11298 numbers, reflecting the exact set of
11299 possible values for this effect
11300 parameter
11301 </p>
11302 </blockquote>
11303
11304
11305 <p>DEFAULT -
11306 </p>
11307 <blockquote class="text">
11308 <p>
11309 (optionally returned)
11310 default value of this effect
11311 parameter
11312 </p>
11313 </blockquote>
11314
11315
11316 </blockquote>
11317
11318
11319 </blockquote><p>
11320
11321 </p>
11322 <p>The mentioned fields above don't have to be in particular order.
11323 </p>
11324 <p>Example:
11325 </p>
11326 <p>
11327 </p>
11328 <blockquote class="text">
11329 <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
11330 </p>
11331 <p>S: "DESCRIPTION: Base delay (s)"
11332 </p>
11333 <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
11334 </p>
11335 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
11336 </p>
11337 <p>&nbsp;&nbsp;&nbsp;"."
11338 </p>
11339 </blockquote><p>
11340
11341 </p>
11342 <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
11343 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11344 <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
11345 Altering an effect parameter</h3>
11346
11347 <p>The front-end can alter the current value of an effect
11348 parameter by sending the following command:
11349 </p>
11350 <p>
11351 </p>
11352 <blockquote class="text">
11353 <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
11354 </p>
11355 </blockquote><p>
11356
11357 </p>
11358 <p>Where &lt;effect-instance&gt; is the numerical ID of the
11359 effect instance as returned by the
11360 <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11361 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11362 command, &lt;input-control&gt; is the index of the input
11363 control within the numerical bounds as returned by the
11364 "INPUT_CONTROLS" field of the
11365 <a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
11366 command and &lt;value&gt; is the new (optional dotted)
11367 floating point value for this effect parameter.
11368 </p>
11369 <p>Possible Answers:
11370 </p>
11371 <p>
11372 </p>
11373 <blockquote class="text">
11374 <p>"OK" -
11375 </p>
11376 <blockquote class="text">
11377 <p>in case the effect was altered successfully
11378 </p>
11379 </blockquote>
11380
11381
11382 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11383 </p>
11384 <blockquote class="text">
11385 <p>in case it failed, providing an appropriate error code and
11386 error message
11387 </p>
11388 </blockquote>
11389
11390
11391 </blockquote><p>
11392
11393 </p>
11394 <p>Examples:
11395 </p>
11396 <p>
11397 </p>
11398 <blockquote class="text">
11399 <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11400 </p>
11401 <p>S: "OK"
11402 </p>
11403 </blockquote><p>
11404
11405 </p>
11406 <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11407 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11408 <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11409 Retrieve amount of send effect chains</h3>
11410
11411 <p>The front-end can retrieve the current amount of send
11412 effect chains of an audio output device by sending the
11413 following command:
11414 </p>
11415 <p>
11416 </p>
11417 <blockquote class="text">
11418 <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11419 </p>
11420 </blockquote><p>
11421
11422 </p>
11423 <p>Where &lt;audio-device&gt; should be replaced by the
11424 numerical ID of the audio output device as given by the
11425 <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>
11426 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>
11427 command.
11428 </p>
11429 <p>Possible Answers:
11430 </p>
11431 <p>
11432 </p>
11433 <blockquote class="text">
11434 <p>The sampler will answer by returning the current
11435 number of send effect chains of the supplied audio
11436 output device.
11437 </p>
11438 </blockquote><p>
11439
11440 </p>
11441 <p>Examples:
11442 </p>
11443 <p>
11444 </p>
11445 <blockquote class="text">
11446 <p>C: "GET SEND_EFFECT_CHAINS 0"
11447 </p>
11448 <p>S: "4"
11449 </p>
11450 </blockquote><p>
11451
11452 </p>
11453 <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11454 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11455 <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11456 Retrieve list of send effect chains</h3>
11457
11458 <p>The front-end can retrieve the current list of send
11459 effect chains of an audio output device by sending the
11460 following command:
11461 </p>
11462 <p>
11463 </p>
11464 <blockquote class="text">
11465 <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11466 </p>
11467 </blockquote><p>
11468
11469 </p>
11470 <p>Where &lt;audio-device&gt; should be replaced by the
11471 numerical ID of the audio output device as given by the
11472 <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>
11473 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>
11474 command.
11475 </p>
11476 <p>Possible Answers:
11477 </p>
11478 <p>
11479 </p>
11480 <blockquote class="text">
11481 <p>The sampler will answer by returning a comma
11482 separated list with numerical IDs of send effect
11483 chains of the supplied audio output device.
11484
11485 </p>
11486 </blockquote><p>
11487
11488 </p>
11489 <p>Examples:
11490 </p>
11491 <p>
11492 </p>
11493 <blockquote class="text">
11494 <p>C: "LIST SEND_EFFECT_CHAINS 0"
11495 </p>
11496 <p>S: "3,4,7"
11497 </p>
11498 </blockquote><p>
11499
11500 </p>
11501 <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11502 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11503 <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11504 Add send effect chain</h3>
11505
11506 <p>The front-end can add a send effect chain by sending the
11507 following command:
11508 </p>
11509 <p>
11510 </p>
11511 <blockquote class="text">
11512 <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11513 </p>
11514 </blockquote><p>
11515
11516 </p>
11517 <p>Where &lt;audio-device&gt; should be replaced by the
11518 numerical ID of the audio output device as given by the
11519 <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>
11520 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>
11521 command.
11522 </p>
11523 <p>Possible Answers:
11524 </p>
11525 <p>
11526 </p>
11527 <blockquote class="text">
11528 <p>"OK[&lt;effect-chain&gt;]" -
11529 </p>
11530 <blockquote class="text">
11531 <p>in case the send effect chain was
11532 added successfully, where
11533 &lt;effect-chain&gt; is the numerical ID
11534 of the new send effect chain
11535 </p>
11536 </blockquote>
11537
11538
11539 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11540 </p>
11541 <blockquote class="text">
11542 <p>if the send effect chain could not be added
11543 </p>
11544 </blockquote>
11545
11546
11547 </blockquote><p>
11548
11549 </p>
11550 <p>Examples:
11551 </p>
11552 <p>
11553 </p>
11554 <blockquote class="text">
11555 <p>C: "ADD SEND_EFFECT_CHAIN 0"
11556 </p>
11557 <p>S: "OK[2]"
11558 </p>
11559 </blockquote><p>
11560
11561 </p>
11562 <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11563 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11564 <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11565 Remove send effect chain</h3>
11566
11567 <p>The front-end can remove a send effect chain by sending
11568 the following command:
11569 </p>
11570 <p>
11571 </p>
11572 <blockquote class="text">
11573 <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11574 </p>
11575 </blockquote><p>
11576
11577 </p>
11578 <p>Where &lt;audio-device&gt; should be replaced by the
11579 numerical ID of the audio output device as given by the
11580 <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>
11581 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>
11582 command and &lt;effect-chain&gt; by the numerical ID as
11583 returned by the
11584 <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11585 or
11586 <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11587 command.
11588 </p>
11589 <p>Possible Answers:
11590 </p>
11591 <p>
11592 </p>
11593 <blockquote class="text">
11594 <p>"OK" -
11595 </p>
11596 <blockquote class="text">
11597 <p>in case the send effect chain was
11598 removed successfully
11599 </p>
11600 </blockquote>
11601
11602
11603 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11604 </p>
11605 <blockquote class="text">
11606 <p>if the send effect chain could not be removed
11607 </p>
11608 </blockquote>
11609
11610
11611 </blockquote><p>
11612
11613 </p>
11614 <p>Examples:
11615 </p>
11616 <p>
11617 </p>
11618 <blockquote class="text">
11619 <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11620 </p>
11621 <p>S: "OK"
11622 </p>
11623 </blockquote><p>
11624
11625 </p>
11626 <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11627 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11628 <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11629 Retrieving information about a send effect chain</h3>
11630
11631 <p>The front-end can ask for informations of a send effect
11632 chain by sending the following command:
11633 </p>
11634 <p>
11635 </p>
11636 <blockquote class="text">
11637 <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11638 </p>
11639 </blockquote><p>
11640
11641 </p>
11642 <p>Where &lt;audio-device&gt; should be replaced by the
11643 numerical ID of the audio output device as given by the
11644 <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>
11645 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>
11646 command and &lt;effect-chain&gt; by the numerical ID as
11647 returned by the
11648 <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11649 or
11650 <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11651 command.
11652 </p>
11653 <p>Possible Answers:
11654 </p>
11655 <p>
11656 </p>
11657 <blockquote class="text">
11658 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11659 Each answer line begins with the information
11660 category name, followed by a colon and then a space
11661 character &lt;SP&gt; and finally the info character
11662 string to that information category.
11663 At the moment the following categories are defined:
11664 </p>
11665 <p>
11666 </p>
11667 <blockquote class="text">
11668 <p>EFFECT_COUNT -
11669 </p>
11670 <blockquote class="text">
11671 <p>amount of effects in this send
11672 effect chain
11673 </p>
11674 </blockquote>
11675
11676
11677 <p>EFFECT_SEQUENCE -
11678 </p>
11679 <blockquote class="text">
11680 <p>comma separated list of the
11681 numerical IDs of the effect
11682 instances in this send effect chain,
11683 in the order as they are procssed in
11684 the effect chain
11685 </p>
11686 </blockquote>
11687
11688
11689 </blockquote>
11690
11691
11692 </blockquote><p>
11693
11694 </p>
11695 <p>The mentioned fields above don't have to be in particular order.
11696 </p>
11697 <p>Example:
11698 </p>
11699 <p>
11700 </p>
11701 <blockquote class="text">
11702 <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11703 </p>
11704 <p>S: "EFFECT_COUNT: 3"
11705 </p>
11706 <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11707 </p>
11708 <p>&nbsp;&nbsp;&nbsp;"."
11709 </p>
11710 </blockquote><p>
11711
11712 </p>
11713 <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11714 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11715 <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11716 Append effect instance to a send effect chain</h3>
11717
11718 <p>The front-end can add an unused effect instance to the
11719 end of a send effect chain by sending the following command:
11720 </p>
11721 <p>
11722 </p>
11723 <blockquote class="text">
11724 <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11725 </p>
11726 </blockquote><p>
11727
11728 </p>
11729 <p>Where &lt;audio-device&gt; should be replaced by the
11730 numerical ID of the audio output device as given by the
11731 <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>
11732 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>
11733 command and &lt;effect-chain&gt; by the numerical ID as
11734 returned by the
11735 <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11736 or
11737 <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11738 command and &lt;effect-instance&gt; as returned by the
11739 <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11740 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11741 command.
11742 </p>
11743 <p>Only unused effect instances can be added to the effect
11744 chain. Trying to add an effect instance which is already in
11745 use somewhere in the audio signal path of the sampler will
11746 result in an error.
11747 </p>
11748 <p>Possible Answers:
11749 </p>
11750 <p>
11751 </p>
11752 <blockquote class="text">
11753 <p>"OK" -
11754 </p>
11755 <blockquote class="text">
11756 <p>in case the effect instance was
11757 added successfully to the chain
11758 </p>
11759 </blockquote>
11760
11761
11762 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11763 </p>
11764 <blockquote class="text">
11765 <p>if the effect instance could not be added
11766 </p>
11767 </blockquote>
11768
11769
11770 </blockquote><p>
11771
11772 </p>
11773 <p>Examples:
11774 </p>
11775 <p>
11776 </p>
11777 <blockquote class="text">
11778 <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11779 </p>
11780 <p>S: "OK"
11781 </p>
11782 </blockquote><p>
11783
11784 </p>
11785 <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11786 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11787 <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11788 Insert effect instance to a send effect chain</h3>
11789
11790 <p>The front-end can add an unused effect instance to a
11791 certain position of a send effect chain by sending the
11792 following command:
11793 </p>
11794 <p>
11795 </p>
11796 <blockquote class="text">
11797 <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11798 </p>
11799 </blockquote><p>
11800
11801 </p>
11802 <p>Where &lt;audio-device&gt; should be replaced by the
11803 numerical ID of the audio output device as given by the
11804 <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>
11805 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>
11806 command, &lt;effect-chain&gt; by the numerical ID as
11807 returned by the
11808 <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11809 or
11810 <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11811 command, &lt;effect-instance&gt; as returned by the
11812 <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11813 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11814 command and &lt;chain-pos&gt; the exact position of the
11815 effect chain where the supplied effect shall be inserted
11816 to.
11817 </p>
11818 <p>Only unused effect instances can be added to the effect
11819 chain. Trying to add an effect instance which is already in
11820 use somewhere in the audio signal path of the sampler will
11821 result in an error.
11822 </p>
11823 <p>Possible Answers:
11824 </p>
11825 <p>
11826 </p>
11827 <blockquote class="text">
11828 <p>"OK" -
11829 </p>
11830 <blockquote class="text">
11831 <p>in case the effect instance was
11832 added successfully to the chain
11833 </p>
11834 </blockquote>
11835
11836
11837 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11838 </p>
11839 <blockquote class="text">
11840 <p>if the effect instance could not be added
11841 </p>
11842 </blockquote>
11843
11844
11845 </blockquote><p>
11846
11847 </p>
11848 <p>Examples:
11849 </p>
11850 <p>
11851 </p>
11852 <blockquote class="text">
11853 <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11854 </p>
11855 <p>S: "OK"
11856 </p>
11857 </blockquote><p>
11858
11859 </p>
11860 <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11861 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11862 <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11863 Remove effect instance from send effect chain</h3>
11864
11865 <p>The front-end can remove an effect instance from a
11866 certain position of a send effect chain by sending the
11867 following command:
11868 </p>
11869 <p>
11870 </p>
11871 <blockquote class="text">
11872 <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11873 </p>
11874 </blockquote><p>
11875
11876 </p>
11877 <p>Where &lt;audio-device&gt; should be replaced by the
11878 numerical ID of the audio output device as given by the
11879 <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>
11880 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>
11881 command, &lt;effect-chain&gt; by the numerical ID as
11882 returned by the
11883 <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11884 or
11885 <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11886 command and &lt;chain-pos&gt; the exact position of the
11887 effect instance to be removed from the effect chain.
11888 </p>
11889 <p>Possible Answers:
11890 </p>
11891 <p>
11892 </p>
11893 <blockquote class="text">
11894 <p>"OK" -
11895 </p>
11896 <blockquote class="text">
11897 <p>in case the effect instance was
11898 removed successfully
11899 </p>
11900 </blockquote>
11901
11902
11903 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11904 </p>
11905 <blockquote class="text">
11906 <p>if the effect instance could not be removed
11907 </p>
11908 </blockquote>
11909
11910
11911 </blockquote><p>
11912
11913 </p>
11914 <p>Examples:
11915 </p>
11916 <p>
11917 </p>
11918 <blockquote class="text">
11919 <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11920 </p>
11921 <p>S: "OK"
11922 </p>
11923 </blockquote><p>
11924
11925 </p>
11926 <a name="command_syntax"></a><br /><hr />
11927 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11928 <a name="rfc.section.7"></a><h3>7.&nbsp;
11929 Command Syntax</h3>
11930
11931 <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>
11932 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>)
11933 where applicable.
11934
11935 </p>
11936 <p>input =
11937 </p>
11938 <blockquote class="text">
11939 <p>line LF
11940
11941 </p>
11942 <p>/ line CR LF
11943
11944 </p>
11945 </blockquote><p>
11946
11947 </p>
11948 <p>line =
11949 </p>
11950 <blockquote class="text">
11951 <p>/* epsilon (empty line ignored) */
11952
11953 </p>
11954 <p>/ comment
11955
11956 </p>
11957 <p>/ command
11958
11959 </p>
11960 <p>/ error
11961
11962 </p>
11963 </blockquote><p>
11964
11965 </p>
11966 <p>comment =
11967 </p>
11968 <blockquote class="text">
11969 <p>'#'
11970
11971 </p>
11972 <p>/ comment '#'
11973
11974 </p>
11975 <p>/ comment SP
11976
11977 </p>
11978 <p>/ comment number
11979
11980 </p>
11981 <p>/ comment string
11982
11983 </p>
11984 </blockquote><p>
11985
11986 </p>
11987 <p>command =
11988 </p>
11989 <blockquote class="text">
11990 <p>ADD SP add_instruction
11991
11992 </p>
11993 <p>/ MAP SP map_instruction
11994
11995 </p>
11996 <p>/ UNMAP SP unmap_instruction
11997
11998 </p>
11999 <p>/ GET SP get_instruction
12000
12001 </p>
12002 <p>/ CREATE SP create_instruction
12003
12004 </p>
12005 <p>/ DESTROY SP destroy_instruction
12006
12007 </p>
12008 <p>/ LIST SP list_instruction
12009
12010 </p>
12011 <p>/ LOAD SP load_instruction
12012
12013 </p>
12014 <p>/ REMOVE SP remove_instruction
12015
12016 </p>
12017 <p>/ SET SP set_instruction
12018
12019 </p>
12020 <p>/ SUBSCRIBE SP subscribe_event
12021
12022 </p>
12023 <p>/ UNSUBSCRIBE SP unsubscribe_event
12024
12025 </p>
12026 <p>/ RESET SP reset_instruction
12027
12028 </p>
12029 <p>/ CLEAR SP clear_instruction
12030
12031 </p>
12032 <p>/ FIND SP find_instruction
12033
12034 </p>
12035 <p>/ MOVE SP move_instruction
12036
12037 </p>
12038 <p>/ COPY SP copy_instruction
12039
12040 </p>
12041 <p>/ EDIT SP edit_instruction
12042
12043 </p>
12044 <p>/ FORMAT SP format_instruction
12045
12046 </p>
12047 <p>/ SEND SP send_instruction
12048
12049 </p>
12050 <p>/ APPEND SP append_instruction
12051
12052 </p>
12053 <p>/ INSERT SP insert_instruction
12054
12055 </p>
12056 <p>/ RESET
12057
12058 </p>
12059 <p>/ QUIT
12060
12061 </p>
12062 </blockquote><p>
12063
12064 </p>
12065 <p>add_instruction =
12066 </p>
12067 <blockquote class="text">
12068 <p>CHANNEL
12069
12070 </p>
12071 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index
12072
12073 </p>
12074 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index
12075
12076 </p>
12077 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
12078
12079 </p>
12080 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
12081
12082 </p>
12083 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
12084
12085 </p>
12086 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
12087
12088 </p>
12089 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
12090
12091 </p>
12092 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
12093
12094 </p>
12095 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
12096
12097 </p>
12098 <p>/ DB_INSTRUMENTS SP db_path SP filename
12099
12100 </p>
12101 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
12102
12103 </p>
12104 <p>/ MIDI_INSTRUMENT_MAP
12105
12106 </p>
12107 <p>/ MIDI_INSTRUMENT_MAP SP map_name
12108
12109 </p>
12110 <p>/ SEND_EFFECT_CHAIN SP device_index
12111
12112 </p>
12113 </blockquote><p>
12114
12115 </p>
12116 <p>subscribe_event =
12117 </p>
12118 <blockquote class="text">
12119 <p>AUDIO_OUTPUT_DEVICE_COUNT
12120
12121 </p>
12122 <p>/ AUDIO_OUTPUT_DEVICE_INFO
12123
12124 </p>
12125 <p>/ MIDI_INPUT_DEVICE_COUNT
12126
12127 </p>
12128 <p>/ MIDI_INPUT_DEVICE_INFO
12129
12130 </p>
12131 <p>/ CHANNEL_COUNT
12132
12133 </p>
12134 <p>/ CHANNEL_MIDI
12135
12136 </p>
12137 <p>/ DEVICE_MIDI
12138
12139 </p>
12140 <p>/ VOICE_COUNT
12141
12142 </p>
12143 <p>/ STREAM_COUNT
12144
12145 </p>
12146 <p>/ BUFFER_FILL
12147
12148 </p>
12149 <p>/ CHANNEL_INFO
12150
12151 </p>
12152 <p>/ FX_SEND_COUNT
12153
12154 </p>
12155 <p>/ FX_SEND_INFO
12156
12157 </p>
12158 <p>/ MIDI_INSTRUMENT_MAP_COUNT
12159
12160 </p>
12161 <p>/ MIDI_INSTRUMENT_MAP_INFO
12162
12163 </p>
12164 <p>/ MIDI_INSTRUMENT_COUNT
12165
12166 </p>
12167 <p>/ MIDI_INSTRUMENT_INFO
12168
12169 </p>
12170 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
12171
12172 </p>
12173 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
12174
12175 </p>
12176 <p>/ DB_INSTRUMENT_COUNT
12177
12178 </p>
12179 <p>/ DB_INSTRUMENT_INFO
12180
12181 </p>
12182 <p>/ DB_INSTRUMENTS_JOB_INFO
12183
12184 </p>
12185 <p>/ MISCELLANEOUS
12186
12187 </p>
12188 <p>/ TOTAL_STREAM_COUNT
12189
12190 </p>
12191 <p>/ TOTAL_VOICE_COUNT
12192
12193 </p>
12194 <p>/ GLOBAL_INFO
12195
12196 </p>
12197 <p>/ EFFECT_INSTANCE_COUNT
12198
12199 </p>
12200 <p>/ EFFECT_INSTANCE_INFO
12201
12202 </p>
12203 <p>/ SEND_EFFECT_CHAIN_COUNT
12204
12205 </p>
12206 <p>/ SEND_EFFECT_CHAIN_INFO
12207
12208 </p>
12209 </blockquote><p>
12210
12211 </p>
12212 <p>unsubscribe_event =
12213 </p>
12214 <blockquote class="text">
12215 <p>AUDIO_OUTPUT_DEVICE_COUNT
12216
12217 </p>
12218 <p>/ AUDIO_OUTPUT_DEVICE_INFO
12219
12220 </p>
12221 <p>/ MIDI_INPUT_DEVICE_COUNT
12222
12223 </p>
12224 <p>/ MIDI_INPUT_DEVICE_INFO
12225
12226 </p>
12227 <p>/ CHANNEL_COUNT
12228
12229 </p>
12230 <p>/ CHANNEL_MIDI
12231
12232 </p>
12233 <p>/ DEVICE_MIDI
12234
12235 </p>
12236 <p>/ VOICE_COUNT
12237
12238 </p>
12239 <p>/ STREAM_COUNT
12240
12241 </p>
12242 <p>/ BUFFER_FILL
12243
12244 </p>
12245 <p>/ CHANNEL_INFO
12246
12247 </p>
12248 <p>/ FX_SEND_COUNT
12249
12250 </p>
12251 <p>/ FX_SEND_INFO
12252
12253 </p>
12254 <p>/ MIDI_INSTRUMENT_MAP_COUNT
12255
12256 </p>
12257 <p>/ MIDI_INSTRUMENT_MAP_INFO
12258
12259 </p>
12260 <p>/ MIDI_INSTRUMENT_COUNT
12261
12262 </p>
12263 <p>/ MIDI_INSTRUMENT_INFO
12264
12265 </p>
12266 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
12267
12268 </p>
12269 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
12270
12271 </p>
12272 <p>/ DB_INSTRUMENT_COUNT
12273
12274 </p>
12275 <p>/ DB_INSTRUMENT_INFO
12276
12277 </p>
12278 <p>/ DB_INSTRUMENTS_JOB_INFO
12279
12280 </p>
12281 <p>/ MISCELLANEOUS
12282
12283 </p>
12284 <p>/ TOTAL_STREAM_COUNT
12285
12286 </p>
12287 <p>/ TOTAL_VOICE_COUNT
12288
12289 </p>
12290 <p>/ GLOBAL_INFO
12291
12292 </p>
12293 <p>/ EFFECT_INSTANCE_COUNT
12294
12295 </p>
12296 <p>/ EFFECT_INSTANCE_INFO
12297
12298 </p>
12299 <p>/ SEND_EFFECT_CHAIN_COUNT
12300
12301 </p>
12302 <p>/ SEND_EFFECT_CHAIN_INFO
12303
12304 </p>
12305 </blockquote><p>
12306
12307 </p>
12308 <p>map_instruction =
12309 </p>
12310 <blockquote class="text">
12311 <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
12312
12313 </p>
12314 <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
12315
12316 </p>
12317 <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
12318
12319 </p>
12320 <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
12321
12322 </p>
12323 </blockquote><p>
12324
12325 </p>
12326 <p>unmap_instruction =
12327 </p>
12328 <blockquote class="text">
12329 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
12330
12331 </p>
12332 </blockquote><p>
12333
12334 </p>
12335 <p>remove_instruction =
12336 </p>
12337 <blockquote class="text">
12338 <p>CHANNEL SP sampler_channel
12339
12340 </p>
12341 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel
12342
12343 </p>
12344 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index
12345
12346 </p>
12347 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index
12348
12349 </p>
12350 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
12351
12352 </p>
12353 <p>/ MIDI_INSTRUMENT_MAP SP ALL
12354
12355 </p>
12356 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
12357
12358 </p>
12359 <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
12360
12361 </p>
12362 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
12363
12364 </p>
12365 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
12366
12367 </p>
12368 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
12369
12370 </p>
12371 <p>/ DB_INSTRUMENT SP db_path
12372
12373 </p>
12374 </blockquote><p>
12375
12376 </p>
12377 <p>get_instruction =
12378 </p>
12379 <blockquote class="text">
12380 <p>AVAILABLE_ENGINES
12381
12382 </p>
12383 <p>/ AVAILABLE_EFFECTS
12384
12385 </p>
12386 <p>/ EFFECT_INSTANCES
12387
12388 </p>
12389 <p>/ EFFECT SP INFO SP effect_index
12390
12391 </p>
12392 <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
12393
12394 </p>
12395 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
12396
12397 </p>
12398 <p>/ SEND_EFFECT_CHAINS SP device_index
12399
12400 </p>
12401 <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
12402
12403 </p>
12404 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12405
12406 </p>
12407 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
12408
12409 </p>
12410 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12411
12412 </p>
12413 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12414
12415 </p>
12416 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12417
12418 </p>
12419 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12420
12421 </p>
12422 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12423
12424 </p>
12425 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12426
12427 </p>
12428 <p>/ AUDIO_OUTPUT_DEVICES
12429
12430 </p>
12431 <p>/ MIDI_INPUT_DEVICES
12432
12433 </p>
12434 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12435
12436 </p>
12437 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12438
12439 </p>
12440 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12441
12442 </p>
12443 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12444
12445 </p>
12446 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12447
12448 </p>
12449 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12450
12451 </p>
12452 <p>/ CHANNELS
12453
12454 </p>
12455 <p>/ CHANNEL SP INFO SP sampler_channel
12456
12457 </p>
12458 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12459
12460 </p>
12461 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12462
12463 </p>
12464 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12465
12466 </p>
12467 <p>/ ENGINE SP INFO SP engine_name
12468
12469 </p>
12470 <p>/ SERVER SP INFO
12471
12472 </p>
12473 <p>/ TOTAL_STREAM_COUNT
12474
12475 </p>
12476 <p>/ TOTAL_VOICE_COUNT
12477
12478 </p>
12479 <p>/ TOTAL_VOICE_COUNT_MAX
12480
12481 </p>
12482 <p>/ MIDI_INSTRUMENTS SP midi_map
12483
12484 </p>
12485 <p>/ MIDI_INSTRUMENTS SP ALL
12486
12487 </p>
12488 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12489
12490 </p>
12491 <p>/ MIDI_INSTRUMENT_MAPS
12492
12493 </p>
12494 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12495
12496 </p>
12497 <p>/ FX_SENDS SP sampler_channel
12498
12499 </p>
12500 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12501
12502 </p>
12503 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12504
12505 </p>
12506 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12507
12508 </p>
12509 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12510
12511 </p>
12512 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12513
12514 </p>
12515 <p>/ DB_INSTRUMENTS SP db_path
12516
12517 </p>
12518 <p>/ DB_INSTRUMENT SP INFO SP db_path
12519
12520 </p>
12521 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12522
12523 </p>
12524 <p>/ VOLUME
12525
12526 </p>
12527 <p>/ VOICES
12528
12529 </p>
12530 <p>/ STREAMS
12531
12532 </p>
12533 <p>/ FILE SP INSTRUMENTS SP filename
12534
12535 </p>
12536 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12537
12538 </p>
12539 </blockquote><p>
12540
12541 </p>
12542 <p>set_instruction =
12543 </p>
12544 <blockquote class="text">
12545 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12546
12547 </p>
12548 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12549
12550 </p>
12551 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12552
12553 </p>
12554 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12555
12556 </p>
12557 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12558
12559 </p>
12560 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12561
12562 </p>
12563 <p>/ CHANNEL SP set_chan_instruction
12564
12565 </p>
12566 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12567
12568 </p>
12569 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12570
12571 </p>
12572 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12573
12574 </p>
12575 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12576
12577 </p>
12578 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12579
12580 </p>
12581 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12582
12583 </p>
12584 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12585
12586 </p>
12587 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12588
12589 </p>
12590 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12591
12592 </p>
12593 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12594
12595 </p>
12596 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12597
12598 </p>
12599 <p>/ ECHO SP boolean
12600
12601 </p>
12602 <p>/ VOLUME SP volume_value
12603
12604 </p>
12605 <p>/ VOICES SP number
12606
12607 </p>
12608 <p>/ STREAMS SP number
12609
12610 </p>
12611 </blockquote><p>
12612
12613 </p>
12614 <p>create_instruction =
12615 </p>
12616 <blockquote class="text">
12617 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12618
12619 </p>
12620 <p>/ AUDIO_OUTPUT_DEVICE SP string
12621
12622 </p>
12623 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12624
12625 </p>
12626 <p>/ MIDI_INPUT_DEVICE SP string
12627
12628 </p>
12629 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12630
12631 </p>
12632 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12633
12634 </p>
12635 <p>/ EFFECT_INSTANCE SP effect_index
12636
12637 </p>
12638 <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12639
12640 </p>
12641 </blockquote><p>
12642
12643 </p>
12644 <p>reset_instruction =
12645 </p>
12646 <blockquote class="text">
12647 <p>CHANNEL SP sampler_channel
12648
12649 </p>
12650 </blockquote><p>
12651
12652 </p>
12653 <p>clear_instruction =
12654 </p>
12655 <blockquote class="text">
12656 <p>MIDI_INSTRUMENTS SP midi_map
12657
12658 </p>
12659 <p>/ MIDI_INSTRUMENTS SP ALL
12660
12661 </p>
12662 </blockquote><p>
12663
12664 </p>
12665 <p>find_instruction =
12666 </p>
12667 <blockquote class="text">
12668 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12669
12670 </p>
12671 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12672
12673 </p>
12674 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12675
12676 </p>
12677 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12678
12679 </p>
12680 <p>/ LOST SP DB_INSTRUMENT_FILES
12681
12682 </p>
12683 </blockquote><p>
12684
12685 </p>
12686 <p>move_instruction =
12687 </p>
12688 <blockquote class="text">
12689 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12690
12691 </p>
12692 <p>/ DB_INSTRUMENT SP db_path SP db_path
12693
12694 </p>
12695 </blockquote><p>
12696
12697 </p>
12698 <p>copy_instruction =
12699 </p>
12700 <blockquote class="text">
12701 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12702
12703 </p>
12704 <p>/ DB_INSTRUMENT SP db_path SP db_path
12705
12706 </p>
12707 </blockquote><p>
12708
12709 </p>
12710 <p>destroy_instruction =
12711 </p>
12712 <blockquote class="text">
12713 <p>AUDIO_OUTPUT_DEVICE SP number
12714
12715 </p>
12716 <p>/ MIDI_INPUT_DEVICE SP number
12717
12718 </p>
12719 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12720
12721 </p>
12722 <p>/ EFFECT_INSTANCE SP number
12723
12724 </p>
12725 </blockquote><p>
12726
12727 </p>
12728 <p>load_instruction =
12729 </p>
12730 <blockquote class="text">
12731 <p>INSTRUMENT SP load_instr_args
12732
12733 </p>
12734 <p>/ ENGINE SP load_engine_args
12735
12736 </p>
12737 </blockquote><p>
12738
12739 </p>
12740 <p>append_instruction =
12741 </p>
12742 <blockquote class="text">
12743 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12744
12745 </p>
12746 </blockquote><p>
12747
12748 </p>
12749 <p>insert_instruction =
12750 </p>
12751 <blockquote class="text">
12752 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12753
12754 </p>
12755 </blockquote><p>
12756
12757 </p>
12758 <p>set_chan_instruction =
12759 </p>
12760 <blockquote class="text">
12761 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12762
12763 </p>
12764 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12765
12766 </p>
12767 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12768
12769 </p>
12770 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12771
12772 </p>
12773 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12774
12775 </p>
12776 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12777
12778 </p>
12779 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12780
12781 </p>
12782 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12783
12784 </p>
12785 <p>/ VOLUME SP sampler_channel SP volume_value
12786
12787 </p>
12788 <p>/ MUTE SP sampler_channel SP boolean
12789
12790 </p>
12791 <p>/ SOLO SP sampler_channel SP boolean
12792
12793 </p>
12794 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12795
12796 </p>
12797 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12798
12799 </p>
12800 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12801
12802 </p>
12803 </blockquote><p>
12804
12805 </p>
12806 <p>edit_instruction =
12807 </p>
12808 <blockquote class="text">
12809 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12810
12811 </p>
12812 </blockquote><p>
12813
12814 </p>
12815 <p>format_instruction =
12816 </p>
12817 <blockquote class="text">
12818 <p>INSTRUMENTS_DB
12819
12820 </p>
12821 </blockquote><p>
12822
12823 </p>
12824 <p>modal_arg =
12825 </p>
12826 <blockquote class="text">
12827 <p>/* epsilon (empty argument) */
12828
12829 </p>
12830 <p>/ NON_MODAL SP
12831
12832 </p>
12833 </blockquote><p>
12834
12835 </p>
12836 <p>key_val_list =
12837 </p>
12838 <blockquote class="text">
12839 <p>string '=' param_val_list
12840
12841 </p>
12842 <p>/ key_val_list SP string '=' param_val_list
12843
12844 </p>
12845 </blockquote><p>
12846
12847 </p>
12848 <p>buffer_size_type =
12849 </p>
12850 <blockquote class="text">
12851 <p>BYTES
12852
12853 </p>
12854 <p>/ PERCENTAGE
12855
12856 </p>
12857 </blockquote><p>
12858
12859 </p>
12860 <p>list_instruction =
12861 </p>
12862 <blockquote class="text">
12863 <p>AUDIO_OUTPUT_DEVICES
12864
12865 </p>
12866 <p>/ MIDI_INPUT_DEVICES
12867
12868 </p>
12869 <p>/ CHANNELS
12870
12871 </p>
12872 <p>/ CHANNEL SP MIDI_INPUTS SP sampler_channel
12873
12874 </p>
12875 <p>/ AVAILABLE_ENGINES
12876
12877 </p>
12878 <p>/ AVAILABLE_EFFECTS
12879
12880 </p>
12881 <p>/ EFFECT_INSTANCES
12882
12883 </p>
12884 <p>/ SEND_EFFECT_CHAINS SP number
12885
12886 </p>
12887 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12888
12889 </p>
12890 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12891
12892 </p>
12893 <p>/ MIDI_INSTRUMENTS SP midi_map
12894
12895 </p>
12896 <p>/ MIDI_INSTRUMENTS SP ALL
12897
12898 </p>
12899 <p>/ MIDI_INSTRUMENT_MAPS
12900
12901 </p>
12902 <p>/ FX_SENDS SP sampler_channel
12903
12904 </p>
12905 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12906
12907 </p>
12908 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12909
12910 </p>
12911 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12912
12913 </p>
12914 <p>/ DB_INSTRUMENTS SP db_path
12915
12916 </p>
12917 <p>/ FILE SP INSTRUMENTS SP filename
12918
12919 </p>
12920 </blockquote><p>
12921
12922 </p>
12923 <p>send_instruction =
12924 </p>
12925 <blockquote class="text">
12926 <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12927
12928 </p>
12929 </blockquote><p>
12930
12931 </p>
12932 <p>load_instr_args =
12933 </p>
12934 <blockquote class="text">
12935 <p>filename SP instrument_index SP sampler_channel
12936
12937 </p>
12938 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12939
12940 </p>
12941 </blockquote><p>
12942
12943 </p>
12944 <p>load_engine_args =
12945 </p>
12946 <blockquote class="text">
12947 <p>engine_name SP sampler_channel
12948
12949 </p>
12950 </blockquote><p>
12951
12952 </p>
12953 <p>instr_load_mode =
12954 </p>
12955 <blockquote class="text">
12956 <p>ON_DEMAND
12957
12958 </p>
12959 <p>/ ON_DEMAND_HOLD
12960
12961 </p>
12962 <p>/ PERSISTENT
12963
12964 </p>
12965 </blockquote><p>
12966
12967 </p>
12968 <p>effect_instance =
12969 </p>
12970 <blockquote class="text">
12971 <p>number
12972
12973 </p>
12974 </blockquote><p>
12975
12976 </p>
12977 <p>device_index =
12978 </p>
12979 <blockquote class="text">
12980 <p>number
12981
12982 </p>
12983 </blockquote><p>
12984
12985 </p>
12986 <p>audio_channel_index =
12987 </p>
12988 <blockquote class="text">
12989 <p>number
12990
12991 </p>
12992 </blockquote><p>
12993
12994 </p>
12995 <p>audio_output_type_name =
12996 </p>
12997 <blockquote class="text">
12998 <p>string
12999
13000 </p>
13001 </blockquote><p>
13002
13003 </p>
13004 <p>midi_input_port_index =
13005 </p>
13006 <blockquote class="text">
13007 <p>number
13008
13009 </p>
13010 </blockquote><p>
13011
13012 </p>
13013 <p>midi_input_channel_index =
13014 </p>
13015 <blockquote class="text">
13016 <p>number
13017
13018 </p>
13019 <p>/ ALL
13020
13021 </p>
13022 </blockquote><p>
13023
13024 </p>
13025 <p>midi_input_type_name =
13026 </p>
13027 <blockquote class="text">
13028 <p>string
13029
13030 </p>
13031 </blockquote><p>
13032
13033 </p>
13034 <p>midi_map =
13035 </p>
13036 <blockquote class="text">
13037 <p>number
13038
13039 </p>
13040 </blockquote><p>
13041
13042 </p>
13043 <p>midi_bank =
13044 </p>
13045 <blockquote class="text">
13046 <p>number
13047
13048 </p>
13049 </blockquote><p>
13050
13051 </p>
13052 <p>midi_prog =
13053 </p>
13054 <blockquote class="text">
13055 <p>number
13056
13057 </p>
13058 </blockquote><p>
13059
13060 </p>
13061 <p>midi_ctrl =
13062 </p>
13063 <blockquote class="text">
13064 <p>number
13065
13066 </p>
13067 </blockquote><p>
13068
13069 </p>
13070 <p>volume_value =
13071 </p>
13072 <blockquote class="text">
13073 <p>dotnum
13074
13075 </p>
13076 <p>/ number
13077
13078 </p>
13079 </blockquote><p>
13080
13081 </p>
13082 <p>control_value =
13083 </p>
13084 <blockquote class="text">
13085 <p>real
13086
13087 </p>
13088 </blockquote><p>
13089
13090 </p>
13091 <p>sampler_channel =
13092 </p>
13093 <blockquote class="text">
13094 <p>number
13095
13096 </p>
13097 </blockquote><p>
13098
13099 </p>
13100 <p>instrument_index =
13101 </p>
13102 <blockquote class="text">
13103 <p>number
13104
13105 </p>
13106 </blockquote><p>
13107
13108 </p>
13109 <p>fx_send_id =
13110 </p>
13111 <blockquote class="text">
13112 <p>number
13113
13114 </p>
13115 </blockquote><p>
13116
13117 </p>
13118 <p>engine_name =
13119 </p>
13120 <blockquote class="text">
13121 <p>string
13122
13123 </p>
13124 </blockquote><p>
13125
13126 </p>
13127 <p>filename =
13128 </p>
13129 <blockquote class="text">
13130 <p>path
13131
13132 </p>
13133 </blockquote><p>
13134
13135 </p>
13136 <p>db_path =
13137 </p>
13138 <blockquote class="text">
13139 <p>path
13140
13141 </p>
13142 </blockquote><p>
13143
13144 </p>
13145 <p>map_name =
13146 </p>
13147 <blockquote class="text">
13148 <p>stringval_escaped
13149
13150 </p>
13151 </blockquote><p>
13152
13153 </p>
13154 <p>entry_name =
13155 </p>
13156 <blockquote class="text">
13157 <p>stringval_escaped
13158
13159 </p>
13160 </blockquote><p>
13161
13162 </p>
13163 <p>fx_send_name =
13164 </p>
13165 <blockquote class="text">
13166 <p>stringval_escaped
13167
13168 </p>
13169 </blockquote><p>
13170
13171 </p>
13172 <p>effect_name =
13173 </p>
13174 <blockquote class="text">
13175 <p>stringval_escaped
13176
13177 </p>
13178 </blockquote><p>
13179
13180 </p>
13181 <p>effect_index =
13182 </p>
13183 <blockquote class="text">
13184 <p>number
13185
13186 </p>
13187 </blockquote><p>
13188
13189 </p>
13190 <p>effect_chain =
13191 </p>
13192 <blockquote class="text">
13193 <p>number
13194
13195 </p>
13196 </blockquote><p>
13197
13198 </p>
13199 <p>chain_pos =
13200 </p>
13201 <blockquote class="text">
13202 <p>number
13203
13204 </p>
13205 </blockquote><p>
13206
13207 </p>
13208 <p>input_control =
13209 </p>
13210 <blockquote class="text">
13211 <p>number
13212
13213 </p>
13214 </blockquote><p>
13215
13216 </p>
13217 <p>param_val_list =
13218 </p>
13219 <blockquote class="text">
13220 <p>param_val
13221
13222 </p>
13223 <p>/ param_val_list','param_val
13224
13225 </p>
13226 </blockquote><p>
13227
13228 </p>
13229 <p>param_val =
13230 </p>
13231 <blockquote class="text">
13232 <p>string
13233
13234 </p>
13235 <p>/ stringval
13236
13237 </p>
13238 <p>/ number
13239
13240 </p>
13241 <p>/ dotnum
13242
13243 </p>
13244 </blockquote><p>
13245
13246 </p>
13247 <p>query_val_list =
13248 </p>
13249 <blockquote class="text">
13250 <p>string '=' query_val
13251
13252 </p>
13253 <p>/ query_val_list SP string '=' query_val
13254
13255 </p>
13256 </blockquote><p>
13257
13258 </p>
13259 <p>query_val =
13260 </p>
13261 <blockquote class="text">
13262 <p>text_escaped
13263
13264 </p>
13265 <p>/ stringval_escaped
13266
13267 </p>
13268 </blockquote><p>
13269
13270 </p>
13271 <p>scan_mode =
13272 </p>
13273 <blockquote class="text">
13274 <p>RECURSIVE
13275
13276 </p>
13277 <p>/ NON_RECURSIVE
13278
13279 </p>
13280 <p>/ FLAT
13281
13282 </p>
13283 </blockquote><p>
13284
13285 </p>
13286 <p>effect_system =
13287 </p>
13288 <blockquote class="text">
13289 <p>string
13290
13291 </p>
13292 </blockquote><p>
13293
13294 </p>
13295 <p>module =
13296 </p>
13297 <blockquote class="text">
13298 <p>filename
13299
13300 </p>
13301 </blockquote><p>
13302
13303 </p>
13304 <a name="character_set"></a><br /><hr />
13305 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13306 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
13307 Character Set and Escape Sequences</h3>
13308
13309 <p>Older versions of this protocol up to and including v1.1 only
13310 supported the standard ASCII character set (ASCII code 0 - 127)
13311 <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
13312 however support the Extended ASCII character set (ASCII code
13313 0 - 255). The same group of younger protocols also support
13314 escape sequences, but only for certain, explicitly declared
13315 parts of the protocol. The supported escape sequences are
13316 defined as follows:
13317 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
13318 <col align="left"><col align="left">
13319 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
13320 <tr>
13321 <td align="left">\n</td>
13322 <td align="left">new line</td>
13323 </tr>
13324 <tr>
13325 <td align="left">\r</td>
13326 <td align="left">carriage return</td>
13327 </tr>
13328 <tr>
13329 <td align="left">\f</td>
13330 <td align="left">form feed</td>
13331 </tr>
13332 <tr>
13333 <td align="left">\t</td>
13334 <td align="left">horizontal tab</td>
13335 </tr>
13336 <tr>
13337 <td align="left">\v</td>
13338 <td align="left">vertical tab</td>
13339 </tr>
13340 <tr>
13341 <td align="left">\'</td>
13342 <td align="left">apostrophe</td>
13343 </tr>
13344 <tr>
13345 <td align="left">\"</td>
13346 <td align="left">quotation mark</td>
13347 </tr>
13348 <tr>
13349 <td align="left">\\</td>
13350 <td align="left">backslash</td>
13351 </tr>
13352 <tr>
13353 <td align="left">\OOO</td>
13354 <td align="left">three digit octal ASCII code of the character</td>
13355 </tr>
13356 <tr>
13357 <td align="left">\xHH</td>
13358 <td align="left">two digit hex ASCII code of the character</td>
13359 </tr>
13360 </table>
13361 <br clear="all" />
13362
13363 <p>Notice: due to the transition of certain parts of the
13364 protocol which now support escape sequences, a slight backward
13365 incompatibility to protocols version v1.1 and younger has been
13366 introduced. The only difference is that in parts of the protocol
13367 where escape characters are now supported, a backslash characters
13368 MUST be escaped as well (that is as double backslash), whereas
13369 in the old versions a single backslash was sufficient.
13370 </p>
13371 <p>The following LSCP commands support escape sequences as part
13372 of their filename / path based arguments and / or may contain
13373 a filename / path with escape sequences in their response:
13374 </p>
13375 <blockquote class="text">
13376 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
13377 </p>
13378 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13379 </p>
13380 <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>
13381 </p>
13382 <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>
13383 </p>
13384 <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>
13385 </p>
13386 <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>
13387 </p>
13388 <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>
13389 </p>
13390 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
13391 </p>
13392 <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>
13393 </p>
13394 <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>
13395 </p>
13396 <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>
13397 </p>
13398 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
13399 </p>
13400 <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>
13401 </p>
13402 <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>
13403 </p>
13404 <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>
13405 </p>
13406 <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>
13407 </p>
13408 <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>
13409 </p>
13410 <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>
13411 </p>
13412 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13413 </p>
13414 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13415 </p>
13416 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13417 </p>
13418 <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>
13419 </p>
13420 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13421 </p>
13422 <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>
13423 </p>
13424 <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>
13425 </p>
13426 <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>
13427 </p>
13428 <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>
13429 </p>
13430 <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>
13431 </p>
13432 <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>
13433 </p>
13434 <p><a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
13435 </p>
13436 <p><a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
13437 </p>
13438 <p><a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
13439 </p>
13440 </blockquote><p>
13441 Note that the forward slash character ('/') has a special meaning in
13442 filename / path based arguments: it acts as separator of the nodes in
13443 the path, thus if a directory- or filename includes a forward slash
13444 (not intended as path node separator), you MUST escape that slash
13445 either with the respective hex escape sequence ("\x2f") or with the
13446 respective octal escape sequence ("\057").
13447
13448 </p>
13449 <p>
13450 Note for Windows: file path arguments in LSCP are expected
13451 to use forward slashes as directory node separator similar
13452 to Unix based operating systems. In contrast to Unix however
13453 a Windows typical drive character is expected to be
13454 prefixed to the path. That is an original Windows file path
13455 like "D:\Sounds\My.gig" would become in LSCP:
13456 "D:/Sounds/My.gig".
13457
13458 </p>
13459 <p>
13460 The following LSCP commands even support escape sequences as
13461 part of at least one of their text-based arguments (i.e. entity name,
13462 description) and / or may contain escape sequences in at least one of
13463 their text-based fields in their response:
13464 </p>
13465 <blockquote class="text">
13466 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
13467 </p>
13468 <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>
13469 </p>
13470 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13471 </p>
13472 <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>
13473 </p>
13474 <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>
13475 </p>
13476 <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>
13477 </p>
13478 <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>
13479 </p>
13480 <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>
13481 </p>
13482 <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>
13483 </p>
13484 <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>
13485 </p>
13486 <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>
13487 </p>
13488 <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>
13489 </p>
13490 <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>
13491 </p>
13492 <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>
13493 </p>
13494 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13495 </p>
13496 <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>
13497 </p>
13498 <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>
13499 </p>
13500 <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>
13501 </p>
13502 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13503 </p>
13504 <p><a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
13505 </p>
13506 <p><a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
13507 </p>
13508 <p><a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
13509 </p>
13510 </blockquote><p>
13511 Please note that these lists are manually maintained. If you
13512 find a command that also supports escape sequences we forgot to
13513 mention here, please report it!
13514
13515 </p>
13516 <a name="events"></a><br /><hr />
13517 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13518 <a name="rfc.section.8"></a><h3>8.&nbsp;
13519 Events</h3>
13520
13521 <p>This chapter will describe all currently defined events supported by LinuxSampler.
13522 </p>
13523 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13524 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13525 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13526 Number of audio output devices changed</h3>
13527
13528 <p>Client may want to be notified when the total number of audio output devices on the
13529 back-end changes by issuing the following command:
13530 </p>
13531 <p>
13532 </p>
13533 <blockquote class="text">
13534 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13535 </p>
13536 </blockquote><p>
13537
13538 </p>
13539 <p>Server will start sending the following notification messages:
13540 </p>
13541 <p>
13542 </p>
13543 <blockquote class="text">
13544 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13545 </p>
13546 </blockquote><p>
13547
13548 </p>
13549 <p>where &lt;devices&gt; will be replaced by the new number
13550 of audio output devices.
13551 </p>
13552 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13553 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13554 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13555 Audio output device's settings changed</h3>
13556
13557 <p>Client may want to be notified when changes were made to audio output devices on the
13558 back-end by issuing the following command:
13559 </p>
13560 <p>
13561 </p>
13562 <blockquote class="text">
13563 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13564 </p>
13565 </blockquote><p>
13566
13567 </p>
13568 <p>Server will start sending the following notification messages:
13569 </p>
13570 <p>
13571 </p>
13572 <blockquote class="text">
13573 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13574 </p>
13575 </blockquote><p>
13576
13577 </p>
13578 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13579 which settings has been changed. The front-end will have to send
13580 the respective command to actually get the audio output device info. Because these messages
13581 will be triggered by LSCP commands issued by other clients rather than real
13582 time events happening on the server, it is believed that an empty notification
13583 message is sufficient here.
13584 </p>
13585 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13586 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13587 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13588 Number of MIDI input devices changed</h3>
13589
13590 <p>Client may want to be notified when the total number of MIDI input devices on the
13591 back-end changes by issuing the following command:
13592 </p>
13593 <p>
13594 </p>
13595 <blockquote class="text">
13596 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13597 </p>
13598 </blockquote><p>
13599
13600 </p>
13601 <p>Server will start sending the following notification messages:
13602 </p>
13603 <p>
13604 </p>
13605 <blockquote class="text">
13606 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13607 </p>
13608 </blockquote><p>
13609
13610 </p>
13611 <p>where &lt;devices&gt; will be replaced by the new number
13612 of MIDI input devices.
13613 </p>
13614 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13615 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13616 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13617 MIDI input device's settings changed</h3>
13618
13619 <p>Client may want to be notified when changes were made to MIDI input devices on the
13620 back-end by issuing the following command:
13621 </p>
13622 <p>
13623 </p>
13624 <blockquote class="text">
13625 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13626 </p>
13627 </blockquote><p>
13628
13629 </p>
13630 <p>Server will start sending the following notification messages:
13631 </p>
13632 <p>
13633 </p>
13634 <blockquote class="text">
13635 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13636 </p>
13637 </blockquote><p>
13638
13639 </p>
13640 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13641 which settings has been changed. The front-end will have to send
13642 the respective command to actually get the MIDI input device info. Because these messages
13643 will be triggered by LSCP commands issued by other clients rather than real
13644 time events happening on the server, it is believed that an empty notification
13645 message is sufficient here.
13646 </p>
13647 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13648 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13649 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13650 Number of sampler channels changed</h3>
13651
13652 <p>Client may want to be notified when the total number of channels on the
13653 back-end changes by issuing the following command:
13654 </p>
13655 <p>
13656 </p>
13657 <blockquote class="text">
13658 <p>SUBSCRIBE CHANNEL_COUNT
13659 </p>
13660 </blockquote><p>
13661
13662 </p>
13663 <p>Server will start sending the following notification messages:
13664 </p>
13665 <p>
13666 </p>
13667 <blockquote class="text">
13668 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13669 </p>
13670 </blockquote><p>
13671
13672 </p>
13673 <p>where &lt;channels&gt; will be replaced by the new number
13674 of sampler channels.
13675 </p>
13676 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13677 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13678 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13679 MIDI data on a sampler channel arrived</h3>
13680
13681 <p>Client may want to be notified when MIDI data arrive on sampler channels on
13682 back-end side, by issuing the following command:
13683 </p>
13684 <p>
13685 </p>
13686 <blockquote class="text">
13687 <p>SUBSCRIBE CHANNEL_MIDI
13688 </p>
13689 </blockquote><p>
13690
13691 </p>
13692 <p>Server will start sending one of the the following notification messages:
13693 </p>
13694 <p>
13695 </p>
13696 <blockquote class="text">
13697 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13698 </p>
13699 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13700 </p>
13701 </blockquote><p>
13702
13703 </p>
13704 <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13705 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13706 0 .. 127, reflecting the analog meaning of the MIDI specification.
13707
13708 </p>
13709 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13710 delivered by this mechanism! With other words: events could be lost at any time!
13711 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13712 thread unaffected by this feature.
13713 </p>
13714 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13715 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13716 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13717 MIDI data on a MIDI input device arrived</h3>
13718
13719 <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13720 </p>
13721 <p>
13722 </p>
13723 <blockquote class="text">
13724 <p>SUBSCRIBE DEVICE_MIDI
13725 </p>
13726 </blockquote><p>
13727
13728 </p>
13729 <p>Server will start sending one of the the following notification messages:
13730 </p>
13731 <p>
13732 </p>
13733 <blockquote class="text">
13734 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13735 </p>
13736 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13737 </p>
13738 </blockquote><p>
13739
13740 </p>
13741 <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13742 by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13743 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13744 0 .. 127, reflecting the analog meaning of the MIDI specification.
13745
13746 </p>
13747 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13748 delivered by this mechanism! With other words: events could be lost at any time!
13749 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13750 thread unaffected by this feature.
13751 </p>
13752 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13753 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13754 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13755 Number of active voices changed</h3>
13756
13757 <p>Client may want to be notified when the number of voices on the
13758 back-end changes by issuing the following command:
13759 </p>
13760 <p>
13761 </p>
13762 <blockquote class="text">
13763 <p>SUBSCRIBE VOICE_COUNT
13764 </p>
13765 </blockquote><p>
13766
13767 </p>
13768 <p>Server will start sending the following notification messages:
13769 </p>
13770 <p>
13771 </p>
13772 <blockquote class="text">
13773 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13774 </p>
13775 </blockquote><p>
13776
13777 </p>
13778 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13779 voice count change occurred and &lt;voices&gt; by the new number of
13780 active voices on that channel.
13781 </p>
13782 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13784 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13785 Number of active disk streams changed</h3>
13786
13787 <p>Client may want to be notified when the number of streams on the back-end
13788 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13789 </p>
13790 <p>
13791 </p>
13792 <blockquote class="text">
13793 <p>SUBSCRIBE STREAM_COUNT
13794 </p>
13795 </blockquote><p>
13796
13797 </p>
13798 <p>Server will start sending the following notification messages:
13799 </p>
13800 <p>
13801 </p>
13802 <blockquote class="text">
13803 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13804 </p>
13805 </blockquote><p>
13806
13807 </p>
13808 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13809 stream count change occurred and &lt;streams&gt; by the new number of
13810 active disk streams on that channel.
13811 </p>
13812 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13813 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13814 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13815 Disk stream buffer fill state changed</h3>
13816
13817 <p>Client may want to be notified when the buffer fill state of a disk stream
13818 on the back-end changes by issuing the following command:
13819 </p>
13820 <p>
13821 </p>
13822 <blockquote class="text">
13823 <p>SUBSCRIBE BUFFER_FILL
13824 </p>
13825 </blockquote><p>
13826
13827 </p>
13828 <p>Server will start sending the following notification messages:
13829 </p>
13830 <p>
13831 </p>
13832 <blockquote class="text">
13833 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13834 </p>
13835 </blockquote><p>
13836
13837 </p>
13838 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13839 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13840 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>
13841 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.
13842 </p>
13843 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13844 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13845 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13846 Channel information changed</h3>
13847
13848 <p>Client may want to be notified when changes were made to sampler channels on the
13849 back-end by issuing the following command:
13850 </p>
13851 <p>
13852 </p>
13853 <blockquote class="text">
13854 <p>SUBSCRIBE CHANNEL_INFO
13855 </p>
13856 </blockquote><p>
13857
13858 </p>
13859 <p>Server will start sending the following notification messages:
13860 </p>
13861 <p>
13862 </p>
13863 <blockquote class="text">
13864 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13865 </p>
13866 </blockquote><p>
13867
13868 </p>
13869 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13870 channel info change occurred. The front-end will have to send
13871 the respective command to actually get the channel info. Because these messages
13872 will be triggered by LSCP commands issued by other clients rather than real
13873 time events happening on the server, it is believed that an empty notification
13874 message is sufficient here.
13875 </p>
13876 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13877 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13878 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13879 Number of effect sends changed</h3>
13880
13881 <p>Client may want to be notified when the number of effect sends on
13882 a particular sampler channel is changed by issuing the following command:
13883 </p>
13884 <p>
13885 </p>
13886 <blockquote class="text">
13887 <p>SUBSCRIBE FX_SEND_COUNT
13888 </p>
13889 </blockquote><p>
13890
13891 </p>
13892 <p>Server will start sending the following notification messages:
13893 </p>
13894 <p>
13895 </p>
13896 <blockquote class="text">
13897 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13898 </p>
13899 </blockquote><p>
13900
13901 </p>
13902 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13903 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13904 be replaced by the new number of effect sends on that channel.
13905 </p>
13906 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13907 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13908 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13909 Effect send information changed</h3>
13910
13911 <p>Client may want to be notified when changes were made to effect sends on a
13912 a particular sampler channel by issuing the following command:
13913 </p>
13914 <p>
13915 </p>
13916 <blockquote class="text">
13917 <p>SUBSCRIBE FX_SEND_INFO
13918 </p>
13919 </blockquote><p>
13920
13921 </p>
13922 <p>Server will start sending the following notification messages:
13923 </p>
13924 <p>
13925 </p>
13926 <blockquote class="text">
13927 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13928 </p>
13929 </blockquote><p>
13930
13931 </p>
13932 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13933 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13934 be replaced by the numerical ID of the changed effect send.
13935 </p>
13936 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13937 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13938 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13939 Total number of active voices changed</h3>
13940
13941 <p>Client may want to be notified when the total number of voices on the
13942 back-end changes by issuing the following command:
13943 </p>
13944 <p>
13945 </p>
13946 <blockquote class="text">
13947 <p>SUBSCRIBE TOTAL_VOICE_COUNT
13948 </p>
13949 </blockquote><p>
13950
13951 </p>
13952 <p>Server will start sending the following notification messages:
13953 </p>
13954 <p>
13955 </p>
13956 <blockquote class="text">
13957 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13958 </p>
13959 </blockquote><p>
13960
13961 </p>
13962 <p>where &lt;voices&gt; will be replaced by the new number of
13963 all currently active voices.
13964 </p>
13965 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13966 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13967 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13968 Total number of active disk streams changed</h3>
13969
13970 <p>Client may want to be notified when the total number of disk streams on the
13971 back-end changes by issuing the following command:
13972 </p>
13973 <p>
13974 </p>
13975 <blockquote class="text">
13976 <p>SUBSCRIBE TOTAL_STREAM_COUNT
13977 </p>
13978 </blockquote><p>
13979
13980 </p>
13981 <p>Server will start sending the following notification messages:
13982 </p>
13983 <p>
13984 </p>
13985 <blockquote class="text">
13986 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13987 </p>
13988 </blockquote><p>
13989
13990 </p>
13991 <p>where &lt;streams&gt; will be replaced by the new number of
13992 all currently active disk streams.
13993 </p>
13994 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13995 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13996 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13997 Number of MIDI instrument maps changed</h3>
13998
13999 <p>Client may want to be notified when the number of MIDI instrument maps on the
14000 back-end changes by issuing the following command:
14001 </p>
14002 <p>
14003 </p>
14004 <blockquote class="text">
14005 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
14006 </p>
14007 </blockquote><p>
14008
14009 </p>
14010 <p>Server will start sending the following notification messages:
14011 </p>
14012 <p>
14013 </p>
14014 <blockquote class="text">
14015 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
14016 </p>
14017 </blockquote><p>
14018
14019 </p>
14020 <p>where &lt;maps&gt; will be replaced by the new number
14021 of MIDI instrument maps.
14022 </p>
14023 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
14024 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14025 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
14026 MIDI instrument map information changed</h3>
14027
14028 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
14029 back-end by issuing the following command:
14030 </p>
14031 <p>
14032 </p>
14033 <blockquote class="text">
14034 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
14035 </p>
14036 </blockquote><p>
14037
14038 </p>
14039 <p>Server will start sending the following notification messages:
14040 </p>
14041 <p>
14042 </p>
14043 <blockquote class="text">
14044 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
14045 </p>
14046 </blockquote><p>
14047
14048 </p>
14049 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
14050 for which information changes occurred. The front-end will have to send
14051 the respective command to actually get the MIDI instrument map info. Because these messages
14052 will be triggered by LSCP commands issued by other clients rather than real
14053 time events happening on the server, it is believed that an empty notification
14054 message is sufficient here.
14055 </p>
14056 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
14057 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14058 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
14059 Number of MIDI instruments changed</h3>
14060
14061 <p>Client may want to be notified when the number of MIDI instrument maps on the
14062 back-end changes by issuing the following command:
14063 </p>
14064 <p>
14065 </p>
14066 <blockquote class="text">
14067 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
14068 </p>
14069 </blockquote><p>
14070
14071 </p>
14072 <p>Server will start sending the following notification messages:
14073 </p>
14074 <p>
14075 </p>
14076 <blockquote class="text">
14077 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
14078 </p>
14079 </blockquote><p>
14080
14081 </p>
14082 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
14083 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
14084 the new number of MIDI instruments in the specified map.
14085 </p>
14086 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
14087 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14088 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
14089 MIDI instrument information changed</h3>
14090
14091 <p>Client may want to be notified when changes were made to MIDI instruments on the
14092 back-end by issuing the following command:
14093 </p>
14094 <p>
14095 </p>
14096 <blockquote class="text">
14097 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
14098 </p>
14099 </blockquote><p>
14100
14101 </p>
14102 <p>Server will start sending the following notification messages:
14103 </p>
14104 <p>
14105 </p>
14106 <blockquote class="text">
14107 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
14108 </p>
14109 </blockquote><p>
14110
14111 </p>
14112 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
14113 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
14114 the location of the changed MIDI instrument in the map. The front-end will have to send
14115 the respective command to actually get the MIDI instrument info. Because these messages
14116 will be triggered by LSCP commands issued by other clients rather than real
14117 time events happening on the server, it is believed that an empty notification
14118 message is sufficient here.
14119 </p>
14120 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
14121 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14122 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
14123 Global settings changed</h3>
14124
14125 <p>Client may want to be notified when changes to the global settings
14126 of the sampler were made by issuing the following command:
14127 </p>
14128 <p>
14129 </p>
14130 <blockquote class="text">
14131 <p>SUBSCRIBE GLOBAL_INFO
14132 </p>
14133 </blockquote><p>
14134
14135 </p>
14136 <p>Server will start sending the following types of notification messages:
14137 </p>
14138 <p>
14139 </p>
14140 <blockquote class="text">
14141 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
14142 golbal volume of the sampler is changed, where &lt;volume&gt; will be
14143 replaced by the optional dotted floating point value, reflecting the
14144 new global volume parameter.
14145 </p>
14146 </blockquote><p>
14147 </p>
14148 <blockquote class="text">
14149 <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
14150 golbal limit of the sampler for maximum voices is changed, where
14151 &lt;max-voices&gt; will be an integer value, reflecting the
14152 new global voice limit parameter.
14153 </p>
14154 </blockquote><p>
14155 </p>
14156 <blockquote class="text">
14157 <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
14158 golbal limit of the sampler for maximum disk streams is changed, where
14159 &lt;max-streams&gt; will be an integer value, reflecting the
14160 new global disk streams limit parameter.
14161 </p>
14162 </blockquote><p>
14163
14164 </p>
14165 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
14166 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14167 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
14168 Number of database instrument directories changed</h3>
14169
14170 <p>Client may want to be notified when the number of instrument
14171 directories in a particular directory in the instruments database
14172 is changed by issuing the following command:
14173 </p>
14174 <p>
14175 </p>
14176 <blockquote class="text">
14177 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
14178 </p>
14179 </blockquote><p>
14180
14181 </p>
14182 <p>Server will start sending the following notification messages:
14183 </p>
14184 <p>
14185 </p>
14186 <blockquote class="text">
14187 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
14188 </p>
14189 </blockquote><p>
14190
14191 </p>
14192 <p>where &lt;dir-path&gt; will be replaced by the absolute path
14193 name of the directory in the instruments database,
14194 in which the number of directories is changed.
14195 </p>
14196 <p>Note that when a non-empty directory is removed, this event
14197 is not sent for the subdirectories in that directory.
14198 </p>
14199 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
14200 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14201 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
14202 Database instrument directory information changed</h3>
14203
14204 <p>Client may want to be notified when changes were made to directories
14205 in the instruments database by issuing the following command:
14206 </p>
14207 <p>
14208 </p>
14209 <blockquote class="text">
14210 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
14211 </p>
14212 </blockquote><p>
14213
14214 </p>
14215 <p>Server will start sending the following notification messages:
14216 </p>
14217 <p>
14218 </p>
14219 <blockquote class="text">
14220 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
14221 </p>
14222 </blockquote><p>
14223
14224 </p>
14225 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
14226 of the directory, for which information changes occurred. The front-end will have to send
14227 the respective command to actually get the updated directory info. Because these messages
14228 will be triggered by LSCP commands issued by other clients rather than real
14229 time events happening on the server, it is believed that an empty notification
14230 message is sufficient here.
14231 </p>
14232 <p>
14233 </p>
14234 <blockquote class="text">
14235 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
14236 </p>
14237 </blockquote><p>
14238
14239 </p>
14240 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
14241 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
14242 the new name of the directory, encapsulated into apostrophes.
14243 </p>
14244 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
14245 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14246 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
14247 Number of database instruments changed</h3>
14248
14249 <p>Client may want to be notified when the number of instruments
14250 in a particular directory in the instruments database
14251 is changed by issuing the following command:
14252 </p>
14253 <p>
14254 </p>
14255 <blockquote class="text">
14256 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
14257 </p>
14258 </blockquote><p>
14259
14260 </p>
14261 <p>Server will start sending the following notification messages:
14262 </p>
14263 <p>
14264 </p>
14265 <blockquote class="text">
14266 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
14267 </p>
14268 </blockquote><p>
14269
14270 </p>
14271 <p>where &lt;dir-path&gt; will be replaced by the absolute path
14272 name of the directory in the instruments database,
14273 in which the number of instruments is changed.
14274 </p>
14275 <p>Note that when a non-empty directory is removed, this event
14276 is not sent for the instruments in that directory.
14277 </p>
14278 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
14279 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14280 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
14281 Database instrument information changed</h3>
14282
14283 <p>Client may want to be notified when changes were made to instruments
14284 in the instruments database by issuing the following command:
14285 </p>
14286 <p>
14287 </p>
14288 <blockquote class="text">
14289 <p>SUBSCRIBE DB_INSTRUMENT_INFO
14290 </p>
14291 </blockquote><p>
14292
14293 </p>
14294 <p>Server will start sending the following notification messages:
14295 </p>
14296 <p>
14297 </p>
14298 <blockquote class="text">
14299 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
14300 </p>
14301 </blockquote><p>
14302
14303 </p>
14304 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
14305 of the instrument, which settings are changed. The front-end will have to send
14306 the respective command to actually get the updated directory info. Because these messages
14307 will be triggered by LSCP commands issued by other clients rather than real
14308 time events happening on the server, it is believed that an empty notification
14309 message is sufficient here.
14310 </p>
14311 <p>
14312 </p>
14313 <blockquote class="text">
14314 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
14315 </p>
14316 </blockquote><p>
14317
14318 </p>
14319 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
14320 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
14321 the new name of the instrument, encapsulated into apostrophes.
14322 </p>
14323 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
14324 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14325 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
14326 Database job status information changed</h3>
14327
14328 <p>Client may want to be notified when the status of particular database
14329 instruments job is changed by issuing the following command:
14330 </p>
14331 <p>
14332 </p>
14333 <blockquote class="text">
14334 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
14335 </p>
14336 </blockquote><p>
14337
14338 </p>
14339 <p>Server will start sending the following notification messages:
14340 </p>
14341 <p>
14342 </p>
14343 <blockquote class="text">
14344 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
14345 </p>
14346 </blockquote><p>
14347
14348 </p>
14349 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
14350 which status is changed. The front-end will have to send the respective
14351 command to actually get the status info. Because these messages
14352 will be triggered by LSCP commands issued by other clients rather than real
14353 time events happening on the server, it is believed that an empty notification
14354 message is sufficient here.
14355 </p>
14356 <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
14357 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14358 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
14359 Number of effect instances changed</h3>
14360
14361 <p>Client may want to be notified when the number of effect instances
14362 is changed by issuing the following command:
14363 </p>
14364 <p>
14365 </p>
14366 <blockquote class="text">
14367 <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
14368 </p>
14369 </blockquote><p>
14370
14371 </p>
14372 <p>Server will start sending the following notification messages:
14373 </p>
14374 <p>
14375 </p>
14376 <blockquote class="text">
14377 <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
14378 </p>
14379 </blockquote><p>
14380
14381 </p>
14382 <p>where &lt;instances&gt; will be replaced by the new number
14383 of effect instances.
14384 </p>
14385 <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
14386 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14387 <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
14388 Effect instance information changed</h3>
14389
14390 <p>Client may want to be notified when changes were made to effect instances
14391 on the back-end by issuing the following command:
14392 </p>
14393 <p>
14394 </p>
14395 <blockquote class="text">
14396 <p>SUBSCRIBE EFFECT_INSTANCE_INFO
14397 </p>
14398 </blockquote><p>
14399
14400 </p>
14401 <p>Server will start sending the following notification messages:
14402 </p>
14403 <p>
14404 </p>
14405 <blockquote class="text">
14406 <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
14407 </p>
14408 </blockquote><p>
14409
14410 </p>
14411 <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14412 of the effect instance.
14413 </p>
14414 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14415 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14416 <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14417 Number of send effect chains changed</h3>
14418
14419 <p>Client may want to be notified when the number of send effect chains
14420 is changed by issuing the following command:
14421 </p>
14422 <p>
14423 </p>
14424 <blockquote class="text">
14425 <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14426 </p>
14427 </blockquote><p>
14428
14429 </p>
14430 <p>Server will start sending the following notification messages:
14431 </p>
14432 <p>
14433 </p>
14434 <blockquote class="text">
14435 <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14436 </p>
14437 </blockquote><p>
14438
14439 </p>
14440 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14441 output device, in which the number of send effect chains is changed and
14442 &lt;chains&gt; will be replaced by the new number of send effect chains.
14443 </p>
14444 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14445 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14446 <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14447 Send effect chain information changed</h3>
14448
14449 <p>Client may want to be notified when changes were made to send effect chains
14450 on the back-end by issuing the following command:
14451 </p>
14452 <p>
14453 </p>
14454 <blockquote class="text">
14455 <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14456 </p>
14457 </blockquote><p>
14458
14459 </p>
14460 <p>Server will start sending the following notification messages:
14461 </p>
14462 <p>
14463 </p>
14464 <blockquote class="text">
14465 <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14466 Notifies that the number of effect instances in a particular send effect chain
14467 is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14468 output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14469 by the numerical ID of the send effect chain in which the number of effect instances
14470 has changed and &lt;instances&gt; will be replaced by the new number
14471 of effect instances in the specified send effect chain.
14472 </p>
14473 </blockquote><p>
14474
14475 </p>
14476 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14477 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14478 <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14479 Miscellaneous and debugging events</h3>
14480
14481 <p>Client may want to be notified of miscellaneous and debugging events occurring at
14482 the server by issuing the following command:
14483 </p>
14484 <p>
14485 </p>
14486 <blockquote class="text">
14487 <p>SUBSCRIBE MISCELLANEOUS
14488 </p>
14489 </blockquote><p>
14490
14491 </p>
14492 <p>Server will start sending the following notification messages:
14493 </p>
14494 <p>
14495 </p>
14496 <blockquote class="text">
14497 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14498 </p>
14499 </blockquote><p>
14500
14501 </p>
14502 <p>where &lt;string&gt; will be replaced by whatever data server
14503 wants to send to the client. Client MAY display this data to the
14504 user AS IS to facilitate debugging.
14505 </p>
14506 <a name="anchor14"></a><br /><hr />
14507 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14508 <a name="rfc.section.9"></a><h3>9.&nbsp;
14509 Security Considerations</h3>
14510
14511 <p>As there is so far no method of authentication and authorization
14512 defined and so not required for a client applications to succeed to
14513 connect, running LinuxSampler might be a security risk for the host
14514 system the LinuxSampler instance is running on.
14515 </p>
14516 <a name="anchor15"></a><br /><hr />
14517 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14518 <a name="rfc.section.10"></a><h3>10.&nbsp;
14519 Acknowledgments</h3>
14520
14521 <p>This document has benefited greatly from the comments of the
14522 following people, discussed on the LinuxSampler developer's mailing
14523 list:
14524 </p>
14525 <p>
14526 </p>
14527 <blockquote class="text">
14528 <p>Rui Nuno Capela
14529 </p>
14530 <p>Vladimir Senkov
14531 </p>
14532 <p>Mark Knecht
14533 </p>
14534 <p>Grigor Iliev
14535 </p>
14536 </blockquote><p>
14537
14538 </p>
14539 <a name="rfc.references1"></a><br /><hr />
14540 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14541 <h3>11.&nbsp;References</h3>
14542 <table width="99%" border="0">
14543 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14544 <td class="author-text">UCLA, &ldquo;<a href="http://tools.ietf.org/html/rfc20">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
14545 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14546 <td class="author-text">Bradner, S., &ldquo;<a href="http://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
14547 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14548 <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="http://tools.ietf.org/html/rfc2234">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
14549 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14550 <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="http://tools.ietf.org/html/rfc793">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
14551 </table>
14552
14553 <a name="rfc.authors"></a><br /><hr />
14554 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14555 <h3>Author's Address</h3>
14556 <table width="99%" border="0" cellpadding="0" cellspacing="0">
14557 <tr><td class="author-text">&nbsp;</td>
14558 <td class="author-text">C.
14559 Schoenebeck</td></tr>
14560 <tr><td class="author-text">&nbsp;</td>
14561 <td class="author-text">LinuxSampler.org</td></tr>
14562 <tr><td class="author-text">&nbsp;</td>
14563 <td class="author-text">Crudebyte Engineering</td></tr>
14564 <tr><td class="author-text">&nbsp;</td>
14565 <td class="author-text">Hofgartenstr. 3</td></tr>
14566 <tr><td class="author-text">&nbsp;</td>
14567 <td class="author-text">74189 Weinsberg</td></tr>
14568 <tr><td class="author-text">&nbsp;</td>
14569 <td class="author-text">Germany</td></tr>
14570 <tr><td class="author" align="right">Phone:&nbsp;</td>
14571 <td class="author-text">+49 7134 911614</td></tr>
14572 <tr><td class="author" align="right">Email:&nbsp;</td>
14573 <td class="author-text"><a href="mailto:cuse@users.sf.net">cuse@users.sf.net</a></td></tr>
14574 </table>
14575 <a name="rfc.copyright"></a><br /><hr />
14576 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14577 <h3>Full Copyright Statement</h3>
14578 <p class='copyright'>
14579 Copyright &copy; The IETF Trust (2014).</p>
14580 <p class='copyright'>
14581 This document is subject to the rights,
14582 licenses and restrictions contained in BCP&nbsp;78,
14583 and except as set forth therein,
14584 the authors retain all their rights.</p>
14585 <p class='copyright'>
14586 This document and the information contained herein are provided
14587 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14588 THE ORGANIZATION HE/SHE REPRESENTS
14589 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14590 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14591 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14592 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14593 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14594 PURPOSE.</p>
14595 <h3>Intellectual Property</h3>
14596 <p class='copyright'>
14597 The IETF takes no position regarding the validity or scope of any
14598 Intellectual Property Rights or other rights that might be claimed
14599 to pertain to the implementation or use of the technology
14600 described in this document or the extent to which any license
14601 under such rights might or might not be available; nor does it
14602 represent that it has made any independent effort to identify any
14603 such rights.
14604 Information on the procedures with respect to
14605 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14606 <p class='copyright'>
14607 Copies of IPR disclosures made to the IETF Secretariat and any
14608 assurances of licenses to be made available,
14609 or the result of an attempt made to obtain a general license or
14610 permission for the use of such proprietary rights by implementers or
14611 users of this specification can be obtained from the IETF on-line IPR
14612 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14613 <p class='copyright'>
14614 The IETF invites any interested party to bring to its attention
14615 any copyrights,
14616 patents or patent applications,
14617 or other
14618 proprietary rights that may cover technology that may be required
14619 to implement this standard.
14620 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14621 </body></html>

  ViewVC Help
Powered by ViewVC