/[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 2189 - (show annotations) (download) (as text)
Fri Jun 24 19:57:07 2011 UTC (12 years, 10 months ago) by iliev
File MIME type: text/html
File size: 505133 byte(s)
* updated LSCP specs

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.34 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 <tr><td class="header">Expires: December 26, 2011</td><td class="header">June 24, 2011</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.5</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), its areas, and its working groups.
171 Note that other groups may also distribute working documents as
172 Internet-Drafts.</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 The list of current Internet-Drafts can be accessed at
180 <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
181 <p>
182 The list of Internet-Draft Shadow Directories can be accessed at
183 <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
184 <p>
185 This Internet-Draft will expire on December 26, 2011.</p>
186 <a name="toc"></a><br /><hr />
187 <h3>Table of Contents</h3>
188 <p class="toc">
189 <a href="#anchor1">1.</a>&nbsp;
190 Requirements notation<br />
191 <a href="#LSCP versioning">2.</a>&nbsp;
192 Versioning of this specification<br />
193 <a href="#anchor2">3.</a>&nbsp;
194 Introduction<br />
195 <a href="#anchor3">4.</a>&nbsp;
196 Focus of this protocol<br />
197 <a href="#anchor4">5.</a>&nbsp;
198 Communication Overview<br />
199 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
200 Request/response communication method<br />
201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
202 Result format<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
204 Subscribe/notify communication method<br />
205 <a href="#control_commands">6.</a>&nbsp;
206 Description for control commands<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
208 Ignored lines and comments<br />
209 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
210 Configuring audio drivers<br />
211 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
212 Getting amount of available audio output drivers<br />
213 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
214 Getting all available audio output drivers<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
216 Getting information about a specific audio
217 output driver<br />
218 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
219 Getting information about specific audio
220 output driver parameter<br />
221 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
222 Creating an audio output device<br />
223 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
224 Destroying an audio output device<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
226 Getting all created audio output device count<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
228 Getting all created audio output device list<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
230 Getting current settings of an audio output device<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
232 Changing settings of audio output devices<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
234 Getting information about an audio channel<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
236 Getting information about specific audio channel parameter<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
238 Changing settings of audio output channels<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
240 Configuring MIDI input drivers<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
242 Getting amount of available MIDI input drivers<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
244 Getting all available MIDI input drivers<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
246 Getting information about a specific MIDI input driver<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
248 Getting information about specific MIDI input driver parameter<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
250 Creating a MIDI input device<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
252 Destroying a MIDI input device<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
254 Getting all created MIDI input device count<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
256 Getting all created MIDI input device list<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
258 Getting current settings of a MIDI input device<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
260 Changing settings of MIDI input devices<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
262 Getting information about a MIDI port<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
264 Getting information about specific MIDI port parameter<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
266 Changing settings of MIDI input ports<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
268 Configuring sampler channels<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
270 Loading an instrument<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
272 Loading a sampler engine<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
274 Getting all created sampler channel count<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
276 Getting all created sampler channel list<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
278 Adding a new sampler channel<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
280 Removing a sampler channel<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
282 Getting amount of available engines<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
284 Getting all available engines<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
286 Getting information about an engine<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
288 Getting sampler channel information<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
290 Current number of active voices<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
292 Current number of active disk streams<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
294 Current fill state of disk stream buffers<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
296 Setting audio output device<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
298 Setting audio output type<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
300 Setting audio output channel<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</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.18.</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.19.</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.20.</a>&nbsp;
308 Setting MIDI input channel<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
310 Setting channel volume<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
312 Muting a sampler channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</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.24.</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.25.</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.26.</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.27.</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.28.</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.29.</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.30.</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.31.</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.32.</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.33.</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.34.</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.35.</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.36.</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.37.</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 ammount 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: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
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>Example:
3987 </p>
3988 <p>
3989 </p>
3990 <blockquote class="text">
3991 <p>C: "GET ENGINE INFO JoesCustomEngine"
3992 </p>
3993 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3994 </p>
3995 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3996 </p>
3997 <p>&nbsp;&nbsp;&nbsp;"."
3998 </p>
3999 </blockquote><p>
4000
4001 </p>
4002 <a name="GET CHANNEL INFO"></a><br /><hr />
4003 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4004 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
4005 Getting sampler channel information</h3>
4006
4007 <p>The front-end can ask for the current settings of a sampler channel
4008 by sending the following command:
4009 </p>
4010 <p>
4011 </p>
4012 <blockquote class="text">
4013 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4014 </p>
4015 </blockquote><p>
4016
4017 </p>
4018 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4019 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>
4020 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.
4021 </p>
4022 <p>Possible Answers:
4023 </p>
4024 <p>
4025 </p>
4026 <blockquote class="text">
4027 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4028 Each answer line begins with the settings category name
4029 followed by a colon and then a space character &lt;SP&gt; and finally
4030 the info character string to that setting category. At the
4031 moment the following categories are defined:
4032 </p>
4033 <p>
4034 </p>
4035 <blockquote class="text">
4036 <p>ENGINE_NAME -
4037 </p>
4038 <blockquote class="text">
4039 <p>name of the engine that is associated with the sampler
4040 channel, "NONE" if there's no engine associated yet for
4041 this sampler channel
4042 </p>
4043 </blockquote>
4044
4045
4046 <p>AUDIO_OUTPUT_DEVICE -
4047 </p>
4048 <blockquote class="text">
4049 <p>numerical ID of the audio output device which is
4050 currently connected to this sampler channel to output
4051 the audio signal, "-1" if there's no device
4052 connected to this sampler channel
4053 </p>
4054 </blockquote>
4055
4056
4057 <p>AUDIO_OUTPUT_CHANNELS -
4058 </p>
4059 <blockquote class="text">
4060 <p>number of output channels the sampler channel offers
4061 (dependent to used sampler engine and loaded instrument)
4062 </p>
4063 </blockquote>
4064
4065
4066 <p>AUDIO_OUTPUT_ROUTING -
4067 </p>
4068 <blockquote class="text">
4069 <p>comma separated list which reflects to which audio
4070 channel of the selected audio output device each
4071 sampler output channel is routed to, e.g. "0,3" would
4072 mean the engine's output channel 0 is routed to channel
4073 0 of the audio output device and the engine's output
4074 channel 1 is routed to the channel 3 of the audio
4075 output device
4076 </p>
4077 </blockquote>
4078
4079
4080 <p>INSTRUMENT_FILE -
4081 </p>
4082 <blockquote class="text">
4083 <p>the file name of the loaded instrument, "NONE" if
4084 there's no instrument yet loaded for this sampler
4085 channel (note: since LSCP 1.2 this path may contain
4086 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4087 </p>
4088 </blockquote>
4089
4090
4091 <p>INSTRUMENT_NR -
4092 </p>
4093 <blockquote class="text">
4094 <p>the instrument index number of the loaded instrument,
4095 "-1" if there's no instrument loaded for this sampler
4096 channel
4097 </p>
4098 </blockquote>
4099
4100
4101 <p>INSTRUMENT_NAME -
4102 </p>
4103 <blockquote class="text">
4104 <p>the instrument name of the loaded instrument
4105 (note: since LSCP 1.2 this character string may contain
4106 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4107 </p>
4108 </blockquote>
4109
4110
4111 <p>INSTRUMENT_STATUS -
4112 </p>
4113 <blockquote class="text">
4114 <p>Integer values 0 to 100 indicating loading progress
4115 percentage for the instrument. Negative
4116 value indicates a loading exception (also returns "-1" in case no
4117 instrument was yet to be loaded on the sampler channel).
4118 Value of 100 indicates that the instrument is fully
4119 loaded.
4120 </p>
4121 </blockquote>
4122
4123
4124 <p>MIDI_INPUT_DEVICE -
4125 </p>
4126 <blockquote class="text">
4127 <p>numerical ID of the MIDI input device which is
4128 currently connected to this sampler channel to deliver
4129 MIDI input commands, "-1" if there's no device
4130 connected to this sampler channel
4131 </p>
4132 </blockquote>
4133
4134
4135 <p>MIDI_INPUT_PORT -
4136 </p>
4137 <blockquote class="text">
4138 <p>port number of the MIDI input device (in case a
4139 MIDI device was already assigned to the sampler
4140 channel)
4141 </p>
4142 </blockquote>
4143
4144
4145 <p>MIDI_INPUT_CHANNEL -
4146 </p>
4147 <blockquote class="text">
4148 <p>the MIDI input channel number this sampler channel
4149 should listen to or "ALL" to listen on all MIDI channels
4150 </p>
4151 </blockquote>
4152
4153
4154 <p>VOLUME -
4155 </p>
4156 <blockquote class="text">
4157 <p>optionally dotted number for the channel volume factor
4158 (where a value &lt; 1.0 means attenuation and a value >
4159 1.0 means amplification)
4160 </p>
4161 </blockquote>
4162
4163
4164 <p>MUTE -
4165 </p>
4166 <blockquote class="text">
4167 <p>Determines whether the channel is muted, "true" if the
4168 channel is muted, "false" if the channel is not muted, and
4169 "MUTED_BY_SOLO" if the channel is muted because of the
4170 presence of a solo channel and will be unmuted when
4171 there are no solo channels left
4172 </p>
4173 </blockquote>
4174
4175
4176 <p>SOLO -
4177 </p>
4178 <blockquote class="text">
4179 <p>Determines whether this is a solo channel, "true" if
4180 the channel is a solo channel; "false" otherwise
4181 </p>
4182 </blockquote>
4183
4184
4185 <p>MIDI_INSTRUMENT_MAP -
4186 </p>
4187 <blockquote class="text">
4188 <p>Determines to which MIDI instrument map this sampler
4189 channel is assigned to. Read chapter
4190 <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>
4191 for a list of possible values.
4192 </p>
4193 </blockquote>
4194
4195
4196 </blockquote>
4197
4198
4199 </blockquote><p>
4200
4201 </p>
4202 <p>The mentioned fields above don't have to be in particular order.
4203 </p>
4204 <p>Example:
4205 </p>
4206 <p>
4207 </p>
4208 <blockquote class="text">
4209 <p>C: "GET CHANNEL INFO 34"
4210 </p>
4211 <p>S: "ENGINE_NAME: GigEngine"
4212 </p>
4213 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4214 </p>
4215 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4216 </p>
4217 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4218 </p>
4219 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4220 </p>
4221 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4222 </p>
4223 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4224 </p>
4225 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4226 </p>
4227 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4228 </p>
4229 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4230 </p>
4231 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4232 </p>
4233 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4234 </p>
4235 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4236 </p>
4237 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4238 </p>
4239 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4240 </p>
4241 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4242 </p>
4243 <p>&nbsp;&nbsp;&nbsp;"."
4244 </p>
4245 </blockquote><p>
4246
4247 </p>
4248 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4249 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4250 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4251 Current number of active voices</h3>
4252
4253 <p>The front-end can ask for the current number of active voices on a
4254 sampler channel by sending the following command:
4255 </p>
4256 <p>
4257 </p>
4258 <blockquote class="text">
4259 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4260 </p>
4261 </blockquote><p>
4262
4263 </p>
4264 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4265 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>
4266 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.
4267 </p>
4268 <p>Possible Answers:
4269 </p>
4270 <p>
4271 </p>
4272 <blockquote class="text">
4273 <p>LinuxSampler will answer by returning the number of active
4274 voices on that channel.
4275 </p>
4276 </blockquote><p>
4277
4278 </p>
4279 <p>Example:
4280 </p>
4281 <p>
4282 </p>
4283 <blockquote class="text">
4284 <p>
4285 </p>
4286 </blockquote><p>
4287
4288 </p>
4289 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4290 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4291 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4292 Current number of active disk streams</h3>
4293
4294 <p>The front-end can ask for the current number of active disk streams
4295 on a sampler channel by sending the following command:
4296 </p>
4297 <p>
4298 </p>
4299 <blockquote class="text">
4300 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4301 </p>
4302 </blockquote><p>
4303
4304 </p>
4305 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4306 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>
4307 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.
4308 </p>
4309 <p>Possible Answers:
4310 </p>
4311 <p>
4312 </p>
4313 <blockquote class="text">
4314 <p>LinuxSampler will answer by returning the number of active
4315 disk streams on that channel in case the engine supports disk
4316 streaming, if the engine doesn't support disk streaming it will
4317 return "NA" for not available.
4318 </p>
4319 </blockquote><p>
4320
4321 </p>
4322 <p>Example:
4323 </p>
4324 <p>
4325 </p>
4326 <blockquote class="text">
4327 <p>
4328 </p>
4329 </blockquote><p>
4330
4331 </p>
4332 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4333 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4334 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4335 Current fill state of disk stream buffers</h3>
4336
4337 <p>The front-end can ask for the current fill state of all disk streams
4338 on a sampler channel by sending the following command:
4339 </p>
4340 <p>
4341 </p>
4342 <blockquote class="text">
4343 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4344 </p>
4345 </blockquote><p>
4346
4347 </p>
4348 <p>to get the fill state in bytes or
4349 </p>
4350 <p>
4351 </p>
4352 <blockquote class="text">
4353 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4354 </p>
4355 </blockquote><p>
4356
4357 </p>
4358 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4359 sampler channel number the front-end is interested in
4360 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>
4361 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.
4362 </p>
4363 <p>Possible Answers:
4364 </p>
4365 <p>
4366 </p>
4367 <blockquote class="text">
4368 <p>LinuxSampler will either answer by returning a comma separated
4369 string with the fill state of all disk stream buffers on that
4370 channel or an empty line if there are no active disk streams or
4371 "NA" for *not available* in case the engine which is deployed
4372 doesn't support disk streaming. Each entry in the answer list
4373 will begin with the stream's ID in brackets followed by the
4374 numerical representation of the fill size (either in bytes or
4375 percentage). Note: due to efficiency reasons the fill states in
4376 the response are not in particular order, thus the front-end has
4377 to sort them by itself if necessary.
4378 </p>
4379 </blockquote><p>
4380
4381 </p>
4382 <p>Examples:
4383 </p>
4384 <p>
4385 </p>
4386 <blockquote class="text">
4387 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4388 </p>
4389 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4390 </p>
4391 </blockquote><p>
4392
4393 </p>
4394 <blockquote class="text">
4395 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4396 </p>
4397 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4398 </p>
4399 </blockquote><p>
4400
4401 </p>
4402 <blockquote class="text">
4403 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4404 </p>
4405 <p>S: ""
4406 </p>
4407 </blockquote><p>
4408
4409 </p>
4410 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4411 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4412 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4413 Setting audio output device</h3>
4414
4415 <p>The front-end can set the audio output device on a specific sampler
4416 channel by sending the following command:
4417 </p>
4418 <p>
4419 </p>
4420 <blockquote class="text">
4421 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4422 </p>
4423 </blockquote><p>
4424
4425 </p>
4426 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4427 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>
4428 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
4429 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4430 <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>
4431 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>
4432 command.
4433 </p>
4434 <p>Possible Answers:
4435 </p>
4436 <p>
4437 </p>
4438 <blockquote class="text">
4439 <p>"OK" -
4440 </p>
4441 <blockquote class="text">
4442 <p>on success
4443 </p>
4444 </blockquote>
4445
4446
4447 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4448 </p>
4449 <blockquote class="text">
4450 <p>if audio output device was set, but there are noteworthy
4451 issue(s) related, providing an appropriate warning code and
4452 warning message
4453 </p>
4454 </blockquote>
4455
4456
4457 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4458 </p>
4459 <blockquote class="text">
4460 <p>in case it failed, providing an appropriate error code and error message
4461 </p>
4462 </blockquote>
4463
4464
4465 </blockquote><p>
4466
4467 </p>
4468 <p>Examples:
4469 </p>
4470 <p>
4471 </p>
4472 <blockquote class="text">
4473 <p>
4474 </p>
4475 </blockquote><p>
4476
4477 </p>
4478 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4479 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4480 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4481 Setting audio output type</h3>
4482
4483 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4484 </p>
4485 <p>The front-end can alter the audio output type on a specific sampler
4486 channel by sending the following command:
4487 </p>
4488 <p>
4489 </p>
4490 <blockquote class="text">
4491 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4492 </p>
4493 </blockquote><p>
4494
4495 </p>
4496 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4497 &lt;sampler-channel&gt; is the respective sampler channel number.
4498 </p>
4499 <p>Possible Answers:
4500 </p>
4501 <p>
4502 </p>
4503 <blockquote class="text">
4504 <p>"OK" -
4505 </p>
4506 <blockquote class="text">
4507 <p>on success
4508 </p>
4509 </blockquote>
4510
4511
4512 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4513 </p>
4514 <blockquote class="text">
4515 <p>if audio output type was set, but there are noteworthy
4516 issue(s) related, providing an appropriate warning code and
4517 warning message
4518 </p>
4519 </blockquote>
4520
4521
4522 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4523 </p>
4524 <blockquote class="text">
4525 <p>in case it failed, providing an appropriate error code and error message
4526 </p>
4527 </blockquote>
4528
4529
4530 </blockquote><p>
4531
4532 </p>
4533 <p>Examples:
4534 </p>
4535 <p>
4536 </p>
4537 <blockquote class="text">
4538 <p>
4539 </p>
4540 </blockquote><p>
4541
4542 </p>
4543 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4544 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4545 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4546 Setting audio output channel</h3>
4547
4548 <p>The front-end can alter the audio output channel on a specific
4549 sampler channel by sending the following command:
4550 </p>
4551 <p>
4552 </p>
4553 <blockquote class="text">
4554 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4555 </p>
4556 </blockquote><p>
4557
4558 </p>
4559 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4560 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>
4561 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
4562 numerical ID of the sampler channel's audio output channel which should be
4563 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4564 output device where &lt;audio-out&gt; should be routed to.
4565 </p>
4566 <p>Possible Answers:
4567 </p>
4568 <p>
4569 </p>
4570 <blockquote class="text">
4571 <p>"OK" -
4572 </p>
4573 <blockquote class="text">
4574 <p>on success
4575 </p>
4576 </blockquote>
4577
4578
4579 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4580 </p>
4581 <blockquote class="text">
4582 <p>if audio output channel was set, but there are noteworthy
4583 issue(s) related, providing an appropriate warning code and
4584 warning message
4585 </p>
4586 </blockquote>
4587
4588
4589 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4590 </p>
4591 <blockquote class="text">
4592 <p>in case it failed, providing an appropriate error code and error message
4593 </p>
4594 </blockquote>
4595
4596
4597 </blockquote><p>
4598
4599 </p>
4600 <p>Examples:
4601 </p>
4602 <p>
4603 </p>
4604 <blockquote class="text">
4605 <p>
4606 </p>
4607 </blockquote><p>
4608
4609 </p>
4610 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4611 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4612 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4613 Setting MIDI input device</h3>
4614
4615 <p>The front-end can set the MIDI input device on a specific sampler
4616 channel by sending the following command:
4617 </p>
4618 <p>
4619 </p>
4620 <blockquote class="text">
4621 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4622 </p>
4623 </blockquote><p>
4624
4625 </p>
4626 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4627 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>
4628 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
4629 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4630 <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>
4631 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.
4632 </p>
4633 <p>Possible Answers:
4634 </p>
4635 <p>
4636 </p>
4637 <blockquote class="text">
4638 <p>"OK" -
4639 </p>
4640 <blockquote class="text">
4641 <p>on success
4642 </p>
4643 </blockquote>
4644
4645
4646 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4647 </p>
4648 <blockquote class="text">
4649 <p>if MIDI input device was set, but there are noteworthy
4650 issue(s) related, providing an appropriate warning code and
4651 warning message
4652 </p>
4653 </blockquote>
4654
4655
4656 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4657 </p>
4658 <blockquote class="text">
4659 <p>in case it failed, providing an appropriate error code and error message
4660 </p>
4661 </blockquote>
4662
4663
4664 </blockquote><p>
4665
4666 </p>
4667 <p>Examples:
4668 </p>
4669 <p>
4670 </p>
4671 <blockquote class="text">
4672 <p>
4673 </p>
4674 </blockquote><p>
4675
4676 </p>
4677 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4678 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4679 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4680 Setting MIDI input type</h3>
4681
4682 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4683 </p>
4684 <p>The front-end can alter the MIDI input type on a specific sampler
4685 channel by sending the following command:
4686 </p>
4687 <p>
4688 </p>
4689 <blockquote class="text">
4690 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4691 </p>
4692 </blockquote><p>
4693
4694 </p>
4695 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4696 &lt;sampler-channel&gt; is the respective sampler channel number.
4697 </p>
4698 <p>Possible Answers:
4699 </p>
4700 <p>
4701 </p>
4702 <blockquote class="text">
4703 <p>"OK" -
4704 </p>
4705 <blockquote class="text">
4706 <p>on success
4707 </p>
4708 </blockquote>
4709
4710
4711 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4712 </p>
4713 <blockquote class="text">
4714 <p>if MIDI input type was set, but there are noteworthy
4715 issue(s) related, providing an appropriate warning code and
4716 warning message
4717 </p>
4718 </blockquote>
4719
4720
4721 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4722 </p>
4723 <blockquote class="text">
4724 <p>in case it failed, providing an appropriate error code and error message
4725 </p>
4726 </blockquote>
4727
4728
4729 </blockquote><p>
4730
4731 </p>
4732 <p>Examples:
4733 </p>
4734 <p>
4735 </p>
4736 <blockquote class="text">
4737 <p>
4738 </p>
4739 </blockquote><p>
4740
4741 </p>
4742 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4743 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4744 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4745 Setting MIDI input port</h3>
4746
4747 <p>The front-end can alter the MIDI input port on a specific sampler
4748 channel by sending the following command:
4749 </p>
4750 <p>
4751 </p>
4752 <blockquote class="text">
4753 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4754 </p>
4755 </blockquote><p>
4756
4757 </p>
4758 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4759 MIDI input device connected to the sampler channel given by
4760 &lt;sampler-channel&gt;.
4761 </p>
4762 <p>Possible Answers:
4763 </p>
4764 <p>
4765 </p>
4766 <blockquote class="text">
4767 <p>"OK" -
4768 </p>
4769 <blockquote class="text">
4770 <p>on success
4771 </p>
4772 </blockquote>
4773
4774
4775 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4776 </p>
4777 <blockquote class="text">
4778 <p>if MIDI input port was set, but there are noteworthy
4779 issue(s) related, providing an appropriate warning code and
4780 warning message
4781 </p>
4782 </blockquote>
4783
4784
4785 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4786 </p>
4787 <blockquote class="text">
4788 <p>in case it failed, providing an appropriate error code and error message
4789 </p>
4790 </blockquote>
4791
4792
4793 </blockquote><p>
4794
4795 </p>
4796 <p>Examples:
4797 </p>
4798 <p>
4799 </p>
4800 <blockquote class="text">
4801 <p>
4802 </p>
4803 </blockquote><p>
4804
4805 </p>
4806 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4807 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4808 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4809 Setting MIDI input channel</h3>
4810
4811 <p>The front-end can alter the MIDI channel a sampler channel should
4812 listen to by sending the following command:
4813 </p>
4814 <p>
4815 </p>
4816 <blockquote class="text">
4817 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4818 </p>
4819 </blockquote><p>
4820
4821 </p>
4822 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4823 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4824 channels.
4825 </p>
4826 <p>Possible Answers:
4827 </p>
4828 <p>
4829 </p>
4830 <blockquote class="text">
4831 <p>"OK" -
4832 </p>
4833 <blockquote class="text">
4834 <p>on success
4835 </p>
4836 </blockquote>
4837
4838
4839 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4840 </p>
4841 <blockquote class="text">
4842 <p>if MIDI input channel was set, but there are noteworthy
4843 issue(s) related, providing an appropriate warning code and
4844 warning message
4845 </p>
4846 </blockquote>
4847
4848
4849 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4850 </p>
4851 <blockquote class="text">
4852 <p>in case it failed, providing an appropriate error code and error message
4853 </p>
4854 </blockquote>
4855
4856
4857 </blockquote><p>
4858
4859 </p>
4860 <p>Examples:
4861 </p>
4862 <p>
4863 </p>
4864 <blockquote class="text">
4865 <p>
4866 </p>
4867 </blockquote><p>
4868
4869 </p>
4870 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4871 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4872 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4873 Setting channel volume</h3>
4874
4875 <p>The front-end can alter the volume of a sampler channel by sending
4876 the following command:
4877 </p>
4878 <p>
4879 </p>
4880 <blockquote class="text">
4881 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4882 </p>
4883 </blockquote><p>
4884
4885 </p>
4886 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4887 smaller than 1.0 means attenuation, whereas a value greater than
4888 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4889 channel where this volume factor should be set.
4890 </p>
4891 <p>Possible Answers:
4892 </p>
4893 <p>
4894 </p>
4895 <blockquote class="text">
4896 <p>"OK" -
4897 </p>
4898 <blockquote class="text">
4899 <p>on success
4900 </p>
4901 </blockquote>
4902
4903
4904 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4905 </p>
4906 <blockquote class="text">
4907 <p>if channel volume was set, but there are noteworthy
4908 issue(s) related, providing an appropriate warning code and
4909 warning message
4910 </p>
4911 </blockquote>
4912
4913
4914 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4915 </p>
4916 <blockquote class="text">
4917 <p>in case it failed, providing an appropriate error code and error message
4918 </p>
4919 </blockquote>
4920
4921
4922 </blockquote><p>
4923
4924 </p>
4925 <p>Examples:
4926 </p>
4927 <p>
4928 </p>
4929 <blockquote class="text">
4930 <p>
4931 </p>
4932 </blockquote><p>
4933
4934 </p>
4935 <a name="SET CHANNEL MUTE"></a><br /><hr />
4936 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4937 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4938 Muting a sampler channel</h3>
4939
4940 <p>The front-end can mute/unmute a specific sampler
4941 channel by sending the following command:
4942 </p>
4943 <p>
4944 </p>
4945 <blockquote class="text">
4946 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4947 </p>
4948 </blockquote><p>
4949
4950 </p>
4951 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4952 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>
4953 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
4954 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4955 to unmute the channel.
4956 </p>
4957 <p>Possible Answers:
4958 </p>
4959 <p>
4960 </p>
4961 <blockquote class="text">
4962 <p>"OK" -
4963 </p>
4964 <blockquote class="text">
4965 <p>on success
4966 </p>
4967 </blockquote>
4968
4969
4970 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4971 </p>
4972 <blockquote class="text">
4973 <p>if the channel was muted/unmuted, but there are noteworthy
4974 issue(s) related, providing an appropriate warning code and
4975 warning message
4976 </p>
4977 </blockquote>
4978
4979
4980 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4981 </p>
4982 <blockquote class="text">
4983 <p>in case it failed, providing an appropriate error code and error message
4984 </p>
4985 </blockquote>
4986
4987
4988 </blockquote><p>
4989
4990 </p>
4991 <p>Examples:
4992 </p>
4993 <p>
4994 </p>
4995 <blockquote class="text">
4996 <p>
4997 </p>
4998 </blockquote><p>
4999
5000 </p>
5001 <a name="SET CHANNEL SOLO"></a><br /><hr />
5002 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5003 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
5004 Soloing a sampler channel</h3>
5005
5006 <p>The front-end can solo/unsolo a specific sampler channel
5007 by sending the following command:
5008 </p>
5009 <p>
5010 </p>
5011 <blockquote class="text">
5012 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5013 </p>
5014 </blockquote><p>
5015
5016 </p>
5017 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5018 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>
5019 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
5020 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5021 to unsolo the channel.
5022 </p>
5023 <p>Possible Answers:
5024 </p>
5025 <p>
5026 </p>
5027 <blockquote class="text">
5028 <p>"OK" -
5029 </p>
5030 <blockquote class="text">
5031 <p>on success
5032 </p>
5033 </blockquote>
5034
5035
5036 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5037 </p>
5038 <blockquote class="text">
5039 <p>if the channel was soloed/unsoloed, but there are noteworthy
5040 issue(s) related, providing an appropriate warning code and
5041 warning message
5042 </p>
5043 </blockquote>
5044
5045
5046 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5047 </p>
5048 <blockquote class="text">
5049 <p>in case it failed, providing an appropriate error code and error message
5050 </p>
5051 </blockquote>
5052
5053
5054 </blockquote><p>
5055
5056 </p>
5057 <p>Examples:
5058 </p>
5059 <p>
5060 </p>
5061 <blockquote class="text">
5062 <p>
5063 </p>
5064 </blockquote><p>
5065
5066 </p>
5067 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5068 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5069 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5070 Assigning a MIDI instrument map to a sampler channel</h3>
5071
5072 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5073 by sending the following command:
5074 </p>
5075 <p>
5076 </p>
5077 <blockquote class="text">
5078 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5079 </p>
5080 </blockquote><p>
5081
5082 </p>
5083 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5084 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>
5085 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
5086 &lt;map&gt; can have the following possibilites:
5087 </p>
5088 <p>
5089 </p>
5090 <blockquote class="text">
5091 <p>"NONE" -
5092 </p>
5093 <blockquote class="text">
5094 <p>This is the default setting. In this case
5095 the sampler channel is not assigned any MIDI
5096 instrument map and thus will ignore all MIDI
5097 program change messages.
5098 </p>
5099 </blockquote>
5100
5101
5102 <p>"DEFAULT" -
5103 </p>
5104 <blockquote class="text">
5105 <p>The sampler channel will always use the
5106 default MIDI instrument map to handle MIDI
5107 program change messages.
5108 </p>
5109 </blockquote>
5110
5111
5112 <p>numeric ID -
5113 </p>
5114 <blockquote class="text">
5115 <p>You can assign a specific MIDI instrument map
5116 by replacing &lt;map&gt; with the respective numeric
5117 ID of the MIDI instrument map as returned by the
5118 <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>
5119 command. Once that map will be deleted, the sampler
5120 channel would fall back to "NONE".
5121 </p>
5122 </blockquote>
5123
5124
5125 </blockquote><p>
5126
5127 </p>
5128 <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>
5129 for details regarding MIDI instrument mapping.
5130 </p>
5131 <p>Possible Answers:
5132 </p>
5133 <p>
5134 </p>
5135 <blockquote class="text">
5136 <p>"OK" -
5137 </p>
5138 <blockquote class="text">
5139 <p>on success
5140 </p>
5141 </blockquote>
5142
5143
5144 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5145 </p>
5146 <blockquote class="text">
5147 <p>in case it failed, providing an appropriate error code and error message
5148 </p>
5149 </blockquote>
5150
5151
5152 </blockquote><p>
5153
5154 </p>
5155 <p>Examples:
5156 </p>
5157 <p>
5158 </p>
5159 <blockquote class="text">
5160 <p>
5161 </p>
5162 </blockquote><p>
5163
5164 </p>
5165 <a name="CREATE FX_SEND"></a><br /><hr />
5166 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5167 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5168 Adding an effect send to a sampler channel</h3>
5169
5170 <p>The front-end can create an additional effect send on a specific sampler channel
5171 by sending the following command:
5172 </p>
5173 <p>
5174 </p>
5175 <blockquote class="text">
5176 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5177 </p>
5178 </blockquote><p>
5179
5180 </p>
5181 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5182 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>
5183 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
5184 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5185 is a number between 0..127 defining the MIDI controller which can alter the
5186 effect send level and &lt;name&gt; is an optional argument defining a name
5187 for the effect send entity. The name does not have to be unique, but MUST be
5188 encapsulated into apostrophes and supports escape sequences as described in chapter
5189 "<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>".
5190 </p>
5191 <p>By default, that is as initial routing, the effect send's audio channels
5192 are automatically routed to the last audio channels of the sampler channel's
5193 audio output device, that way you can i.e. first increase the amount of audio
5194 channels on the audio output device for having dedicated effect send output
5195 channels and when "CREATE FX_SEND" is called, those channels will automatically
5196 be picked. You can alter the destination channels however with
5197 <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>.
5198
5199 </p>
5200 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5201 sends on a sampler channel will decrease runtime performance, because for implementing channel
5202 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5203 the voices and route the audio signal afterwards to the master outputs and effect send
5204 outputs (along with their respective effect send levels). A sampler channel without effect
5205 sends however can mix its voices directly into the audio output devices's audio buffers
5206 and is thus faster.
5207
5208 </p>
5209 <p>Possible Answers:
5210 </p>
5211 <p>
5212 </p>
5213 <blockquote class="text">
5214 <p>"OK[&lt;fx-send-id&gt;]" -
5215 </p>
5216 <blockquote class="text">
5217 <p>in case a new effect send could be added to the
5218 sampler channel, where &lt;fx-send-id&gt; reflects the
5219 unique ID of the newly created effect send entity
5220 </p>
5221 </blockquote>
5222
5223
5224 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5225 </p>
5226 <blockquote class="text">
5227 <p>when a new effect send could not be added, i.e.
5228 due to invalid parameters
5229 </p>
5230 </blockquote>
5231
5232
5233 </blockquote><p>
5234
5235 </p>
5236 <p>Examples:
5237 </p>
5238 <p>
5239 </p>
5240 <blockquote class="text">
5241 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5242 </p>
5243 <p>S: "OK[0]"
5244 </p>
5245 </blockquote><p>
5246
5247 </p>
5248 <p>
5249 </p>
5250 <blockquote class="text">
5251 <p>C: "CREATE FX_SEND 0 93"
5252 </p>
5253 <p>S: "OK[1]"
5254 </p>
5255 </blockquote><p>
5256
5257 </p>
5258 <a name="DESTROY FX_SEND"></a><br /><hr />
5259 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5260 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5261 Removing an effect send from a sampler channel</h3>
5262
5263 <p>The front-end can remove an existing effect send on a specific sampler channel
5264 by sending the following command:
5265 </p>
5266 <p>
5267 </p>
5268 <blockquote class="text">
5269 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5270 </p>
5271 </blockquote><p>
5272
5273 </p>
5274 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5275 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>
5276 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
5277 sampler channel from which the effect send should be removed from and
5278 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5279 <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>
5280 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.
5281 </p>
5282 <p>Possible Answers:
5283 </p>
5284 <p>
5285 </p>
5286 <blockquote class="text">
5287 <p>"OK" -
5288 </p>
5289 <blockquote class="text">
5290 <p>on success
5291 </p>
5292 </blockquote>
5293
5294
5295 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5296 </p>
5297 <blockquote class="text">
5298 <p>in case it failed, providing an appropriate error code and
5299 error message
5300 </p>
5301 </blockquote>
5302
5303
5304 </blockquote><p>
5305
5306 </p>
5307 <p>Example:
5308 </p>
5309 <p>
5310 </p>
5311 <blockquote class="text">
5312 <p>C: "DESTROY FX_SEND 0 0"
5313 </p>
5314 <p>S: "OK"
5315 </p>
5316 </blockquote><p>
5317
5318 </p>
5319 <a name="GET FX_SENDS"></a><br /><hr />
5320 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5321 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5322 Getting amount of effect sends on a sampler channel</h3>
5323
5324 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5325 by sending the following command:
5326 </p>
5327 <p>
5328 </p>
5329 <blockquote class="text">
5330 <p>GET FX_SENDS &lt;sampler-channel&gt;
5331 </p>
5332 </blockquote><p>
5333
5334 </p>
5335 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5336 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>
5337 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.
5338 </p>
5339 <p>Possible Answers:
5340 </p>
5341 <p>
5342 </p>
5343 <blockquote class="text">
5344 <p>The sampler will answer by returning the number of effect
5345 sends on the given sampler channel.
5346 </p>
5347 </blockquote><p>
5348
5349 </p>
5350 <p>Example:
5351 </p>
5352 <p>
5353 </p>
5354 <blockquote class="text">
5355 <p>C: "GET FX_SENDS 0"
5356 </p>
5357 <p>S: "2"
5358 </p>
5359 </blockquote><p>
5360
5361 </p>
5362 <a name="LIST FX_SENDS"></a><br /><hr />
5363 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5364 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5365 Listing all effect sends on a sampler channel</h3>
5366
5367 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5368 by sending the following command:
5369 </p>
5370 <p>
5371 </p>
5372 <blockquote class="text">
5373 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5374 </p>
5375 </blockquote><p>
5376
5377 </p>
5378 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5379 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>
5380 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.
5381 </p>
5382 <p>Possible Answers:
5383 </p>
5384 <p>
5385 </p>
5386 <blockquote class="text">
5387 <p>The sampler will answer by returning a comma separated list
5388 with all effect sends' numerical IDs on the given sampler
5389 channel.
5390 </p>
5391 </blockquote><p>
5392
5393 </p>
5394 <p>Examples:
5395 </p>
5396 <p>
5397 </p>
5398 <blockquote class="text">
5399 <p>C: "LIST FX_SENDS 0"
5400 </p>
5401 <p>S: "0,1"
5402 </p>
5403 </blockquote><p>
5404
5405 </p>
5406 <p>
5407 </p>
5408 <blockquote class="text">
5409 <p>C: "LIST FX_SENDS 1"
5410 </p>
5411 <p>S: ""
5412 </p>
5413 </blockquote><p>
5414
5415 </p>
5416 <a name="GET FX_SEND INFO"></a><br /><hr />
5417 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5418 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5419 Getting effect send information</h3>
5420
5421 <p>The front-end can ask for the current settings of an effect send entity
5422 by sending the following command:
5423 </p>
5424 <p>
5425 </p>
5426 <blockquote class="text">
5427 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5428 </p>
5429 </blockquote><p>
5430
5431 </p>
5432 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5433 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>
5434 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
5435 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5436 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>
5437 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.
5438
5439 </p>
5440 <p>Possible Answers:
5441 </p>
5442 <p>
5443 </p>
5444 <blockquote class="text">
5445 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5446 Each answer line begins with the settings category name
5447 followed by a colon and then a space character &lt;SP&gt; and finally
5448 the info character string to that setting category. At the
5449 moment the following categories are defined:
5450 </p>
5451 <p>
5452 </p>
5453 <blockquote class="text">
5454 <p>NAME -
5455 </p>
5456 <blockquote class="text">
5457 <p>name of the effect send entity
5458 (note that this character string may contain
5459 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5460 </p>
5461 </blockquote>
5462
5463
5464 <p>MIDI_CONTROLLER -
5465 </p>
5466 <blockquote class="text">
5467 <p>a value between 0 and 127 reflecting the MIDI controller
5468 which is able to modify the effect send's send level
5469 </p>
5470 </blockquote>
5471
5472
5473 <p>LEVEL -
5474 </p>
5475 <blockquote class="text">
5476 <p>optionally dotted number reflecting the effect send's
5477 current send level (where a value &lt; 1.0 means attenuation
5478 and a value > 1.0 means amplification)
5479 </p>
5480 </blockquote>
5481
5482
5483 <p>AUDIO_OUTPUT_ROUTING -
5484 </p>
5485 <blockquote class="text">
5486 <p>comma separated list which reflects to which audio
5487 channel of the selected audio output device each
5488 effect send output channel is routed to, e.g. "0,3" would
5489 mean the effect send's output channel 0 is routed to channel
5490 0 of the audio output device and the effect send's output
5491 channel 1 is routed to the channel 3 of the audio
5492 output device (see
5493 <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>
5494 for details), if an internal send
5495 effect is assigned to the effect
5496 send, then this setting defines the
5497 audio channel routing to that
5498 effect instance respectively
5499 </p>
5500 </blockquote>
5501
5502
5503 <p>EFFECT -
5504 </p>
5505 <blockquote class="text">
5506 <p>destination send effect chain ID
5507 and destination effect chain
5508 position, separated by comma in the
5509 form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5510 or "NONE" if there is no send effect
5511 assigned to the effect send
5512 </p>
5513 </blockquote>
5514
5515
5516 </blockquote>
5517
5518
5519 </blockquote><p>
5520
5521 </p>
5522 <p>The mentioned fields above don't have to be in particular order.
5523 </p>
5524 <p>Example:
5525 </p>
5526 <p>
5527 </p>
5528 <blockquote class="text">
5529 <p>C: "GET FX_SEND INFO 0 0"
5530 </p>
5531 <p>S: "NAME: Reverb Send"
5532 </p>
5533 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5534 </p>
5535 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5536 </p>
5537 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5538 </p>
5539 <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5540 </p>
5541 <p>&nbsp;&nbsp;&nbsp;"."
5542 </p>
5543 </blockquote><p>
5544
5545 </p>
5546 <p>
5547 </p>
5548 <blockquote class="text">
5549 <p>C: "GET FX_SEND INFO 0 1"
5550 </p>
5551 <p>S: "NAME: Delay Send (Internal)"
5552 </p>
5553 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5554 </p>
5555 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5556 </p>
5557 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5558 </p>
5559 <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5560 </p>
5561 <p>&nbsp;&nbsp;&nbsp;"."
5562 </p>
5563 </blockquote><p>
5564
5565 </p>
5566 <a name="SET FX_SEND NAME"></a><br /><hr />
5567 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5568 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5569 Changing effect send's name</h3>
5570
5571 <p>The front-end can alter the current name of an effect
5572 send entity by sending the following command:
5573 </p>
5574 <p>
5575 </p>
5576 <blockquote class="text">
5577 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5578 </p>
5579 </blockquote><p>
5580
5581 </p>
5582 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5583 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>
5584 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,
5585 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5586 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>
5587 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
5588 &lt;name&gt; is the new name of the effect send entity, which
5589 does not have to be unique (name MUST be encapsulated into apostrophes
5590 and supports escape sequences as described in chapter
5591 "<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>").
5592
5593 </p>
5594 <p>Possible Answers:
5595 </p>
5596 <p>
5597 </p>
5598 <blockquote class="text">
5599 <p>"OK" -
5600 </p>
5601 <blockquote class="text">
5602 <p>on success
5603 </p>
5604 </blockquote>
5605
5606
5607 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5608 </p>
5609 <blockquote class="text">
5610 <p>in case it failed, providing an appropriate error code and error message
5611 </p>
5612 </blockquote>
5613
5614
5615 </blockquote><p>
5616
5617 </p>
5618 <p>Example:
5619 </p>
5620 <p>
5621 </p>
5622 <blockquote class="text">
5623 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5624 </p>
5625 <p>S: "OK"
5626 </p>
5627 </blockquote><p>
5628
5629 </p>
5630 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5631 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5632 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5633 Altering effect send's audio routing</h3>
5634
5635 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5636 sampler channel by sending the following command:
5637 </p>
5638 <p>
5639 </p>
5640 <blockquote class="text">
5641 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5642 </p>
5643 </blockquote><p>
5644
5645 </p>
5646 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5647 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>
5648 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,
5649 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5650 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>
5651 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,
5652 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5653 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5654 the audio channel of the selected audio output device where &lt;audio-src&gt;
5655 should be routed to. If an internal send effect is assigned
5656 to the effect send, then this setting defines the audio
5657 channel routing to that effect instance respectively.
5658 </p>
5659 <p>Note that effect sends can only route audio to the same audio output
5660 device as assigned to the effect send's sampler channel. Also note that an
5661 effect send entity does always have exactly as much audio channels as its
5662 sampler channel. So if the sampler channel is stereo, the effect send does
5663 have two audio channels as well. Also keep in mind that the amount of audio
5664 channels on a sampler channel might be dependant not only to the deployed
5665 sampler engine on the sampler channel, but also dependant to the instrument
5666 currently loaded. However you can (effectively) turn an i.e. stereo effect
5667 send into a mono one by simply altering its audio routing appropriately.
5668 </p>
5669 <p>Possible Answers:
5670 </p>
5671 <p>
5672 </p>
5673 <blockquote class="text">
5674 <p>"OK" -
5675 </p>
5676 <blockquote class="text">
5677 <p>on success
5678 </p>
5679 </blockquote>
5680
5681
5682 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5683 </p>
5684 <blockquote class="text">
5685 <p>if audio output channel was set, but there are noteworthy
5686 issue(s) related, providing an appropriate warning code and
5687 warning message
5688 </p>
5689 </blockquote>
5690
5691
5692 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5693 </p>
5694 <blockquote class="text">
5695 <p>in case it failed, providing an appropriate error code and error message
5696 </p>
5697 </blockquote>
5698
5699
5700 </blockquote><p>
5701
5702 </p>
5703 <p>Example:
5704 </p>
5705 <p>
5706 </p>
5707 <blockquote class="text">
5708 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5709 </p>
5710 <p>S: "OK"
5711 </p>
5712 </blockquote><p>
5713
5714 </p>
5715 <a name="SET FX_SEND EFFECT"></a><br /><hr />
5716 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5717 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5718 Assigning destination effect to an effect send</h3>
5719
5720 <p>The front-end can (re-)assign a destination effect to an
5721 effect send by sending the following command:
5722 </p>
5723 <p>
5724 </p>
5725 <blockquote class="text">
5726 <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
5727 </p>
5728 </blockquote><p>
5729
5730 </p>
5731 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5732 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>
5733 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,
5734 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5735 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>
5736 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,
5737 &lt;effect-chain&gt; by the numerical ID of the destination
5738 effect chain as returned by the
5739 <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>
5740 or
5741 <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>
5742 command and &lt;chain-pos&gt; reflects the exact effect
5743 chain position in the effect chain which hosts the actual
5744 destination effect.
5745 </p>
5746 <p>Possible Answers:
5747 </p>
5748 <p>
5749 </p>
5750 <blockquote class="text">
5751 <p>"OK" -
5752 </p>
5753 <blockquote class="text">
5754 <p>on success
5755 </p>
5756 </blockquote>
5757
5758
5759 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5760 </p>
5761 <blockquote class="text">
5762 <p>in case it failed, providing an appropriate error code and error message
5763 </p>
5764 </blockquote>
5765
5766
5767 </blockquote><p>
5768
5769 </p>
5770 <p>Example:
5771 </p>
5772 <p>
5773 </p>
5774 <blockquote class="text">
5775 <p>C: "SET FX_SEND EFFECT 0 0 2 5"
5776 </p>
5777 <p>S: "OK"
5778 </p>
5779 </blockquote><p>
5780
5781 </p>
5782 <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
5783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5784 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5785 Removing destination effect from an effect send</h3>
5786
5787 <p>The front-end can (re-)assign a destination effect to an
5788 effect send by sending the following command:
5789 </p>
5790 <p>
5791 </p>
5792 <blockquote class="text">
5793 <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
5794 </p>
5795 </blockquote><p>
5796
5797 </p>
5798 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5799 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>
5800 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,
5801 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5802 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>
5803 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.
5804 </p>
5805 <p>After the destination effect has been removed from the
5806 effect send, the audio signal of the effect send will be
5807 routed directly to the audio output device, according to the
5808 audio channel routing setting of the effect send.
5809
5810 </p>
5811 <p>Possible Answers:
5812 </p>
5813 <p>
5814 </p>
5815 <blockquote class="text">
5816 <p>"OK" -
5817 </p>
5818 <blockquote class="text">
5819 <p>on success
5820 </p>
5821 </blockquote>
5822
5823
5824 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5825 </p>
5826 <blockquote class="text">
5827 <p>in case it failed, providing an appropriate error code and error message
5828 </p>
5829 </blockquote>
5830
5831
5832 </blockquote><p>
5833
5834 </p>
5835 <p>Example:
5836 </p>
5837 <p>
5838 </p>
5839 <blockquote class="text">
5840 <p>C: "REMOVE FX_SEND EFFECT 0 0"
5841 </p>
5842 <p>S: "OK"
5843 </p>
5844 </blockquote><p>
5845
5846 </p>
5847 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5848 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5849 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5850 Altering effect send's MIDI controller</h3>
5851
5852 <p>The front-end can alter the MIDI controller of an effect
5853 send entity by sending the following command:
5854 </p>
5855 <p>
5856 </p>
5857 <blockquote class="text">
5858 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5859 </p>
5860 </blockquote><p>
5861
5862 </p>
5863 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5864 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>
5865 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,
5866 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5867 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>
5868 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
5869 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5870 able to modify the effect send's send level.
5871 </p>
5872 <p>Possible Answers:
5873 </p>
5874 <p>
5875 </p>
5876 <blockquote class="text">
5877 <p>"OK" -
5878 </p>
5879 <blockquote class="text">
5880 <p>on success
5881 </p>
5882 </blockquote>
5883
5884
5885 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5886 </p>
5887 <blockquote class="text">
5888 <p>if MIDI controller was set, but there are noteworthy
5889 issue(s) related, providing an appropriate warning code and
5890 warning message
5891 </p>
5892 </blockquote>
5893
5894
5895 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5896 </p>
5897 <blockquote class="text">
5898 <p>in case it failed, providing an appropriate error code and error message
5899 </p>
5900 </blockquote>
5901
5902
5903 </blockquote><p>
5904
5905 </p>
5906 <p>Example:
5907 </p>
5908 <p>
5909 </p>
5910 <blockquote class="text">
5911 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5912 </p>
5913 <p>S: "OK"
5914 </p>
5915 </blockquote><p>
5916
5917 </p>
5918 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5919 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5920 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5921 Altering effect send's send level</h3>
5922
5923 <p>The front-end can alter the current send level of an effect
5924 send entity by sending the following command:
5925 </p>
5926 <p>
5927 </p>
5928 <blockquote class="text">
5929 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5930 </p>
5931 </blockquote><p>
5932
5933 </p>
5934 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5935 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>
5936 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,
5937 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5938 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>
5939 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
5940 &lt;volume&gt; is an optionally dotted positive number (a value
5941 smaller than 1.0 means attenuation, whereas a value greater than
5942 1.0 means amplification) reflecting the new send level.
5943 </p>
5944 <p>Possible Answers:
5945 </p>
5946 <p>
5947 </p>
5948 <blockquote class="text">
5949 <p>"OK" -
5950 </p>
5951 <blockquote class="text">
5952 <p>on success
5953 </p>
5954 </blockquote>
5955
5956
5957 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5958 </p>
5959 <blockquote class="text">
5960 <p>if new send level was set, but there are noteworthy
5961 issue(s) related, providing an appropriate warning code and
5962 warning message
5963 </p>
5964 </blockquote>
5965
5966
5967 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5968 </p>
5969 <blockquote class="text">
5970 <p>in case it failed, providing an appropriate error code and error message
5971 </p>
5972 </blockquote>
5973
5974
5975 </blockquote><p>
5976
5977 </p>
5978 <p>Example:
5979 </p>
5980 <p>
5981 </p>
5982 <blockquote class="text">
5983 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5984 </p>
5985 <p>S: "OK"
5986 </p>
5987 </blockquote><p>
5988
5989 </p>
5990 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5991 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5992 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
5993 Sending MIDI messages to sampler channel</h3>
5994
5995 <p>The front-end can send MIDI events to a specific sampler channel
5996 by sending the following command:
5997 </p>
5998 <p>
5999 </p>
6000 <blockquote class="text">
6001 <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
6002 </p>
6003 </blockquote><p>
6004
6005 </p>
6006 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6007 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>
6008 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,
6009 &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6010 specifies the MIDI message type. Currently, the following MIDI messages are supported:
6011 </p>
6012 <p>
6013 </p>
6014 <blockquote class="text">
6015 <p>"NOTE_ON" -
6016 </p>
6017 <blockquote class="text">
6018 <p>For turning on MIDI notes, where &lt;arg1&gt;
6019 specifies the key number and &lt;arg2&gt; the velocity
6020 as described in the MIDI specification.
6021 </p>
6022 </blockquote>
6023
6024
6025 <p>"NOTE_OFF" -
6026 </p>
6027 <blockquote class="text">
6028 <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6029 specifies the key number and &lt;arg2&gt; the velocity
6030 as described in the MIDI specification.
6031 </p>
6032 </blockquote>
6033
6034
6035 <p>"CC" -
6036 </p>
6037 <blockquote class="text">
6038 <p>For changing a MIDI controller, where &lt;arg1&gt;
6039 specifies the controller number and &lt;arg2&gt; the
6040 new value of the controller as described in the Control
6041 Change section of the MIDI specification.
6042 </p>
6043 </blockquote>
6044
6045
6046 </blockquote><p>
6047
6048 </p>
6049 <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6050 and no realtime guarantee whatsoever will be made!
6051 </p>
6052 <p>Possible Answers:
6053 </p>
6054 <p>
6055 </p>
6056 <blockquote class="text">
6057 <p>"OK" -
6058 </p>
6059 <blockquote class="text">
6060 <p>on success
6061 </p>
6062 </blockquote>
6063
6064
6065 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6066 </p>
6067 <blockquote class="text">
6068 <p>in case it failed, providing an appropriate error code and error message
6069 </p>
6070 </blockquote>
6071
6072
6073 </blockquote><p>
6074
6075 </p>
6076 <p>Example:
6077 </p>
6078 <p>
6079 </p>
6080 <blockquote class="text">
6081 <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6082 </p>
6083 <p>S: "OK"
6084 </p>
6085 </blockquote><p>
6086
6087 </p>
6088 <a name="RESET CHANNEL"></a><br /><hr />
6089 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6090 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6091 Resetting a sampler channel</h3>
6092
6093 <p>The front-end can reset a particular sampler channel by sending the following command:
6094 </p>
6095 <p>
6096 </p>
6097 <blockquote class="text">
6098 <p>RESET CHANNEL &lt;sampler-channel&gt;
6099 </p>
6100 </blockquote><p>
6101
6102 </p>
6103 <p>
6104 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6105 This will cause the engine on that sampler channel, its voices and
6106 eventually disk streams and all control and status variables to be
6107 reset.
6108 </p>
6109 <p>Possible Answers:
6110 </p>
6111 <p>
6112 </p>
6113 <blockquote class="text">
6114 <p>"OK" -
6115 </p>
6116 <blockquote class="text">
6117 <p>on success
6118 </p>
6119 </blockquote>
6120
6121
6122 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6123 </p>
6124 <blockquote class="text">
6125 <p>if channel was reset, but there are noteworthy issue(s)
6126 related, providing an appropriate warning code and warning
6127 message
6128 </p>
6129 </blockquote>
6130
6131
6132 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6133 </p>
6134 <blockquote class="text">
6135 <p>in case it failed, providing an appropriate error code and
6136 error message
6137 </p>
6138 </blockquote>
6139
6140
6141 </blockquote><p>
6142
6143 </p>
6144 <p>Examples:
6145 </p>
6146 <p>
6147 </p>
6148 <blockquote class="text">
6149 <p>
6150 </p>
6151 </blockquote><p>
6152
6153 </p>
6154 <a name="anchor12"></a><br /><hr />
6155 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6156 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6157 Controlling connection</h3>
6158
6159 <p>The following commands are used to control the connection to LinuxSampler.
6160 </p>
6161 <a name="SUBSCRIBE"></a><br /><hr />
6162 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6163 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6164 Register front-end for receiving event messages</h3>
6165
6166 <p>The front-end can register itself to the LinuxSampler application to
6167 be informed about noteworthy events by sending this command:
6168 </p>
6169 <p>
6170 </p>
6171 <blockquote class="text">
6172 <p>SUBSCRIBE &lt;event-id&gt;
6173 </p>
6174 </blockquote><p>
6175
6176 </p>
6177 <p>where &lt;event-id&gt; will be replaced by the respective event that
6178 client wants to subscribe to.
6179 </p>
6180 <p>Possible Answers:
6181 </p>
6182 <p>
6183 </p>
6184 <blockquote class="text">
6185 <p>"OK" -
6186 </p>
6187 <blockquote class="text">
6188 <p>on success
6189 </p>
6190 </blockquote>
6191
6192
6193 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6194 </p>
6195 <blockquote class="text">
6196 <p>if registration succeeded, but there are noteworthy
6197 issue(s) related, providing an appropriate warning code and
6198 warning message
6199 </p>
6200 </blockquote>
6201
6202
6203 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6204 </p>
6205 <blockquote class="text">
6206 <p>in case it failed, providing an appropriate error code and
6207 error message
6208 </p>
6209 </blockquote>
6210
6211
6212 </blockquote><p>
6213
6214 </p>
6215 <p>Examples:
6216 </p>
6217 <p>
6218 </p>
6219 <blockquote class="text">
6220 <p>
6221 </p>
6222 </blockquote><p>
6223
6224 </p>
6225 <a name="UNSUBSCRIBE"></a><br /><hr />
6226 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6227 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6228 Unregister front-end for not receiving event messages</h3>
6229
6230 <p>The front-end can unregister itself if it doesn't want to receive event
6231 messages anymore by sending the following command:
6232 </p>
6233 <p>
6234 </p>
6235 <blockquote class="text">
6236 <p>UNSUBSCRIBE &lt;event-id&gt;
6237 </p>
6238 </blockquote><p>
6239
6240 </p>
6241 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6242 client doesn't want to receive anymore.
6243 </p>
6244 <p>Possible Answers:
6245 </p>
6246 <p>
6247 </p>
6248 <blockquote class="text">
6249 <p>"OK" -
6250 </p>
6251 <blockquote class="text">
6252 <p>on success
6253 </p>
6254 </blockquote>
6255
6256
6257 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6258 </p>
6259 <blockquote class="text">
6260 <p>if unregistration succeeded, but there are noteworthy
6261 issue(s) related, providing an appropriate warning code and
6262 warning message
6263 </p>
6264 </blockquote>
6265
6266
6267 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6268 </p>
6269 <blockquote class="text">
6270 <p>in case it failed, providing an appropriate error code and
6271 error message
6272 </p>
6273 </blockquote>
6274
6275
6276 </blockquote><p>
6277
6278 </p>
6279 <p>Examples:
6280 </p>
6281 <p>
6282 </p>
6283 <blockquote class="text">
6284 <p>
6285 </p>
6286 </blockquote><p>
6287
6288 </p>
6289 <a name="SET ECHO"></a><br /><hr />
6290 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6291 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6292 Enable or disable echo of commands</h3>
6293
6294 <p>To enable or disable back sending of commands to the client the following command can be used:
6295 </p>
6296 <p>
6297 </p>
6298 <blockquote class="text">
6299 <p>SET ECHO &lt;value&gt;
6300 </p>
6301 </blockquote><p>
6302
6303 </p>
6304 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6305 or "0" to disable echo mode. When echo mode is enabled, all
6306 commands send to LinuxSampler will be immediately send back and
6307 after this echo the actual response to the command will be
6308 returned. Echo mode will only be altered for the client connection
6309 that issued the "SET ECHO" command, not globally for all client
6310 connections.
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>usually
6321 </p>
6322 </blockquote>
6323
6324
6325 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6326 </p>
6327 <blockquote class="text">
6328 <p>on syntax error, e.g. non boolean value
6329 </p>
6330 </blockquote>
6331
6332
6333 </blockquote><p>
6334
6335 </p>
6336 <p>Examples:
6337 </p>
6338 <p>
6339 </p>
6340 <blockquote class="text">
6341 <p>
6342 </p>
6343 </blockquote><p>
6344
6345 </p>
6346 <a name="QUIT"></a><br /><hr />
6347 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6348 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6349 Close client connection</h3>
6350
6351 <p>The client can close its network connection to LinuxSampler by sending the following command:
6352 </p>
6353 <p>
6354 </p>
6355 <blockquote class="text">
6356 <p>QUIT
6357 </p>
6358 </blockquote><p>
6359
6360 </p>
6361 <p>This is probably more interesting for manual telnet connections to
6362 LinuxSampler than really useful for a front-end implementation.
6363 </p>
6364 <a name="anchor13"></a><br /><hr />
6365 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6366 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6367 Global commands</h3>
6368
6369 <p>The following commands have global impact on the sampler.
6370 </p>
6371 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6372 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6373 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6374 Current number of active voices</h3>
6375
6376 <p>The front-end can ask for the current number of active voices on
6377 the sampler by sending the following command:
6378 </p>
6379 <p>
6380 </p>
6381 <blockquote class="text">
6382 <p>GET TOTAL_VOICE_COUNT
6383 </p>
6384 </blockquote><p>
6385
6386 </p>
6387 <p>Possible Answers:
6388 </p>
6389 <p>
6390 </p>
6391 <blockquote class="text">
6392 <p>LinuxSampler will answer by returning the number of all active
6393 voices on the sampler.
6394 </p>
6395 </blockquote><p>
6396
6397 </p>
6398 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6399 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6400 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6401 Maximum amount of active voices</h3>
6402
6403 <p>The front-end can ask for the maximum number of active voices
6404 by sending the following command:
6405 </p>
6406 <p>
6407 </p>
6408 <blockquote class="text">
6409 <p>GET TOTAL_VOICE_COUNT_MAX
6410 </p>
6411 </blockquote><p>
6412
6413 </p>
6414 <p>Possible Answers:
6415 </p>
6416 <p>
6417 </p>
6418 <blockquote class="text">
6419 <p>LinuxSampler will answer by returning the maximum number
6420 of active voices.
6421 </p>
6422 </blockquote><p>
6423
6424 </p>
6425 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6426 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6427 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6428 Current number of active disk streams</h3>
6429
6430 <p>The front-end can ask for the current number of active disk streams on
6431 the sampler by sending the following command:
6432 </p>
6433 <p>
6434 </p>
6435 <blockquote class="text">
6436 <p>GET TOTAL_STREAM_COUNT
6437 </p>
6438 </blockquote><p>
6439
6440 </p>
6441 <p>Possible Answers:
6442 </p>
6443 <p>
6444 </p>
6445 <blockquote class="text">
6446 <p>LinuxSampler will answer by returning the number of all active
6447 disk streams on the sampler.
6448 </p>
6449 </blockquote><p>
6450
6451 </p>
6452 <a name="RESET"></a><br /><hr />
6453 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6454 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6455 Reset sampler</h3>
6456
6457 <p>The front-end can reset the whole sampler by sending the following command:
6458 </p>
6459 <p>
6460 </p>
6461 <blockquote class="text">
6462 <p>RESET
6463 </p>
6464 </blockquote><p>
6465
6466 </p>
6467 <p>Possible Answers:
6468 </p>
6469 <p>
6470 </p>
6471 <blockquote class="text">
6472 <p>"OK" -
6473 </p>
6474 <blockquote class="text">
6475 <p>always
6476 </p>
6477 </blockquote>
6478
6479
6480 </blockquote><p>
6481
6482 </p>
6483 <p>Examples:
6484 </p>
6485 <p>
6486 </p>
6487 <blockquote class="text">
6488 <p>
6489 </p>
6490 </blockquote><p>
6491
6492 </p>
6493 <a name="GET SERVER INFO"></a><br /><hr />
6494 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6495 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6496 General sampler informations</h3>
6497
6498 <p>The client can ask for general informations about the LinuxSampler
6499 instance by sending the following command:
6500 </p>
6501 <p>
6502 </p>
6503 <blockquote class="text">
6504 <p>GET SERVER INFO
6505 </p>
6506 </blockquote><p>
6507
6508 </p>
6509 <p>Possible Answers:
6510 </p>
6511 <p>
6512 </p>
6513 <blockquote class="text">
6514 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6515 Each answer line begins with the information category name
6516 followed by a colon and then a space character &lt;SP&gt; and finally
6517 the info character string to that information category. At the
6518 moment the following categories are defined:
6519
6520 </p>
6521 <p>
6522 </p>
6523 <blockquote class="text">
6524 <p>DESCRIPTION -
6525 </p>
6526 <blockquote class="text">
6527 <p>arbitrary textual description about the sampler
6528 (note that the character string may contain
6529 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6530 </p>
6531 </blockquote>
6532
6533
6534 <p>VERSION -
6535 </p>
6536 <blockquote class="text">
6537 <p>version of the sampler
6538 </p>
6539 </blockquote>
6540
6541
6542 <p>PROTOCOL_VERSION -
6543 </p>
6544 <blockquote class="text">
6545 <p>version of the LSCP specification the sampler
6546 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)
6547 </p>
6548 </blockquote>
6549
6550
6551 <p>INSTRUMENTS_DB_SUPPORT -
6552 </p>
6553 <blockquote class="text">
6554 <p>either yes or no, specifies whether the
6555 sampler is build with instruments database support.
6556 </p>
6557 </blockquote>
6558
6559
6560 </blockquote>
6561
6562
6563 </blockquote><p>
6564
6565 </p>
6566 <p>The mentioned fields above don't have to be in particular order.
6567 Other fields might be added in future.
6568 </p>
6569 <a name="GET VOLUME"></a><br /><hr />
6570 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6571 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6572 Getting global volume attenuation</h3>
6573
6574 <p>The client can ask for the current global sampler-wide volume
6575 attenuation by sending the following command:
6576 </p>
6577 <p>
6578 </p>
6579 <blockquote class="text">
6580 <p>GET VOLUME
6581 </p>
6582 </blockquote><p>
6583
6584 </p>
6585 <p>Possible Answers:
6586 </p>
6587 <p>
6588 </p>
6589 <blockquote class="text">
6590 <p>The sampler will always answer by returning the optional
6591 dotted floating point coefficient, reflecting the current
6592 global volume attenuation.
6593
6594 </p>
6595 </blockquote><p>
6596
6597 </p>
6598 <p>Note: it is up to the respective sampler engine whether to obey
6599 that global volume parameter or not, but in general all engines SHOULD
6600 use this parameter.
6601 </p>
6602 <a name="SET VOLUME"></a><br /><hr />
6603 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6604 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6605 Setting global volume attenuation</h3>
6606
6607 <p>The client can alter the current global sampler-wide volume
6608 attenuation by sending the following command:
6609 </p>
6610 <p>
6611 </p>
6612 <blockquote class="text">
6613 <p>SET VOLUME &lt;volume&gt;
6614 </p>
6615 </blockquote><p>
6616
6617 </p>
6618 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6619 floating point value, reflecting the new global volume parameter.
6620 This value might usually be in the range between 0.0 and 1.0, that
6621 is for attenuating the overall volume.
6622 </p>
6623 <p>Possible Answers:
6624 </p>
6625 <p>
6626 </p>
6627 <blockquote class="text">
6628 <p>"OK" -
6629 </p>
6630 <blockquote class="text">
6631 <p>on success
6632 </p>
6633 </blockquote>
6634
6635
6636 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6637 </p>
6638 <blockquote class="text">
6639 <p>if the global volume was set, but there are noteworthy
6640 issue(s) related, providing an appropriate warning code and
6641 warning message
6642 </p>
6643 </blockquote>
6644
6645
6646 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6647 </p>
6648 <blockquote class="text">
6649 <p>in case it failed, providing an appropriate error code and error message
6650 </p>
6651 </blockquote>
6652
6653
6654 </blockquote><p>
6655
6656 </p>
6657 <a name="GET VOICES"></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.6.8"></a><h3>6.6.8.&nbsp;
6660 Getting global voice limit</h3>
6661
6662 <p>The client can ask for the current global sampler-wide limit
6663 for maximum voices by sending the following command:
6664 </p>
6665 <p>
6666 </p>
6667 <blockquote class="text">
6668 <p>GET VOICES
6669 </p>
6670 </blockquote><p>
6671
6672 </p>
6673 <p>Possible Answers:
6674 </p>
6675 <p>
6676 </p>
6677 <blockquote class="text">
6678 <p>LinuxSampler will answer by returning the number for
6679 the current limit of maximum voices.
6680 </p>
6681 </blockquote><p>
6682
6683 </p>
6684 <p>The voice limit setting defines how many voices should maximum
6685 be processed by the sampler at the same time. If the user
6686 triggers new notes which would exceed that voice limit, the
6687 sampler engine will react by stealing old voices for those
6688 newly triggered notes. Note that the amount of voices triggered
6689 by a new note can be larger than one and is dependent to the
6690 respective instrument and probably further criterias.
6691 </p>
6692 <a name="SET VOICES"></a><br /><hr />
6693 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6694 <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
6695 Setting global voice limit</h3>
6696
6697 <p>The client can alter the current global sampler-wide limit
6698 for maximum voices by sending the following command:
6699 </p>
6700 <p>
6701 </p>
6702 <blockquote class="text">
6703 <p>SET VOICES &lt;max-voices&gt;
6704 </p>
6705 </blockquote><p>
6706
6707 </p>
6708 <p>Where &lt;max-voices&gt; should be replaced by the integer
6709 value, reflecting the new global amount limit of maximum voices.
6710 This value has to be larger than 0.
6711 </p>
6712 <p>Possible Answers:
6713 </p>
6714 <p>
6715 </p>
6716 <blockquote class="text">
6717 <p>"OK" -
6718 </p>
6719 <blockquote class="text">
6720 <p>on success
6721 </p>
6722 </blockquote>
6723
6724
6725 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6726 </p>
6727 <blockquote class="text">
6728 <p>if the voice limit was set, but there are noteworthy
6729 issue(s) related, providing an appropriate warning code and
6730 warning message
6731 </p>
6732 </blockquote>
6733
6734
6735 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6736 </p>
6737 <blockquote class="text">
6738 <p>in case it failed, providing an appropriate error code and error message
6739 </p>
6740 </blockquote>
6741
6742
6743 </blockquote><p>
6744
6745 </p>
6746 <p>Note: the given value will be passed to all sampler engine instances.
6747 The total amount of maximum voices on the running system might thus
6748 be as big as the given value multiplied by the current amount of engine
6749 instances.
6750 </p>
6751 <p>Caution: when adjusting the voice limit, you SHOULD also
6752 adjust the disk stream limit respectively and vice versa.
6753 </p>
6754 <a name="GET STREAMS"></a><br /><hr />
6755 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6756 <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
6757 Getting global disk stream limit</h3>
6758
6759 <p>The client can ask for the current global sampler-wide limit
6760 for maximum disk streams by sending the following command:
6761 </p>
6762 <p>
6763 </p>
6764 <blockquote class="text">
6765 <p>GET STREAMS
6766 </p>
6767 </blockquote><p>
6768
6769 </p>
6770 <p>Possible Answers:
6771 </p>
6772 <p>
6773 </p>
6774 <blockquote class="text">
6775 <p>LinuxSampler will answer by returning the number for
6776 the current limit of maximum disk streams.
6777 </p>
6778 </blockquote><p>
6779
6780 </p>
6781 <p>The disk stream limit setting defines how many disk streams should
6782 maximum be processed by a sampler engine at the same time. The
6783 higher this value, the more memory (RAM) will be occupied, since
6784 every disk streams allocates a certain buffer size for being able
6785 to perform its streaming operations.
6786 </p>
6787 <a name="SET STREAMS"></a><br /><hr />
6788 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6789 <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
6790 Setting global disk stream limit</h3>
6791
6792 <p>The client can alter the current global sampler-wide limit
6793 for maximum disk streams by sending the following command:
6794 </p>
6795 <p>
6796 </p>
6797 <blockquote class="text">
6798 <p>SET STREAMS &lt;max-streams&gt;
6799 </p>
6800 </blockquote><p>
6801
6802 </p>
6803 <p>Where &lt;max-streams&gt; should be replaced by the integer
6804 value, reflecting the new global amount limit of maximum disk streams.
6805 This value has to be positive.
6806 </p>
6807 <p>Possible Answers:
6808 </p>
6809 <p>
6810 </p>
6811 <blockquote class="text">
6812 <p>"OK" -
6813 </p>
6814 <blockquote class="text">
6815 <p>on success
6816 </p>
6817 </blockquote>
6818
6819
6820 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6821 </p>
6822 <blockquote class="text">
6823 <p>if the disk stream limit was set, but there are noteworthy
6824 issue(s) related, providing an appropriate warning code and
6825 warning message
6826 </p>
6827 </blockquote>
6828
6829
6830 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6831 </p>
6832 <blockquote class="text">
6833 <p>in case it failed, providing an appropriate error code and error message
6834 </p>
6835 </blockquote>
6836
6837
6838 </blockquote><p>
6839
6840 </p>
6841 <p>Note: the given value will be passed to all sampler engine instances.
6842 The total amount of maximum disk streams on the running system might
6843 thus be as big as the given value multiplied by the current amount of
6844 engine instances.
6845 </p>
6846 <p>Caution: when adjusting the disk stream limit, you SHOULD also
6847 adjust the voice limit respectively and vice versa.
6848 </p>
6849 <a name="MIDI Instrument Mapping"></a><br /><hr />
6850 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6851 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6852 MIDI Instrument Mapping</h3>
6853
6854 <p>The MIDI protocol provides a way to switch between instruments
6855 by sending so called MIDI bank select and MIDI program change
6856 messages which are essentially just numbers. The following commands
6857 allow to actually map arbitrary MIDI bank select / program change
6858 numbers with real instruments.
6859 </p>
6860 <p>The sampler allows to manage an arbitrary amount of MIDI
6861 instrument maps which define which instrument to load on
6862 which MIDI program change message.
6863 </p>
6864 <p>By default, that is when the sampler is launched, there is no
6865 map, thus the sampler will simply ignore all program change
6866 messages. The front-end has to explicitly create at least one
6867 map, add entries to the map and tell the respective sampler
6868 channel(s) which MIDI instrument map to use, so the sampler
6869 knows how to react on a given program change message on the
6870 respective sampler channel, that is by switching to the
6871 respectively defined engine type and loading the respective
6872 instrument. See command
6873 <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>
6874 for how to assign a MIDI instrument map to a sampler channel.
6875 </p>
6876 <p>Also note per MIDI specification a bank select message does not
6877 cause to switch to another instrument. Instead when receiving a
6878 bank select message the bank value will be stored and a subsequent
6879 program change message (which may occur at any time) will finally
6880 cause the sampler to switch to the respective instrument as
6881 reflected by the current MIDI instrument map.
6882 </p>
6883 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6884 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6885 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6886 Create a new MIDI instrument map</h3>
6887
6888 <p>The front-end can add a new MIDI instrument map by sending
6889 the following command:
6890 </p>
6891 <p>
6892 </p>
6893 <blockquote class="text">
6894 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6895 </p>
6896 </blockquote><p>
6897
6898 </p>
6899 <p>Where &lt;name&gt; is an optional argument allowing to
6900 assign a custom name to the new map. MIDI instrument Map
6901 names do not have to be unique, but MUST be encapsulated
6902 into apostrophes and support escape sequences as described
6903 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>".
6904
6905 </p>
6906 <p>Possible Answers:
6907 </p>
6908 <p>
6909 </p>
6910 <blockquote class="text">
6911 <p>"OK[&lt;map&gt;]" -
6912 </p>
6913 <blockquote class="text">
6914 <p>in case a new MIDI instrument map could
6915 be added, where &lt;map&gt; reflects the
6916 unique ID of the newly created MIDI
6917 instrument map
6918 </p>
6919 </blockquote>
6920
6921
6922 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6923 </p>
6924 <blockquote class="text">
6925 <p>when a new map could not be created, which
6926 might never occur in practice
6927 </p>
6928 </blockquote>
6929
6930
6931 </blockquote><p>
6932
6933 </p>
6934 <p>Examples:
6935 </p>
6936 <p>
6937 </p>
6938 <blockquote class="text">
6939 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6940 </p>
6941 <p>S: "OK[0]"
6942 </p>
6943 </blockquote><p>
6944
6945 </p>
6946 <p>
6947 </p>
6948 <blockquote class="text">
6949 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6950 </p>
6951 <p>S: "OK[1]"
6952 </p>
6953 </blockquote><p>
6954
6955 </p>
6956 <p>
6957 </p>
6958 <blockquote class="text">
6959 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6960 </p>
6961 <p>S: "OK[5]"
6962 </p>
6963 </blockquote><p>
6964
6965 </p>
6966 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6967 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6968 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6969 Delete one particular or all MIDI instrument maps</h3>
6970
6971 <p>The front-end can delete a particular MIDI instrument map
6972 by sending the following command:
6973 </p>
6974 <p>
6975 </p>
6976 <blockquote class="text">
6977 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6978 </p>
6979 </blockquote><p>
6980
6981 </p>
6982 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6983 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>
6984 command.
6985 </p>
6986 <p>The front-end can delete all MIDI instrument maps by
6987 sending the following command:
6988 </p>
6989 <p>
6990 </p>
6991 <blockquote class="text">
6992 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6993 </p>
6994 </blockquote><p>
6995
6996 </p>
6997 <p>Possible Answers:
6998 </p>
6999 <p>
7000 </p>
7001 <blockquote class="text">
7002 <p>"OK" -
7003 </p>
7004 <blockquote class="text">
7005 <p>in case the map(s) could be deleted
7006 </p>
7007 </blockquote>
7008
7009
7010 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7011 </p>
7012 <blockquote class="text">
7013 <p>when the given map does not exist
7014 </p>
7015 </blockquote>
7016
7017
7018 </blockquote><p>
7019
7020 </p>
7021 <p>Examples:
7022 </p>
7023 <p>
7024 </p>
7025 <blockquote class="text">
7026 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7027 </p>
7028 <p>S: "OK"
7029 </p>
7030 </blockquote><p>
7031
7032 </p>
7033 <p>
7034 </p>
7035 <blockquote class="text">
7036 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7037 </p>
7038 <p>S: "OK"
7039 </p>
7040 </blockquote><p>
7041
7042 </p>
7043 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7044 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7045 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7046 Get amount of existing MIDI instrument maps</h3>
7047
7048 <p>The front-end can retrieve the current amount of MIDI
7049 instrument maps by sending the following command:
7050 </p>
7051 <p>
7052 </p>
7053 <blockquote class="text">
7054 <p>GET MIDI_INSTRUMENT_MAPS
7055 </p>
7056 </blockquote><p>
7057
7058 </p>
7059 <p>Possible Answers:
7060 </p>
7061 <p>
7062 </p>
7063 <blockquote class="text">
7064 <p>The sampler will answer by returning the current
7065 number of MIDI instrument maps.
7066 </p>
7067 </blockquote><p>
7068
7069 </p>
7070 <p>Example:
7071 </p>
7072 <p>
7073 </p>
7074 <blockquote class="text">
7075 <p>C: "GET MIDI_INSTRUMENT_MAPS"
7076 </p>
7077 <p>S: "2"
7078 </p>
7079 </blockquote><p>
7080
7081 </p>
7082 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7083 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7084 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7085 Getting all created MIDI instrument maps</h3>
7086
7087 <p>The number of MIDI instrument maps can change on runtime. To get the
7088 current list of MIDI instrument maps, the front-end can send the
7089 following command:
7090 </p>
7091 <p>
7092 </p>
7093 <blockquote class="text">
7094 <p>LIST MIDI_INSTRUMENT_MAPS
7095 </p>
7096 </blockquote><p>
7097
7098 </p>
7099 <p>Possible Answers:
7100 </p>
7101 <p>
7102 </p>
7103 <blockquote class="text">
7104 <p>The sampler will answer by returning a comma separated list
7105 with all MIDI instrument maps' numerical IDs.
7106 </p>
7107 </blockquote><p>
7108
7109 </p>
7110 <p>Example:
7111 </p>
7112 <p>
7113 </p>
7114 <blockquote class="text">
7115 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7116 </p>
7117 <p>S: "0,1,5,12"
7118 </p>
7119 </blockquote><p>
7120
7121 </p>
7122 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7123 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7124 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7125 Getting MIDI instrument map information</h3>
7126
7127 <p>The front-end can ask for the current settings of a MIDI
7128 instrument map by sending the following command:
7129 </p>
7130 <p>
7131 </p>
7132 <blockquote class="text">
7133 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7134 </p>
7135 </blockquote><p>
7136
7137 </p>
7138 <p>Where &lt;map&gt; is the numerical ID of the map the
7139 front-end is interested in as returned by the
7140 <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>
7141 command.
7142 </p>
7143 <p>Possible Answers:
7144 </p>
7145 <p>
7146 </p>
7147 <blockquote class="text">
7148 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7149 Each answer line begins with the settings category name
7150 followed by a colon and then a space character &lt;SP&gt; and finally
7151 the info character string to that setting category. At the
7152 moment the following categories are defined:
7153 </p>
7154 <p>
7155 </p>
7156 <blockquote class="text">
7157 <p>NAME -
7158 </p>
7159 <blockquote class="text">
7160 <p>custom name of the given map,
7161 which does not have to be unique
7162 (note that this character string may contain
7163 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7164 </p>
7165 </blockquote>
7166
7167
7168 <p>DEFAULT -
7169 </p>
7170 <blockquote class="text">
7171 <p>either true or false,
7172 defines whether this map is the default map
7173 </p>
7174 </blockquote>
7175
7176
7177 </blockquote>
7178
7179
7180 </blockquote><p>
7181
7182 </p>
7183 <p>The mentioned fields above don't have to be in particular order.
7184 </p>
7185 <p>Example:
7186 </p>
7187 <p>
7188 </p>
7189 <blockquote class="text">
7190 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7191 </p>
7192 <p>S: "NAME: Standard Map"
7193 </p>
7194 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7195 </p>
7196 <p>&nbsp;&nbsp;&nbsp;"."
7197 </p>
7198 </blockquote><p>
7199
7200 </p>
7201 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7202 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7203 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7204 Renaming a MIDI instrument map</h3>
7205
7206 <p>The front-end can alter the custom name of a MIDI
7207 instrument map by sending the following command:
7208 </p>
7209 <p>
7210 </p>
7211 <blockquote class="text">
7212 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7213 </p>
7214 </blockquote><p>
7215
7216 </p>
7217 <p>Where &lt;map&gt; is the numerical ID of the map and
7218 &lt;name&gt; the new custom name of the map, which does not
7219 have to be unique (name MUST be encapsulated into apostrophes
7220 and supports escape sequences as described in chapter
7221 "<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>").
7222
7223 </p>
7224 <p>Possible Answers:
7225 </p>
7226 <p>
7227 </p>
7228 <blockquote class="text">
7229 <p>"OK" -
7230 </p>
7231 <blockquote class="text">
7232 <p>on success
7233 </p>
7234 </blockquote>
7235
7236
7237 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7238 </p>
7239 <blockquote class="text">
7240 <p>in case the given map does not exist
7241 </p>
7242 </blockquote>
7243
7244
7245 </blockquote><p>
7246
7247 </p>
7248 <p>Example:
7249 </p>
7250 <p>
7251 </p>
7252 <blockquote class="text">
7253 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7254 </p>
7255 <p>S: "OK"
7256 </p>
7257 </blockquote><p>
7258
7259 </p>
7260 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7261 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7262 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7263 Create or replace a MIDI instrument map entry</h3>
7264
7265 <p>The front-end can create a new or replace an existing entry
7266 in a sampler's MIDI instrument map by sending the following
7267 command:
7268 </p>
7269 <p>
7270 </p>
7271 <blockquote class="text">
7272 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7273 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7274 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7275 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7276 </p>
7277 </blockquote><p>
7278
7279 </p>
7280 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7281 &lt;midi_bank&gt; is an integer value between
7282 0..16383 reflecting the MIDI bank select index,
7283 &lt;midi_prog&gt; an
7284 integer value between 0..127 reflecting the MIDI program change
7285 index, &lt;engine_name&gt; a sampler engine name as returned by
7286 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
7287 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7288 of the instrument's file to be deployed (encapsulated into apostrophes,
7289 supporting escape sequences as described in chapter
7290 "<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>"),
7291 &lt;instrument_index&gt; the index (integer value) of the instrument
7292 within the given file, &lt;volume_value&gt; reflects the master
7293 volume of the instrument as optionally dotted number (where a
7294 value &lt; 1.0 means attenuation and a value > 1.0 means
7295 amplification). This parameter easily allows to adjust the
7296 volume of all intruments within a custom instrument map
7297 without having to adjust their instrument files. The
7298 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7299 time of the instrument, that is when the instrument should
7300 be loaded, when freed and has exactly the following
7301 possibilities:
7302 </p>
7303 <p>
7304 </p>
7305 <blockquote class="text">
7306 <p>"ON_DEMAND" -
7307 </p>
7308 <blockquote class="text">
7309 <p>The instrument will be loaded when needed,
7310 that is when demanded by at least one sampler
7311 channel. It will immediately be freed from memory
7312 when not needed by any sampler channel anymore.
7313 </p>
7314 </blockquote>
7315
7316
7317 <p>"ON_DEMAND_HOLD" -
7318 </p>
7319 <blockquote class="text">
7320 <p>The instrument will be loaded when needed,
7321 that is when demanded by at least one sampler
7322 channel. It will be kept in memory even when
7323 not needed by any sampler channel anymore.
7324 Instruments with this mode are only freed
7325 when the sampler is reset or all mapping
7326 entries with this mode (and respective
7327 instrument) are explicitly changed to
7328 "ON_DEMAND" and no sampler channel is using
7329 the instrument anymore.
7330 </p>
7331 </blockquote>
7332
7333
7334 <p>"PERSISTENT" -
7335 </p>
7336 <blockquote class="text">
7337 <p>The instrument will immediately be loaded
7338 into memory when this mapping
7339 command is sent and the instrument is kept all
7340 the time. Instruments with this mode are
7341 only freed when the sampler is reset or all
7342 mapping entries with this mode (and
7343 respective instrument) are explicitly
7344 changed to "ON_DEMAND" and no sampler
7345 channel is using the instrument anymore.
7346 </p>
7347 </blockquote>
7348
7349
7350 <p>not supplied -
7351 </p>
7352 <blockquote class="text">
7353 <p>In case there is no &lt;instr_load_mode&gt;
7354 argument given, it will be up to the
7355 InstrumentManager to decide which mode to use.
7356 Usually it will use "ON_DEMAND" if an entry
7357 for the given instrument does not exist in
7358 the InstrumentManager's list yet, otherwise
7359 if an entry already exists, it will simply
7360 stick with the mode currently reflected by
7361 the already existing entry, that is it will
7362 not change the mode.
7363 </p>
7364 </blockquote>
7365
7366
7367 </blockquote><p>
7368
7369 </p>
7370 <p>
7371 The &lt;instr_load_mode&gt; argument thus allows to define an
7372 appropriate strategy (low memory consumption vs. fast
7373 instrument switching) for each instrument individually. Note, the
7374 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7375 "PERSISTENT" have to be supported by the respective sampler engine
7376 (which is technically the case when the engine provides an
7377 InstrumentManager for its format). If this is not the case the
7378 argument will automatically fall back to the default value
7379 "ON_DEMAND". Also the load mode of one instrument may
7380 automatically change the laod mode of other instrument(s), i.e.
7381 because the instruments are part of the same file and the
7382 engine does not allow a way to manage load modes for them
7383 individually. Due to this, in case the frontend shows the
7384 load modes of entries, the frontend should retrieve the actual
7385 mode by i.e. sending
7386 <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>
7387 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7388 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7389 "<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
7390 mapping entry, useful for frontends for displaying an appropriate name for
7391 mapped instruments (using
7392 <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>).
7393
7394 </p>
7395 <p>
7396 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7397 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7398 however causes the respective "MAP MIDI_INSTRUMENT" command to return
7399 immediately, that is to let the sampler establish the mapping in the
7400 background. So this argument might be especially useful for mappings with
7401 a "PERSISTENT" type, because these have to load the respective instruments
7402 immediately and might thus block for a very long time. It is recommended
7403 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7404 because it has the following drawbacks: as "NON_MODAL" instructions return
7405 immediately, they may not necessarily return an error i.e. when the given
7406 instrument file turns out to be corrupt, beside that subsequent commands
7407 in a LSCP instruction sequence might fail, because mandatory mappings are
7408 not yet completed.
7409
7410 </p>
7411 <p>Possible Answers:
7412 </p>
7413 <p>
7414 </p>
7415 <blockquote class="text">
7416 <p>"OK" -
7417 </p>
7418 <blockquote class="text">
7419 <p>usually
7420 </p>
7421 </blockquote>
7422
7423
7424 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7425 </p>
7426 <blockquote class="text">
7427 <p>when the given map or engine does not exist or a value
7428 is out of range
7429 </p>
7430 </blockquote>
7431
7432
7433 </blockquote><p>
7434
7435 </p>
7436 <p>Examples:
7437 </p>
7438 <p>
7439 </p>
7440 <blockquote class="text">
7441 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7442 </p>
7443 <p>S: "OK"
7444 </p>
7445 </blockquote><p>
7446
7447 </p>
7448 <p>
7449 </p>
7450 <blockquote class="text">
7451 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7452 </p>
7453 <p>S: "OK"
7454 </p>
7455 </blockquote><p>
7456
7457 </p>
7458 <p>
7459 </p>
7460 <blockquote class="text">
7461 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7462 </p>
7463 <p>S: "OK"
7464 </p>
7465 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7466 </p>
7467 <p>S: "OK"
7468 </p>
7469 </blockquote><p>
7470
7471 </p>
7472 <p>
7473 </p>
7474 <blockquote class="text">
7475 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7476 </p>
7477 <p>S: "OK"
7478 </p>
7479 </blockquote><p>
7480
7481 </p>
7482 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7483 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7484 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7485 Getting ammount of MIDI instrument map entries</h3>
7486
7487 <p>The front-end can query the amount of currently existing
7488 entries in a MIDI instrument map by sending the following
7489 command:
7490 </p>
7491 <p>
7492 </p>
7493 <blockquote class="text">
7494 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7495 </p>
7496 </blockquote><p>
7497
7498 </p>
7499 <p>The front-end can query the amount of currently existing
7500 entries in all MIDI instrument maps by sending the following
7501 command:
7502 </p>
7503 <p>
7504 </p>
7505 <blockquote class="text">
7506 <p>GET MIDI_INSTRUMENTS ALL
7507 </p>
7508 </blockquote><p>
7509
7510 </p>
7511 <p>Possible Answers:
7512 </p>
7513 <p>
7514 </p>
7515 <blockquote class="text">
7516 <p>The sampler will answer by sending the current number of
7517 entries in the MIDI instrument map(s).
7518 </p>
7519 </blockquote><p>
7520
7521 </p>
7522 <p>Example:
7523 </p>
7524 <p>
7525 </p>
7526 <blockquote class="text">
7527 <p>C: "GET MIDI_INSTRUMENTS 0"
7528 </p>
7529 <p>S: "234"
7530 </p>
7531 </blockquote><p>
7532
7533 </p>
7534 <p>
7535 </p>
7536 <blockquote class="text">
7537 <p>C: "GET MIDI_INSTRUMENTS ALL"
7538 </p>
7539 <p>S: "954"
7540 </p>
7541 </blockquote><p>
7542
7543 </p>
7544 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7545 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7546 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7547 Getting indeces of all entries of a MIDI instrument map</h3>
7548
7549 <p>The front-end can query a list of all currently existing
7550 entries in a certain MIDI instrument map by sending the following
7551 command:
7552 </p>
7553 <p>
7554 </p>
7555 <blockquote class="text">
7556 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7557 </p>
7558 </blockquote><p>
7559
7560 </p>
7561 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7562 </p>
7563 <p>The front-end can query a list of all currently existing
7564 entries of all MIDI instrument maps by sending the following
7565 command:
7566 </p>
7567 <p>
7568 </p>
7569 <blockquote class="text">
7570 <p>LIST MIDI_INSTRUMENTS ALL
7571 </p>
7572 </blockquote><p>
7573
7574 </p>
7575 <p>Possible Answers:
7576 </p>
7577 <p>
7578 </p>
7579 <blockquote class="text">
7580 <p>The sampler will answer by sending a comma separated
7581 list of map ID - MIDI bank - MIDI program triples, where
7582 each triple is encapsulated into curly braces. The
7583 list is returned in one single line. Each triple
7584 just reflects the key of the respective map entry,
7585 thus subsequent
7586 <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>
7587 command(s) are necessary to retrieve detailed informations
7588 about each entry.
7589 </p>
7590 </blockquote><p>
7591
7592 </p>
7593 <p>Example:
7594 </p>
7595 <p>
7596 </p>
7597 <blockquote class="text">
7598 <p>C: "LIST MIDI_INSTRUMENTS 0"
7599 </p>
7600 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7601 </p>
7602 </blockquote><p>
7603
7604 </p>
7605 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7606 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7607 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7608 Remove an entry from the MIDI instrument map</h3>
7609
7610 <p>The front-end can delete an entry from a MIDI instrument
7611 map by sending the following command:
7612 </p>
7613 <p>
7614 </p>
7615 <blockquote class="text">
7616 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7617 </p>
7618 </blockquote><p>
7619
7620 </p>
7621 <p>
7622 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7623 &lt;midi_bank&gt; is an integer value between 0..16383
7624 reflecting the MIDI bank value and
7625 &lt;midi_prog&gt; an integer value between
7626 0..127 reflecting the MIDI program value of the map's entrie's key
7627 index triple.
7628
7629 </p>
7630 <p>Possible Answers:
7631 </p>
7632 <p>
7633 </p>
7634 <blockquote class="text">
7635 <p>"OK" -
7636 </p>
7637 <blockquote class="text">
7638 <p>usually
7639 </p>
7640 </blockquote>
7641
7642
7643 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7644 </p>
7645 <blockquote class="text">
7646 <p>when index out of bounds
7647 </p>
7648 </blockquote>
7649
7650
7651 </blockquote><p>
7652
7653 </p>
7654 <p>Example:
7655 </p>
7656 <p>
7657 </p>
7658 <blockquote class="text">
7659 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7660 </p>
7661 <p>S: "OK"
7662 </p>
7663 </blockquote><p>
7664
7665 </p>
7666 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7667 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7668 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7669 Get current settings of MIDI instrument map entry</h3>
7670
7671 <p>The front-end can retrieve the current settings of a certain
7672 instrument map entry by sending the following command:
7673 </p>
7674 <p>
7675 </p>
7676 <blockquote class="text">
7677 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7678 </p>
7679 </blockquote><p>
7680
7681 </p>
7682 <p>
7683 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7684 &lt;midi_bank&gt; is an integer value between 0..16383
7685 reflecting the MIDI bank value, &lt;midi_bank&gt;
7686 and &lt;midi_prog&gt; an integer value between
7687 0..127 reflecting the MIDI program value of the map's entrie's key
7688 index triple.
7689
7690 </p>
7691 <p>Possible Answers:
7692 </p>
7693 <p>
7694 </p>
7695 <blockquote class="text">
7696 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7697 separated list. Each answer line begins with the
7698 information category name followed by a colon and then
7699 a space character &lt;SP&gt; and finally the info
7700 character string to that info category. At the moment
7701 the following categories are defined:
7702 </p>
7703 <p>"NAME" -
7704 </p>
7705 <blockquote class="text">
7706 <p>Name for this MIDI instrument map entry (if defined).
7707 This name shall be used by frontends for displaying a
7708 name for this mapped instrument. It can be set and
7709 changed with the
7710 <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>
7711 command and does not have to be unique.
7712 (note that this character string may contain
7713 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7714 </p>
7715 </blockquote>
7716
7717
7718 <p>"ENGINE_NAME" -
7719 </p>
7720 <blockquote class="text">
7721 <p>Name of the engine to be deployed for this
7722 instrument.
7723 </p>
7724 </blockquote>
7725
7726
7727 <p>"INSTRUMENT_FILE" -
7728 </p>
7729 <blockquote class="text">
7730 <p>File name of the instrument
7731 (note that this path may contain
7732 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7733 </p>
7734 </blockquote>
7735
7736
7737 <p>"INSTRUMENT_NR" -
7738 </p>
7739 <blockquote class="text">
7740 <p>Index of the instrument within the file.
7741 </p>
7742 </blockquote>
7743
7744
7745 <p>"INSTRUMENT_NAME" -
7746 </p>
7747 <blockquote class="text">
7748 <p>Name of the loaded instrument as reflected by its file.
7749 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7750 cannot be changed (note that this character string may contain
7751 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7752 </p>
7753 </blockquote>
7754
7755
7756 <p>"LOAD_MODE" -
7757 </p>
7758 <blockquote class="text">
7759 <p>Life time of instrument
7760 (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).
7761 </p>
7762 </blockquote>
7763
7764
7765 <p>"VOLUME" -
7766 </p>
7767 <blockquote class="text">
7768 <p>master volume of the instrument as optionally
7769 dotted number (where a value &lt; 1.0 means attenuation
7770 and a value > 1.0 means amplification)
7771 </p>
7772 </blockquote>
7773
7774
7775 <p>The mentioned fields above don't have to be in particular order.
7776 </p>
7777 </blockquote><p>
7778
7779 </p>
7780 <p>Example:
7781 </p>
7782 <p>
7783 </p>
7784 <blockquote class="text">
7785 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7786 </p>
7787 <p>S: "NAME: Drums for Foo Song"
7788 </p>
7789 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7790 </p>
7791 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7792 </p>
7793 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7794 </p>
7795 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7796 </p>
7797 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7798 </p>
7799 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7800 </p>
7801 <p>&nbsp;&nbsp;&nbsp;"."
7802 </p>
7803 </blockquote><p>
7804
7805 </p>
7806 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7807 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7808 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7809 Clear MIDI instrument map</h3>
7810
7811 <p>The front-end can clear a whole MIDI instrument map, that
7812 is delete all its entries by sending the following command:
7813 </p>
7814 <p>
7815 </p>
7816 <blockquote class="text">
7817 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7818 </p>
7819 </blockquote><p>
7820
7821 </p>
7822 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7823 </p>
7824 <p>The front-end can clear all MIDI instrument maps, that
7825 is delete all entries of all maps by sending the following
7826 command:
7827 </p>
7828 <p>
7829 </p>
7830 <blockquote class="text">
7831 <p>CLEAR MIDI_INSTRUMENTS ALL
7832 </p>
7833 </blockquote><p>
7834
7835 </p>
7836 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7837 maps, only their entries, thus the map's settings like
7838 custom name will be preservevd.
7839 </p>
7840 <p>Possible Answers:
7841 </p>
7842 <p>
7843 </p>
7844 <blockquote class="text">
7845 <p>"OK" -
7846 </p>
7847 <blockquote class="text">
7848 <p>always
7849 </p>
7850 </blockquote>
7851
7852
7853 </blockquote><p>
7854
7855 </p>
7856 <p>Examples:
7857 </p>
7858 <p>
7859 </p>
7860 <blockquote class="text">
7861 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7862 </p>
7863 <p>S: "OK"
7864 </p>
7865 </blockquote><p>
7866
7867 </p>
7868 <p>
7869 </p>
7870 <blockquote class="text">
7871 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7872 </p>
7873 <p>S: "OK"
7874 </p>
7875 </blockquote><p>
7876
7877 </p>
7878 <a name="Managing Instruments Database"></a><br /><hr />
7879 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7880 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7881 Managing Instruments Database</h3>
7882
7883 <p>The following commands describe how to use and manage
7884 the instruments database.
7885 </p>
7886 <p>Notice:
7887 </p>
7888 <p>
7889 </p>
7890 <blockquote class="text">
7891 <p>All command arguments representing a path or
7892 instrument/directory name support escape sequences as described in chapter
7893 "<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>".
7894
7895 </p>
7896 <p>All occurrences of a forward slash in instrument and directory
7897 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7898
7899 </p>
7900 </blockquote><p>
7901
7902 </p>
7903 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7904 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7905 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7906 Creating a new instrument directory</h3>
7907
7908 <p>The front-end can add a new instrument directory to the
7909 instruments database by sending the following command:
7910 </p>
7911 <p>
7912 </p>
7913 <blockquote class="text">
7914 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7915 </p>
7916 </blockquote><p>
7917
7918 </p>
7919 <p>Where &lt;dir&gt; is the absolute path name of the directory
7920 to be created (encapsulated into apostrophes).
7921 </p>
7922 <p>Possible Answers:
7923 </p>
7924 <p>
7925 </p>
7926 <blockquote class="text">
7927 <p>"OK" -
7928 </p>
7929 <blockquote class="text">
7930 <p>on success
7931 </p>
7932 </blockquote>
7933
7934
7935 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7936 </p>
7937 <blockquote class="text">
7938 <p>when the directory could not be created, which
7939 can happen if the directory already exists or the
7940 name contains not allowed symbols
7941 </p>
7942 </blockquote>
7943
7944
7945 </blockquote><p>
7946
7947 </p>
7948 <p>Examples:
7949 </p>
7950 <p>
7951 </p>
7952 <blockquote class="text">
7953 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7954 </p>
7955 <p>S: "OK"
7956 </p>
7957 </blockquote><p>
7958
7959 </p>
7960 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7961 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7962 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7963 Deleting an instrument directory</h3>
7964
7965 <p>The front-end can delete a particular instrument directory
7966 from the instruments database by sending the following command:
7967 </p>
7968 <p>
7969 </p>
7970 <blockquote class="text">
7971 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7972 </p>
7973 </blockquote><p>
7974
7975 </p>
7976 <p>Where &lt;dir&gt; is the absolute path name of the directory
7977 to delete. The optional FORCE argument can be used to
7978 force the deletion of a non-empty directory and all its content.
7979 </p>
7980 <p>Possible Answers:
7981 </p>
7982 <p>
7983 </p>
7984 <blockquote class="text">
7985 <p>"OK" -
7986 </p>
7987 <blockquote class="text">
7988 <p>if the directory is deleted successfully
7989 </p>
7990 </blockquote>
7991
7992
7993 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7994 </p>
7995 <blockquote class="text">
7996 <p>if the given directory does not exist, or
7997 if trying to delete a non-empty directory,
7998 without using the FORCE argument.
7999 </p>
8000 </blockquote>
8001
8002
8003 </blockquote><p>
8004
8005 </p>
8006 <p>Examples:
8007 </p>
8008 <p>
8009 </p>
8010 <blockquote class="text">
8011 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8012 </p>
8013 <p>S: "OK"
8014 </p>
8015 </blockquote><p>
8016
8017 </p>
8018 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8019 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8020 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8021 Getting amount of instrument directories</h3>
8022
8023 <p>The front-end can retrieve the current amount of
8024 directories in a specific directory by sending the following command:
8025 </p>
8026 <p>
8027 </p>
8028 <blockquote class="text">
8029 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8030 </p>
8031 </blockquote><p>
8032
8033 </p>
8034 <p>Where &lt;dir&gt; should be replaced by the absolute path
8035 name of the directory. If RECURSIVE is specified, the number of
8036 all directories, including those located in subdirectories of the
8037 specified directory, will be returned.
8038 </p>
8039 <p>Possible Answers:
8040 </p>
8041 <p>
8042 </p>
8043 <blockquote class="text">
8044 <p>The current number of instrument directories
8045 in the specified directory.
8046 </p>
8047 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8048 </p>
8049 <blockquote class="text">
8050 <p>if the given directory does not exist.
8051 </p>
8052 </blockquote>
8053
8054
8055 </blockquote><p>
8056
8057 </p>
8058 <p>Example:
8059 </p>
8060 <p>
8061 </p>
8062 <blockquote class="text">
8063 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8064 </p>
8065 <p>S: "2"
8066 </p>
8067 </blockquote><p>
8068
8069 </p>
8070 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8071 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8072 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8073 Listing all directories in specific directory</h3>
8074
8075 <p>The front-end can retrieve the current list of directories
8076 in specific directory by sending the following command:
8077 </p>
8078 <p>
8079 </p>
8080 <blockquote class="text">
8081 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8082 </p>
8083 </blockquote><p>
8084
8085 </p>
8086 <p>Where &lt;dir&gt; should be replaced by the absolute path
8087 name of the directory. If RECURSIVE is specified, the absolute path names
8088 of all directories, including those located in subdirectories of the
8089 specified directory, will be returned.
8090 </p>
8091 <p>Possible Answers:
8092 </p>
8093 <p>
8094 </p>
8095 <blockquote class="text">
8096 <p>A comma separated list of all instrument directories
8097 (encapsulated into apostrophes) in the specified directory.
8098 </p>
8099 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8100 </p>
8101 <blockquote class="text">
8102 <p>if the given directory does not exist.
8103 </p>
8104 </blockquote>
8105
8106
8107 </blockquote><p>
8108
8109 </p>
8110 <p>Example:
8111 </p>
8112 <p>
8113 </p>
8114 <blockquote class="text">
8115 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8116 </p>
8117 <p>S: "'Piano Collection','Percussion Collection'"
8118 </p>
8119 </blockquote><p>
8120
8121 </p>
8122 <p>
8123 </p>
8124 <blockquote class="text">
8125 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8126 </p>
8127 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8128 </p>
8129 </blockquote><p>
8130
8131 </p>
8132 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8133 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8134 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8135 Getting instrument directory information</h3>
8136
8137 <p>The front-end can ask for the current settings of an
8138 instrument directory by sending the following command:
8139 </p>
8140 <p>
8141 </p>
8142 <blockquote class="text">
8143 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8144 </p>
8145 </blockquote><p>
8146
8147 </p>
8148 <p>Where &lt;dir&gt; should be replaced by the absolute path
8149 name of the directory the front-end is interested in.
8150 </p>
8151 <p>Possible Answers:
8152 </p>
8153 <p>
8154 </p>
8155 <blockquote class="text">
8156 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8157 Each answer line begins with the settings category name
8158 followed by a colon and then a space character &lt;SP&gt; and finally
8159 the info character string to that setting category. At the
8160 moment the following categories are defined:
8161 </p>
8162 <p>
8163 </p>
8164 <blockquote class="text">
8165 <p>DESCRIPTION -
8166 </p>
8167 <blockquote class="text">
8168 <p>A brief description of the directory content.
8169 Note that the character string may contain
8170 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8171 </p>
8172 </blockquote>
8173
8174
8175 <p>CREATED -
8176 </p>
8177 <blockquote class="text">
8178 <p>The creation date and time of the directory,
8179 represented in "YYYY-MM-DD HH:MM:SS" format
8180 </p>
8181 </blockquote>
8182
8183
8184 <p>MODIFIED -
8185 </p>
8186 <blockquote class="text">
8187 <p>The date and time of the last modification of the
8188 directory, represented in "YYYY-MM-DD HH:MM:SS" format
8189 </p>
8190 </blockquote>
8191
8192
8193 </blockquote>
8194
8195
8196 </blockquote><p>
8197
8198 </p>
8199 <p>The mentioned fields above don't have to be in particular order.
8200 </p>
8201 <p>Example:
8202 </p>
8203 <p>
8204 </p>
8205 <blockquote class="text">
8206 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8207 </p>
8208 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8209 </p>
8210 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8211 </p>
8212 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8213 </p>
8214 <p>&nbsp;&nbsp;&nbsp;"."
8215 </p>
8216 </blockquote><p>
8217
8218 </p>
8219 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8220 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8221 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8222 Renaming an instrument directory</h3>
8223
8224 <p>The front-end can alter the name of a specific
8225 instrument directory by sending the following command:
8226 </p>
8227 <p>
8228 </p>
8229 <blockquote class="text">
8230 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8231 </p>
8232 </blockquote><p>
8233
8234 </p>
8235 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8236 &lt;name&gt; is the new name for that directory.
8237 </p>
8238 <p>Possible Answers:
8239 </p>
8240 <p>
8241 </p>
8242 <blockquote class="text">
8243 <p>"OK" -
8244 </p>
8245 <blockquote class="text">
8246 <p>on success
8247 </p>
8248 </blockquote>
8249
8250
8251 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8252 </p>
8253 <blockquote class="text">
8254 <p>in case the given directory does not exists,
8255 or if a directory with name equal to the new
8256 name already exists.
8257 </p>
8258 </blockquote>
8259
8260
8261 </blockquote><p>
8262
8263 </p>
8264 <p>Example:
8265 </p>
8266 <p>
8267 </p>
8268 <blockquote class="text">
8269 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8270 </p>
8271 <p>S: "OK"
8272 </p>
8273 </blockquote><p>
8274
8275 </p>
8276 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8277 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8278 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8279 Moving an instrument directory</h3>
8280
8281 <p>The front-end can move a specific
8282 instrument directory by sending the following command:
8283 </p>
8284 <p>
8285 </p>
8286 <blockquote class="text">
8287 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8288 </p>
8289 </blockquote><p>
8290
8291 </p>
8292 <p>Where &lt;dir&gt; is the absolute path name of the directory
8293 to move and &lt;dst&gt; is the location where the directory will
8294 be moved to.
8295 </p>
8296 <p>Possible Answers:
8297 </p>
8298 <p>
8299 </p>
8300 <blockquote class="text">
8301 <p>"OK" -
8302 </p>
8303 <blockquote class="text">
8304 <p>on success
8305 </p>
8306 </blockquote>
8307
8308
8309 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8310 </p>
8311 <blockquote class="text">
8312 <p>in case a given directory does not exists,
8313 or if a directory with name equal to the name
8314 of the specified directory already exists in
8315 the destination directory. Error is also thrown
8316 when trying to move a directory to a subdirectory
8317 of itself.
8318 </p>
8319 </blockquote>
8320
8321
8322 </blockquote><p>
8323
8324 </p>
8325 <p>Example:
8326 </p>
8327 <p>
8328 </p>
8329 <blockquote class="text">
8330 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8331 </p>
8332 <p>S: "OK"
8333 </p>
8334 </blockquote><p>
8335
8336 </p>
8337 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8338 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8339 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8340 Copying instrument directories</h3>
8341
8342 <p>The front-end can copy a specific
8343 instrument directory by sending the following command:
8344 </p>
8345 <p>
8346 </p>
8347 <blockquote class="text">
8348 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8349 </p>
8350 </blockquote><p>
8351
8352 </p>
8353 <p>Where &lt;dir&gt; is the absolute path name of the directory
8354 to copy and &lt;dst&gt; is the location where the directory will
8355 be copied to.
8356 </p>
8357 <p>Possible Answers:
8358 </p>
8359 <p>
8360 </p>
8361 <blockquote class="text">
8362 <p>"OK" -
8363 </p>
8364 <blockquote class="text">
8365 <p>on success
8366 </p>
8367 </blockquote>
8368
8369
8370 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8371 </p>
8372 <blockquote class="text">
8373 <p>in case a given directory does not exists,
8374 or if a directory with name equal to the name
8375 of the specified directory already exists in
8376 the destination directory. Error is also thrown
8377 when trying to copy a directory to a subdirectory
8378 of itself.
8379 </p>
8380 </blockquote>
8381
8382
8383 </blockquote><p>
8384
8385 </p>
8386 <p>Example:
8387 </p>
8388 <p>
8389 </p>
8390 <blockquote class="text">
8391 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8392 </p>
8393 <p>S: "OK"
8394 </p>
8395 </blockquote><p>
8396
8397 </p>
8398 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8399 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8400 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8401 Changing the description of directory</h3>
8402
8403 <p>The front-end can alter the description of a specific
8404 instrument directory by sending the following command:
8405 </p>
8406 <p>
8407 </p>
8408 <blockquote class="text">
8409 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8410 </p>
8411 </blockquote><p>
8412
8413 </p>
8414 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8415 &lt;desc&gt; is the new description for the directory
8416 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8417 "<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>").
8418 </p>
8419 <p>Possible Answers:
8420 </p>
8421 <p>
8422 </p>
8423 <blockquote class="text">
8424 <p>"OK" -
8425 </p>
8426 <blockquote class="text">
8427 <p>on success
8428 </p>
8429 </blockquote>
8430
8431
8432 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8433 </p>
8434 <blockquote class="text">
8435 <p>in case the given directory does not exists.
8436 </p>
8437 </blockquote>
8438
8439
8440 </blockquote><p>
8441
8442 </p>
8443 <p>Example:
8444 </p>
8445 <p>
8446 </p>
8447 <blockquote class="text">
8448 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8449 </p>
8450 <p>S: "OK"
8451 </p>
8452 </blockquote><p>
8453
8454 </p>
8455 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8456 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8457 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8458 Finding directories</h3>
8459
8460 <p>The front-end can search for directories
8461 in specific directory by sending the following command:
8462 </p>
8463 <p>
8464 </p>
8465 <blockquote class="text">
8466 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8467 </p>
8468 </blockquote><p>
8469
8470 </p>
8471 <p>Where &lt;dir&gt; should be replaced by the absolute path
8472 name of the directory to search in. If NON_RECURSIVE is specified, the
8473 directories located in subdirectories of the specified directory will not
8474 be searched. &lt;criteria-list&gt; is a list of search criterias
8475 in form of "key1=val1 key2=val2 ...". The following criterias are
8476 allowed:
8477 </p>
8478 <p>
8479
8480 <p>NAME='&lt;search-string&gt;'
8481 </p>
8482 <blockquote class="text">
8483 <p>Restricts the search to directories, which names
8484 satisfy the supplied search string (encapsulated into apostrophes,
8485 supporting escape sequences as described in chapter
8486 "<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>").
8487 </p>
8488 </blockquote><p>
8489
8490 </p>
8491
8492
8493 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8494 </p>
8495 <blockquote class="text">
8496 <p>Restricts the search to directories, which creation
8497 date satisfies the specified period, where &lt;date-after&gt;
8498 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8499 If &lt;date-after&gt; is omitted the search is restricted to
8500 directories created before &lt;date-before&gt;. If
8501 &lt;date-before&gt; is omitted, the search is restricted
8502 to directories created after &lt;date-after&gt;.
8503 </p>
8504 </blockquote><p>
8505
8506 </p>
8507
8508
8509 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8510 </p>
8511 <blockquote class="text">
8512 <p>Restricts the search to directories, which
8513 date of last modification satisfies the specified period, where
8514 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8515 format. If &lt;date-after&gt; is omitted the search is restricted to
8516 directories, which are last modified before &lt;date-before&gt;. If
8517 &lt;date-before&gt; is omitted, the search is restricted to directories,
8518 which are last modified after &lt;date-after&gt;.
8519 </p>
8520 </blockquote><p>
8521
8522 </p>
8523
8524
8525 <p>DESCRIPTION='&lt;search-string&gt;'
8526 </p>
8527 <blockquote class="text">
8528 <p>Restricts the search to directories with description
8529 that satisfies the supplied search string
8530 (encapsulated into apostrophes, supporting escape
8531 sequences as described in chapter
8532 "<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>").
8533 </p>
8534 </blockquote><p>
8535
8536 </p>
8537
8538
8539 <p>Where &lt;search-string&gt; is either a regular expression, or a
8540 word list separated with spaces for OR search and with '+' for AND search.
8541 </p>
8542 <p>Possible Answers:
8543 </p>
8544 <p>
8545 </p>
8546 <blockquote class="text">
8547 <p>A comma separated list with the absolute path names (encapsulated into
8548 apostrophes) of all directories in the specified directory that satisfy
8549 the supplied search criterias.
8550 </p>
8551 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8552 </p>
8553 <blockquote class="text">
8554 <p>if the given directory does not exist.
8555 </p>
8556 </blockquote>
8557
8558
8559 </blockquote><p>
8560
8561 </p>
8562 <p>Example:
8563 </p>
8564 <p>
8565 </p>
8566 <blockquote class="text">
8567 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8568 </p>
8569 <p>S: "'/Piano Collection'"
8570 </p>
8571 </blockquote><p>
8572
8573 </p>
8574 <p>
8575 </p>
8576 <blockquote class="text">
8577 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8578 </p>
8579 <p>S: "'/Piano Collection','/Percussions'"
8580 </p>
8581 </blockquote><p>
8582
8583 </p>
8584 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8585 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8586 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8587 Adding instruments to the instruments database</h3>
8588
8589 <p>The front-end can add one or more instruments
8590 to the instruments database by sending the following command:
8591 </p>
8592 <p>
8593 </p>
8594 <blockquote class="text">
8595 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8596 </p>
8597 </blockquote><p>
8598
8599 </p>
8600 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8601 (encapsulated into apostrophes) in the instruments database in which
8602 only the new instruments (that are not already in the database) will
8603 be added, &lt;file_path&gt; is the absolute path name of a file or
8604 directory in the file system (encapsulated into apostrophes). In case
8605 an instrument file is supplied, only the instruments in the specified
8606 file will be added to the instruments database. If the optional
8607 &lt;instr_index&gt; (the index of the instrument within the given file)
8608 is supplied too, then only the specified instrument will be added.
8609 In case a directory is supplied, the instruments in that directory
8610 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8611 when a directory is provided as &lt;file_path&gt; and specifies how the
8612 scanning will be done and has exactly the following possibilities:
8613 </p>
8614 <p>
8615 </p>
8616 <blockquote class="text">
8617 <p>"RECURSIVE" -
8618 </p>
8619 <blockquote class="text">
8620 <p>All instruments will be processed, including those
8621 in the subdirectories, and the respective subdirectory
8622 tree structure will be recreated in the instruments
8623 database
8624 </p>
8625 </blockquote>
8626
8627
8628 <p>"NON_RECURSIVE" -
8629 </p>
8630 <blockquote class="text">
8631 <p>Only the instruments in the specified directory
8632 will be added, the instruments in the subdirectories
8633 will not be processed.
8634 </p>
8635 </blockquote>
8636
8637
8638 <p>"FLAT" -
8639 </p>
8640 <blockquote class="text">
8641 <p>All instruments will be processed, including those
8642 in the subdirectories, but the respective subdirectory
8643 structure will not be recreated in the instruments
8644 database. All instruments will be added directly in
8645 the specified database directory.
8646 </p>
8647 </blockquote>
8648
8649
8650 </blockquote><p>
8651
8652 </p>
8653 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
8654 file will be added to a separate directory in the instruments database, which
8655 name will be the name of the instrument file with the file extension stripped off.
8656
8657 </p>
8658 <p>The difference between regular and NON_MODAL versions of the command
8659 is that the regular command returns when the scanning is finished
8660 while NON_MODAL version returns immediately and a background process is launched.
8661 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>
8662 command can be used to monitor the scanning progress.
8663 </p>
8664 <p>Possible Answers:
8665 </p>
8666 <p>
8667 </p>
8668 <blockquote class="text">
8669 <p>"OK" -
8670 </p>
8671 <blockquote class="text">
8672 <p>on success when NON_MODAL is not supplied
8673 </p>
8674 </blockquote>
8675
8676
8677 <p>"OK[&lt;job-id&gt;]" -
8678 </p>
8679 <blockquote class="text">
8680 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8681 is a numerical ID used to obtain status information about the job progress.
8682 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>
8683
8684 </p>
8685 </blockquote>
8686
8687
8688 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8689 </p>
8690 <blockquote class="text">
8691 <p>if an invalid path is specified.
8692 </p>
8693 </blockquote>
8694
8695
8696 </blockquote><p>
8697
8698 </p>
8699 <p>Examples:
8700 </p>
8701 <p>
8702 </p>
8703 <blockquote class="text">
8704 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8705 </p>
8706 <p>S: "OK"
8707 </p>
8708 </blockquote><p>
8709
8710 </p>
8711 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8712 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8713 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8714 Removing an instrument</h3>
8715
8716 <p>The front-end can remove a particular instrument
8717 from the instruments database by sending the following command:
8718 </p>
8719 <p>
8720 </p>
8721 <blockquote class="text">
8722 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8723 </p>
8724 </blockquote><p>
8725
8726 </p>
8727 <p>Where &lt;instr_path&gt; is the absolute path name
8728 (in the instruments database) of the instrument to remove.
8729 </p>
8730 <p>Possible Answers:
8731 </p>
8732 <p>
8733 </p>
8734 <blockquote class="text">
8735 <p>"OK" -
8736 </p>
8737 <blockquote class="text">
8738 <p>if the instrument is removed successfully
8739 </p>
8740 </blockquote>
8741
8742
8743 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8744 </p>
8745 <blockquote class="text">
8746 <p>if the given path does not exist or
8747 is a directory.
8748 </p>
8749 </blockquote>
8750
8751
8752 </blockquote><p>
8753
8754 </p>
8755 <p>Examples:
8756 </p>
8757 <p>
8758 </p>
8759 <blockquote class="text">
8760 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8761 </p>
8762 <p>S: "OK"
8763 </p>
8764 </blockquote><p>
8765
8766 </p>
8767 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8768 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8769 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8770 Getting amount of instruments</h3>
8771
8772 <p>The front-end can retrieve the current amount of
8773 instruments in a specific directory by sending the following command:
8774 </p>
8775 <p>
8776 </p>
8777 <blockquote class="text">
8778 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8779 </p>
8780 </blockquote><p>
8781
8782 </p>
8783 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8784 of the directory. If RECURSIVE is specified, the number of all
8785 instruments, including those located in subdirectories of the
8786 specified directory, will be returned.
8787 </p>
8788 <p>Possible Answers:
8789 </p>
8790 <p>
8791 </p>
8792 <blockquote class="text">
8793 <p>The current number of instruments
8794 in the specified directory.
8795 </p>
8796 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8797 </p>
8798 <blockquote class="text">
8799 <p>if the given directory does not exist.
8800 </p>
8801 </blockquote>
8802
8803
8804 </blockquote><p>
8805
8806 </p>
8807 <p>Example:
8808 </p>
8809 <p>
8810 </p>
8811 <blockquote class="text">
8812 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8813 </p>
8814 <p>S: "2"
8815 </p>
8816 </blockquote><p>
8817
8818 </p>
8819 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8820 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8821 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8822 Listing all instruments in specific directory</h3>
8823
8824 <p>The front-end can retrieve the current list of instruments
8825 in specific directory by sending the following command:
8826 </p>
8827 <p>
8828 </p>
8829 <blockquote class="text">
8830 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8831 </p>
8832 </blockquote><p>
8833
8834 </p>
8835 <p>Where &lt;dir&gt; should be replaced by the absolute path
8836 name of the directory. If RECURSIVE is specified, the absolute path
8837 names of all instruments, including those located in subdirectories
8838 of the specified directory, will be returned.
8839 </p>
8840 <p>Possible Answers:
8841 </p>
8842 <p>
8843 </p>
8844 <blockquote class="text">
8845 <p>A comma separated list of all instruments
8846 (encapsulated into apostrophes) in the specified directory.
8847 </p>
8848 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8849 </p>
8850 <blockquote class="text">
8851 <p>if the given directory does not exist.
8852 </p>
8853 </blockquote>
8854
8855
8856 </blockquote><p>
8857
8858 </p>
8859 <p>Example:
8860 </p>
8861 <p>
8862 </p>
8863 <blockquote class="text">
8864 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8865 </p>
8866 <p>S: "'Bosendorfer 290','Steinway D'"
8867 </p>
8868 </blockquote><p>
8869
8870 </p>
8871 <p>
8872 </p>
8873 <blockquote class="text">
8874 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8875 </p>
8876 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8877 </p>
8878 </blockquote><p>
8879
8880 </p>
8881 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8882 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8883 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8884 Getting instrument information</h3>
8885
8886 <p>The front-end can ask for the current settings of an
8887 instrument by sending the following command:
8888 </p>
8889 <p>
8890 </p>
8891 <blockquote class="text">
8892 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8893 </p>
8894 </blockquote><p>
8895
8896 </p>
8897 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8898 name of the instrument the front-end is interested in.
8899 </p>
8900 <p>Possible Answers:
8901 </p>
8902 <p>
8903 </p>
8904 <blockquote class="text">
8905 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8906 Each answer line begins with the settings category name
8907 followed by a colon and then a space character &lt;SP&gt; and finally
8908 the info character string to that setting category. At the
8909 moment the following categories are defined:
8910 </p>
8911 <p>
8912 </p>
8913 <blockquote class="text">
8914 <p>INSTRUMENT_FILE -
8915 </p>
8916 <blockquote class="text">
8917 <p>File name of the instrument.
8918 Note that the character string may contain
8919 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8920 </p>
8921 </blockquote>
8922
8923
8924 <p>INSTRUMENT_NR -
8925 </p>
8926 <blockquote class="text">
8927 <p>Index of the instrument within the file.
8928 </p>
8929 </blockquote>
8930
8931
8932 <p>FORMAT_FAMILY -
8933 </p>
8934 <blockquote class="text">
8935 <p>The format family of the instrument.
8936 </p>
8937 </blockquote>
8938
8939
8940 <p>FORMAT_VERSION -
8941 </p>
8942 <blockquote class="text">
8943 <p>The format version of the instrument.
8944 </p>
8945 </blockquote>
8946
8947
8948 <p>SIZE -
8949 </p>
8950 <blockquote class="text">
8951 <p>The size of the instrument in bytes.
8952 </p>
8953 </blockquote>
8954
8955
8956 <p>CREATED -
8957 </p>
8958 <blockquote class="text">
8959 <p>The date and time when the instrument is added
8960 in the instruments database, represented in
8961 "YYYY-MM-DD HH:MM:SS" format
8962 </p>
8963 </blockquote>
8964
8965
8966 <p>MODIFIED -
8967 </p>
8968 <blockquote class="text">
8969 <p>The date and time of the last modification of the
8970 instrument's database settings, represented in
8971 "YYYY-MM-DD HH:MM:SS" format
8972 </p>
8973 </blockquote>
8974
8975
8976 <p>DESCRIPTION -
8977 </p>
8978 <blockquote class="text">
8979 <p>A brief description of the instrument.
8980 Note that the character string may contain
8981 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8982 </p>
8983 </blockquote>
8984
8985
8986 <p>IS_DRUM -
8987 </p>
8988 <blockquote class="text">
8989 <p>either true or false, determines whether the
8990 instrument is a drumkit or a chromatic instrument
8991 </p>
8992 </blockquote>
8993
8994
8995 <p>PRODUCT -
8996 </p>
8997 <blockquote class="text">
8998 <p>The product title of the instrument.
8999 Note that the character string may contain
9000 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9001 </p>
9002 </blockquote>
9003
9004
9005 <p>ARTISTS -
9006 </p>
9007 <blockquote class="text">
9008 <p>Lists the artist names.
9009 Note that the character string may contain
9010 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9011 </p>
9012 </blockquote>
9013
9014
9015 <p>KEYWORDS -
9016 </p>
9017 <blockquote class="text">
9018 <p>Provides a list of keywords that refer to the instrument.
9019 Keywords are separated with semicolon and blank.
9020 Note that the character string may contain
9021 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9022 </p>
9023 </blockquote>
9024
9025
9026 </blockquote>
9027
9028
9029 </blockquote><p>
9030
9031 </p>
9032 <p>The mentioned fields above don't have to be in particular order.
9033 </p>
9034 <p>Example:
9035 </p>
9036 <p>
9037 </p>
9038 <blockquote class="text">
9039 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9040 </p>
9041 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9042 </p>
9043 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9044 </p>
9045 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9046 </p>
9047 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9048 </p>
9049 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9050 </p>
9051 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9052 </p>
9053 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9054 </p>
9055 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9056 </p>
9057 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9058 </p>
9059 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9060 </p>
9061 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9062 </p>
9063 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9064 </p>
9065 <p>&nbsp;&nbsp;&nbsp;"."
9066 </p>
9067 </blockquote><p>
9068
9069 </p>
9070 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9071 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9072 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9073 Renaming an instrument</h3>
9074
9075 <p>The front-end can alter the name of a specific
9076 instrument by sending the following command:
9077 </p>
9078 <p>
9079 </p>
9080 <blockquote class="text">
9081 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9082 </p>
9083 </blockquote><p>
9084
9085 </p>
9086 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9087 &lt;name&gt; is the new name for that instrument.
9088 </p>
9089 <p>Possible Answers:
9090 </p>
9091 <p>
9092 </p>
9093 <blockquote class="text">
9094 <p>"OK" -
9095 </p>
9096 <blockquote class="text">
9097 <p>on success
9098 </p>
9099 </blockquote>
9100
9101
9102 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9103 </p>
9104 <blockquote class="text">
9105 <p>in case the given instrument does not exists,
9106 or if an instrument with name equal to the new
9107 name already exists.
9108 </p>
9109 </blockquote>
9110
9111
9112 </blockquote><p>
9113
9114 </p>
9115 <p>Example:
9116 </p>
9117 <p>
9118 </p>
9119 <blockquote class="text">
9120 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9121 </p>
9122 <p>S: "OK"
9123 </p>
9124 </blockquote><p>
9125
9126 </p>
9127 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9128 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9129 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9130 Moving an instrument</h3>
9131
9132 <p>The front-end can move a specific instrument to another directory by
9133 sending the following command:
9134 </p>
9135 <p>
9136 </p>
9137 <blockquote class="text">
9138 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9139 </p>
9140 </blockquote><p>
9141
9142 </p>
9143 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9144 to move and &lt;dst&gt; is the directory where the instrument will
9145 be moved to.
9146 </p>
9147 <p>Possible Answers:
9148 </p>
9149 <p>
9150 </p>
9151 <blockquote class="text">
9152 <p>"OK" -
9153 </p>
9154 <blockquote class="text">
9155 <p>on success
9156 </p>
9157 </blockquote>
9158
9159
9160 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9161 </p>
9162 <blockquote class="text">
9163 <p>in case the given instrument does not exists,
9164 or if an instrument with name equal to the name of the
9165 specified instrument already exists in the destination
9166 directory.
9167 </p>
9168 </blockquote>
9169
9170
9171 </blockquote><p>
9172
9173 </p>
9174 <p>Example:
9175 </p>
9176 <p>
9177 </p>
9178 <blockquote class="text">
9179 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9180 </p>
9181 <p>S: "OK"
9182 </p>
9183 </blockquote><p>
9184
9185 </p>
9186 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9187 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9188 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9189 Copying instruments</h3>
9190
9191 <p>The front-end can copy a specific instrument to another directory by
9192 sending the following command:
9193 </p>
9194 <p>
9195 </p>
9196 <blockquote class="text">
9197 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9198 </p>
9199 </blockquote><p>
9200
9201 </p>
9202 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9203 to copy and &lt;dst&gt; is the directory where the instrument will
9204 be copied to.
9205 </p>
9206 <p>Possible Answers:
9207 </p>
9208 <p>
9209 </p>
9210 <blockquote class="text">
9211 <p>"OK" -
9212 </p>
9213 <blockquote class="text">
9214 <p>on success
9215 </p>
9216 </blockquote>
9217
9218
9219 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9220 </p>
9221 <blockquote class="text">
9222 <p>in case the given instrument does not exists,
9223 or if an instrument with name equal to the name of the
9224 specified instrument already exists in the destination
9225 directory.
9226 </p>
9227 </blockquote>
9228
9229
9230 </blockquote><p>
9231
9232 </p>
9233 <p>Example:
9234 </p>
9235 <p>
9236 </p>
9237 <blockquote class="text">
9238 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9239 </p>
9240 <p>S: "OK"
9241 </p>
9242 </blockquote><p>
9243
9244 </p>
9245 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9246 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9247 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9248 Changing the description of instrument</h3>
9249
9250 <p>The front-end can alter the description of a specific
9251 instrument by sending the following command:
9252 </p>
9253 <p>
9254 </p>
9255 <blockquote class="text">
9256 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9257 </p>
9258 </blockquote><p>
9259
9260 </p>
9261 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9262 &lt;desc&gt; is the new description for the instrument
9263 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9264 "<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>").
9265 </p>
9266 <p>Possible Answers:
9267 </p>
9268 <p>
9269 </p>
9270 <blockquote class="text">
9271 <p>"OK" -
9272 </p>
9273 <blockquote class="text">
9274 <p>on success
9275 </p>
9276 </blockquote>
9277
9278
9279 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9280 </p>
9281 <blockquote class="text">
9282 <p>in case the given instrument does not exists.
9283 </p>
9284 </blockquote>
9285
9286
9287 </blockquote><p>
9288
9289 </p>
9290 <p>Example:
9291 </p>
9292 <p>
9293 </p>
9294 <blockquote class="text">
9295 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9296 </p>
9297 <p>S: "OK"
9298 </p>
9299 </blockquote><p>
9300
9301 </p>
9302 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9303 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9304 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9305 Finding instruments</h3>
9306
9307 <p>The front-end can search for instruments
9308 in specific directory by sending the following command:
9309 </p>
9310 <p>
9311 </p>
9312 <blockquote class="text">
9313 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9314 </p>
9315 </blockquote><p>
9316
9317 </p>
9318 <p>Where &lt;dir&gt; should be replaced by the absolute path
9319 name of the directory to search in. If NON_RECURSIVE is specified, the
9320 directories located in subdirectories of the specified directory will not
9321 be searched. &lt;criteria-list&gt; is a list of search criterias
9322 in form of "key1=val1 key2=val2 ...". The following criterias are
9323 allowed:
9324 </p>
9325 <p>
9326
9327 <p>NAME='&lt;search-string&gt;'
9328 </p>
9329 <blockquote class="text">
9330 <p>Restricts the search to instruments, which names
9331 satisfy the supplied search string (encapsulated into apostrophes,
9332 supporting escape sequences as described in chapter
9333 "<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>").
9334 </p>
9335 </blockquote><p>
9336
9337 </p>
9338
9339
9340 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9341 </p>
9342 <blockquote class="text">
9343 <p>Restricts the search to instruments, which
9344 size is in the specified range. If &lt;min&gt; is omitted,
9345 the search results are restricted to instruments with size less then
9346 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9347 search is restricted to instruments with size greater then
9348 or equal to &lt;min&gt;.
9349 </p>
9350 </blockquote><p>
9351
9352 </p>
9353
9354
9355 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9356 </p>
9357 <blockquote class="text">
9358 <p>Restricts the search to instruments, which creation
9359 date satisfies the specified period, where &lt;date-after&gt;
9360 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9361 If &lt;date-after&gt; is omitted the search is restricted to
9362 instruments created before &lt;date-before&gt;. If
9363 &lt;date-before&gt; is omitted, the search is restricted
9364 to instruments created after &lt;date-after&gt;.
9365 </p>
9366 </blockquote><p>
9367
9368 </p>
9369
9370
9371 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9372 </p>
9373 <blockquote class="text">
9374 <p>Restricts the search to instruments, which
9375 date of last modification satisfies the specified period, where
9376 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9377 format. If &lt;date-after&gt; is omitted the search is restricted to
9378 instruments, which are last modified before &lt;date-before&gt;. If
9379 &lt;date-before&gt; is omitted, the search is restricted to instruments,
9380 which are last modified after &lt;date-after&gt;.
9381 </p>
9382 </blockquote><p>
9383
9384 </p>
9385
9386
9387 <p>DESCRIPTION='&lt;search-string&gt;'
9388 </p>
9389 <blockquote class="text">
9390 <p>Restricts the search to instruments with description
9391 that satisfies the supplied search string (encapsulated into apostrophes,
9392 supporting escape sequences as described in chapter
9393 "<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>").
9394 </p>
9395 </blockquote><p>
9396
9397 </p>
9398
9399
9400 <p>PRODUCT='&lt;search-string&gt;'
9401 </p>
9402 <blockquote class="text">
9403 <p>Restricts the search to instruments with product info
9404 that satisfies the supplied search string (encapsulated into apostrophes,
9405 supporting escape sequences as described in chapter
9406 "<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>").
9407 </p>
9408 </blockquote><p>
9409
9410 </p>
9411
9412
9413 <p>ARTISTS='&lt;search-string&gt;'
9414 </p>
9415 <blockquote class="text">
9416 <p>Restricts the search to instruments with artists info
9417 that satisfies the supplied search string (encapsulated into apostrophes,
9418 supporting escape sequences as described in chapter
9419 "<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>").
9420 </p>
9421 </blockquote><p>
9422
9423 </p>
9424
9425
9426 <p>KEYWORDS='&lt;search-string&gt;'
9427 </p>
9428 <blockquote class="text">
9429 <p>Restricts the search to instruments with keyword list
9430 that satisfies the supplied search string (encapsulated into apostrophes,
9431 supporting escape sequences as described in chapter
9432 "<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>").
9433 </p>
9434 </blockquote><p>
9435
9436 </p>
9437
9438
9439 <p>IS_DRUM=true | false
9440 </p>
9441 <blockquote class="text">
9442 <p>Either true or false. Restricts the search to
9443 drum kits or chromatic instruments.
9444 </p>
9445 </blockquote><p>
9446
9447 </p>
9448
9449
9450 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9451 </p>
9452 <blockquote class="text">
9453 <p>Restricts the search to instruments of the supplied format families,
9454 where &lt;format-list&gt; is a comma separated list of format families.
9455 </p>
9456 </blockquote><p>
9457
9458 </p>
9459
9460
9461 <p>Where &lt;search-string&gt; is either a regular expression, or a
9462 word list separated with spaces for OR search and with '+' for AND search.
9463 </p>
9464 <p>Possible Answers:
9465 </p>
9466 <p>
9467 </p>
9468 <blockquote class="text">
9469 <p>A comma separated list with the absolute path names (encapsulated into
9470 apostrophes) of all instruments in the specified directory that satisfy
9471 the supplied search criterias.
9472 </p>
9473 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9474 </p>
9475 <blockquote class="text">
9476 <p>if the given directory does not exist.
9477 </p>
9478 </blockquote>
9479
9480
9481 </blockquote><p>
9482
9483 </p>
9484 <p>Example:
9485 </p>
9486 <p>
9487 </p>
9488 <blockquote class="text">
9489 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9490 </p>
9491 <p>S: "'/Piano Collection/Bosendorfer 290'"
9492 </p>
9493 </blockquote><p>
9494
9495 </p>
9496 <p>
9497 </p>
9498 <blockquote class="text">
9499 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9500 </p>
9501 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9502 </p>
9503 </blockquote><p>
9504
9505 </p>
9506 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9507 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9508 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9509 Getting job status information</h3>
9510
9511 <p>The front-end can ask for the current status of a
9512 particular database instruments job by sending the following command:
9513 </p>
9514 <p>
9515 </p>
9516 <blockquote class="text">
9517 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9518 </p>
9519 </blockquote><p>
9520
9521 </p>
9522 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9523 of the job the front-end is interested in.
9524 </p>
9525 <p>Possible Answers:
9526 </p>
9527 <p>
9528 </p>
9529 <blockquote class="text">
9530 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9531 Each answer line begins with the settings category name
9532 followed by a colon and then a space character &lt;SP&gt; and finally
9533 the info character string to that setting category. At the
9534 moment the following categories are defined:
9535 </p>
9536 <p>
9537 </p>
9538 <blockquote class="text">
9539 <p>FILES_TOTAL -
9540 </p>
9541 <blockquote class="text">
9542 <p>The total number of files scheduled for scanning
9543 </p>
9544 </blockquote>
9545
9546
9547 <p>FILES_SCANNED -
9548 </p>
9549 <blockquote class="text">
9550 <p>The current number of scanned files
9551 </p>
9552 </blockquote>
9553
9554
9555 <p>SCANNING -
9556 </p>
9557 <blockquote class="text">
9558 <p>The absolute path name of the file which is currently
9559 being scanned
9560 </p>
9561 </blockquote>
9562
9563
9564 <p>STATUS -
9565 </p>
9566 <blockquote class="text">
9567 <p>An integer value between 0 and 100 indicating the
9568 scanning progress percentage of the file which is
9569 currently being scanned
9570 </p>
9571 </blockquote>
9572
9573
9574 </blockquote>
9575
9576
9577 </blockquote><p>
9578
9579 </p>
9580 <p>The mentioned fields above don't have to be in particular order.
9581 </p>
9582 <p>Example:
9583 </p>
9584 <p>
9585 </p>
9586 <blockquote class="text">
9587 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9588 </p>
9589 <p>S: "FILES_TOTAL: 12"
9590 </p>
9591 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9592 </p>
9593 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9594 </p>
9595 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9596 </p>
9597 <p>&nbsp;&nbsp;&nbsp;"."
9598 </p>
9599 </blockquote><p>
9600
9601 </p>
9602 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9603 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9604 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9605 Formatting the instruments database</h3>
9606
9607 <p>The front-end can remove all instruments and directories and re-create
9608 the instruments database structure (e.g., in case of a database corruption)
9609 by sending the following command:
9610 </p>
9611 <p>
9612 </p>
9613 <blockquote class="text">
9614 <p>FORMAT INSTRUMENTS_DB
9615 </p>
9616 </blockquote><p>
9617
9618 </p>
9619 <p>Possible Answers:
9620 </p>
9621 <p>
9622 </p>
9623 <blockquote class="text">
9624 <p>"OK" -
9625 </p>
9626 <blockquote class="text">
9627 <p>on success
9628 </p>
9629 </blockquote>
9630
9631
9632 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9633 </p>
9634 <blockquote class="text">
9635 <p>If the formatting of the instruments database
9636 failed.
9637 </p>
9638 </blockquote>
9639
9640
9641 </blockquote><p>
9642
9643 </p>
9644 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9645 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9646 <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9647 Checking for lost instrument files</h3>
9648
9649 <p>The front-end can retrieve the list of all instrument files in the instruments database
9650 that don't exist in the filesystem by sending the following command:
9651 </p>
9652 <p>
9653 </p>
9654 <blockquote class="text">
9655 <p>FIND LOST DB_INSTRUMENT_FILES
9656 </p>
9657 </blockquote><p>
9658
9659 </p>
9660 <p>Possible Answers:
9661 </p>
9662 <p>
9663 </p>
9664 <blockquote class="text">
9665 <p>A comma separated list with the absolute path names
9666 (encapsulated into apostrophes) of all lost instrument files.
9667 </p>
9668 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9669 </p>
9670 <blockquote class="text">
9671 <p>in case it failed, providing an appropriate error code and error message.
9672 </p>
9673 </blockquote>
9674
9675
9676 </blockquote><p>
9677
9678 </p>
9679 <p>Example:
9680 </p>
9681 <p>
9682 </p>
9683 <blockquote class="text">
9684 <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9685 </p>
9686 <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9687 </p>
9688 </blockquote><p>
9689
9690 </p>
9691 <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9692 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9693 <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9694 Replacing an instrument file</h3>
9695
9696 <p>The front-end can substitute all occurrences of an instrument file
9697 in the instruments database with a new one by sending the following command:
9698 </p>
9699 <p>
9700 </p>
9701 <blockquote class="text">
9702 <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9703 </p>
9704 </blockquote><p>
9705
9706 </p>
9707 <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9708 to substitute with &lt;new_path&gt;.
9709 </p>
9710 <p>Possible Answers:
9711 </p>
9712 <p>
9713 </p>
9714 <blockquote class="text">
9715 <p>"OK" -
9716 </p>
9717 <blockquote class="text">
9718 <p>on success
9719 </p>
9720 </blockquote>
9721
9722
9723 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9724 </p>
9725 <blockquote class="text">
9726 <p>in case it failed, providing an appropriate error code and error message.
9727 </p>
9728 </blockquote>
9729
9730
9731 </blockquote><p>
9732
9733 </p>
9734 <p>Example:
9735 </p>
9736 <p>
9737 </p>
9738 <blockquote class="text">
9739 <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9740 </p>
9741 <p>S: "OK"
9742 </p>
9743 </blockquote><p>
9744
9745 </p>
9746 <a name="editing_instruments"></a><br /><hr />
9747 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9748 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9749 Editing Instruments</h3>
9750
9751 <p>The sampler allows to edit instruments while playing with the
9752 sampler by spawning an external (3rd party) instrument editor
9753 application for a given instrument. The 3rd party instrument
9754 editor applications have to place a respective plugin DLL file
9755 into the sampler's plugins directory. The sampler will
9756 automatically try to load all plugin DLLs in that directory on
9757 startup and only on startup!
9758 </p>
9759 <p>At the moment there is only one command for this feature set,
9760 but this will most probably change in future.
9761 </p>
9762 <a name="EDIT INSTRUMENT"></a><br /><hr />
9763 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9764 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9765 Opening an appropriate instrument editor application</h3>
9766
9767 <p>The front-end can request to open an appropriate instrument
9768 editor application by sending the following command:
9769 </p>
9770 <p>
9771 </p>
9772 <blockquote class="text">
9773 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9774 </p>
9775 </blockquote><p>
9776
9777 </p>
9778 <p>Where &lt;sampler-channel&gt; should be replaced by the
9779 number of the sampler channel as given by the
9780 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9781 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9782 command.
9783 </p>
9784 <p>The sampler will try to ask all registered instrument
9785 editors (or to be more specific: their sampler plugins)
9786 whether they are capable to handle the instrument on the
9787 given sampler channel. The sampler will simply use the first
9788 instrument editor application which replied with a positive
9789 answer and spawn that instrument editor application within
9790 the sampler's process and provide that application access
9791 to the instrument's data structures, so both applications
9792 can share and access the same instruments data at the same
9793 time, thus allowing to immediately hear changes with the
9794 sampler made by the instrument editor.
9795 </p>
9796 <p>Note: consequently instrument editors are always spawned
9797 locally on the same machine where the sampler is running
9798 on!
9799 </p>
9800 <p>Possible Answers:
9801 </p>
9802 <p>
9803 </p>
9804 <blockquote class="text">
9805 <p>"OK" -
9806 </p>
9807 <blockquote class="text">
9808 <p>when an appropriate instrument editor was
9809 launched
9810 </p>
9811 </blockquote>
9812
9813
9814 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9815 </p>
9816 <blockquote class="text">
9817 <p>when an appropriate instrument editor was
9818 launched, but there are noteworthy issues
9819 </p>
9820 </blockquote>
9821
9822
9823 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9824 </p>
9825 <blockquote class="text">
9826 <p>when an appropriate instrument editor
9827 could not be launched
9828 </p>
9829 </blockquote>
9830
9831
9832 </blockquote><p>
9833
9834 </p>
9835 <p>Examples:
9836 </p>
9837 <p>
9838 </p>
9839 <blockquote class="text">
9840 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9841 </p>
9842 <p>S: "OK"
9843 </p>
9844 </blockquote><p>
9845
9846 </p>
9847 <a name="file_management"></a><br /><hr />
9848 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9849 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9850 Managing Files</h3>
9851
9852 <p>You can query detailed informations about files located
9853 at the same system where the sampler instance is running on.
9854 Using this command set allows to retrieve file informations
9855 even remotely from another machine.
9856 </p>
9857 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9858 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9859 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9860 Retrieving amount of instruments of a file</h3>
9861
9862 <p>The front-end can retrieve the amount of instruments
9863 within a given instrument file by sending the
9864 following command:
9865 </p>
9866 <p>
9867 </p>
9868 <blockquote class="text">
9869 <p>GET FILE INSTRUMENTS &lt;filename&gt;
9870 </p>
9871 </blockquote><p>
9872
9873 </p>
9874 <p>Where &lt;filename&gt; is the name of the instrument
9875 file (encapsulated into apostrophes, supporting escape
9876 sequences as described in chapter
9877 "<a class='info' href='#character_set'>Character Set and Escape
9878 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9879 </p>
9880 <p>The sampler will try to ask all sampler engines,
9881 whether they support the given file and ask the first
9882 engine with a positive answer for the amount of
9883 instruments.
9884 </p>
9885 <p>Possible Answers:
9886 </p>
9887 <p>
9888 </p>
9889 <blockquote class="text">
9890 <p>On success, the sampler will answer by
9891 returning the amount of instruments.
9892
9893 </p>
9894 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9895 </p>
9896 <blockquote class="text">
9897 <p>if the file could not be handled
9898 </p>
9899 </blockquote>
9900
9901
9902 </blockquote><p>
9903
9904 </p>
9905 <p>Examples:
9906 </p>
9907 <p>
9908 </p>
9909 <blockquote class="text">
9910 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9911 </p>
9912 <p>S: "10"
9913 </p>
9914 </blockquote><p>
9915
9916 </p>
9917 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9918 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9919 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9920 Retrieving all instruments of a file</h3>
9921
9922 <p>The front-end can retrieve a list of all instruments
9923 within a given instrument file by sending the
9924 following command:
9925 </p>
9926 <p>
9927 </p>
9928 <blockquote class="text">
9929 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9930 </p>
9931 </blockquote><p>
9932
9933 </p>
9934 <p>Where &lt;filename&gt; is the name of the instrument
9935 file (encapsulated into apostrophes, supporting escape
9936 sequences as described in chapter
9937 "<a class='info' href='#character_set'>Character Set and Escape
9938 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9939 </p>
9940 <p>The sampler will try to ask all sampler engines,
9941 whether they support the given file and ask the first
9942 engine with a positive answer for a list of IDs for the
9943 instruments in the given file.
9944 </p>
9945 <p>Possible Answers:
9946 </p>
9947 <p>
9948 </p>
9949 <blockquote class="text">
9950 <p>On success, the sampler will answer by
9951 returning a comma separated list of
9952 instrument IDs.
9953
9954 </p>
9955 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9956 </p>
9957 <blockquote class="text">
9958 <p>if the file could not be handled
9959 </p>
9960 </blockquote>
9961
9962
9963 </blockquote><p>
9964
9965 </p>
9966 <p>Examples:
9967 </p>
9968 <p>
9969 </p>
9970 <blockquote class="text">
9971 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9972 </p>
9973 <p>S: "0,1,2,3,4,5,6,7,8,9"
9974 </p>
9975 </blockquote><p>
9976
9977 </p>
9978 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9979 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9980 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9981 Retrieving informations about one instrument in a file</h3>
9982
9983 <p>The front-end can retrieve detailed informations
9984 about a specific instrument within a given instrument
9985 file by sending the following command:
9986 </p>
9987 <p>
9988 </p>
9989 <blockquote class="text">
9990 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9991 &lt;instr-id&gt;
9992 </p>
9993 </blockquote><p>
9994
9995 </p>
9996 <p>Where &lt;filename&gt; is the name of the instrument
9997 file (encapsulated into apostrophes, supporting escape
9998 sequences as described in chapter
9999 "<a class='info' href='#character_set'>Character Set and Escape
10000 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
10001 instrument ID as returned by the
10002 <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.
10003 </p>
10004 <p>The sampler will try to ask all sampler engines,
10005 whether they support the given file and ask the first
10006 engine with a positive answer for informations about the
10007 specific instrument in the given file.
10008 </p>
10009 <p>Possible Answers:
10010 </p>
10011 <p>
10012 </p>
10013 <blockquote class="text">
10014 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10015 Each answer line begins with the settings category name
10016 followed by a colon and then a space character &lt;SP&gt; and finally
10017 the info character string to that setting category. At the
10018 moment the following categories are defined:
10019 </p>
10020 <p>
10021 </p>
10022 <blockquote class="text">
10023 <p>NAME -
10024 </p>
10025 <blockquote class="text">
10026 <p>name of the instrument as
10027 stored in the instrument file
10028 </p>
10029 </blockquote>
10030
10031
10032 <p>FORMAT_FAMILY -
10033 </p>
10034 <blockquote class="text">
10035 <p>name of the sampler format
10036 of the given instrument
10037 </p>
10038 </blockquote>
10039
10040
10041 <p>FORMAT_VERSION -
10042 </p>
10043 <blockquote class="text">
10044 <p>version of the sampler format
10045 the instrumen is stored as
10046 </p>
10047 </blockquote>
10048
10049
10050 <p>PRODUCT -
10051 </p>
10052 <blockquote class="text">
10053 <p>official product name of the
10054 instrument as stored in the file
10055
10056 </p>
10057 </blockquote>
10058
10059
10060 <p>ARTISTS -
10061 </p>
10062 <blockquote class="text">
10063 <p>artists / sample library
10064 vendor of the instrument
10065 </p>
10066 </blockquote>
10067
10068
10069 <p>KEY_BINDINGS -
10070 </p>
10071 <blockquote class="text">
10072 <p>comma separated list of integer values representing
10073 the instrument's key mapping in the range between 0 .. 127,
10074 reflecting the analog meaning of the MIDI specification.
10075 </p>
10076 </blockquote>
10077
10078
10079 <p>KEYSWITCH_BINDINGS -
10080 </p>
10081 <blockquote class="text">
10082 <p>comma separated list of integer values representing
10083 the instrument's keyswitch mapping in the range between 0 .. 127,
10084 reflecting the analog meaning of the MIDI specification.
10085 </p>
10086 </blockquote>
10087
10088
10089 </blockquote>
10090
10091
10092 </blockquote><p>
10093
10094 </p>
10095 <p>The mentioned fields above don't have to be in particular order.
10096 </p>
10097 <p>Example:
10098 </p>
10099 <p>
10100 </p>
10101 <blockquote class="text">
10102 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10103 </p>
10104 <p>S: "NAME: Lunatic Loops"
10105 </p>
10106 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10107 </p>
10108 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10109 </p>
10110 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10111 </p>
10112 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10113 </p>
10114 <p>&nbsp;&nbsp;&nbsp;"."
10115 </p>
10116 </blockquote><p>
10117
10118 </p>
10119 <a name="effects"></a><br /><hr />
10120 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10121 <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10122 Managing Effects</h3>
10123
10124 <p>Audio effects (e.g. reverb, delay, compression) can be
10125 applied to the audio signals generated by the sampler. The
10126 sampler usually provides a set of internal audio effects for
10127 this task. The exact set of effects depends on the availability
10128 of third party effect plugins installed on the system where the
10129 sampler runs on.
10130 </p>
10131 <p>At the moment only "send effects" are supported. Support for
10132 "insert effects" and "master effects" is planned to be added at
10133 a later point.
10134 </p>
10135 <p>The following commands allow to retrieve the set of internal
10136 effects available to the sampler, detailed informations about
10137 those effects and to create and destroy instances of such
10138 effects. After an instance of an effect is created, the effect
10139 instance can be inserted into the audio signal path of the
10140 sampler, e.g. as send effect.
10141 </p>
10142 <p>The sampler allows to create an arbitrary amount of so called
10143 send effect chains. Each effect chain can host an arbitrary
10144 amount of effect instances. The output of the first effect
10145 instance in an effect chain is fed to the input of the second
10146 effect instance of the chain and so on. So effects in one chain
10147 are processed sequentially. Send effect chains however are
10148 processed in parallel to other send effect chains. Audio signals
10149 of sampler channels are fed to send effects by creating FX sends
10150 to the respective sampler channel and assigning a destination
10151 send effect to that FX by using the
10152 <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>
10153 command. The latter allows to route the FX send to the beginning
10154 of a send effect chain, as well as directly to any other
10155 position of the send effect chain.
10156 </p>
10157 <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10158 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10159 <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10160 Retrieve amount of available effects</h3>
10161
10162 <p>The front-end can retrieve the amount of internal
10163 effects, available to the sampler by sending
10164 the following command:
10165 </p>
10166 <p>
10167 </p>
10168 <blockquote class="text">
10169 <p>GET AVAILABLE_EFFECTS
10170 </p>
10171 </blockquote><p>
10172
10173 </p>
10174 <p>Possible Answers:
10175 </p>
10176 <p>
10177 </p>
10178 <blockquote class="text">
10179 <p>The sampler will answer by returning the current
10180 number of effects available to the sampler.
10181 </p>
10182 </blockquote><p>
10183
10184 </p>
10185 <p>Examples:
10186 </p>
10187 <p>
10188 </p>
10189 <blockquote class="text">
10190 <p>C: "GET AVAILABLE_EFFECTS"
10191 </p>
10192 <p>S: "129"
10193 </p>
10194 </blockquote><p>
10195
10196 </p>
10197 <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10198 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10199 <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10200 Get list of available effects</h3>
10201
10202 <p>The set of available internal effects can change at
10203 runtime. The front-end can retrieve the list of internal
10204 effects, available to the sampler by sending the following
10205 command:
10206 </p>
10207 <p>
10208 </p>
10209 <blockquote class="text">
10210 <p>LIST AVAILABLE_EFFECTS
10211 </p>
10212 </blockquote><p>
10213
10214 </p>
10215 <p>Possible Answers:
10216 </p>
10217 <p>
10218 </p>
10219 <blockquote class="text">
10220 <p>The sampler will answer by returning a comma
10221 separated list with numerical IDs of effects. Note:
10222 the numercial ID of an effect is generated by the
10223 sampler for the current moment. The numerical ID of
10224 the same effect can change at runtime, e.g. when the
10225 user requests a rescan of available effect plugins.
10226
10227 </p>
10228 </blockquote><p>
10229
10230 </p>
10231 <p>Example:
10232 </p>
10233 <p>
10234 </p>
10235 <blockquote class="text">
10236 <p>C: "LIST AVAILABLE_EFFECTS"
10237 </p>
10238 <p>S: "5,6,7,120,121,122,123,124"
10239 </p>
10240 </blockquote><p>
10241
10242 </p>
10243 <a name="GET EFFECT INFO"></a><br /><hr />
10244 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10245 <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10246 Retrieving general information about an effect</h3>
10247
10248 <p>The front-end can ask for general informations about an
10249 effect by sending the following command:
10250 </p>
10251 <p>
10252 </p>
10253 <blockquote class="text">
10254 <p>GET EFFECT INFO &lt;effect-index&gt;
10255 </p>
10256 </blockquote><p>
10257
10258 </p>
10259 <p>Where &lt;effect-index&gt; is the numerical ID of an
10260 effect as returned by the
10261 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10262 command.
10263 </p>
10264 <p>Possible Answers:
10265 </p>
10266 <p>
10267 </p>
10268 <blockquote class="text">
10269 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10270 Each answer line begins with the effect information
10271 category name, followed by a colon and then a space
10272 character &lt;SP&gt; and finally the info character
10273 string to that effect information category. At the
10274 moment the following categories are defined:
10275 </p>
10276 <p>
10277 </p>
10278 <blockquote class="text">
10279 <p>SYSTEM -
10280 </p>
10281 <blockquote class="text">
10282 <p>name of the effect plugin system
10283 the effect is based on
10284 (e.g. "LADSPA")
10285 </p>
10286 </blockquote>
10287
10288
10289 <p>MODULE -
10290 </p>
10291 <blockquote class="text">
10292 <p>module of the effect plugin
10293 system that contains this effect,
10294 the module is usually the
10295 dynamic-linked library (DLL)
10296 filename of the effect plugin,
10297 including full path (note that this
10298 filename may contain
10299 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10300 </p>
10301 </blockquote>
10302
10303
10304 <p>NAME -
10305 </p>
10306 <blockquote class="text">
10307 <p>character string defining the
10308 unique name of the effect within its
10309 module (note that the character
10310 string may contain
10311 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10312 </p>
10313 </blockquote>
10314
10315
10316 <p>DESCRIPTION -
10317 </p>
10318 <blockquote class="text">
10319 <p>human readable name of the
10320 effect, intended to be displayed in
10321 user interfaces (note that the
10322 character string may contain
10323 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10324 </p>
10325 </blockquote>
10326
10327
10328 </blockquote>
10329
10330
10331 </blockquote><p>
10332
10333 </p>
10334 <p>The mentioned fields above don't have to be in particular order.
10335 </p>
10336 <p>Example:
10337 </p>
10338 <p>
10339 </p>
10340 <blockquote class="text">
10341 <p>C: "GET EFFECT INFO 121"
10342 </p>
10343 <p>S: "SYSTEM: LADSPA"
10344 </p>
10345 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10346 </p>
10347 <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10348 </p>
10349 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10350 </p>
10351 <p>&nbsp;&nbsp;&nbsp;"."
10352 </p>
10353 </blockquote><p>
10354
10355 </p>
10356 <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10357 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10358 <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10359 Creating an instance of an effect by its portable ID</h3>
10360
10361 <p>The front-end can spawn an instance of the desired
10362 effect by sending the following command:
10363 </p>
10364 <p>
10365 </p>
10366 <blockquote class="text">
10367 <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10368 </p>
10369 </blockquote><p>
10370
10371 </p>
10372 <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10373 &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10374 the "NAME" field as returned by the
10375 <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>
10376 command. The filename of argument &lt;module&gt; and the
10377 character string of argument &lt;effect-name&gt; may contain
10378 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10379 </p>
10380 <p>The sampler will try to load the requested effect and to
10381 create an instance of it. To allow loading the same effect
10382 on a different machine, probably even running a completely
10383 different operating system (e.g. Linux vs. Windows), the
10384 sampler tries to match &lt;module&gt; "softly". That means
10385 it first tries to find an effect that exactly matches the
10386 given &lt;module&gt; argument. If there is no exact match,
10387 the sampler will try to lower the restrictions on matching
10388 the &lt;module&gt; argument more and more, e.g. by ignoring
10389 upper / lower case differences and by ignoring the path of
10390 the DLL filename and file extension. If there is still no
10391 match at the end, the sampler will try to ignore the
10392 &lt;module&gt; argument completely and as a last resort
10393 search for an effect that only matches the given
10394 &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10395 </p>
10396 <p>Possible Answers:
10397 </p>
10398 <p>
10399 </p>
10400 <blockquote class="text">
10401 <p>"OK[&lt;effect-instance&gt;]" -
10402 </p>
10403 <blockquote class="text">
10404 <p>in case the effect instance was
10405 successfully created, where
10406 &lt;effect-instance&gt; is the numerical ID
10407 of the new effect instance
10408 </p>
10409 </blockquote>
10410
10411
10412 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10413 </p>
10414 <blockquote class="text">
10415 <p>in case the effect instance was spawned
10416 successfully, but there are noteworthy
10417 issue(s) related, providing an appropriate
10418 warning code and warning message
10419 </p>
10420 </blockquote>
10421
10422
10423 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10424 </p>
10425 <blockquote class="text">
10426 <p>if the effect could not be instantiated
10427 </p>
10428 </blockquote>
10429
10430
10431 </blockquote><p>
10432
10433 </p>
10434 <p>Examples:
10435 </p>
10436 <p>
10437 </p>
10438 <blockquote class="text">
10439 <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10440 </p>
10441 <p>S: "OK[0]"
10442 </p>
10443 </blockquote><p>
10444
10445 </p>
10446 <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10447 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10448 <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10449 Creating an instance of an effect by its numerical ID</h3>
10450
10451 <p>The front-end can spawn an instance of the desired
10452 effect by sending the following command:
10453 </p>
10454 <p>
10455 </p>
10456 <blockquote class="text">
10457 <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10458 </p>
10459 </blockquote><p>
10460
10461 </p>
10462 <p>Where &lt;effect-index&gt; is the numerical ID of the
10463 effect as returned by the
10464 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10465 command.
10466 </p>
10467 <p>The sampler will try to load the requested effect and to
10468 create an instance of it.
10469 </p>
10470 <p>Note: Since the numerical ID of a certain effect can
10471 change at any time, you should not use this command in
10472 LSCP files to restore a certain effect at a later time! To
10473 store a sampler session including all its effects, use the
10474 <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10475 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
10476 allows to restore a sampler session with all its effects
10477 also on other machines, possibly even running a completely
10478 different operating system (e.g. Linux vs. Windows), with
10479 different plugin directories or plugin DLL names.
10480 </p>
10481 <p>Possible Answers:
10482 </p>
10483 <p>
10484 </p>
10485 <blockquote class="text">
10486 <p>"OK[&lt;effect-instance&gt;]" -
10487 </p>
10488 <blockquote class="text">
10489 <p>in case the effect instance was
10490 successfully created, where
10491 &lt;effect-instance&gt; is the numerical ID
10492 of the new effect instance
10493 </p>
10494 </blockquote>
10495
10496
10497 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10498 </p>
10499 <blockquote class="text">
10500 <p>in case the effect instance was spawned
10501 successfully, but there are noteworthy
10502 issue(s) related, providing an appropriate
10503 warning code and warning message
10504 </p>
10505 </blockquote>
10506
10507
10508 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10509 </p>
10510 <blockquote class="text">
10511 <p>if the effect could not be instantiated
10512 </p>
10513 </blockquote>
10514
10515
10516 </blockquote><p>
10517
10518 </p>
10519 <p>Examples:
10520 </p>
10521 <p>
10522 </p>
10523 <blockquote class="text">
10524 <p>C: "CREATE EFFECT_INSTANCE 72"
10525 </p>
10526 <p>S: "OK[5]"
10527 </p>
10528 </blockquote><p>
10529
10530 </p>
10531 <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10532 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10533 <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10534 Destroy an effect instance</h3>
10535
10536 <p>The front-end can destroy an unusued effect instance and
10537 thus freeing it from memory by sending the following command:
10538 </p>
10539 <p>
10540 </p>
10541 <blockquote class="text">
10542 <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10543 </p>
10544 </blockquote><p>
10545
10546 </p>
10547 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10548 effect instance as returned by the
10549 <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
10550 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10551 command.
10552 </p>
10553 <p>The effect instance can only be destroyed if it's not
10554 used in any part of the sampler's audio signal path anymore.
10555 If the effect instance is still in use somewhere, trying to
10556 destroy the effect instance will result in an error
10557 message.
10558 </p>
10559 <p>Possible Answers:
10560 </p>
10561 <p>
10562 </p>
10563 <blockquote class="text">
10564 <p>"OK" -
10565 </p>
10566 <blockquote class="text">
10567 <p>in case the effect instance was successfully destroyed
10568 </p>
10569 </blockquote>
10570
10571
10572 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10573 </p>
10574 <blockquote class="text">
10575 <p>in case it failed, providing an appropriate error code and
10576 error message
10577 </p>
10578 </blockquote>
10579
10580
10581 </blockquote><p>
10582
10583 </p>
10584 <p>Examples:
10585 </p>
10586 <p>
10587 </p>
10588 <blockquote class="text">
10589 <p>C: "DESTROY EFFECT_INSTANCE 5"
10590 </p>
10591 <p>S: "OK"
10592 </p>
10593 </blockquote><p>
10594
10595 </p>
10596 <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10597 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10598 <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10599 Retrieve amount of effect instances</h3>
10600
10601 <p>The front-end can retrieve the current amount of effect
10602 instances by sending the following command:
10603 </p>
10604 <p>
10605 </p>
10606 <blockquote class="text">
10607 <p>GET EFFECT_INSTANCES
10608 </p>
10609 </blockquote><p>
10610
10611 </p>
10612 <p>Possible Answers:
10613 </p>
10614 <p>
10615 </p>
10616 <blockquote class="text">
10617 <p>The sampler will answer by returning the current
10618 number of effect instances created and not yet
10619 destroyed in the current sampler session.
10620 </p>
10621 </blockquote><p>
10622
10623 </p>
10624 <p>Examples:
10625 </p>
10626 <p>
10627 </p>
10628 <blockquote class="text">
10629 <p>C: "GET EFFECT_INSTANCES"
10630 </p>
10631 <p>S: "14"
10632 </p>
10633 </blockquote><p>
10634
10635 </p>
10636 <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
10637 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10638 <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
10639 Get list of effect instances</h3>
10640
10641 <p>The front-end can retrieve the current list of effect
10642 instances by sending the following command:
10643 </p>
10644 <p>
10645 </p>
10646 <blockquote class="text">
10647 <p>LIST EFFECT_INSTANCES
10648 </p>
10649 </blockquote><p>
10650
10651 </p>
10652 <p>Possible Answers:
10653 </p>
10654 <p>
10655 </p>
10656 <blockquote class="text">
10657 <p>The sampler will answer by returning a comma
10658 separated list with numerical IDs of effects
10659 instances.
10660
10661 </p>
10662 </blockquote><p>
10663
10664 </p>
10665 <p>Example:
10666 </p>
10667 <p>
10668 </p>
10669 <blockquote class="text">
10670 <p>C: "LIST EFFECT_INSTANCES"
10671 </p>
10672 <p>S: "9,11,14,15,16,17,25"
10673 </p>
10674 </blockquote><p>
10675
10676 </p>
10677 <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
10678 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10679 <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
10680 Retrieving current information about an effect instance</h3>
10681
10682 <p>The front-end can ask for the current informations about
10683 a particular effect instance by sending the following command:
10684 </p>
10685 <p>
10686 </p>
10687 <blockquote class="text">
10688 <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
10689 </p>
10690 </blockquote><p>
10691
10692 </p>
10693 <p>Where &lt;effect-instance&gt; is the numerical ID of an
10694 effect instance as returned by the
10695 <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>
10696 or
10697 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10698 command.
10699 </p>
10700 <p>Possible Answers:
10701 </p>
10702 <p>
10703 </p>
10704 <blockquote class="text">
10705 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10706 Each answer line begins with the information
10707 category name, followed by a colon and then a space
10708 character &lt;SP&gt; and finally the info character
10709 string to that information category. At the
10710 moment the following categories are defined:
10711 </p>
10712 <p>
10713 </p>
10714 <blockquote class="text">
10715 <p>SYSTEM -
10716 </p>
10717 <blockquote class="text">
10718 <p>name of the effect plugin system
10719 the effect is based on
10720 (e.g. "LADSPA")
10721 </p>
10722 </blockquote>
10723
10724
10725 <p>MODULE -
10726 </p>
10727 <blockquote class="text">
10728 <p>module of the effect plugin
10729 system that contains this effect,
10730 the module is usually the
10731 dynamic-linked library (DLL)
10732 filename of the effect plugin,
10733 including full path (note that this
10734 filename may contain
10735 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10736 </p>
10737 </blockquote>
10738
10739
10740 <p>NAME -
10741 </p>
10742 <blockquote class="text">
10743 <p>character string defining the
10744 unique name of the effect within its
10745 module (note that the character
10746 string may contain
10747 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10748 </p>
10749 </blockquote>
10750
10751
10752 <p>DESCRIPTION -
10753 </p>
10754 <blockquote class="text">
10755 <p>human readable name of the
10756 effect, intended to be displayed in
10757 user interfaces (note that the
10758 character string may contain
10759 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10760 </p>
10761 </blockquote>
10762
10763
10764 <p>INPUT_CONTROLS -
10765 </p>
10766 <blockquote class="text">
10767 <p>amount of input controls the
10768 effect instance provides, to allow
10769 controlling the effect parameters in
10770 realtime
10771 </p>
10772 </blockquote>
10773
10774
10775 </blockquote>
10776
10777
10778 </blockquote><p>
10779
10780 </p>
10781 <p>The mentioned fields above don't have to be in particular order.
10782 </p>
10783 <p>Example:
10784 </p>
10785 <p>
10786 </p>
10787 <blockquote class="text">
10788 <p>C: "GET EFFECT_INSTANCE INFO 3"
10789 </p>
10790 <p>S: "SYSTEM: LADSPA"
10791 </p>
10792 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
10793 </p>
10794 <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
10795 </p>
10796 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
10797 </p>
10798 <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
10799 </p>
10800 <p>&nbsp;&nbsp;&nbsp;"."
10801 </p>
10802 </blockquote><p>
10803
10804 </p>
10805 <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
10806 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10807 <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
10808 Retrieving information about an effect parameter</h3>
10809
10810 <p>Effects typically provide a certain set of effect
10811 parameters which can be altered by the user in realtime
10812 (e.g. depth of a reverb effect, duration of a delay effect,
10813 dry / wet signal ratio). Those controllable effect parameters
10814 are called "input controls". The front-end can ask for the
10815 current informations of an effect instance's input control
10816 by sending the following command:
10817 </p>
10818 <p>
10819 </p>
10820 <blockquote class="text">
10821 <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
10822 </p>
10823 </blockquote><p>
10824
10825 </p>
10826 <p>Where &lt;effect-instance&gt; is the numerical ID of an
10827 effect instance as returned by the
10828 <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>
10829 or
10830 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10831 command and &lt;input-control&gt; is the index of the input
10832 control within the numerical bounds as returned by the
10833 "INPUT_CONTROLS" field of the
10834 <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>
10835 command.
10836 </p>
10837 <p>Possible Answers:
10838 </p>
10839 <p>
10840 </p>
10841 <blockquote class="text">
10842 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10843 Each answer line begins with the information
10844 category name, followed by a colon and then a space
10845 character &lt;SP&gt; and finally the info character
10846 string to that information category. There are
10847 information categories which are always returned,
10848 independent of the respective effect parameter and
10849 there are optional information categories
10850 which are only shown for certain effect parameters.
10851 At the moment the following categories are defined:
10852 </p>
10853 <p>
10854 </p>
10855 <blockquote class="text">
10856 <p>DESCRIPTION -
10857 </p>
10858 <blockquote class="text">
10859 <p>(always returned)
10860 human readable name of the
10861 effect parameter, intended to be
10862 displayed in user interfaces (note
10863 that the character string may
10864 contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10865 </p>
10866 </blockquote>
10867
10868
10869 <p>VALUE -
10870 </p>
10871 <blockquote class="text">
10872 <p>
10873 (always returned)
10874 current (optional dotted)
10875 floating point value of this effect
10876 parameter
10877 </p>
10878 </blockquote>
10879
10880
10881 <p>RANGE_MIN -
10882 </p>
10883 <blockquote class="text">
10884 <p>
10885 (optionally returned)
10886 minimum allowed value for this
10887 effect parameter
10888 </p>
10889 </blockquote>
10890
10891
10892 <p>RANGE_MAX -
10893 </p>
10894 <blockquote class="text">
10895 <p>
10896 (optionally returned)
10897 maximum allowed value for this
10898 effect parameter
10899 </p>
10900 </blockquote>
10901
10902
10903 <p>POSSIBILITIES -
10904 </p>
10905 <blockquote class="text">
10906 <p>
10907 (optionally returned)
10908 comma separated list of
10909 (optional dotted) floating point
10910 numbers, reflecting the exact set of
10911 possible values for this effect
10912 parameter
10913 </p>
10914 </blockquote>
10915
10916
10917 <p>DEFAULT -
10918 </p>
10919 <blockquote class="text">
10920 <p>
10921 (optionally returned)
10922 default value of this effect
10923 parameter
10924 </p>
10925 </blockquote>
10926
10927
10928 </blockquote>
10929
10930
10931 </blockquote><p>
10932
10933 </p>
10934 <p>The mentioned fields above don't have to be in particular order.
10935 </p>
10936 <p>Example:
10937 </p>
10938 <p>
10939 </p>
10940 <blockquote class="text">
10941 <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
10942 </p>
10943 <p>S: "DESCRIPTION: Base delay (s)"
10944 </p>
10945 <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
10946 </p>
10947 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
10948 </p>
10949 <p>&nbsp;&nbsp;&nbsp;"."
10950 </p>
10951 </blockquote><p>
10952
10953 </p>
10954 <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
10955 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10956 <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
10957 Altering an effect parameter</h3>
10958
10959 <p>The front-end can alter the current value of an effect
10960 parameter by sending the following command:
10961 </p>
10962 <p>
10963 </p>
10964 <blockquote class="text">
10965 <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
10966 </p>
10967 </blockquote><p>
10968
10969 </p>
10970 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10971 effect instance as returned by the
10972 <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
10973 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10974 command, &lt;input-control&gt; is the index of the input
10975 control within the numerical bounds as returned by the
10976 "INPUT_CONTROLS" field of the
10977 <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>
10978 command and &lt;value&gt; is the new (optional dotted)
10979 floating point value for this effect parameter.
10980 </p>
10981 <p>Possible Answers:
10982 </p>
10983 <p>
10984 </p>
10985 <blockquote class="text">
10986 <p>"OK" -
10987 </p>
10988 <blockquote class="text">
10989 <p>in case the effect was altered successfully
10990 </p>
10991 </blockquote>
10992
10993
10994 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10995 </p>
10996 <blockquote class="text">
10997 <p>in case it failed, providing an appropriate error code and
10998 error message
10999 </p>
11000 </blockquote>
11001
11002
11003 </blockquote><p>
11004
11005 </p>
11006 <p>Examples:
11007 </p>
11008 <p>
11009 </p>
11010 <blockquote class="text">
11011 <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11012 </p>
11013 <p>S: "OK"
11014 </p>
11015 </blockquote><p>
11016
11017 </p>
11018 <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11019 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11020 <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11021 Retrieve amount of send effect chains</h3>
11022
11023 <p>The front-end can retrieve the current amount of send
11024 effect chains of an audio output device by sending the
11025 following command:
11026 </p>
11027 <p>
11028 </p>
11029 <blockquote class="text">
11030 <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11031 </p>
11032 </blockquote><p>
11033
11034 </p>
11035 <p>Where &lt;audio-device&gt; should be replaced by the
11036 numerical ID of the audio output device as given by the
11037 <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>
11038 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>
11039 command.
11040 </p>
11041 <p>Possible Answers:
11042 </p>
11043 <p>
11044 </p>
11045 <blockquote class="text">
11046 <p>The sampler will answer by returning the current
11047 number of send effect chains of the supplied audio
11048 output device.
11049 </p>
11050 </blockquote><p>
11051
11052 </p>
11053 <p>Examples:
11054 </p>
11055 <p>
11056 </p>
11057 <blockquote class="text">
11058 <p>C: "GET SEND_EFFECT_CHAINS 0"
11059 </p>
11060 <p>S: "4"
11061 </p>
11062 </blockquote><p>
11063
11064 </p>
11065 <a name="LIST SEND_EFFECT_CHAINS"></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.13"></a><h3>6.11.13.&nbsp;
11068 Retrieve list of send effect chains</h3>
11069
11070 <p>The front-end can retrieve the current list of send
11071 effect chains of an audio output device by sending the
11072 following command:
11073 </p>
11074 <p>
11075 </p>
11076 <blockquote class="text">
11077 <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11078 </p>
11079 </blockquote><p>
11080
11081 </p>
11082 <p>Where &lt;audio-device&gt; should be replaced by the
11083 numerical ID of the audio output device as given by the
11084 <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>
11085 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>
11086 command.
11087 </p>
11088 <p>Possible Answers:
11089 </p>
11090 <p>
11091 </p>
11092 <blockquote class="text">
11093 <p>The sampler will answer by returning a comma
11094 separated list with numerical IDs of send effect
11095 chains of the supplied audio output device.
11096
11097 </p>
11098 </blockquote><p>
11099
11100 </p>
11101 <p>Examples:
11102 </p>
11103 <p>
11104 </p>
11105 <blockquote class="text">
11106 <p>C: "LIST SEND_EFFECT_CHAINS 0"
11107 </p>
11108 <p>S: "3,4,7"
11109 </p>
11110 </blockquote><p>
11111
11112 </p>
11113 <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11114 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11115 <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11116 Add send effect chain</h3>
11117
11118 <p>The front-end can add a send effect chain by sending the
11119 following command:
11120 </p>
11121 <p>
11122 </p>
11123 <blockquote class="text">
11124 <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11125 </p>
11126 </blockquote><p>
11127
11128 </p>
11129 <p>Where &lt;audio-device&gt; should be replaced by the
11130 numerical ID of the audio output device as given by the
11131 <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>
11132 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>
11133 command.
11134 </p>
11135 <p>Possible Answers:
11136 </p>
11137 <p>
11138 </p>
11139 <blockquote class="text">
11140 <p>"OK[&lt;effect-chain&gt;]" -
11141 </p>
11142 <blockquote class="text">
11143 <p>in case the send effect chain was
11144 added successfully, where
11145 &lt;effect-chain&gt; is the numerical ID
11146 of the new send effect chain
11147 </p>
11148 </blockquote>
11149
11150
11151 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11152 </p>
11153 <blockquote class="text">
11154 <p>if the send effect chain could not be added
11155 </p>
11156 </blockquote>
11157
11158
11159 </blockquote><p>
11160
11161 </p>
11162 <p>Examples:
11163 </p>
11164 <p>
11165 </p>
11166 <blockquote class="text">
11167 <p>C: "ADD SEND_EFFECT_CHAIN 0"
11168 </p>
11169 <p>S: "OK[2]"
11170 </p>
11171 </blockquote><p>
11172
11173 </p>
11174 <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11175 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11176 <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11177 Remove send effect chain</h3>
11178
11179 <p>The front-end can remove a send effect chain by sending
11180 the following command:
11181 </p>
11182 <p>
11183 </p>
11184 <blockquote class="text">
11185 <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11186 </p>
11187 </blockquote><p>
11188
11189 </p>
11190 <p>Where &lt;audio-device&gt; should be replaced by the
11191 numerical ID of the audio output device as given by the
11192 <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>
11193 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>
11194 command and &lt;effect-chain&gt; by the numerical ID as
11195 returned by the
11196 <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>
11197 or
11198 <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>
11199 command.
11200 </p>
11201 <p>Possible Answers:
11202 </p>
11203 <p>
11204 </p>
11205 <blockquote class="text">
11206 <p>"OK" -
11207 </p>
11208 <blockquote class="text">
11209 <p>in case the send effect chain was
11210 removed successfully
11211 </p>
11212 </blockquote>
11213
11214
11215 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11216 </p>
11217 <blockquote class="text">
11218 <p>if the send effect chain could not be removed
11219 </p>
11220 </blockquote>
11221
11222
11223 </blockquote><p>
11224
11225 </p>
11226 <p>Examples:
11227 </p>
11228 <p>
11229 </p>
11230 <blockquote class="text">
11231 <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11232 </p>
11233 <p>S: "OK"
11234 </p>
11235 </blockquote><p>
11236
11237 </p>
11238 <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11239 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11240 <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11241 Retrieving information about a send effect chain</h3>
11242
11243 <p>The front-end can ask for informations of a send effect
11244 chain by sending the following command:
11245 </p>
11246 <p>
11247 </p>
11248 <blockquote class="text">
11249 <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11250 </p>
11251 </blockquote><p>
11252
11253 </p>
11254 <p>Where &lt;audio-device&gt; should be replaced by the
11255 numerical ID of the audio output device as given by the
11256 <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>
11257 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>
11258 command and &lt;effect-chain&gt; by the numerical ID as
11259 returned by the
11260 <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>
11261 or
11262 <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>
11263 command.
11264 </p>
11265 <p>Possible Answers:
11266 </p>
11267 <p>
11268 </p>
11269 <blockquote class="text">
11270 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11271 Each answer line begins with the information
11272 category name, followed by a colon and then a space
11273 character &lt;SP&gt; and finally the info character
11274 string to that information category.
11275 At the moment the following categories are defined:
11276 </p>
11277 <p>
11278 </p>
11279 <blockquote class="text">
11280 <p>EFFECT_COUNT -
11281 </p>
11282 <blockquote class="text">
11283 <p>amount of effects in this send
11284 effect chain
11285 </p>
11286 </blockquote>
11287
11288
11289 <p>EFFECT_SEQUENCE -
11290 </p>
11291 <blockquote class="text">
11292 <p>comma separated list of the
11293 numerical IDs of the effect
11294 instances in this send effect chain,
11295 in the order as they are procssed in
11296 the effect chain
11297 </p>
11298 </blockquote>
11299
11300
11301 </blockquote>
11302
11303
11304 </blockquote><p>
11305
11306 </p>
11307 <p>The mentioned fields above don't have to be in particular order.
11308 </p>
11309 <p>Example:
11310 </p>
11311 <p>
11312 </p>
11313 <blockquote class="text">
11314 <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11315 </p>
11316 <p>S: "EFFECT_COUNT: 3"
11317 </p>
11318 <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11319 </p>
11320 <p>&nbsp;&nbsp;&nbsp;"."
11321 </p>
11322 </blockquote><p>
11323
11324 </p>
11325 <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11326 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11327 <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11328 Append effect instance to a send effect chain</h3>
11329
11330 <p>The front-end can add an unused effect instance to the
11331 end of a send effect chain by sending the following command:
11332 </p>
11333 <p>
11334 </p>
11335 <blockquote class="text">
11336 <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11337 </p>
11338 </blockquote><p>
11339
11340 </p>
11341 <p>Where &lt;audio-device&gt; should be replaced by the
11342 numerical ID of the audio output device as given by the
11343 <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>
11344 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>
11345 command and &lt;effect-chain&gt; by the numerical ID as
11346 returned by the
11347 <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>
11348 or
11349 <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>
11350 command and &lt;effect-instance&gt; as returned by the
11351 <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
11352 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11353 command.
11354 </p>
11355 <p>Only unused effect instances can be added to the effect
11356 chain. Trying to add an effect instance which is already in
11357 use somewhere in the audio signal path of the sampler will
11358 result in an error.
11359 </p>
11360 <p>Possible Answers:
11361 </p>
11362 <p>
11363 </p>
11364 <blockquote class="text">
11365 <p>"OK" -
11366 </p>
11367 <blockquote class="text">
11368 <p>in case the effect instance was
11369 added successfully to the chain
11370 </p>
11371 </blockquote>
11372
11373
11374 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11375 </p>
11376 <blockquote class="text">
11377 <p>if the effect instance could not be added
11378 </p>
11379 </blockquote>
11380
11381
11382 </blockquote><p>
11383
11384 </p>
11385 <p>Examples:
11386 </p>
11387 <p>
11388 </p>
11389 <blockquote class="text">
11390 <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11391 </p>
11392 <p>S: "OK"
11393 </p>
11394 </blockquote><p>
11395
11396 </p>
11397 <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11398 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11399 <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11400 Insert effect instance to a send effect chain</h3>
11401
11402 <p>The front-end can add an unused effect instance to a
11403 certain position of a send effect chain by sending the
11404 following command:
11405 </p>
11406 <p>
11407 </p>
11408 <blockquote class="text">
11409 <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11410 </p>
11411 </blockquote><p>
11412
11413 </p>
11414 <p>Where &lt;audio-device&gt; should be replaced by the
11415 numerical ID of the audio output device as given by the
11416 <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>
11417 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>
11418 command, &lt;effect-chain&gt; by the numerical ID as
11419 returned by the
11420 <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>
11421 or
11422 <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>
11423 command, &lt;effect-instance&gt; as returned by the
11424 <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
11425 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11426 command and &lt;chain-pos&gt; the exact position of the
11427 effect chain where the supplied effect shall be inserted
11428 to.
11429 </p>
11430 <p>Only unused effect instances can be added to the effect
11431 chain. Trying to add an effect instance which is already in
11432 use somewhere in the audio signal path of the sampler will
11433 result in an error.
11434 </p>
11435 <p>Possible Answers:
11436 </p>
11437 <p>
11438 </p>
11439 <blockquote class="text">
11440 <p>"OK" -
11441 </p>
11442 <blockquote class="text">
11443 <p>in case the effect instance was
11444 added successfully to the chain
11445 </p>
11446 </blockquote>
11447
11448
11449 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11450 </p>
11451 <blockquote class="text">
11452 <p>if the effect instance could not be added
11453 </p>
11454 </blockquote>
11455
11456
11457 </blockquote><p>
11458
11459 </p>
11460 <p>Examples:
11461 </p>
11462 <p>
11463 </p>
11464 <blockquote class="text">
11465 <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11466 </p>
11467 <p>S: "OK"
11468 </p>
11469 </blockquote><p>
11470
11471 </p>
11472 <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11473 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11474 <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11475 Remove effect instance from send effect chain</h3>
11476
11477 <p>The front-end can remove an effect instance from a
11478 certain position of a send effect chain by sending the
11479 following command:
11480 </p>
11481 <p>
11482 </p>
11483 <blockquote class="text">
11484 <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11485 </p>
11486 </blockquote><p>
11487
11488 </p>
11489 <p>Where &lt;audio-device&gt; should be replaced by the
11490 numerical ID of the audio output device as given by the
11491 <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>
11492 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>
11493 command, &lt;effect-chain&gt; by the numerical ID as
11494 returned by the
11495 <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>
11496 or
11497 <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>
11498 command and &lt;chain-pos&gt; the exact position of the
11499 effect instance to be removed from the effect chain.
11500 </p>
11501 <p>Possible Answers:
11502 </p>
11503 <p>
11504 </p>
11505 <blockquote class="text">
11506 <p>"OK" -
11507 </p>
11508 <blockquote class="text">
11509 <p>in case the effect instance was
11510 removed successfully
11511 </p>
11512 </blockquote>
11513
11514
11515 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11516 </p>
11517 <blockquote class="text">
11518 <p>if the effect instance could not be removed
11519 </p>
11520 </blockquote>
11521
11522
11523 </blockquote><p>
11524
11525 </p>
11526 <p>Examples:
11527 </p>
11528 <p>
11529 </p>
11530 <blockquote class="text">
11531 <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11532 </p>
11533 <p>S: "OK"
11534 </p>
11535 </blockquote><p>
11536
11537 </p>
11538 <a name="command_syntax"></a><br /><hr />
11539 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11540 <a name="rfc.section.7"></a><h3>7.&nbsp;
11541 Command Syntax</h3>
11542
11543 <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>
11544 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>)
11545 where applicable.
11546
11547 </p>
11548 <p>input =
11549 </p>
11550 <blockquote class="text">
11551 <p>line LF
11552
11553 </p>
11554 <p>/ line CR LF
11555
11556 </p>
11557 </blockquote><p>
11558
11559 </p>
11560 <p>line =
11561 </p>
11562 <blockquote class="text">
11563 <p>/* epsilon (empty line ignored) */
11564
11565 </p>
11566 <p>/ comment
11567
11568 </p>
11569 <p>/ command
11570
11571 </p>
11572 <p>/ error
11573
11574 </p>
11575 </blockquote><p>
11576
11577 </p>
11578 <p>comment =
11579 </p>
11580 <blockquote class="text">
11581 <p>'#'
11582
11583 </p>
11584 <p>/ comment '#'
11585
11586 </p>
11587 <p>/ comment SP
11588
11589 </p>
11590 <p>/ comment number
11591
11592 </p>
11593 <p>/ comment string
11594
11595 </p>
11596 </blockquote><p>
11597
11598 </p>
11599 <p>command =
11600 </p>
11601 <blockquote class="text">
11602 <p>ADD SP add_instruction
11603
11604 </p>
11605 <p>/ MAP SP map_instruction
11606
11607 </p>
11608 <p>/ UNMAP SP unmap_instruction
11609
11610 </p>
11611 <p>/ GET SP get_instruction
11612
11613 </p>
11614 <p>/ CREATE SP create_instruction
11615
11616 </p>
11617 <p>/ DESTROY SP destroy_instruction
11618
11619 </p>
11620 <p>/ LIST SP list_instruction
11621
11622 </p>
11623 <p>/ LOAD SP load_instruction
11624
11625 </p>
11626 <p>/ REMOVE SP remove_instruction
11627
11628 </p>
11629 <p>/ SET SP set_instruction
11630
11631 </p>
11632 <p>/ SUBSCRIBE SP subscribe_event
11633
11634 </p>
11635 <p>/ UNSUBSCRIBE SP unsubscribe_event
11636
11637 </p>
11638 <p>/ RESET SP reset_instruction
11639
11640 </p>
11641 <p>/ CLEAR SP clear_instruction
11642
11643 </p>
11644 <p>/ FIND SP find_instruction
11645
11646 </p>
11647 <p>/ MOVE SP move_instruction
11648
11649 </p>
11650 <p>/ COPY SP copy_instruction
11651
11652 </p>
11653 <p>/ EDIT SP edit_instruction
11654
11655 </p>
11656 <p>/ FORMAT SP format_instruction
11657
11658 </p>
11659 <p>/ SEND SP send_instruction
11660
11661 </p>
11662 <p>/ APPEND SP append_instruction
11663
11664 </p>
11665 <p>/ INSERT SP insert_instruction
11666
11667 </p>
11668 <p>/ RESET
11669
11670 </p>
11671 <p>/ QUIT
11672
11673 </p>
11674 </blockquote><p>
11675
11676 </p>
11677 <p>add_instruction =
11678 </p>
11679 <blockquote class="text">
11680 <p>CHANNEL
11681
11682 </p>
11683 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11684
11685 </p>
11686 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
11687
11688 </p>
11689 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11690
11691 </p>
11692 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
11693
11694 </p>
11695 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11696
11697 </p>
11698 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
11699
11700 </p>
11701 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
11702
11703 </p>
11704 <p>/ DB_INSTRUMENTS SP db_path SP filename
11705
11706 </p>
11707 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
11708
11709 </p>
11710 <p>/ MIDI_INSTRUMENT_MAP
11711
11712 </p>
11713 <p>/ MIDI_INSTRUMENT_MAP SP map_name
11714
11715 </p>
11716 <p>/ SEND_EFFECT_CHAIN SP device_index
11717
11718 </p>
11719 </blockquote><p>
11720
11721 </p>
11722 <p>subscribe_event =
11723 </p>
11724 <blockquote class="text">
11725 <p>AUDIO_OUTPUT_DEVICE_COUNT
11726
11727 </p>
11728 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11729
11730 </p>
11731 <p>/ MIDI_INPUT_DEVICE_COUNT
11732
11733 </p>
11734 <p>/ MIDI_INPUT_DEVICE_INFO
11735
11736 </p>
11737 <p>/ CHANNEL_COUNT
11738
11739 </p>
11740 <p>/ CHANNEL_MIDI
11741
11742 </p>
11743 <p>/ DEVICE_MIDI
11744
11745 </p>
11746 <p>/ VOICE_COUNT
11747
11748 </p>
11749 <p>/ STREAM_COUNT
11750
11751 </p>
11752 <p>/ BUFFER_FILL
11753
11754 </p>
11755 <p>/ CHANNEL_INFO
11756
11757 </p>
11758 <p>/ FX_SEND_COUNT
11759
11760 </p>
11761 <p>/ FX_SEND_INFO
11762
11763 </p>
11764 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11765
11766 </p>
11767 <p>/ MIDI_INSTRUMENT_MAP_INFO
11768
11769 </p>
11770 <p>/ MIDI_INSTRUMENT_COUNT
11771
11772 </p>
11773 <p>/ MIDI_INSTRUMENT_INFO
11774
11775 </p>
11776 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11777
11778 </p>
11779 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11780
11781 </p>
11782 <p>/ DB_INSTRUMENT_COUNT
11783
11784 </p>
11785 <p>/ DB_INSTRUMENT_INFO
11786
11787 </p>
11788 <p>/ DB_INSTRUMENTS_JOB_INFO
11789
11790 </p>
11791 <p>/ MISCELLANEOUS
11792
11793 </p>
11794 <p>/ TOTAL_STREAM_COUNT
11795
11796 </p>
11797 <p>/ TOTAL_VOICE_COUNT
11798
11799 </p>
11800 <p>/ GLOBAL_INFO
11801
11802 </p>
11803 <p>/ EFFECT_INSTANCE_COUNT
11804
11805 </p>
11806 <p>/ EFFECT_INSTANCE_INFO
11807
11808 </p>
11809 <p>/ SEND_EFFECT_CHAIN_COUNT
11810
11811 </p>
11812 <p>/ SEND_EFFECT_CHAIN_INFO
11813
11814 </p>
11815 </blockquote><p>
11816
11817 </p>
11818 <p>unsubscribe_event =
11819 </p>
11820 <blockquote class="text">
11821 <p>AUDIO_OUTPUT_DEVICE_COUNT
11822
11823 </p>
11824 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11825
11826 </p>
11827 <p>/ MIDI_INPUT_DEVICE_COUNT
11828
11829 </p>
11830 <p>/ MIDI_INPUT_DEVICE_INFO
11831
11832 </p>
11833 <p>/ CHANNEL_COUNT
11834
11835 </p>
11836 <p>/ CHANNEL_MIDI
11837
11838 </p>
11839 <p>/ DEVICE_MIDI
11840
11841 </p>
11842 <p>/ VOICE_COUNT
11843
11844 </p>
11845 <p>/ STREAM_COUNT
11846
11847 </p>
11848 <p>/ BUFFER_FILL
11849
11850 </p>
11851 <p>/ CHANNEL_INFO
11852
11853 </p>
11854 <p>/ FX_SEND_COUNT
11855
11856 </p>
11857 <p>/ FX_SEND_INFO
11858
11859 </p>
11860 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11861
11862 </p>
11863 <p>/ MIDI_INSTRUMENT_MAP_INFO
11864
11865 </p>
11866 <p>/ MIDI_INSTRUMENT_COUNT
11867
11868 </p>
11869 <p>/ MIDI_INSTRUMENT_INFO
11870
11871 </p>
11872 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11873
11874 </p>
11875 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11876
11877 </p>
11878 <p>/ DB_INSTRUMENT_COUNT
11879
11880 </p>
11881 <p>/ DB_INSTRUMENT_INFO
11882
11883 </p>
11884 <p>/ DB_INSTRUMENTS_JOB_INFO
11885
11886 </p>
11887 <p>/ MISCELLANEOUS
11888
11889 </p>
11890 <p>/ TOTAL_STREAM_COUNT
11891
11892 </p>
11893 <p>/ TOTAL_VOICE_COUNT
11894
11895 </p>
11896 <p>/ GLOBAL_INFO
11897
11898 </p>
11899 <p>/ EFFECT_INSTANCE_COUNT
11900
11901 </p>
11902 <p>/ EFFECT_INSTANCE_INFO
11903
11904 </p>
11905 <p>/ SEND_EFFECT_CHAIN_COUNT
11906
11907 </p>
11908 <p>/ SEND_EFFECT_CHAIN_INFO
11909
11910 </p>
11911 </blockquote><p>
11912
11913 </p>
11914 <p>map_instruction =
11915 </p>
11916 <blockquote class="text">
11917 <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
11918
11919 </p>
11920 <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
11921
11922 </p>
11923 <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
11924
11925 </p>
11926 <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
11927
11928 </p>
11929 </blockquote><p>
11930
11931 </p>
11932 <p>unmap_instruction =
11933 </p>
11934 <blockquote class="text">
11935 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
11936
11937 </p>
11938 </blockquote><p>
11939
11940 </p>
11941 <p>remove_instruction =
11942 </p>
11943 <blockquote class="text">
11944 <p>CHANNEL SP sampler_channel
11945
11946 </p>
11947 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
11948
11949 </p>
11950 <p>/ MIDI_INSTRUMENT_MAP SP ALL
11951
11952 </p>
11953 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
11954
11955 </p>
11956 <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
11957
11958 </p>
11959 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
11960
11961 </p>
11962 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
11963
11964 </p>
11965 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11966
11967 </p>
11968 <p>/ DB_INSTRUMENT SP db_path
11969
11970 </p>
11971 </blockquote><p>
11972
11973 </p>
11974 <p>get_instruction =
11975 </p>
11976 <blockquote class="text">
11977 <p>AVAILABLE_ENGINES
11978
11979 </p>
11980 <p>/ AVAILABLE_EFFECTS
11981
11982 </p>
11983 <p>/ EFFECT_INSTANCES
11984
11985 </p>
11986 <p>/ EFFECT SP INFO SP effect_index
11987
11988 </p>
11989 <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
11990
11991 </p>
11992 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
11993
11994 </p>
11995 <p>/ SEND_EFFECT_CHAINS SP device_index
11996
11997 </p>
11998 <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
11999
12000 </p>
12001 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12002
12003 </p>
12004 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
12005
12006 </p>
12007 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12008
12009 </p>
12010 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12011
12012 </p>
12013 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12014
12015 </p>
12016 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12017
12018 </p>
12019 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12020
12021 </p>
12022 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12023
12024 </p>
12025 <p>/ AUDIO_OUTPUT_DEVICES
12026
12027 </p>
12028 <p>/ MIDI_INPUT_DEVICES
12029
12030 </p>
12031 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12032
12033 </p>
12034 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12035
12036 </p>
12037 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12038
12039 </p>
12040 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12041
12042 </p>
12043 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12044
12045 </p>
12046 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12047
12048 </p>
12049 <p>/ CHANNELS
12050
12051 </p>
12052 <p>/ CHANNEL SP INFO SP sampler_channel
12053
12054 </p>
12055 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12056
12057 </p>
12058 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12059
12060 </p>
12061 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12062
12063 </p>
12064 <p>/ ENGINE SP INFO SP engine_name
12065
12066 </p>
12067 <p>/ SERVER SP INFO
12068
12069 </p>
12070 <p>/ TOTAL_STREAM_COUNT
12071
12072 </p>
12073 <p>/ TOTAL_VOICE_COUNT
12074
12075 </p>
12076 <p>/ TOTAL_VOICE_COUNT_MAX
12077
12078 </p>
12079 <p>/ MIDI_INSTRUMENTS SP midi_map
12080
12081 </p>
12082 <p>/ MIDI_INSTRUMENTS SP ALL
12083
12084 </p>
12085 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12086
12087 </p>
12088 <p>/ MIDI_INSTRUMENT_MAPS
12089
12090 </p>
12091 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12092
12093 </p>
12094 <p>/ FX_SENDS SP sampler_channel
12095
12096 </p>
12097 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12098
12099 </p>
12100 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12101
12102 </p>
12103 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12104
12105 </p>
12106 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12107
12108 </p>
12109 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12110
12111 </p>
12112 <p>/ DB_INSTRUMENTS SP db_path
12113
12114 </p>
12115 <p>/ DB_INSTRUMENT SP INFO SP db_path
12116
12117 </p>
12118 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12119
12120 </p>
12121 <p>/ VOLUME
12122
12123 </p>
12124 <p>/ VOICES
12125
12126 </p>
12127 <p>/ STREAMS
12128
12129 </p>
12130 <p>/ FILE SP INSTRUMENTS SP filename
12131
12132 </p>
12133 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12134
12135 </p>
12136 </blockquote><p>
12137
12138 </p>
12139 <p>set_instruction =
12140 </p>
12141 <blockquote class="text">
12142 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12143
12144 </p>
12145 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12146
12147 </p>
12148 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12149
12150 </p>
12151 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12152
12153 </p>
12154 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12155
12156 </p>
12157 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12158
12159 </p>
12160 <p>/ CHANNEL SP set_chan_instruction
12161
12162 </p>
12163 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12164
12165 </p>
12166 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12167
12168 </p>
12169 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12170
12171 </p>
12172 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12173
12174 </p>
12175 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12176
12177 </p>
12178 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12179
12180 </p>
12181 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12182
12183 </p>
12184 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12185
12186 </p>
12187 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12188
12189 </p>
12190 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12191
12192 </p>
12193 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12194
12195 </p>
12196 <p>/ ECHO SP boolean
12197
12198 </p>
12199 <p>/ VOLUME SP volume_value
12200
12201 </p>
12202 <p>/ VOICES SP number
12203
12204 </p>
12205 <p>/ STREAMS SP number
12206
12207 </p>
12208 </blockquote><p>
12209
12210 </p>
12211 <p>create_instruction =
12212 </p>
12213 <blockquote class="text">
12214 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12215
12216 </p>
12217 <p>/ AUDIO_OUTPUT_DEVICE SP string
12218
12219 </p>
12220 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12221
12222 </p>
12223 <p>/ MIDI_INPUT_DEVICE SP string
12224
12225 </p>
12226 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12227
12228 </p>
12229 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12230
12231 </p>
12232 <p>/ EFFECT_INSTANCE SP effect_index
12233
12234 </p>
12235 <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12236
12237 </p>
12238 </blockquote><p>
12239
12240 </p>
12241 <p>reset_instruction =
12242 </p>
12243 <blockquote class="text">
12244 <p>CHANNEL SP sampler_channel
12245
12246 </p>
12247 </blockquote><p>
12248
12249 </p>
12250 <p>clear_instruction =
12251 </p>
12252 <blockquote class="text">
12253 <p>MIDI_INSTRUMENTS SP midi_map
12254
12255 </p>
12256 <p>/ MIDI_INSTRUMENTS SP ALL
12257
12258 </p>
12259 </blockquote><p>
12260
12261 </p>
12262 <p>find_instruction =
12263 </p>
12264 <blockquote class="text">
12265 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12266
12267 </p>
12268 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12269
12270 </p>
12271 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12272
12273 </p>
12274 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12275
12276 </p>
12277 <p>/ LOST SP DB_INSTRUMENT_FILES
12278
12279 </p>
12280 </blockquote><p>
12281
12282 </p>
12283 <p>move_instruction =
12284 </p>
12285 <blockquote class="text">
12286 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12287
12288 </p>
12289 <p>/ DB_INSTRUMENT SP db_path SP db_path
12290
12291 </p>
12292 </blockquote><p>
12293
12294 </p>
12295 <p>copy_instruction =
12296 </p>
12297 <blockquote class="text">
12298 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12299
12300 </p>
12301 <p>/ DB_INSTRUMENT SP db_path SP db_path
12302
12303 </p>
12304 </blockquote><p>
12305
12306 </p>
12307 <p>destroy_instruction =
12308 </p>
12309 <blockquote class="text">
12310 <p>AUDIO_OUTPUT_DEVICE SP number
12311
12312 </p>
12313 <p>/ MIDI_INPUT_DEVICE SP number
12314
12315 </p>
12316 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12317
12318 </p>
12319 <p>/ EFFECT_INSTANCE SP number
12320
12321 </p>
12322 </blockquote><p>
12323
12324 </p>
12325 <p>load_instruction =
12326 </p>
12327 <blockquote class="text">
12328 <p>INSTRUMENT SP load_instr_args
12329
12330 </p>
12331 <p>/ ENGINE SP load_engine_args
12332
12333 </p>
12334 </blockquote><p>
12335
12336 </p>
12337 <p>append_instruction =
12338 </p>
12339 <blockquote class="text">
12340 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12341
12342 </p>
12343 </blockquote><p>
12344
12345 </p>
12346 <p>insert_instruction =
12347 </p>
12348 <blockquote class="text">
12349 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12350
12351 </p>
12352 </blockquote><p>
12353
12354 </p>
12355 <p>set_chan_instruction =
12356 </p>
12357 <blockquote class="text">
12358 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12359
12360 </p>
12361 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12362
12363 </p>
12364 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12365
12366 </p>
12367 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12368
12369 </p>
12370 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12371
12372 </p>
12373 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12374
12375 </p>
12376 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12377
12378 </p>
12379 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12380
12381 </p>
12382 <p>/ VOLUME SP sampler_channel SP volume_value
12383
12384 </p>
12385 <p>/ MUTE SP sampler_channel SP boolean
12386
12387 </p>
12388 <p>/ SOLO SP sampler_channel SP boolean
12389
12390 </p>
12391 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12392
12393 </p>
12394 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12395
12396 </p>
12397 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12398
12399 </p>
12400 </blockquote><p>
12401
12402 </p>
12403 <p>edit_instruction =
12404 </p>
12405 <blockquote class="text">
12406 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12407
12408 </p>
12409 </blockquote><p>
12410
12411 </p>
12412 <p>format_instruction =
12413 </p>
12414 <blockquote class="text">
12415 <p>INSTRUMENTS_DB
12416
12417 </p>
12418 </blockquote><p>
12419
12420 </p>
12421 <p>modal_arg =
12422 </p>
12423 <blockquote class="text">
12424 <p>/* epsilon (empty argument) */
12425
12426 </p>
12427 <p>/ NON_MODAL SP
12428
12429 </p>
12430 </blockquote><p>
12431
12432 </p>
12433 <p>key_val_list =
12434 </p>
12435 <blockquote class="text">
12436 <p>string '=' param_val_list
12437
12438 </p>
12439 <p>/ key_val_list SP string '=' param_val_list
12440
12441 </p>
12442 </blockquote><p>
12443
12444 </p>
12445 <p>buffer_size_type =
12446 </p>
12447 <blockquote class="text">
12448 <p>BYTES
12449
12450 </p>
12451 <p>/ PERCENTAGE
12452
12453 </p>
12454 </blockquote><p>
12455
12456 </p>
12457 <p>list_instruction =
12458 </p>
12459 <blockquote class="text">
12460 <p>AUDIO_OUTPUT_DEVICES
12461
12462 </p>
12463 <p>/ MIDI_INPUT_DEVICES
12464
12465 </p>
12466 <p>/ CHANNELS
12467
12468 </p>
12469 <p>/ AVAILABLE_ENGINES
12470
12471 </p>
12472 <p>/ AVAILABLE_EFFECTS
12473
12474 </p>
12475 <p>/ EFFECT_INSTANCES
12476
12477 </p>
12478 <p>/ SEND_EFFECT_CHAINS SP number
12479
12480 </p>
12481 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12482
12483 </p>
12484 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12485
12486 </p>
12487 <p>/ MIDI_INSTRUMENTS SP midi_map
12488
12489 </p>
12490 <p>/ MIDI_INSTRUMENTS SP ALL
12491
12492 </p>
12493 <p>/ MIDI_INSTRUMENT_MAPS
12494
12495 </p>
12496 <p>/ FX_SENDS SP sampler_channel
12497
12498 </p>
12499 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12500
12501 </p>
12502 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12503
12504 </p>
12505 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12506
12507 </p>
12508 <p>/ DB_INSTRUMENTS SP db_path
12509
12510 </p>
12511 <p>/ FILE SP INSTRUMENTS SP filename
12512
12513 </p>
12514 </blockquote><p>
12515
12516 </p>
12517 <p>send_instruction =
12518 </p>
12519 <blockquote class="text">
12520 <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12521
12522 </p>
12523 </blockquote><p>
12524
12525 </p>
12526 <p>load_instr_args =
12527 </p>
12528 <blockquote class="text">
12529 <p>filename SP instrument_index SP sampler_channel
12530
12531 </p>
12532 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12533
12534 </p>
12535 </blockquote><p>
12536
12537 </p>
12538 <p>load_engine_args =
12539 </p>
12540 <blockquote class="text">
12541 <p>engine_name SP sampler_channel
12542
12543 </p>
12544 </blockquote><p>
12545
12546 </p>
12547 <p>instr_load_mode =
12548 </p>
12549 <blockquote class="text">
12550 <p>ON_DEMAND
12551
12552 </p>
12553 <p>/ ON_DEMAND_HOLD
12554
12555 </p>
12556 <p>/ PERSISTENT
12557
12558 </p>
12559 </blockquote><p>
12560
12561 </p>
12562 <p>effect_instance =
12563 </p>
12564 <blockquote class="text">
12565 <p>number
12566
12567 </p>
12568 </blockquote><p>
12569
12570 </p>
12571 <p>device_index =
12572 </p>
12573 <blockquote class="text">
12574 <p>number
12575
12576 </p>
12577 </blockquote><p>
12578
12579 </p>
12580 <p>audio_channel_index =
12581 </p>
12582 <blockquote class="text">
12583 <p>number
12584
12585 </p>
12586 </blockquote><p>
12587
12588 </p>
12589 <p>audio_output_type_name =
12590 </p>
12591 <blockquote class="text">
12592 <p>string
12593
12594 </p>
12595 </blockquote><p>
12596
12597 </p>
12598 <p>midi_input_port_index =
12599 </p>
12600 <blockquote class="text">
12601 <p>number
12602
12603 </p>
12604 </blockquote><p>
12605
12606 </p>
12607 <p>midi_input_channel_index =
12608 </p>
12609 <blockquote class="text">
12610 <p>number
12611
12612 </p>
12613 <p>/ ALL
12614
12615 </p>
12616 </blockquote><p>
12617
12618 </p>
12619 <p>midi_input_type_name =
12620 </p>
12621 <blockquote class="text">
12622 <p>string
12623
12624 </p>
12625 </blockquote><p>
12626
12627 </p>
12628 <p>midi_map =
12629 </p>
12630 <blockquote class="text">
12631 <p>number
12632
12633 </p>
12634 </blockquote><p>
12635
12636 </p>
12637 <p>midi_bank =
12638 </p>
12639 <blockquote class="text">
12640 <p>number
12641
12642 </p>
12643 </blockquote><p>
12644
12645 </p>
12646 <p>midi_prog =
12647 </p>
12648 <blockquote class="text">
12649 <p>number
12650
12651 </p>
12652 </blockquote><p>
12653
12654 </p>
12655 <p>midi_ctrl =
12656 </p>
12657 <blockquote class="text">
12658 <p>number
12659
12660 </p>
12661 </blockquote><p>
12662
12663 </p>
12664 <p>volume_value =
12665 </p>
12666 <blockquote class="text">
12667 <p>dotnum
12668
12669 </p>
12670 <p>/ number
12671
12672 </p>
12673 </blockquote><p>
12674
12675 </p>
12676 <p>control_value =
12677 </p>
12678 <blockquote class="text">
12679 <p>real
12680
12681 </p>
12682 </blockquote><p>
12683
12684 </p>
12685 <p>sampler_channel =
12686 </p>
12687 <blockquote class="text">
12688 <p>number
12689
12690 </p>
12691 </blockquote><p>
12692
12693 </p>
12694 <p>instrument_index =
12695 </p>
12696 <blockquote class="text">
12697 <p>number
12698
12699 </p>
12700 </blockquote><p>
12701
12702 </p>
12703 <p>fx_send_id =
12704 </p>
12705 <blockquote class="text">
12706 <p>number
12707
12708 </p>
12709 </blockquote><p>
12710
12711 </p>
12712 <p>engine_name =
12713 </p>
12714 <blockquote class="text">
12715 <p>string
12716
12717 </p>
12718 </blockquote><p>
12719
12720 </p>
12721 <p>filename =
12722 </p>
12723 <blockquote class="text">
12724 <p>path
12725
12726 </p>
12727 </blockquote><p>
12728
12729 </p>
12730 <p>db_path =
12731 </p>
12732 <blockquote class="text">
12733 <p>path
12734
12735 </p>
12736 </blockquote><p>
12737
12738 </p>
12739 <p>map_name =
12740 </p>
12741 <blockquote class="text">
12742 <p>stringval_escaped
12743
12744 </p>
12745 </blockquote><p>
12746
12747 </p>
12748 <p>entry_name =
12749 </p>
12750 <blockquote class="text">
12751 <p>stringval_escaped
12752
12753 </p>
12754 </blockquote><p>
12755
12756 </p>
12757 <p>fx_send_name =
12758 </p>
12759 <blockquote class="text">
12760 <p>stringval_escaped
12761
12762 </p>
12763 </blockquote><p>
12764
12765 </p>
12766 <p>effect_name =
12767 </p>
12768 <blockquote class="text">
12769 <p>stringval_escaped
12770
12771 </p>
12772 </blockquote><p>
12773
12774 </p>
12775 <p>effect_index =
12776 </p>
12777 <blockquote class="text">
12778 <p>number
12779
12780 </p>
12781 </blockquote><p>
12782
12783 </p>
12784 <p>effect_chain =
12785 </p>
12786 <blockquote class="text">
12787 <p>number
12788
12789 </p>
12790 </blockquote><p>
12791
12792 </p>
12793 <p>chain_pos =
12794 </p>
12795 <blockquote class="text">
12796 <p>number
12797
12798 </p>
12799 </blockquote><p>
12800
12801 </p>
12802 <p>input_control =
12803 </p>
12804 <blockquote class="text">
12805 <p>number
12806
12807 </p>
12808 </blockquote><p>
12809
12810 </p>
12811 <p>param_val_list =
12812 </p>
12813 <blockquote class="text">
12814 <p>param_val
12815
12816 </p>
12817 <p>/ param_val_list','param_val
12818
12819 </p>
12820 </blockquote><p>
12821
12822 </p>
12823 <p>param_val =
12824 </p>
12825 <blockquote class="text">
12826 <p>string
12827
12828 </p>
12829 <p>/ stringval
12830
12831 </p>
12832 <p>/ number
12833
12834 </p>
12835 <p>/ dotnum
12836
12837 </p>
12838 </blockquote><p>
12839
12840 </p>
12841 <p>query_val_list =
12842 </p>
12843 <blockquote class="text">
12844 <p>string '=' query_val
12845
12846 </p>
12847 <p>/ query_val_list SP string '=' query_val
12848
12849 </p>
12850 </blockquote><p>
12851
12852 </p>
12853 <p>query_val =
12854 </p>
12855 <blockquote class="text">
12856 <p>text_escaped
12857
12858 </p>
12859 <p>/ stringval_escaped
12860
12861 </p>
12862 </blockquote><p>
12863
12864 </p>
12865 <p>scan_mode =
12866 </p>
12867 <blockquote class="text">
12868 <p>RECURSIVE
12869
12870 </p>
12871 <p>/ NON_RECURSIVE
12872
12873 </p>
12874 <p>/ FLAT
12875
12876 </p>
12877 </blockquote><p>
12878
12879 </p>
12880 <p>effect_system =
12881 </p>
12882 <blockquote class="text">
12883 <p>string
12884
12885 </p>
12886 </blockquote><p>
12887
12888 </p>
12889 <p>module =
12890 </p>
12891 <blockquote class="text">
12892 <p>filename
12893
12894 </p>
12895 </blockquote><p>
12896
12897 </p>
12898 <a name="character_set"></a><br /><hr />
12899 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
12900 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
12901 Character Set and Escape Sequences</h3>
12902
12903 <p>Older versions of this protocol up to and including v1.1 only
12904 supported the standard ASCII character set (ASCII code 0 - 127)
12905 <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
12906 however support the Extended ASCII character set (ASCII code
12907 0 - 255). The same group of younger protocols also support
12908 escape sequences, but only for certain, explicitly declared
12909 parts of the protocol. The supported escape sequences are
12910 defined as follows:
12911 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
12912 <col align="left"><col align="left">
12913 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
12914 <tr>
12915 <td align="left">\n</td>
12916 <td align="left">new line</td>
12917 </tr>
12918 <tr>
12919 <td align="left">\r</td>
12920 <td align="left">carriage return</td>
12921 </tr>
12922 <tr>
12923 <td align="left">\f</td>
12924 <td align="left">form feed</td>
12925 </tr>
12926 <tr>
12927 <td align="left">\t</td>
12928 <td align="left">horizontal tab</td>
12929 </tr>
12930 <tr>
12931 <td align="left">\v</td>
12932 <td align="left">vertical tab</td>
12933 </tr>
12934 <tr>
12935 <td align="left">\'</td>
12936 <td align="left">apostrophe</td>
12937 </tr>
12938 <tr>
12939 <td align="left">\"</td>
12940 <td align="left">quotation mark</td>
12941 </tr>
12942 <tr>
12943 <td align="left">\\</td>
12944 <td align="left">backslash</td>
12945 </tr>
12946 <tr>
12947 <td align="left">\OOO</td>
12948 <td align="left">three digit octal ASCII code of the character</td>
12949 </tr>
12950 <tr>
12951 <td align="left">\xHH</td>
12952 <td align="left">two digit hex ASCII code of the character</td>
12953 </tr>
12954 </table>
12955 <br clear="all" />
12956
12957 <p>Notice: due to the transition of certain parts of the
12958 protocol which now support escape sequences, a slight backward
12959 incompatibility to protocols version v1.1 and younger has been
12960 introduced. The only difference is that in parts of the protocol
12961 where escape characters are now supported, a backslash characters
12962 MUST be escaped as well (that is as double backslash), whereas
12963 in the old versions a single backslash was sufficient.
12964 </p>
12965 <p>The following LSCP commands support escape sequences as part
12966 of their filename / path based arguments and / or may contain
12967 a filename / path with escape sequences in their response:
12968 </p>
12969 <blockquote class="text">
12970 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
12971 </p>
12972 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
12973 </p>
12974 <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>
12975 </p>
12976 <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>
12977 </p>
12978 <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>
12979 </p>
12980 <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>
12981 </p>
12982 <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>
12983 </p>
12984 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
12985 </p>
12986 <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>
12987 </p>
12988 <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>
12989 </p>
12990 <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>
12991 </p>
12992 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
12993 </p>
12994 <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>
12995 </p>
12996 <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>
12997 </p>
12998 <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>
12999 </p>
13000 <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>
13001 </p>
13002 <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>
13003 </p>
13004 <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>
13005 </p>
13006 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13007 </p>
13008 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13009 </p>
13010 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13011 </p>
13012 <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>
13013 </p>
13014 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13015 </p>
13016 <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>
13017 </p>
13018 <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>
13019 </p>
13020 <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>
13021 </p>
13022 <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>
13023 </p>
13024 <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>
13025 </p>
13026 <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>
13027 </p>
13028 <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>
13029 </p>
13030 <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>
13031 </p>
13032 <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>
13033 </p>
13034 </blockquote><p>
13035 Note that the forward slash character ('/') has a special meaning in
13036 filename / path based arguments: it acts as separator of the nodes in
13037 the path, thus if a directory- or filename includes a forward slash
13038 (not intended as path node separator), you MUST escape that slash
13039 either with the respective hex escape sequence ("\x2f") or with the
13040 respective octal escape sequence ("\057").
13041
13042 </p>
13043 <p>
13044 Note for Windows: file path arguments in LSCP are expected
13045 to use forward slashes as directory node separator similar
13046 to Unix based operating systems. In contrast to Unix however
13047 a Windows typical drive character is expected to be
13048 prefixed to the path. That is an original Windows file path
13049 like "D:\Sounds\My.gig" would become in LSCP:
13050 "D:/Sounds/My.gig".
13051
13052 </p>
13053 <p>
13054 The following LSCP commands even support escape sequences as
13055 part of at least one of their text-based arguments (i.e. entity name,
13056 description) and / or may contain escape sequences in at least one of
13057 their text-based fields in their response:
13058 </p>
13059 <blockquote class="text">
13060 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
13061 </p>
13062 <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>
13063 </p>
13064 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13065 </p>
13066 <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>
13067 </p>
13068 <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>
13069 </p>
13070 <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>
13071 </p>
13072 <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>
13073 </p>
13074 <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>
13075 </p>
13076 <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>
13077 </p>
13078 <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>
13079 </p>
13080 <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>
13081 </p>
13082 <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>
13083 </p>
13084 <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>
13085 </p>
13086 <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>
13087 </p>
13088 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13089 </p>
13090 <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>
13091 </p>
13092 <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>
13093 </p>
13094 <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>
13095 </p>
13096 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13097 </p>
13098 <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>
13099 </p>
13100 <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>
13101 </p>
13102 <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>
13103 </p>
13104 </blockquote><p>
13105 Please note that these lists are manually maintained. If you
13106 find a command that also supports escape sequences we forgot to
13107 mention here, please report it!
13108
13109 </p>
13110 <a name="events"></a><br /><hr />
13111 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13112 <a name="rfc.section.8"></a><h3>8.&nbsp;
13113 Events</h3>
13114
13115 <p>This chapter will describe all currently defined events supported by LinuxSampler.
13116 </p>
13117 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13118 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13119 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13120 Number of audio output devices changed</h3>
13121
13122 <p>Client may want to be notified when the total number of audio output devices on the
13123 back-end changes by issuing the following command:
13124 </p>
13125 <p>
13126 </p>
13127 <blockquote class="text">
13128 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13129 </p>
13130 </blockquote><p>
13131
13132 </p>
13133 <p>Server will start sending the following notification messages:
13134 </p>
13135 <p>
13136 </p>
13137 <blockquote class="text">
13138 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13139 </p>
13140 </blockquote><p>
13141
13142 </p>
13143 <p>where &lt;devices&gt; will be replaced by the new number
13144 of audio output devices.
13145 </p>
13146 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13147 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13148 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13149 Audio output device's settings changed</h3>
13150
13151 <p>Client may want to be notified when changes were made to audio output devices on the
13152 back-end by issuing the following command:
13153 </p>
13154 <p>
13155 </p>
13156 <blockquote class="text">
13157 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13158 </p>
13159 </blockquote><p>
13160
13161 </p>
13162 <p>Server will start sending the following notification messages:
13163 </p>
13164 <p>
13165 </p>
13166 <blockquote class="text">
13167 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13168 </p>
13169 </blockquote><p>
13170
13171 </p>
13172 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13173 which settings has been changed. The front-end will have to send
13174 the respective command to actually get the audio output device info. Because these messages
13175 will be triggered by LSCP commands issued by other clients rather than real
13176 time events happening on the server, it is believed that an empty notification
13177 message is sufficient here.
13178 </p>
13179 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13180 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13181 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13182 Number of MIDI input devices changed</h3>
13183
13184 <p>Client may want to be notified when the total number of MIDI input devices on the
13185 back-end changes by issuing the following command:
13186 </p>
13187 <p>
13188 </p>
13189 <blockquote class="text">
13190 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13191 </p>
13192 </blockquote><p>
13193
13194 </p>
13195 <p>Server will start sending the following notification messages:
13196 </p>
13197 <p>
13198 </p>
13199 <blockquote class="text">
13200 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13201 </p>
13202 </blockquote><p>
13203
13204 </p>
13205 <p>where &lt;devices&gt; will be replaced by the new number
13206 of MIDI input devices.
13207 </p>
13208 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13209 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13210 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13211 MIDI input device's settings changed</h3>
13212
13213 <p>Client may want to be notified when changes were made to MIDI input devices on the
13214 back-end by issuing the following command:
13215 </p>
13216 <p>
13217 </p>
13218 <blockquote class="text">
13219 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13220 </p>
13221 </blockquote><p>
13222
13223 </p>
13224 <p>Server will start sending the following notification messages:
13225 </p>
13226 <p>
13227 </p>
13228 <blockquote class="text">
13229 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13230 </p>
13231 </blockquote><p>
13232
13233 </p>
13234 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13235 which settings has been changed. The front-end will have to send
13236 the respective command to actually get the MIDI input device info. Because these messages
13237 will be triggered by LSCP commands issued by other clients rather than real
13238 time events happening on the server, it is believed that an empty notification
13239 message is sufficient here.
13240 </p>
13241 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13242 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13243 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13244 Number of sampler channels changed</h3>
13245
13246 <p>Client may want to be notified when the total number of channels on the
13247 back-end changes by issuing the following command:
13248 </p>
13249 <p>
13250 </p>
13251 <blockquote class="text">
13252 <p>SUBSCRIBE CHANNEL_COUNT
13253 </p>
13254 </blockquote><p>
13255
13256 </p>
13257 <p>Server will start sending the following notification messages:
13258 </p>
13259 <p>
13260 </p>
13261 <blockquote class="text">
13262 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13263 </p>
13264 </blockquote><p>
13265
13266 </p>
13267 <p>where &lt;channels&gt; will be replaced by the new number
13268 of sampler channels.
13269 </p>
13270 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13271 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13272 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13273 MIDI data on a sampler channel arrived</h3>
13274
13275 <p>Client may want to be notified when MIDI data arrive on sampler channels on
13276 back-end side, by issuing the following command:
13277 </p>
13278 <p>
13279 </p>
13280 <blockquote class="text">
13281 <p>SUBSCRIBE CHANNEL_MIDI
13282 </p>
13283 </blockquote><p>
13284
13285 </p>
13286 <p>Server will start sending one of the the following notification messages:
13287 </p>
13288 <p>
13289 </p>
13290 <blockquote class="text">
13291 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13292 </p>
13293 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13294 </p>
13295 </blockquote><p>
13296
13297 </p>
13298 <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13299 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13300 0 .. 127, reflecting the analog meaning of the MIDI specification.
13301
13302 </p>
13303 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13304 delivered by this mechanism! With other words: events could be lost at any time!
13305 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13306 thread unaffected by this feature.
13307 </p>
13308 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13309 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13310 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13311 MIDI data on a MIDI input device arrived</h3>
13312
13313 <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13314 </p>
13315 <p>
13316 </p>
13317 <blockquote class="text">
13318 <p>SUBSCRIBE DEVICE_MIDI
13319 </p>
13320 </blockquote><p>
13321
13322 </p>
13323 <p>Server will start sending one of the the following notification messages:
13324 </p>
13325 <p>
13326 </p>
13327 <blockquote class="text">
13328 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13329 </p>
13330 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13331 </p>
13332 </blockquote><p>
13333
13334 </p>
13335 <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13336 by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13337 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13338 0 .. 127, reflecting the analog meaning of the MIDI specification.
13339
13340 </p>
13341 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13342 delivered by this mechanism! With other words: events could be lost at any time!
13343 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13344 thread unaffected by this feature.
13345 </p>
13346 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13347 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13348 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13349 Number of active voices changed</h3>
13350
13351 <p>Client may want to be notified when the number of voices on the
13352 back-end changes by issuing the following command:
13353 </p>
13354 <p>
13355 </p>
13356 <blockquote class="text">
13357 <p>SUBSCRIBE VOICE_COUNT
13358 </p>
13359 </blockquote><p>
13360
13361 </p>
13362 <p>Server will start sending the following notification messages:
13363 </p>
13364 <p>
13365 </p>
13366 <blockquote class="text">
13367 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13368 </p>
13369 </blockquote><p>
13370
13371 </p>
13372 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13373 voice count change occurred and &lt;voices&gt; by the new number of
13374 active voices on that channel.
13375 </p>
13376 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13377 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13378 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13379 Number of active disk streams changed</h3>
13380
13381 <p>Client may want to be notified when the number of streams on the back-end
13382 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13383 </p>
13384 <p>
13385 </p>
13386 <blockquote class="text">
13387 <p>SUBSCRIBE STREAM_COUNT
13388 </p>
13389 </blockquote><p>
13390
13391 </p>
13392 <p>Server will start sending the following notification messages:
13393 </p>
13394 <p>
13395 </p>
13396 <blockquote class="text">
13397 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13398 </p>
13399 </blockquote><p>
13400
13401 </p>
13402 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13403 stream count change occurred and &lt;streams&gt; by the new number of
13404 active disk streams on that channel.
13405 </p>
13406 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13407 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13408 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13409 Disk stream buffer fill state changed</h3>
13410
13411 <p>Client may want to be notified when the buffer fill state of a disk stream
13412 on the back-end changes by issuing the following command:
13413 </p>
13414 <p>
13415 </p>
13416 <blockquote class="text">
13417 <p>SUBSCRIBE BUFFER_FILL
13418 </p>
13419 </blockquote><p>
13420
13421 </p>
13422 <p>Server will start sending the following notification messages:
13423 </p>
13424 <p>
13425 </p>
13426 <blockquote class="text">
13427 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13428 </p>
13429 </blockquote><p>
13430
13431 </p>
13432 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13433 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13434 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>
13435 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.
13436 </p>
13437 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13438 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13439 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13440 Channel information changed</h3>
13441
13442 <p>Client may want to be notified when changes were made to sampler channels on the
13443 back-end by issuing the following command:
13444 </p>
13445 <p>
13446 </p>
13447 <blockquote class="text">
13448 <p>SUBSCRIBE CHANNEL_INFO
13449 </p>
13450 </blockquote><p>
13451
13452 </p>
13453 <p>Server will start sending the following notification messages:
13454 </p>
13455 <p>
13456 </p>
13457 <blockquote class="text">
13458 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13459 </p>
13460 </blockquote><p>
13461
13462 </p>
13463 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13464 channel info change occurred. The front-end will have to send
13465 the respective command to actually get the channel info. Because these messages
13466 will be triggered by LSCP commands issued by other clients rather than real
13467 time events happening on the server, it is believed that an empty notification
13468 message is sufficient here.
13469 </p>
13470 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13471 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13472 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13473 Number of effect sends changed</h3>
13474
13475 <p>Client may want to be notified when the number of effect sends on
13476 a particular sampler channel is changed by issuing the following command:
13477 </p>
13478 <p>
13479 </p>
13480 <blockquote class="text">
13481 <p>SUBSCRIBE FX_SEND_COUNT
13482 </p>
13483 </blockquote><p>
13484
13485 </p>
13486 <p>Server will start sending the following notification messages:
13487 </p>
13488 <p>
13489 </p>
13490 <blockquote class="text">
13491 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13492 </p>
13493 </blockquote><p>
13494
13495 </p>
13496 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13497 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13498 be replaced by the new number of effect sends on that channel.
13499 </p>
13500 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13501 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13502 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13503 Effect send information changed</h3>
13504
13505 <p>Client may want to be notified when changes were made to effect sends on a
13506 a particular sampler channel by issuing the following command:
13507 </p>
13508 <p>
13509 </p>
13510 <blockquote class="text">
13511 <p>SUBSCRIBE FX_SEND_INFO
13512 </p>
13513 </blockquote><p>
13514
13515 </p>
13516 <p>Server will start sending the following notification messages:
13517 </p>
13518 <p>
13519 </p>
13520 <blockquote class="text">
13521 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13522 </p>
13523 </blockquote><p>
13524
13525 </p>
13526 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13527 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13528 be replaced by the numerical ID of the changed effect send.
13529 </p>
13530 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13531 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13532 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13533 Total number of active voices changed</h3>
13534
13535 <p>Client may want to be notified when the total number of voices on the
13536 back-end changes by issuing the following command:
13537 </p>
13538 <p>
13539 </p>
13540 <blockquote class="text">
13541 <p>SUBSCRIBE TOTAL_VOICE_COUNT
13542 </p>
13543 </blockquote><p>
13544
13545 </p>
13546 <p>Server will start sending the following notification messages:
13547 </p>
13548 <p>
13549 </p>
13550 <blockquote class="text">
13551 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13552 </p>
13553 </blockquote><p>
13554
13555 </p>
13556 <p>where &lt;voices&gt; will be replaced by the new number of
13557 all currently active voices.
13558 </p>
13559 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13560 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13561 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13562 Total number of active disk streams changed</h3>
13563
13564 <p>Client may want to be notified when the total number of disk streams on the
13565 back-end changes by issuing the following command:
13566 </p>
13567 <p>
13568 </p>
13569 <blockquote class="text">
13570 <p>SUBSCRIBE TOTAL_STREAM_COUNT
13571 </p>
13572 </blockquote><p>
13573
13574 </p>
13575 <p>Server will start sending the following notification messages:
13576 </p>
13577 <p>
13578 </p>
13579 <blockquote class="text">
13580 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13581 </p>
13582 </blockquote><p>
13583
13584 </p>
13585 <p>where &lt;streams&gt; will be replaced by the new number of
13586 all currently active disk streams.
13587 </p>
13588 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13589 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13590 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13591 Number of MIDI instrument maps changed</h3>
13592
13593 <p>Client may want to be notified when the number of MIDI instrument maps on the
13594 back-end changes by issuing the following command:
13595 </p>
13596 <p>
13597 </p>
13598 <blockquote class="text">
13599 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
13600 </p>
13601 </blockquote><p>
13602
13603 </p>
13604 <p>Server will start sending the following notification messages:
13605 </p>
13606 <p>
13607 </p>
13608 <blockquote class="text">
13609 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
13610 </p>
13611 </blockquote><p>
13612
13613 </p>
13614 <p>where &lt;maps&gt; will be replaced by the new number
13615 of MIDI instrument maps.
13616 </p>
13617 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
13618 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13619 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
13620 MIDI instrument map information changed</h3>
13621
13622 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
13623 back-end by issuing the following command:
13624 </p>
13625 <p>
13626 </p>
13627 <blockquote class="text">
13628 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
13629 </p>
13630 </blockquote><p>
13631
13632 </p>
13633 <p>Server will start sending the following notification messages:
13634 </p>
13635 <p>
13636 </p>
13637 <blockquote class="text">
13638 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
13639 </p>
13640 </blockquote><p>
13641
13642 </p>
13643 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13644 for which information changes occurred. The front-end will have to send
13645 the respective command to actually get the MIDI instrument map info. Because these messages
13646 will be triggered by LSCP commands issued by other clients rather than real
13647 time events happening on the server, it is believed that an empty notification
13648 message is sufficient here.
13649 </p>
13650 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
13651 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13652 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
13653 Number of MIDI instruments changed</h3>
13654
13655 <p>Client may want to be notified when the number of MIDI instrument maps on the
13656 back-end changes by issuing the following command:
13657 </p>
13658 <p>
13659 </p>
13660 <blockquote class="text">
13661 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
13662 </p>
13663 </blockquote><p>
13664
13665 </p>
13666 <p>Server will start sending the following notification messages:
13667 </p>
13668 <p>
13669 </p>
13670 <blockquote class="text">
13671 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
13672 </p>
13673 </blockquote><p>
13674
13675 </p>
13676 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
13677 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
13678 the new number of MIDI instruments in the specified map.
13679 </p>
13680 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
13681 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13682 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
13683 MIDI instrument information changed</h3>
13684
13685 <p>Client may want to be notified when changes were made to MIDI instruments on the
13686 back-end by issuing the following command:
13687 </p>
13688 <p>
13689 </p>
13690 <blockquote class="text">
13691 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
13692 </p>
13693 </blockquote><p>
13694
13695 </p>
13696 <p>Server will start sending the following notification messages:
13697 </p>
13698 <p>
13699 </p>
13700 <blockquote class="text">
13701 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
13702 </p>
13703 </blockquote><p>
13704
13705 </p>
13706 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13707 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
13708 the location of the changed MIDI instrument in the map. The front-end will have to send
13709 the respective command to actually get the MIDI instrument info. Because these messages
13710 will be triggered by LSCP commands issued by other clients rather than real
13711 time events happening on the server, it is believed that an empty notification
13712 message is sufficient here.
13713 </p>
13714 <a name="SUBSCRIBE GLOBAL_INFO"></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.20"></a><h3>8.20.&nbsp;
13717 Global settings changed</h3>
13718
13719 <p>Client may want to be notified when changes to the global settings
13720 of the sampler were made by issuing the following command:
13721 </p>
13722 <p>
13723 </p>
13724 <blockquote class="text">
13725 <p>SUBSCRIBE GLOBAL_INFO
13726 </p>
13727 </blockquote><p>
13728
13729 </p>
13730 <p>Server will start sending the following types of notification messages:
13731 </p>
13732 <p>
13733 </p>
13734 <blockquote class="text">
13735 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
13736 golbal volume of the sampler is changed, where &lt;volume&gt; will be
13737 replaced by the optional dotted floating point value, reflecting the
13738 new global volume parameter.
13739 </p>
13740 </blockquote><p>
13741 </p>
13742 <blockquote class="text">
13743 <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
13744 golbal limit of the sampler for maximum voices is changed, where
13745 &lt;max-voices&gt; will be an integer value, reflecting the
13746 new global voice limit parameter.
13747 </p>
13748 </blockquote><p>
13749 </p>
13750 <blockquote class="text">
13751 <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
13752 golbal limit of the sampler for maximum disk streams is changed, where
13753 &lt;max-streams&gt; will be an integer value, reflecting the
13754 new global disk streams limit parameter.
13755 </p>
13756 </blockquote><p>
13757
13758 </p>
13759 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
13760 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13761 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
13762 Number of database instrument directories changed</h3>
13763
13764 <p>Client may want to be notified when the number of instrument
13765 directories in a particular directory in the instruments database
13766 is changed by issuing the following command:
13767 </p>
13768 <p>
13769 </p>
13770 <blockquote class="text">
13771 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
13772 </p>
13773 </blockquote><p>
13774
13775 </p>
13776 <p>Server will start sending the following notification messages:
13777 </p>
13778 <p>
13779 </p>
13780 <blockquote class="text">
13781 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
13782 </p>
13783 </blockquote><p>
13784
13785 </p>
13786 <p>where &lt;dir-path&gt; will be replaced by the absolute path
13787 name of the directory in the instruments database,
13788 in which the number of directories is changed.
13789 </p>
13790 <p>Note that when a non-empty directory is removed, this event
13791 is not sent for the subdirectories in that directory.
13792 </p>
13793 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
13794 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13795 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
13796 Database instrument directory information changed</h3>
13797
13798 <p>Client may want to be notified when changes were made to directories
13799 in the instruments database by issuing the following command:
13800 </p>
13801 <p>
13802 </p>
13803 <blockquote class="text">
13804 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
13805 </p>
13806 </blockquote><p>
13807
13808 </p>
13809 <p>Server will start sending the following notification messages:
13810 </p>
13811 <p>
13812 </p>
13813 <blockquote class="text">
13814 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
13815 </p>
13816 </blockquote><p>
13817
13818 </p>
13819 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
13820 of the directory, for which information changes occurred. The front-end will have to send
13821 the respective command to actually get the updated directory info. Because these messages
13822 will be triggered by LSCP commands issued by other clients rather than real
13823 time events happening on the server, it is believed that an empty notification
13824 message is sufficient here.
13825 </p>
13826 <p>
13827 </p>
13828 <blockquote class="text">
13829 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
13830 </p>
13831 </blockquote><p>
13832
13833 </p>
13834 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
13835 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13836 the new name of the directory, encapsulated into apostrophes.
13837 </p>
13838 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
13839 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13840 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
13841 Number of database instruments changed</h3>
13842
13843 <p>Client may want to be notified when the number of instruments
13844 in a particular directory in the instruments database
13845 is changed by issuing the following command:
13846 </p>
13847 <p>
13848 </p>
13849 <blockquote class="text">
13850 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
13851 </p>
13852 </blockquote><p>
13853
13854 </p>
13855 <p>Server will start sending the following notification messages:
13856 </p>
13857 <p>
13858 </p>
13859 <blockquote class="text">
13860 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
13861 </p>
13862 </blockquote><p>
13863
13864 </p>
13865 <p>where &lt;dir-path&gt; will be replaced by the absolute path
13866 name of the directory in the instruments database,
13867 in which the number of instruments is changed.
13868 </p>
13869 <p>Note that when a non-empty directory is removed, this event
13870 is not sent for the instruments in that directory.
13871 </p>
13872 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
13873 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13874 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
13875 Database instrument information changed</h3>
13876
13877 <p>Client may want to be notified when changes were made to instruments
13878 in the instruments database by issuing the following command:
13879 </p>
13880 <p>
13881 </p>
13882 <blockquote class="text">
13883 <p>SUBSCRIBE DB_INSTRUMENT_INFO
13884 </p>
13885 </blockquote><p>
13886
13887 </p>
13888 <p>Server will start sending the following notification messages:
13889 </p>
13890 <p>
13891 </p>
13892 <blockquote class="text">
13893 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
13894 </p>
13895 </blockquote><p>
13896
13897 </p>
13898 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
13899 of the instrument, which settings are changed. The front-end will have to send
13900 the respective command to actually get the updated directory info. Because these messages
13901 will be triggered by LSCP commands issued by other clients rather than real
13902 time events happening on the server, it is believed that an empty notification
13903 message is sufficient here.
13904 </p>
13905 <p>
13906 </p>
13907 <blockquote class="text">
13908 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
13909 </p>
13910 </blockquote><p>
13911
13912 </p>
13913 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
13914 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13915 the new name of the instrument, encapsulated into apostrophes.
13916 </p>
13917 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
13918 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13919 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
13920 Database job status information changed</h3>
13921
13922 <p>Client may want to be notified when the status of particular database
13923 instruments job is changed by issuing the following command:
13924 </p>
13925 <p>
13926 </p>
13927 <blockquote class="text">
13928 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
13929 </p>
13930 </blockquote><p>
13931
13932 </p>
13933 <p>Server will start sending the following notification messages:
13934 </p>
13935 <p>
13936 </p>
13937 <blockquote class="text">
13938 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
13939 </p>
13940 </blockquote><p>
13941
13942 </p>
13943 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
13944 which status is changed. The front-end will have to send the respective
13945 command to actually get the status info. Because these messages
13946 will be triggered by LSCP commands issued by other clients rather than real
13947 time events happening on the server, it is believed that an empty notification
13948 message is sufficient here.
13949 </p>
13950 <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
13951 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13952 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
13953 Number of effect instances changed</h3>
13954
13955 <p>Client may want to be notified when the number of effect instances
13956 is changed by issuing the following command:
13957 </p>
13958 <p>
13959 </p>
13960 <blockquote class="text">
13961 <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
13962 </p>
13963 </blockquote><p>
13964
13965 </p>
13966 <p>Server will start sending the following notification messages:
13967 </p>
13968 <p>
13969 </p>
13970 <blockquote class="text">
13971 <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
13972 </p>
13973 </blockquote><p>
13974
13975 </p>
13976 <p>where &lt;instances&gt; will be replaced by the new number
13977 of effect instances.
13978 </p>
13979 <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
13980 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13981 <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
13982 Effect instance information changed</h3>
13983
13984 <p>Client may want to be notified when changes were made to effect instances
13985 on the back-end by issuing the following command:
13986 </p>
13987 <p>
13988 </p>
13989 <blockquote class="text">
13990 <p>SUBSCRIBE EFFECT_INSTANCE_INFO
13991 </p>
13992 </blockquote><p>
13993
13994 </p>
13995 <p>Server will start sending the following notification messages:
13996 </p>
13997 <p>
13998 </p>
13999 <blockquote class="text">
14000 <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
14001 </p>
14002 </blockquote><p>
14003
14004 </p>
14005 <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14006 of the effect instance.
14007 </p>
14008 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14009 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14010 <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14011 Number of send effect chains changed</h3>
14012
14013 <p>Client may want to be notified when the number of send effect chains
14014 is changed by issuing the following command:
14015 </p>
14016 <p>
14017 </p>
14018 <blockquote class="text">
14019 <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14020 </p>
14021 </blockquote><p>
14022
14023 </p>
14024 <p>Server will start sending the following notification messages:
14025 </p>
14026 <p>
14027 </p>
14028 <blockquote class="text">
14029 <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14030 </p>
14031 </blockquote><p>
14032
14033 </p>
14034 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14035 output device, in which the number of send effect chains is changed and
14036 &lt;chains&gt; will be replaced by the new number of send effect chains.
14037 </p>
14038 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14039 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14040 <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14041 Send effect chain information changed</h3>
14042
14043 <p>Client may want to be notified when changes were made to send effect chains
14044 on the back-end by issuing the following command:
14045 </p>
14046 <p>
14047 </p>
14048 <blockquote class="text">
14049 <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14050 </p>
14051 </blockquote><p>
14052
14053 </p>
14054 <p>Server will start sending the following notification messages:
14055 </p>
14056 <p>
14057 </p>
14058 <blockquote class="text">
14059 <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14060 Notifies that the number of effect instances in a particular send effect chain
14061 is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14062 output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14063 by the numerical ID of the send effect chain in which the number of effect instances
14064 has changed and &lt;instances&gt; will be replaced by the new number
14065 of effect instances in the specified send effect chain.
14066 </p>
14067 </blockquote><p>
14068
14069 </p>
14070 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14071 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14072 <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14073 Miscellaneous and debugging events</h3>
14074
14075 <p>Client may want to be notified of miscellaneous and debugging events occurring at
14076 the server by issuing the following command:
14077 </p>
14078 <p>
14079 </p>
14080 <blockquote class="text">
14081 <p>SUBSCRIBE MISCELLANEOUS
14082 </p>
14083 </blockquote><p>
14084
14085 </p>
14086 <p>Server will start sending the following notification messages:
14087 </p>
14088 <p>
14089 </p>
14090 <blockquote class="text">
14091 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14092 </p>
14093 </blockquote><p>
14094
14095 </p>
14096 <p>where &lt;string&gt; will be replaced by whatever data server
14097 wants to send to the client. Client MAY display this data to the
14098 user AS IS to facilitate debugging.
14099 </p>
14100 <a name="anchor14"></a><br /><hr />
14101 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14102 <a name="rfc.section.9"></a><h3>9.&nbsp;
14103 Security Considerations</h3>
14104
14105 <p>As there is so far no method of authentication and authorization
14106 defined and so not required for a client applications to succeed to
14107 connect, running LinuxSampler might be a security risk for the host
14108 system the LinuxSampler instance is running on.
14109 </p>
14110 <a name="anchor15"></a><br /><hr />
14111 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14112 <a name="rfc.section.10"></a><h3>10.&nbsp;
14113 Acknowledgments</h3>
14114
14115 <p>This document has benefited greatly from the comments of the
14116 following people, discussed on the LinuxSampler developer's mailing
14117 list:
14118 </p>
14119 <p>
14120 </p>
14121 <blockquote class="text">
14122 <p>Rui Nuno Capela
14123 </p>
14124 <p>Vladimir Senkov
14125 </p>
14126 <p>Mark Knecht
14127 </p>
14128 <p>Grigor Iliev
14129 </p>
14130 </blockquote><p>
14131
14132 </p>
14133 <a name="rfc.references1"></a><br /><hr />
14134 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14135 <h3>11.&nbsp;References</h3>
14136 <table width="99%" border="0">
14137 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14138 <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>
14139 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14140 <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>
14141 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14142 <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>
14143 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14144 <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>
14145 </table>
14146
14147 <a name="rfc.authors"></a><br /><hr />
14148 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14149 <h3>Author's Address</h3>
14150 <table width="99%" border="0" cellpadding="0" cellspacing="0">
14151 <tr><td class="author-text">&nbsp;</td>
14152 <td class="author-text">C.
14153 Schoenebeck</td></tr>
14154 <tr><td class="author-text">&nbsp;</td>
14155 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
14156 <tr><td class="author-text">&nbsp;</td>
14157 <td class="author-text">Max-Planck-Str. 39</td></tr>
14158 <tr><td class="author-text">&nbsp;</td>
14159 <td class="author-text">74081 Heilbronn</td></tr>
14160 <tr><td class="author-text">&nbsp;</td>
14161 <td class="author-text">Germany</td></tr>
14162 <tr><td class="author" align="right">Email:&nbsp;</td>
14163 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
14164 </table>
14165 <a name="rfc.copyright"></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 <h3>Full Copyright Statement</h3>
14168 <p class='copyright'>
14169 Copyright &copy; The IETF Trust (2011).</p>
14170 <p class='copyright'>
14171 This document is subject to the rights,
14172 licenses and restrictions contained in BCP&nbsp;78,
14173 and except as set forth therein,
14174 the authors retain all their rights.</p>
14175 <p class='copyright'>
14176 This document and the information contained herein are provided
14177 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14178 THE ORGANIZATION HE/SHE REPRESENTS
14179 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14180 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14181 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14182 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14183 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14184 PURPOSE.</p>
14185 <h3>Intellectual Property</h3>
14186 <p class='copyright'>
14187 The IETF takes no position regarding the validity or scope of any
14188 Intellectual Property Rights or other rights that might be claimed
14189 to pertain to the implementation or use of the technology
14190 described in this document or the extent to which any license
14191 under such rights might or might not be available; nor does it
14192 represent that it has made any independent effort to identify any
14193 such rights.
14194 Information on the procedures with respect to
14195 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14196 <p class='copyright'>
14197 Copies of IPR disclosures made to the IETF Secretariat and any
14198 assurances of licenses to be made available,
14199 or the result of an attempt made to obtain a general license or
14200 permission for the use of such proprietary rights by implementers or
14201 users of this specification can be obtained from the IETF on-line IPR
14202 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14203 <p class='copyright'>
14204 The IETF invites any interested party to bring to its attention
14205 any copyrights,
14206 patents or patent applications,
14207 or other
14208 proprietary rights that may cover technology that may be required
14209 to implement this standard.
14210 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14211 </body></html>

  ViewVC Help
Powered by ViewVC