/[svn]/web/trunk/www.linuxsampler.org/api/lscp-1.5.html
ViewVC logotype

Contents of /web/trunk/www.linuxsampler.org/api/lscp-1.5.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2498 - (show annotations) (download) (as text)
Thu Jan 9 22:05:21 2014 UTC (10 years, 2 months ago) by schoenebeck
File MIME type: text/html
File size: 504865 byte(s)
* New LSCP specs (LSCP 1.6).

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 <meta name="description" content="LinuxSampler Control Protocol">
5 <meta name="keywords" content="LSCP">
6 <meta name="generator" content="xml2rfc v1.35 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">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 3, 2011</td><td class="header">June 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). Note that other groups may also distribute
171 working documents as Internet-Drafts. The list of current
172 Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.</p>
173 <p>
174 Internet-Drafts are draft documents valid for a maximum of six months
175 and may be updated, replaced, or obsoleted by other documents at any time.
176 It is inappropriate to use Internet-Drafts as reference material or to cite
177 them other than as &ldquo;work in progress.&rdquo;</p>
178 <p>
179 This Internet-Draft will expire on December 3, 2011.</p>
180 <a name="toc"></a><br /><hr />
181 <h3>Table of Contents</h3>
182 <p class="toc">
183 <a href="#anchor1">1.</a>&nbsp;
184 Requirements notation<br />
185 <a href="#LSCP versioning">2.</a>&nbsp;
186 Versioning of this specification<br />
187 <a href="#anchor2">3.</a>&nbsp;
188 Introduction<br />
189 <a href="#anchor3">4.</a>&nbsp;
190 Focus of this protocol<br />
191 <a href="#anchor4">5.</a>&nbsp;
192 Communication Overview<br />
193 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194 Request/response communication method<br />
195 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196 Result format<br />
197 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198 Subscribe/notify communication method<br />
199 <a href="#control_commands">6.</a>&nbsp;
200 Description for control commands<br />
201 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202 Ignored lines and comments<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204 Configuring audio drivers<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206 Getting amount of available audio output drivers<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208 Getting all available audio output drivers<br />
209 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210 Getting information about a specific audio
211 output driver<br />
212 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213 Getting information about specific audio
214 output driver parameter<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216 Creating an audio output device<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218 Destroying an audio output device<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220 Getting all created audio output device count<br />
221 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222 Getting all created audio output device list<br />
223 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224 Getting current settings of an audio output device<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226 Changing settings of audio output devices<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228 Getting information about an audio channel<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230 Getting information about specific audio channel parameter<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232 Changing settings of audio output channels<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234 Configuring MIDI input drivers<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236 Getting amount of available MIDI input drivers<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238 Getting all available MIDI input drivers<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240 Getting information about a specific MIDI input driver<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242 Getting information about specific MIDI input driver parameter<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244 Creating a MIDI input device<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246 Destroying a MIDI input device<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248 Getting all created MIDI input device count<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250 Getting all created MIDI input device list<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252 Getting current settings of a MIDI input device<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254 Changing settings of MIDI input devices<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256 Getting information about a MIDI port<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258 Getting information about specific MIDI port parameter<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260 Changing settings of MIDI input ports<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262 Configuring sampler channels<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264 Loading an instrument<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266 Loading a sampler engine<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268 Getting all created sampler channel count<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270 Getting all created sampler channel list<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272 Adding a new sampler channel<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274 Removing a sampler channel<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276 Getting amount of available engines<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278 Getting all available engines<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280 Getting information about an engine<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282 Getting sampler channel information<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284 Current number of active voices<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286 Current number of active disk streams<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288 Current fill state of disk stream buffers<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290 Setting audio output device<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292 Setting audio output type<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294 Setting audio output channel<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
296 Setting MIDI input device<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
298 Setting MIDI input type<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
300 Setting MIDI input port<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
302 Setting MIDI input channel<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
304 Setting channel volume<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
306 Muting a sampler channel<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
308 Soloing a sampler channel<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
310 Assigning a MIDI instrument map to a sampler channel<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
312 Adding an effect send to a sampler channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
314 Removing an effect send from a sampler channel<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
316 Getting amount of effect sends on a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
318 Listing all effect sends on a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
320 Getting effect send information<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
322 Changing effect send's name<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
324 Altering effect send's audio routing<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.32.</a>&nbsp;
326 Assigning destination effect to an effect send<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.33.</a>&nbsp;
328 Removing destination effect from an effect send<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.34.</a>&nbsp;
330 Altering effect send's MIDI controller<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.35.</a>&nbsp;
332 Altering effect send's send level<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.36.</a>&nbsp;
334 Sending MIDI messages to sampler channel<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.37.</a>&nbsp;
336 Resetting a sampler channel<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
338 Controlling connection<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
340 Register front-end for receiving event messages<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
342 Unregister front-end for not receiving event messages<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
344 Enable or disable echo of commands<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
346 Close client connection<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
348 Global commands<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
350 Current number of active voices<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
352 Maximum amount of active voices<br />
353 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
354 Current number of active disk streams<br />
355 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
356 Reset sampler<br />
357 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
358 General sampler informations<br />
359 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
360 Getting global volume attenuation<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
362 Setting global volume attenuation<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
364 Getting global voice limit<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
366 Setting global voice limit<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
368 Getting global disk stream limit<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
370 Setting global disk stream limit<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
372 MIDI Instrument Mapping<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
374 Create a new MIDI instrument map<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
376 Delete one particular or all MIDI instrument maps<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
378 Get amount of existing MIDI instrument maps<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
380 Getting all created MIDI instrument maps<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
382 Getting MIDI instrument map information<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
384 Renaming a MIDI instrument map<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
386 Create or replace a MIDI instrument map entry<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
388 Getting ammount of MIDI instrument map entries<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
390 Getting indeces of all entries of a MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
392 Remove an entry from the MIDI instrument map<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
394 Get current settings of MIDI instrument map entry<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
396 Clear MIDI instrument map<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
398 Managing Instruments Database<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
400 Creating a new instrument directory<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
402 Deleting an instrument directory<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
404 Getting amount of instrument directories<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
406 Listing all directories in specific directory<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
408 Getting instrument directory information<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
410 Renaming an instrument directory<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
412 Moving an instrument directory<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
414 Copying instrument directories<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
416 Changing the description of directory<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
418 Finding directories<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
420 Adding instruments to the instruments database<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
422 Removing an instrument<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
424 Getting amount of instruments<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
426 Listing all instruments in specific directory<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
428 Getting instrument information<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
430 Renaming an instrument<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
432 Moving an instrument<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
434 Copying instruments<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
436 Changing the description of instrument<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
438 Finding instruments<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
440 Getting job status information<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
442 Formatting the instruments database<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
444 Checking for lost instrument files<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
446 Replacing an instrument file<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
448 Editing Instruments<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
450 Opening an appropriate instrument editor application<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
452 Managing Files<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
454 Retrieving amount of instruments of a file<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
456 Retrieving all instruments of a file<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
458 Retrieving informations about one instrument in a file<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
460 Managing Effects<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
462 Retrieve amount of available effects<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
464 Get list of available effects<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
466 Retrieving general information about an effect<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
468 Creating an instance of an effect by its portable ID<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
470 Creating an instance of an effect by its numerical ID<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
472 Destroy an effect instance<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
474 Retrieve amount of effect instances<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
476 Get list of effect instances<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
478 Retrieving current information about an effect instance<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
480 Retrieving information about an effect parameter<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
482 Altering an effect parameter<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
484 Retrieve amount of send effect chains<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
486 Retrieve list of send effect chains<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
488 Add send effect chain<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
490 Remove send effect chain<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
492 Retrieving information about a send effect chain<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
494 Append effect instance to a send effect chain<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
496 Insert effect instance to a send effect chain<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
498 Remove effect instance from send effect chain<br />
499 <a href="#command_syntax">7.</a>&nbsp;
500 Command Syntax<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
502 Character Set and Escape Sequences<br />
503 <a href="#events">8.</a>&nbsp;
504 Events<br />
505 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
506 Number of audio output devices changed<br />
507 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
508 Audio output device's settings changed<br />
509 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
510 Number of MIDI input devices changed<br />
511 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
512 MIDI input device's settings changed<br />
513 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
514 Number of sampler channels changed<br />
515 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
516 MIDI data on a sampler channel arrived<br />
517 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
518 MIDI data on a MIDI input device arrived<br />
519 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
520 Number of active voices changed<br />
521 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
522 Number of active disk streams changed<br />
523 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
524 Disk stream buffer fill state changed<br />
525 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
526 Channel information changed<br />
527 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
528 Number of effect sends changed<br />
529 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
530 Effect send information changed<br />
531 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
532 Total number of active voices changed<br />
533 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
534 Total number of active disk streams changed<br />
535 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
536 Number of MIDI instrument maps changed<br />
537 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
538 MIDI instrument map information changed<br />
539 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
540 Number of MIDI instruments changed<br />
541 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
542 MIDI instrument information changed<br />
543 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
544 Global settings changed<br />
545 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
546 Number of database instrument directories changed<br />
547 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
548 Database instrument directory information changed<br />
549 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
550 Number of database instruments changed<br />
551 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
552 Database instrument information changed<br />
553 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
554 Database job status information changed<br />
555 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_COUNT">8.26.</a>&nbsp;
556 Number of effect instances changed<br />
557 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_INFO">8.27.</a>&nbsp;
558 Effect instance information changed<br />
559 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_COUNT">8.28.</a>&nbsp;
560 Number of send effect chains changed<br />
561 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_INFO">8.29.</a>&nbsp;
562 Send effect chain information changed<br />
563 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.30.</a>&nbsp;
564 Miscellaneous and debugging events<br />
565 <a href="#anchor14">9.</a>&nbsp;
566 Security Considerations<br />
567 <a href="#anchor15">10.</a>&nbsp;
568 Acknowledgments<br />
569 <a href="#rfc.references1">11.</a>&nbsp;
570 References<br />
571 <a href="#rfc.authors">&#167;</a>&nbsp;
572 Author's Address<br />
573 <a href="#rfc.copyright">&#167;</a>&nbsp;
574 Intellectual Property and Copyright Statements<br />
575 </p>
576 <br clear="all" />
577
578 <a name="anchor1"></a><br /><hr />
579 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
580 <a name="rfc.section.1"></a><h3>1.&nbsp;
581 Requirements notation</h3>
582
583 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
584 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
585 and "OPTIONAL" in this document are to be interpreted as
586 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>.
587 </p>
588 <p>This protocol is always case-sensitive if not explicitly
589 claimed the opposite.
590 </p>
591 <p>In examples, "C:" and "S:" indicate lines sent by the client
592 (front-end) and server (LinuxSampler) respectively. Lines in
593 examples must be interpreted as every line being CRLF
594 terminated (carriage return character followed by line feed
595 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>),
596 thus the following example:
597 </p>
598 <p>
599 </p>
600 <blockquote class="text">
601 <p>C: "some line"
602 </p>
603 <p>&nbsp;&nbsp;&nbsp;"another line"
604 </p>
605 </blockquote><p>
606
607 </p>
608 <p>must actually be interpreted as client sending the following
609 message:
610 </p>
611 <p>
612 </p>
613 <blockquote class="text">
614 <p>"some line&lt;CR&gt;&lt;LF&gt;another
615 line&lt;CR&gt;&lt;LF&gt;"
616 </p>
617 </blockquote><p>
618
619 </p>
620 <p>where &lt;CR&gt; symbolizes the carriage return character and
621 &lt;LF&gt; the line feed character as defined in the ASCII
622 standard.
623 </p>
624 <p>Due to technical reasons, messages can arbitrary be
625 fragmented, means the following example:
626 </p>
627 <p>
628 </p>
629 <blockquote class="text">
630 <p>S: "abcd"
631 </p>
632 </blockquote><p>
633
634 </p>
635 <p>could also happen to be sent in three messages like in the
636 following sequence scenario:
637 </p>
638 <p>
639 </p>
640 <ul class="text">
641 <li>server sending message "a"
642 </li>
643 <li>followed by a delay (pause) with
644 arbitrary duration
645 </li>
646 <li>followed by server sending message
647 "bcd&lt;CR&gt;"
648 </li>
649 <li>again followed by a delay (pause) with arbitrary
650 duration
651 </li>
652 <li>followed by server sending the message
653 "&lt;LF&gt;"
654 </li>
655 </ul><p>
656
657 </p>
658 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
659 return and line feed characters respectively.
660 </p>
661 <a name="LSCP versioning"></a><br /><hr />
662 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
663 <a name="rfc.section.2"></a><h3>2.&nbsp;
664 Versioning of this specification</h3>
665
666 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
667 release of the LSCP specification will be tagged with a unique version
668 tuple. The version tuple consists at least of a major and minor version
669 number like:
670
671 </p>
672 <p>
673 </p>
674 <blockquote class="text">
675 <p>"1.2"
676 </p>
677 </blockquote><p>
678
679 </p>
680 <p>
681 In this example the major version number would be "1" and the minor
682 version number would be "2". Note that the version tuple might also
683 have more than two elements. The major version number defines a
684 group of backward compatible versions. That means a frontend is
685 compatible to the connected sampler if and only if the LSCP versions
686 to which each of the two parties complies to, match both of the
687 following rules:
688
689 </p>
690 <p>Compatibility:
691 </p>
692 <p>
693 </p>
694 <ol class="text">
695 <li>The frontend's LSCP major version and the sampler's LSCP
696 major version are exactly equal.
697 </li>
698 <li>The frontend's LSCP minor version is less or equal than
699 the sampler's LSCP minor version.
700 </li>
701 </ol><p>
702
703 </p>
704 <p>
705 Compatibility can only be claimed if both rules are true.
706 The frontend can use the
707 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
708 get the version of the LSCP specification the sampler complies with.
709
710 </p>
711 <a name="anchor2"></a><br /><hr />
712 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
713 <a name="rfc.section.3"></a><h3>3.&nbsp;
714 Introduction</h3>
715
716 <p>LinuxSampler is a so called software sampler application
717 capable to playback audio samples from a computer's Random
718 Access Memory (RAM) as well as directly streaming it from disk.
719 LinuxSampler is designed to be modular. It provides several so
720 called "sampler engines" where each engine is specialized for a
721 certain purpose. LinuxSampler has virtual channels which will be
722 referred in this document as "sampler channels". The channels
723 are in such way virtual as they can be connected to an
724 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
725 sampler channel 17 could be connected to an ALSA sequencer
726 device 64:0 and listening to MIDI channel 1 there). Each sampler
727 channel will be associated with an instance of one of the available
728 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
729 each sampler channel can be routed to an arbitrary audio output
730 method (ALSA / JACK) and an arbitrary audio output channel
731 there.
732 </p>
733 <a name="anchor3"></a><br /><hr />
734 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
735 <a name="rfc.section.4"></a><h3>4.&nbsp;
736 Focus of this protocol</h3>
737
738 <p>Main focus of this protocol is to provide a way to configure
739 a running LinuxSampler instance and to retrieve information
740 about it. The focus of this protocol is not to provide a way to
741 control synthesis parameters or even to trigger or release
742 notes. Or in other words; the focus are those functionalities
743 which are not covered by MIDI or which may at most be handled
744 via MIDI System Exclusive Messages.
745 </p>
746 <a name="anchor4"></a><br /><hr />
747 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
748 <a name="rfc.section.5"></a><h3>5.&nbsp;
749 Communication Overview</h3>
750
751 <p>There are two distinct methods of communication between a
752 running instance of LinuxSampler and one or more control
753 applications, so called "front-ends": a simple request/response
754 communication method used by the clients to give commands to the
755 server as well as to inquire about server's status and a
756 subscribe/notify communication method used by the client to
757 subscribe to and receive notifications of certain events as they
758 happen on the server. The latter needs more effort to be
759 implemented in the front-end application. The two communication
760 methods will be described next.
761 </p>
762 <a name="anchor5"></a><br /><hr />
763 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
764 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
765 Request/response communication method</h3>
766
767 <p>This simple communication method is based on
768 <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
769 front-end application establishes a TCP connection to the
770 LinuxSampler instance on a certain host system. Then the
771 front-end application will send certain ASCII based commands
772 as defined in this document (every command line must be CRLF
773 terminated - see "Conventions used in this document" at the
774 beginning of this document) and the LinuxSampler application
775 will response after a certain process time with an
776 appropriate ASCII based answer, also as defined in this
777 document. So this TCP communication is simply based on query
778 and answer paradigm. That way LinuxSampler is only able to
779 answer on queries from front-ends, but not able to
780 automatically send messages to the client if it's not asked
781 to. The fronted should not reconnect to LinuxSampler for
782 every single command, instead it should keep the connection
783 established and simply resend message(s) for subsequent
784 commands. To keep information in the front-end up-to-date
785 the front-end has to periodically send new requests to get
786 the current information from the LinuxSampler instance. This
787 is often referred to as "polling". While polling is simple
788 to implement and may be OK to use in some cases, there may
789 be disadvantages to polling such as network traffic overhead
790 and information being out of date.
791 It is possible for a client or several clients to open more
792 than one connection to the server at the same time. It is
793 also possible to send more than one request to the server
794 at the same time but if those requests are sent over the
795 same connection server MUST execute them sequentially. Upon
796 executing a request server will produce a result set and
797 send it to the client. Each and every request made by the
798 client MUST result in a result set being sent back to the
799 client. No other data other than a result set may be sent by
800 a server to a client. No result set may be sent to a client
801 without the client sending request to the server first. On
802 any particular connection, result sets MUST be sent in their
803 entirety without being interrupted by other result sets. If
804 several requests got queued up at the server they MUST be
805 processed in the order they were received and result sets
806 MUST be sent back in the same order.
807 </p>
808 <a name="anchor6"></a><br /><hr />
809 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
810 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
811 Result format</h3>
812
813 <p>Result set could be one of the following types:
814 </p>
815 <p>
816 </p>
817 <ol class="text">
818 <li>Normal
819 </li>
820 <li>Warning
821 </li>
822 <li>Error
823 </li>
824 </ol><p>
825
826 </p>
827 <p>Warning and Error result sets MUST be single line and
828 have the following format:
829 </p>
830 <p>
831 </p>
832 <ul class="text">
833 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
834 </li>
835 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
836 </li>
837 </ul><p>
838
839 </p>
840 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
841 numeric unique identifiers of the warning or error and
842 &lt;warning-message&gt; and &lt;error-message&gt; are
843 human readable descriptions of the warning or error
844 respectively.
845 </p>
846 <p>Examples:
847 </p>
848 <p>
849 </p>
850 <blockquote class="text">
851 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
852 </p>
853 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
854 </p>
855 </blockquote><p>
856
857 </p>
858 <p>
859 </p>
860 <blockquote class="text">
861 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
862 </p>
863 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
864 </p>
865 </blockquote><p>
866
867 </p>
868 <p>
869 </p>
870 <blockquote class="text">
871 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
872 </p>
873 <p>S: "ERR:9:There is no audio output device with index 123456."
874 </p>
875 </blockquote><p>
876
877 </p>
878 <p>Normal result sets could be:
879 </p>
880 <p>
881 </p>
882 <ol class="text">
883 <li>Empty
884 </li>
885 <li>Single line
886 </li>
887 <li>Multi-line
888 </li>
889 </ol><p>
890
891 </p>
892 <p> Empty result set is issued when the server only
893 needed to acknowledge the fact that the request was
894 received and it was processed successfully and no
895 additional information is available. This result set has
896 the following format:
897 </p>
898 <p>
899 </p>
900 <blockquote class="text">
901 <p>"OK"
902 </p>
903 </blockquote><p>
904
905 </p>
906 <p>Example:
907 </p>
908 <p>
909 </p>
910 <blockquote class="text">
911 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
912 </p>
913 <p>S: "OK"
914 </p>
915 </blockquote><p>
916
917 </p>
918 <p>Single line result sets are command specific. One
919 example of a single line result set is an empty line.
920 Multi-line result sets are command specific and may
921 include one or more lines of information. They MUST
922 always end with the following line:
923 </p>
924 <p>
925 </p>
926 <blockquote class="text">
927 <p>"."
928 </p>
929 </blockquote><p>
930
931 </p>
932 <p>Example:
933 </p>
934 <p>
935 </p>
936 <blockquote class="text">
937 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
938 </p>
939 <p>S: "DRIVER: ALSA"
940 </p>
941 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
942 </p>
943 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
944 </p>
945 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
946 </p>
947 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
948 </p>
949 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
950 </p>
951 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
952 </p>
953 <p>&nbsp;&nbsp;&nbsp;"."
954 </p>
955 </blockquote><p>
956
957 </p>
958 <p>In addition to above mentioned formats, warnings and
959 empty result sets MAY be indexed. In this case, they
960 have the following formats respectively:
961 </p>
962 <p>
963 </p>
964 <ul class="text">
965 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
966 </li>
967 <li>"OK[&lt;index&gt;]"
968 </li>
969 </ul><p>
970
971 </p>
972 <p>where &lt;index&gt; is command specific and is used
973 to indicate channel number that the result set was
974 related to or other integer value.
975 </p>
976 <p>Each line of the result set MUST end with
977 &lt;CRLF&gt;.
978 </p>
979 <p>Examples:
980 </p>
981 <p>
982 </p>
983 <blockquote class="text">
984 <p>C: "ADD CHANNEL"
985 </p>
986 <p>S: "OK[12]"
987 </p>
988 </blockquote><p>
989
990 </p>
991 <p>
992 </p>
993 <blockquote class="text">
994 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
995 </p>
996 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
997 </p>
998 </blockquote><p>
999
1000 </p>
1001 <a name="anchor7"></a><br /><hr />
1002 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1003 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
1004 Subscribe/notify communication method</h3>
1005
1006 <p>This more sophisticated communication method is actually
1007 only an extension of the simple request/response
1008 communication method. The front-end still uses a TCP
1009 connection and sends the same commands on the TCP
1010 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1011 commands that allow a client to tell the server that it is
1012 interested in receiving notifications about certain events
1013 as they happen on the server. The SUBSCRIBE command has the
1014 following syntax:
1015 </p>
1016 <p>
1017 </p>
1018 <blockquote class="text">
1019 <p>SUBSCRIBE &lt;event-id&gt;
1020 </p>
1021 </blockquote><p>
1022
1023 </p>
1024 <p>where &lt;event-id&gt; will be replaced by the respective
1025 event that client wants to subscribe to. Upon receiving such
1026 request, server SHOULD respond with OK and start sending
1027 EVENT notifications when a given even has occurred to the
1028 front-end when an event has occurred. It MAY be possible
1029 certain events may be sent before OK response during real
1030 time nature of their generation. Event messages have the
1031 following format:
1032 </p>
1033 <p>
1034 </p>
1035 <blockquote class="text">
1036 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1037 </p>
1038 </blockquote><p>
1039
1040 </p>
1041 <p>where &lt;event-id&gt; uniquely identifies the event that
1042 has occurred and &lt;custom-event-data&gt; is event
1043 specific.
1044 </p>
1045 <p>Several rules must be followed by the server when
1046 generating events:
1047 </p>
1048 <p>
1049 </p>
1050 <ol class="text">
1051 <li>Events MUST NOT be sent to any client who has not
1052 issued an appropriate SUBSCRIBE command.
1053 </li>
1054 <li>Events MUST only be sent using the same
1055 connection that was used to subscribe to them.
1056 </li>
1057 <li>When response is being sent to the client, event
1058 MUST be inserted in the stream before or after the
1059 response, but NOT in the middle. Same is true about
1060 the response. It should never be inserted in the
1061 middle of the event message as well as any other
1062 response.
1063 </li>
1064 </ol><p>
1065
1066 </p>
1067 <p>If the client is not interested in a particular event
1068 anymore it MAY issue UNSUBSCRIBE command using the following
1069 syntax:
1070 </p>
1071 <p>
1072 </p>
1073 <blockquote class="text">
1074 <p>UNSUBSCRIBE &lt;event-id&gt;
1075 </p>
1076 </blockquote><p>
1077
1078 </p>
1079 <p>where &lt;event-id&gt; will be replace by the respective
1080 event that client is no longer interested in receiving. For
1081 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1082 </p>
1083 <p>Example: the fill states of disk stream buffers have
1084 changed on sampler channel 4 and the LinuxSampler instance
1085 will react by sending the following message to all clients
1086 who subscribed to this event:
1087 </p>
1088 <p>
1089 </p>
1090 <blockquote class="text">
1091 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1092 </p>
1093 </blockquote><p>
1094
1095 </p>
1096 <p>Which means there are currently three active streams on
1097 sampler channel 4, where the stream with ID "35" is filled
1098 by 62%, stream with ID 33 is filled by 80% and stream with
1099 ID 37 is filled by 98%.
1100 </p>
1101 <p>Clients may choose to open more than one connection to
1102 the server and use some connections to receive notifications
1103 while using other connections to issue commands to the
1104 back-end. This is entirely legal and up to the
1105 implementation. This does not change the protocol in any way
1106 and no special restrictions exist on the server to allow or
1107 disallow this or to track what connections belong to what
1108 front-ends. Server will listen on a single port, accept
1109 multiple connections and support protocol described in this
1110 specification in it's entirety on this single port on each
1111 connection that it accepted.
1112 </p>
1113 <p>Due to the fact that TCP is used for this communication,
1114 dead peers will be detected automatically by the OS TCP
1115 stack. While it may take a while to detect dead peers if no
1116 traffic is being sent from server to client (TCP keep-alive
1117 timer is set to 2 hours on many OSes) it will not be an
1118 issue here as when notifications are sent by the server,
1119 dead client will be detected quickly.
1120 </p>
1121 <p>When connection is closed for any reason server MUST
1122 forget all subscriptions that were made on this connection.
1123 If client reconnects it MUST resubscribe to all events that
1124 it wants to receive.
1125 </p>
1126 <a name="control_commands"></a><br /><hr />
1127 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1128 <a name="rfc.section.6"></a><h3>6.&nbsp;
1129 Description for control commands</h3>
1130
1131 <p>This chapter will describe the available control commands
1132 that can be sent on the TCP connection in detail. Some certain
1133 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>
1134 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
1135 multiple-line responses. In this case LinuxSampler signals the
1136 end of the response by a "." (single dot) line.
1137 </p>
1138 <a name="anchor8"></a><br /><hr />
1139 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1140 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1141 Ignored lines and comments</h3>
1142
1143 <p>White lines, that is lines which only contain space and
1144 tabulator characters, and lines that start with a "#"
1145 character are ignored, thus it's possible for example to
1146 group commands and to place comments in a LSCP script
1147 file.
1148 </p>
1149 <a name="anchor9"></a><br /><hr />
1150 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1151 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1152 Configuring audio drivers</h3>
1153
1154 <p>Instances of drivers in LinuxSampler are called devices.
1155 You can use multiple audio devices simultaneously, e.g. to
1156 output the sound of one sampler channel using the ALSA audio
1157 output driver, and on another sampler channel you might want
1158 to use the JACK audio output driver. For particular audio
1159 output systems it's also possible to create several devices
1160 of the same audio output driver, e.g. two separate ALSA
1161 audio output devices for using two different sound cards at
1162 the same time. This chapter describes all commands to
1163 configure LinuxSampler's audio output devices and their
1164 parameters.
1165 </p>
1166 <p>Instead of defining commands and parameters for each
1167 driver individually, all possible parameters, their meanings
1168 and possible values have to be obtained at runtime. This
1169 makes the protocol a bit abstract, but has the advantage,
1170 that front-ends can be written independently of what drivers
1171 are currently implemented and what parameters these drivers
1172 are actually offering. This means front-ends can even handle
1173 drivers which are implemented somewhere in future without
1174 modifying the front-end at all.
1175 </p>
1176 <p>Note: examples in this chapter showing particular
1177 parameters of drivers are not meant as specification of the
1178 drivers' parameters. Driver implementations in LinuxSampler
1179 might have complete different parameter names and meanings
1180 than shown in these examples or might change in future, so
1181 these examples are only meant for showing how to retrieve
1182 what parameters drivers are offering, how to retrieve their
1183 possible values, etc.
1184 </p>
1185 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1186 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1187 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1188 Getting amount of available audio output drivers</h3>
1189
1190 <p>Use the following command to get the number of
1191 audio output drivers currently available for the
1192 LinuxSampler instance:
1193 </p>
1194 <p>
1195 </p>
1196 <blockquote class="text">
1197 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1198 </p>
1199 </blockquote><p>
1200
1201 </p>
1202 <p>Possible Answers:
1203 </p>
1204 <p>
1205 </p>
1206 <blockquote class="text">
1207 <p>LinuxSampler will answer by sending the
1208 number of audio output drivers.
1209 </p>
1210 </blockquote><p>
1211
1212 </p>
1213 <p>Example:
1214 </p>
1215 <p>
1216 </p>
1217 <blockquote class="text">
1218 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1219 </p>
1220 <p>S: "2"
1221 </p>
1222 </blockquote><p>
1223
1224 </p>
1225 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1226 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1227 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1228 Getting all available audio output drivers</h3>
1229
1230 <p>Use the following command to list all audio output
1231 drivers currently available for the LinuxSampler
1232 instance:
1233 </p>
1234 <p>
1235 </p>
1236 <blockquote class="text">
1237 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1238 </p>
1239 </blockquote><p>
1240
1241 </p>
1242 <p>Possible Answers:
1243 </p>
1244 <p>
1245 </p>
1246 <blockquote class="text">
1247 <p>LinuxSampler will answer by sending comma
1248 separated character strings, each symbolizing an
1249 audio output driver.
1250 </p>
1251 </blockquote><p>
1252
1253 </p>
1254 <p>Example:
1255 </p>
1256 <p>
1257 </p>
1258 <blockquote class="text">
1259 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1260 </p>
1261 <p>S: "ALSA,JACK"
1262 </p>
1263 </blockquote><p>
1264
1265 </p>
1266 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1267 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1268 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1269 Getting information about a specific audio
1270 output driver</h3>
1271
1272 <p>Use the following command to get detailed information
1273 about a specific audio output driver:
1274 </p>
1275 <p>
1276 </p>
1277 <blockquote class="text">
1278 <p>GET AUDIO_OUTPUT_DRIVER INFO
1279 &lt;audio-output-driver&gt;
1280 </p>
1281 </blockquote><p>
1282
1283 </p>
1284 <p>Where &lt;audio-output-driver&gt; is the name of the
1285 audio output driver, returned by the
1286 <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.
1287 </p>
1288 <p>Possible Answers:
1289 </p>
1290 <p>
1291 </p>
1292 <blockquote class="text">
1293 <p>LinuxSampler will answer by sending a
1294 &lt;CRLF&gt; separated list. Each answer line
1295 begins with the information category name
1296 followed by a colon and then a space character
1297 &lt;SP&gt; and finally the info character string
1298 to that info category. At the moment the
1299 following information categories are
1300 defined:
1301 </p>
1302 <p>
1303 </p>
1304 <blockquote class="text">
1305 <p>DESCRIPTION -
1306 </p>
1307 <blockquote class="text">
1308 <p> character string describing the
1309 audio output driver
1310 </p>
1311 </blockquote>
1312
1313
1314 <p>VERSION -
1315 </p>
1316 <blockquote class="text">
1317 <p>character string reflecting the
1318 driver's version
1319 </p>
1320 </blockquote>
1321
1322
1323 <p>PARAMETERS -
1324 </p>
1325 <blockquote class="text">
1326 <p>comma separated list of all
1327 parameters available for the given
1328 audio output driver, at least
1329 parameters 'channels', 'samplerate'
1330 and 'active' are offered by all audio
1331 output drivers
1332 </p>
1333 </blockquote>
1334
1335
1336 </blockquote>
1337
1338
1339 <p>The mentioned fields above don't have to be
1340 in particular order.
1341 </p>
1342 </blockquote><p>
1343
1344 </p>
1345 <p>Example:
1346 </p>
1347 <p>
1348 </p>
1349 <blockquote class="text">
1350 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1351 </p>
1352 <p>S: "DESCRIPTION: Advanced Linux Sound
1353 Architecture"
1354 </p>
1355 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1356 </p>
1357 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1358 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1359 FRAGMENTSIZE,CARD"
1360 </p>
1361 <p>&nbsp;&nbsp;&nbsp;"."
1362 </p>
1363 </blockquote><p>
1364
1365 </p>
1366 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1367 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1368 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1369 Getting information about specific audio
1370 output driver parameter</h3>
1371
1372 <p>Use the following command to get detailed information
1373 about a specific audio output driver parameter:
1374 </p>
1375 <p>
1376 </p>
1377 <blockquote class="text">
1378 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1379 </p>
1380 </blockquote><p>
1381
1382 </p>
1383 <p>Where &lt;audio&gt; is the name of the audio output
1384 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,
1385 &lt;prm&gt; a specific parameter name for which information should be
1386 obtained (as returned by the
1387 <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
1388 &lt;deplist&gt; is an optional list of parameters on which the sought
1389 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1390 pairs in form of "key1=val1 key2=val2 ...", where character string values
1391 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1392 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1393 the front-end application can simply put all parameters into &lt;deplist&gt;
1394 with the values already selected by the user.
1395 </p>
1396 <p>Possible Answers:
1397 </p>
1398 <p>
1399 </p>
1400 <blockquote class="text">
1401 <p>LinuxSampler will answer by sending a
1402 &lt;CRLF&gt; separated list.
1403 Each answer line begins with the information category name
1404 followed by a colon and then a space character &lt;SP&gt; and
1405 finally
1406 the info character string to that info category. There are
1407 information which is always returned, independently of the
1408 given driver parameter and there are optional information
1409 which is only shown dependently to given driver parameter. At
1410 the moment the following information categories are defined:
1411 </p>
1412 </blockquote><p>
1413
1414 </p>
1415 <p>
1416 </p>
1417 <blockquote class="text">
1418 <p>TYPE -
1419 </p>
1420 <blockquote class="text">
1421 <p>either "BOOL" for boolean value(s) or
1422 "INT" for integer
1423 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1424 character string(s)
1425 (always returned, no matter which driver parameter)
1426 </p>
1427 </blockquote>
1428
1429
1430 <p>DESCRIPTION -
1431 </p>
1432 <blockquote class="text">
1433 <p>arbitrary text describing the purpose of the parameter
1434 (always returned, no matter which driver parameter)
1435 </p>
1436 </blockquote>
1437
1438
1439 <p>MANDATORY -
1440 </p>
1441 <blockquote class="text">
1442 <p>either true or false, defines if this parameter must be
1443 given when the device is to be created with the
1444 <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>
1445 command (always returned, no matter which driver parameter)
1446 </p>
1447 </blockquote>
1448
1449
1450 <p>FIX -
1451 </p>
1452 <blockquote class="text">
1453 <p>either true or false, if false then this parameter can
1454 be changed at any time, once the device is created by
1455 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>
1456 command (always returned, no matter which driver parameter)
1457 </p>
1458 </blockquote>
1459
1460
1461 <p>MULTIPLICITY -
1462 </p>
1463 <blockquote class="text">
1464 <p>either true or false, defines if this parameter allows
1465 only one value or a list of values, where true means
1466 multiple values and false only a single value allowed
1467 (always returned, no matter which driver parameter)
1468 </p>
1469 </blockquote>
1470
1471
1472 <p>DEPENDS -
1473 </p>
1474 <blockquote class="text">
1475 <p>comma separated list of parameters this parameter depends
1476 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1477 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1478 listed parameters, for example assuming that an audio
1479 driver (like the ALSA driver) offers parameters 'card'
1480 and 'samplerate' then parameter 'samplerate' would
1481 depend on 'card' because the possible values for
1482 'samplerate' depends on the sound card which can be
1483 chosen by the 'card' parameter
1484 (optionally returned, dependent to driver parameter)
1485 </p>
1486 </blockquote>
1487
1488
1489 <p>DEFAULT -
1490 </p>
1491 <blockquote class="text">
1492 <p>reflects the default value for this parameter which is
1493 used when the device is created and not explicitly
1494 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,
1495 in case of MULTIPLCITY=true, this is a comma separated
1496 list, that's why character strings are encapsulated into
1497 apostrophes (')
1498 (optionally returned, dependent to driver parameter)
1499 </p>
1500 </blockquote>
1501
1502
1503 <p>RANGE_MIN -
1504 </p>
1505 <blockquote class="text">
1506 <p>defines lower limit of the allowed value range for this
1507 parameter, can be an integer value as well as a dotted
1508 number, this parameter is often used in conjunction
1509 with RANGE_MAX, but may also appear without
1510 (optionally returned, dependent to driver parameter)
1511 </p>
1512 </blockquote>
1513
1514
1515 <p>RANGE_MAX -
1516 </p>
1517 <blockquote class="text">
1518 <p>defines upper limit of the allowed value range for this
1519 parameter, can be an integer value as well as a dotted
1520 number, this parameter is often used in conjunction with
1521 RANGE_MIN, but may also appear without
1522 (optionally returned, dependent to driver parameter)
1523 </p>
1524 </blockquote>
1525
1526
1527 <p>POSSIBILITIES -
1528 </p>
1529 <blockquote class="text">
1530 <p>comma separated list of possible values for this
1531 parameter, character strings are encapsulated into
1532 apostrophes
1533 (optionally returned, dependent to driver parameter)
1534 </p>
1535 </blockquote>
1536
1537
1538 </blockquote><p>
1539
1540 </p>
1541 <p>The mentioned fields above don't have to be in particular order.
1542 </p>
1543 <p>Examples:
1544 </p>
1545 <p>
1546 </p>
1547 <blockquote class="text">
1548 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1549 </p>
1550 <p>S: "DESCRIPTION: sound card to be used"
1551 </p>
1552 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1553 </p>
1554 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1555 </p>
1556 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1557 </p>
1558 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1559 </p>
1560 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1561 </p>
1562 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1563 </p>
1564 <p>&nbsp;&nbsp;&nbsp;"."
1565 </p>
1566 </blockquote><p>
1567
1568 </p>
1569 <p>
1570 </p>
1571 <blockquote class="text">
1572 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1573 </p>
1574 <p>S: "DESCRIPTION: output sample rate in Hz"
1575 </p>
1576 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1577 </p>
1578 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1579 </p>
1580 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1581 </p>
1582 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1583 </p>
1584 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1585 </p>
1586 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1587 </p>
1588 <p>&nbsp;&nbsp;&nbsp;"."
1589 </p>
1590 </blockquote><p>
1591
1592 </p>
1593 <p>
1594 </p>
1595 <blockquote class="text">
1596 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1597 </p>
1598 <p>S: "DESCRIPTION: output sample rate in Hz"
1599 </p>
1600 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1601 </p>
1602 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1603 </p>
1604 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1605 </p>
1606 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1607 </p>
1608 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1609 </p>
1610 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1611 </p>
1612 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1613 </p>
1614 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1615 </p>
1616 <p>&nbsp;&nbsp;&nbsp;"."
1617 </p>
1618 </blockquote><p>
1619
1620 </p>
1621 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1622 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1623 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1624 Creating an audio output device</h3>
1625
1626 <p>Use the following command to create a new audio output device for the desired audio output system:
1627 </p>
1628 <p>
1629 </p>
1630 <blockquote class="text">
1631 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1632 </p>
1633 </blockquote><p>
1634
1635 </p>
1636 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1637 output system as returned by the
1638 <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>
1639 command and &lt;param-list&gt; by an optional list of driver
1640 specific parameters in form of "key1=val1 key2=val2 ...", where
1641 character string values should be encapsulated into apostrophes (').
1642 Note that there might be drivers which require parameter(s) to be
1643 given with this command. Use the previously described commands in
1644 this chapter to get this information.
1645 </p>
1646 <p>Possible Answers:
1647 </p>
1648 <p>
1649 </p>
1650 <blockquote class="text">
1651 <p>"OK[&lt;device-id&gt;]" -
1652 </p>
1653 <blockquote class="text">
1654 <p>in case the device was successfully created, where
1655 &lt;device-id&gt; is the numerical ID of the new device
1656 </p>
1657 </blockquote>
1658
1659
1660 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1661 </p>
1662 <blockquote class="text">
1663 <p>in case the device was created successfully, where
1664 &lt;device-id&gt; is the numerical ID of the new device, but there
1665 are noteworthy issue(s) related (e.g. sound card doesn't
1666 support given hardware parameters and the driver is using
1667 fall-back values), providing an appropriate warning code and
1668 warning message
1669 </p>
1670 </blockquote>
1671
1672
1673 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1674 </p>
1675 <blockquote class="text">
1676 <p>in case it failed, providing an appropriate error code and error message
1677 </p>
1678 </blockquote>
1679
1680
1681 </blockquote><p>
1682
1683 </p>
1684 <p>Examples:
1685 </p>
1686 <p>
1687 </p>
1688 <blockquote class="text">
1689 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1690 </p>
1691 <p>S: "OK[0]"
1692 </p>
1693 </blockquote><p>
1694
1695 </p>
1696 <p>
1697 </p>
1698 <blockquote class="text">
1699 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1700 </p>
1701 <p>S: "OK[1]"
1702 </p>
1703 </blockquote><p>
1704
1705 </p>
1706 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1707 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1708 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1709 Destroying an audio output device</h3>
1710
1711 <p>Use the following command to destroy a created output device:
1712 </p>
1713 <p>
1714 </p>
1715 <blockquote class="text">
1716 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1717 </p>
1718 </blockquote><p>
1719
1720 </p>
1721 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1722 audio output device as given by the
1723 <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>
1724 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>
1725 command.
1726 </p>
1727 <p>Possible Answers:
1728 </p>
1729 <p>
1730 </p>
1731 <blockquote class="text">
1732 <p>"OK" -
1733 </p>
1734 <blockquote class="text">
1735 <p>in case the device was successfully destroyed
1736 </p>
1737 </blockquote>
1738
1739
1740 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1741 </p>
1742 <blockquote class="text">
1743 <p>in case the device was destroyed successfully, but there are
1744 noteworthy issue(s) related (e.g. an audio over ethernet
1745 driver was unloaded but the other host might not be
1746 informed about this situation), providing an appropriate
1747 warning code and warning message
1748 </p>
1749 </blockquote>
1750
1751
1752 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1753 </p>
1754 <blockquote class="text">
1755 <p>in case it failed, providing an appropriate error code and
1756 error message
1757 </p>
1758 </blockquote>
1759
1760
1761 </blockquote><p>
1762
1763 </p>
1764 <p>Example:
1765 </p>
1766 <p>
1767 </p>
1768 <blockquote class="text">
1769 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1770 </p>
1771 <p>S: "OK"
1772 </p>
1773 </blockquote><p>
1774
1775 </p>
1776 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1777 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1778 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1779 Getting all created audio output device count</h3>
1780
1781 <p>Use the following command to count all created audio output devices:
1782 </p>
1783 <p>
1784 </p>
1785 <blockquote class="text">
1786 <p>GET AUDIO_OUTPUT_DEVICES
1787 </p>
1788 </blockquote><p>
1789
1790 </p>
1791 <p>Possible Answers:
1792 </p>
1793 <p>
1794 </p>
1795 <blockquote class="text">
1796 <p>LinuxSampler will answer by sending the current number of all
1797 audio output devices.
1798 </p>
1799 </blockquote><p>
1800
1801 </p>
1802 <p>Example:
1803 </p>
1804 <p>
1805 </p>
1806 <blockquote class="text">
1807 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1808 </p>
1809 <p>S: "4"
1810 </p>
1811 </blockquote><p>
1812
1813 </p>
1814 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1815 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1816 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1817 Getting all created audio output device list</h3>
1818
1819 <p>Use the following command to list all created audio output devices:
1820 </p>
1821 <p>
1822 </p>
1823 <blockquote class="text">
1824 <p>LIST AUDIO_OUTPUT_DEVICES
1825 </p>
1826 </blockquote><p>
1827
1828 </p>
1829 <p>Possible Answers:
1830 </p>
1831 <p>
1832 </p>
1833 <blockquote class="text">
1834 <p>LinuxSampler will answer by sending a comma separated list with
1835 the numerical IDs of all audio output devices.
1836 </p>
1837 </blockquote><p>
1838
1839 </p>
1840 <p>Example:
1841 </p>
1842 <p>
1843 </p>
1844 <blockquote class="text">
1845 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1846 </p>
1847 <p>S: "0,1,4,5"
1848 </p>
1849 </blockquote><p>
1850
1851 </p>
1852 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1853 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1854 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1855 Getting current settings of an audio output device</h3>
1856
1857 <p>Use the following command to get current settings of a specific, created audio output device:
1858 </p>
1859 <p>
1860 </p>
1861 <blockquote class="text">
1862 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1863 </p>
1864 </blockquote><p>
1865
1866 </p>
1867 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1868 of the audio output device as e.g. returned by the
1869 <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.
1870 </p>
1871 <p>Possible Answers:
1872 </p>
1873 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1874 Each answer line begins with the information category name
1875 followed by a colon and then a space character &lt;SP&gt; and finally
1876 the info character string to that info category. As some
1877 parameters might allow multiple values, character strings are
1878 encapsulated into apostrophes ('). At the moment the following
1879 information categories are defined (independently of device):
1880 </p>
1881 <p>
1882 </p>
1883 <blockquote class="text">
1884 <p>DRIVER -
1885 </p>
1886 <blockquote class="text">
1887 <p>identifier of the used audio output driver, as also
1888 returned by the
1889 <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>
1890 command
1891 </p>
1892 </blockquote>
1893
1894
1895 <p>CHANNELS -
1896 </p>
1897 <blockquote class="text">
1898 <p>amount of audio output channels this device currently
1899 offers
1900 </p>
1901 </blockquote>
1902
1903
1904 <p>SAMPLERATE -
1905 </p>
1906 <blockquote class="text">
1907 <p>playback sample rate the device uses
1908 </p>
1909 </blockquote>
1910
1911
1912 <p>ACTIVE -
1913 </p>
1914 <blockquote class="text">
1915 <p>either true or false, if false then the audio device is
1916 inactive and doesn't output any sound, nor do the
1917 sampler channels connected to this audio device render
1918 any audio
1919 </p>
1920 </blockquote>
1921
1922
1923 </blockquote><p>
1924
1925 </p>
1926 <p>The mentioned fields above don't have to be in particular
1927 order. The fields above are only those fields which are
1928 returned by all audio output devices. Every audio output driver
1929 might have its own, additional driver specific parameters (see
1930 <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>)
1931 which are also returned by this command.
1932 </p>
1933 <p>Example:
1934 </p>
1935 <p>
1936 </p>
1937 <blockquote class="text">
1938 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1939 </p>
1940 <p>S: "DRIVER: ALSA"
1941 </p>
1942 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1943 </p>
1944 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1945 </p>
1946 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1947 </p>
1948 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1949 </p>
1950 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1951 </p>
1952 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1953 </p>
1954 <p>&nbsp;&nbsp;&nbsp;"."
1955 </p>
1956 </blockquote><p>
1957
1958 </p>
1959 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1960 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1961 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1962 Changing settings of audio output devices</h3>
1963
1964 <p>Use the following command to alter a specific setting of a created audio output device:
1965 </p>
1966 <p>
1967 </p>
1968 <blockquote class="text">
1969 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1970 </p>
1971 </blockquote><p>
1972
1973 </p>
1974 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1975 audio output device as given by the
1976 <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>
1977 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>
1978 command, &lt;key&gt; by the name of the parameter to change
1979 and &lt;value&gt; by the new value for this parameter.
1980 </p>
1981 <p>Possible Answers:
1982 </p>
1983 <p>
1984 </p>
1985 <blockquote class="text">
1986 <p>"OK" -
1987 </p>
1988 <blockquote class="text">
1989 <p>in case setting was successfully changed
1990 </p>
1991 </blockquote>
1992
1993
1994 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1995 </p>
1996 <blockquote class="text">
1997 <p>in case setting was changed successfully, but there are
1998 noteworthy issue(s) related, providing an appropriate
1999 warning code and warning message
2000 </p>
2001 </blockquote>
2002
2003
2004 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2005 </p>
2006 <blockquote class="text">
2007 <p>in case it failed, providing an appropriate error code and
2008 error message
2009 </p>
2010 </blockquote>
2011
2012
2013 </blockquote><p>
2014
2015 </p>
2016 <p>Example:
2017 </p>
2018 <p>
2019 </p>
2020 <blockquote class="text">
2021 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2022 </p>
2023 <p>S: "OK"
2024 </p>
2025 </blockquote><p>
2026
2027 </p>
2028 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2029 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2030 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2031 Getting information about an audio channel</h3>
2032
2033 <p>Use the following command to get information about an audio channel:
2034 </p>
2035 <p>
2036 </p>
2037 <blockquote class="text">
2038 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2039 </p>
2040 </blockquote><p>
2041
2042 </p>
2043 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2044 <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>
2045 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>
2046 command and &lt;audio-chan&gt; the audio channel number.
2047 </p>
2048 <p>Possible Answers:
2049 </p>
2050 <p>
2051 </p>
2052 <blockquote class="text">
2053 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2054 Each answer line begins with the information category name
2055 followed by a colon and then a space character &lt;SP&gt; and finally
2056 the info character string to that info category. At the moment
2057 the following information categories are defined:
2058 </p>
2059 <p>
2060 </p>
2061 <blockquote class="text">
2062 <p>NAME -
2063 </p>
2064 <blockquote class="text">
2065 <p>arbitrary character string naming the channel, which
2066 doesn't have to be unique (always returned by all audio channels)
2067 </p>
2068 </blockquote>
2069
2070
2071 <p>IS_MIX_CHANNEL -
2072 </p>
2073 <blockquote class="text">
2074 <p>either true or false, a mix-channel is not a real,
2075 independent audio channel, but a virtual channel which
2076 is mixed to another real channel, this mechanism is
2077 needed for sampler engines which need more audio
2078 channels than the used audio system might be able to offer
2079 (always returned by all audio channels)
2080 </p>
2081 </blockquote>
2082
2083
2084 <p>MIX_CHANNEL_DESTINATION -
2085 </p>
2086 <blockquote class="text">
2087 <p>numerical ID (positive integer including 0)
2088 which reflects the real audio channel (of the same audio
2089 output device) this mix channel refers to, means where
2090 the audio signal actually will be routed / added to
2091 (only returned in case the audio channel is mix channel)
2092 </p>
2093 </blockquote>
2094
2095
2096 </blockquote>
2097
2098
2099 </blockquote><p>
2100
2101 </p>
2102 <p>The mentioned fields above don't have to be in particular
2103 order. The fields above are only those fields which are
2104 generally returned for the described cases by all audio
2105 channels regardless of the audio driver. Every audio channel
2106 might have its own, additional driver and channel specific
2107 parameters.
2108 </p>
2109 <p>Examples:
2110 </p>
2111 <p>
2112 </p>
2113 <blockquote class="text">
2114 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2115 </p>
2116 <p>S: "NAME: studio monitor left"
2117 </p>
2118 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2119 </p>
2120 <p>&nbsp;&nbsp;&nbsp;"."
2121 </p>
2122 </blockquote><p>
2123
2124 </p>
2125 <p>
2126 </p>
2127 <blockquote class="text">
2128 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2129 </p>
2130 <p>S: "NAME: studio monitor right"
2131 </p>
2132 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2133 </p>
2134 <p>&nbsp;&nbsp;&nbsp;"."
2135 </p>
2136 </blockquote><p>
2137
2138 </p>
2139 <p>
2140 </p>
2141 <blockquote class="text">
2142 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2143 </p>
2144 <p>S: "NAME: studio monitor left"
2145 </p>
2146 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2147 </p>
2148 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2149 </p>
2150 <p>&nbsp;&nbsp;&nbsp;"."
2151 </p>
2152 </blockquote><p>
2153
2154 </p>
2155 <p>
2156 </p>
2157 <blockquote class="text">
2158 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2159 </p>
2160 <p>S: "NAME: 'ardour (left)'"
2161 </p>
2162 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2163 </p>
2164 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2165 </p>
2166 <p>&nbsp;&nbsp;&nbsp;"."
2167 </p>
2168 </blockquote><p>
2169
2170 </p>
2171 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2172 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2173 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2174 Getting information about specific audio channel parameter</h3>
2175
2176 <p>Use the following command to get detailed information about specific audio channel parameter:
2177 </p>
2178 <p>
2179 </p>
2180 <blockquote class="text">
2181 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2182 </p>
2183 </blockquote><p>
2184
2185 </p>
2186 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2187 <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>
2188 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>
2189 command, &lt;chan&gt; the audio channel number
2190 and &lt;param&gt; a specific channel parameter name for which information should
2191 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).
2192 </p>
2193 <p>Possible Answers:
2194 </p>
2195 <p>
2196 </p>
2197 <blockquote class="text">
2198 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2199 Each answer line begins with the information category name
2200 followed by a colon and then a space character &lt;SP&gt; and finally
2201 the info character string to that info category. There are
2202 information which is always returned, independently of the
2203 given channel parameter and there is optional information
2204 which is only shown dependently to the given audio channel. At
2205 the moment the following information categories are defined:
2206 </p>
2207 <p>
2208 </p>
2209 <blockquote class="text">
2210 <p>TYPE -
2211 </p>
2212 <blockquote class="text">
2213 <p>either "BOOL" for boolean value(s) or "INT" for integer
2214 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2215 character string(s)
2216 (always returned)
2217 </p>
2218 </blockquote>
2219
2220
2221 <p>DESCRIPTION -
2222 </p>
2223 <blockquote class="text">
2224 <p>arbitrary text describing the purpose of the parameter (always returned)
2225 </p>
2226 </blockquote>
2227
2228
2229 <p>FIX -
2230 </p>
2231 <blockquote class="text">
2232 <p>either true or false, if true then this parameter is
2233 read only, thus cannot be altered
2234 (always returned)
2235 </p>
2236 </blockquote>
2237
2238
2239 <p>MULTIPLICITY -
2240 </p>
2241 <blockquote class="text">
2242 <p>either true or false, defines if this parameter allows
2243 only one value or a list of values, where true means
2244 multiple values and false only a single value allowed
2245 (always returned)
2246 </p>
2247 </blockquote>
2248
2249
2250 <p>RANGE_MIN -
2251 </p>
2252 <blockquote class="text">
2253 <p>defines lower limit of the allowed value range for this
2254 parameter, can be an integer value as well as a dotted
2255 number, usually used in conjunction with 'RANGE_MAX',
2256 but may also appear without
2257 (optionally returned, dependent to driver and channel
2258 parameter)
2259 </p>
2260 </blockquote>
2261
2262
2263 <p>RANGE_MAX -
2264 </p>
2265 <blockquote class="text">
2266 <p>defines upper limit of the allowed value range for this
2267 parameter, can be an integer value as well as a dotted
2268 number, usually used in conjunction with 'RANGE_MIN',
2269 but may also appear without
2270 (optionally returned, dependent to driver and channel
2271 parameter)
2272 </p>
2273 </blockquote>
2274
2275
2276 <p>POSSIBILITIES -
2277 </p>
2278 <blockquote class="text">
2279 <p>comma separated list of possible values for this
2280 parameter, character strings are encapsulated into
2281 apostrophes
2282 (optionally returned, dependent to driver and channel
2283 parameter)
2284 </p>
2285 </blockquote>
2286
2287
2288 </blockquote>
2289
2290
2291 <p>The mentioned fields above don't have to be in particular order.
2292 </p>
2293 </blockquote><p>
2294
2295 </p>
2296 <p>Example:
2297 </p>
2298 <p>
2299 </p>
2300 <blockquote class="text">
2301 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2302 </p>
2303 <p>S: "DESCRIPTION: bindings to other JACK clients"
2304 </p>
2305 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2306 </p>
2307 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2308 </p>
2309 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2310 </p>
2311 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2312 </p>
2313 <p>&nbsp;&nbsp;&nbsp;"."
2314 </p>
2315 </blockquote><p>
2316
2317 </p>
2318 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2319 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2320 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2321 Changing settings of audio output channels</h3>
2322
2323 <p>Use the following command to alter a specific setting of an audio output channel:
2324 </p>
2325 <p>
2326 </p>
2327 <blockquote class="text">
2328 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2329 </p>
2330 </blockquote><p>
2331
2332 </p>
2333 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2334 <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>
2335 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>
2336 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2337 parameter to change and &lt;value&gt; by the new value for this parameter.
2338 </p>
2339 <p>Possible Answers:
2340 </p>
2341 <p>
2342 </p>
2343 <blockquote class="text">
2344 <p>"OK" -
2345 </p>
2346 <blockquote class="text">
2347 <p>in case setting was successfully changed
2348 </p>
2349 </blockquote>
2350
2351
2352 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2353 </p>
2354 <blockquote class="text">
2355 <p>in case setting was changed successfully, but there are
2356 noteworthy issue(s) related, providing an appropriate
2357 warning code and warning message
2358 </p>
2359 </blockquote>
2360
2361
2362 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2363 </p>
2364 <blockquote class="text">
2365 <p>in case it failed, providing an appropriate error code and
2366 error message
2367 </p>
2368 </blockquote>
2369
2370
2371 </blockquote><p>
2372
2373 </p>
2374 <p>Example:
2375 </p>
2376 <p>
2377 </p>
2378 <blockquote class="text">
2379 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2380 </p>
2381 <p>S: "OK"
2382 </p>
2383 </blockquote><p>
2384
2385 </p>
2386 <p>
2387 </p>
2388 <blockquote class="text">
2389 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2390 </p>
2391 <p>S: "OK"
2392 </p>
2393 </blockquote><p>
2394
2395 </p>
2396 <a name="anchor10"></a><br /><hr />
2397 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2398 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2399 Configuring MIDI input drivers</h3>
2400
2401 <p>Instances of drivers in LinuxSampler are called devices. You can use
2402 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2403 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2404 channel. For particular MIDI input systems it's also possible to create
2405 several devices of the same MIDI input type. This chapter describes all
2406 commands to configure LinuxSampler's MIDI input devices and their parameters.
2407 </p>
2408 <p>Instead of defining commands and parameters for each driver individually,
2409 all possible parameters, their meanings and possible values have to be obtained
2410 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2411 front-ends can be written independently of what drivers are currently implemented
2412 and what parameters these drivers are actually offering. This means front-ends can
2413 even handle drivers which are implemented somewhere in future without modifying
2414 the front-end at all.
2415 </p>
2416 <p>Commands for configuring MIDI input devices are pretty much the same as the
2417 commands for configuring audio output drivers, already described in the last
2418 chapter.
2419 </p>
2420 <p>Note: examples in this chapter showing particular parameters of drivers are
2421 not meant as specification of the drivers' parameters. Driver implementations in
2422 LinuxSampler might have complete different parameter names and meanings than shown
2423 in these examples or might change in future, so these examples are only meant for
2424 showing how to retrieve what parameters drivers are offering, how to retrieve their
2425 possible values, etc.
2426 </p>
2427 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2428 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2429 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2430 Getting amount of available MIDI input drivers</h3>
2431
2432 <p>Use the following command to get the number of
2433 MIDI input drivers currently available for the
2434 LinuxSampler instance:
2435 </p>
2436 <p>
2437 </p>
2438 <blockquote class="text">
2439 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2440 </p>
2441 </blockquote><p>
2442
2443 </p>
2444 <p>Possible Answers:
2445 </p>
2446 <p>
2447 </p>
2448 <blockquote class="text">
2449 <p>LinuxSampler will answer by sending the
2450 number of available MIDI input drivers.
2451 </p>
2452 </blockquote><p>
2453
2454 </p>
2455 <p>Example:
2456 </p>
2457 <p>
2458 </p>
2459 <blockquote class="text">
2460 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2461 </p>
2462 <p>S: "2"
2463 </p>
2464 </blockquote><p>
2465
2466 </p>
2467 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2468 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2469 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2470 Getting all available MIDI input drivers</h3>
2471
2472 <p>Use the following command to list all MIDI input drivers currently available
2473 for the LinuxSampler instance:
2474 </p>
2475 <p>
2476 </p>
2477 <blockquote class="text">
2478 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2479 </p>
2480 </blockquote><p>
2481
2482 </p>
2483 <p>Possible Answers:
2484 </p>
2485 <p>
2486 </p>
2487 <blockquote class="text">
2488 <p>LinuxSampler will answer by sending comma separated character
2489 strings, each symbolizing a MIDI input driver.
2490 </p>
2491 </blockquote><p>
2492
2493 </p>
2494 <p>Example:
2495 </p>
2496 <p>
2497 </p>
2498 <blockquote class="text">
2499 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2500 </p>
2501 <p>S: "ALSA,JACK"
2502 </p>
2503 </blockquote><p>
2504
2505 </p>
2506 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2507 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2508 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2509 Getting information about a specific MIDI input driver</h3>
2510
2511 <p>Use the following command to get detailed information about a specific MIDI input driver:
2512 </p>
2513 <p>
2514 </p>
2515 <blockquote class="text">
2516 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2517 </p>
2518 </blockquote><p>
2519
2520 </p>
2521 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2522 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.
2523 </p>
2524 <p>Possible Answers:
2525 </p>
2526 <p>
2527 </p>
2528 <blockquote class="text">
2529 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2530 Each answer line begins with the information category name
2531 followed by a colon and then a space character &lt;SP&gt; and finally
2532 the info character string to that info category. At the moment
2533 the following information categories are defined:
2534 </p>
2535 <p>
2536 </p>
2537 <blockquote class="text">
2538 <p>DESCRIPTION -
2539 </p>
2540 <blockquote class="text">
2541 <p>arbitrary description text about the MIDI input driver
2542 </p>
2543 </blockquote>
2544
2545
2546 <p>VERSION -
2547 </p>
2548 <blockquote class="text">
2549 <p>arbitrary character string regarding the driver's version
2550 </p>
2551 </blockquote>
2552
2553
2554 <p>PARAMETERS -
2555 </p>
2556 <blockquote class="text">
2557 <p>comma separated list of all parameters available for the given MIDI input driver
2558 </p>
2559 </blockquote>
2560
2561
2562 </blockquote>
2563
2564
2565 <p>The mentioned fields above don't have to be in particular order.
2566 </p>
2567 </blockquote><p>
2568
2569 </p>
2570 <p>Example:
2571 </p>
2572 <p>
2573 </p>
2574 <blockquote class="text">
2575 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2576 </p>
2577 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2578 </p>
2579 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2580 </p>
2581 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2582 </p>
2583 <p>&nbsp;&nbsp;&nbsp;"."
2584 </p>
2585 </blockquote><p>
2586
2587 </p>
2588 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2589 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2590 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2591 Getting information about specific MIDI input driver parameter</h3>
2592
2593 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2594 </p>
2595 <p>
2596 </p>
2597 <blockquote class="text">
2598 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2599 </p>
2600 </blockquote><p>
2601
2602 </p>
2603 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2604 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
2605 parameter name for which information should be obtained (as returned by the
2606 <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
2607 of parameters on which the sought parameter &lt;param&gt; depends on,
2608 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2609 where character string values are encapsulated into apostrophes ('). Arguments
2610 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2611 will be ignored, means the front-end application can simply put all parameters
2612 in &lt;deplist&gt; with the values selected by the user.
2613 </p>
2614 <p>Possible Answers:
2615 </p>
2616 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2617 Each answer line begins with the information category name
2618 followed by a colon and then a space character &lt;SP> and finally
2619 the info character string to that info category. There is
2620 information which is always returned, independent of the
2621 given driver parameter and there is optional information
2622 which is only shown dependent to given driver parameter. At
2623 the moment the following information categories are defined:
2624 </p>
2625 <p>
2626 </p>
2627 <blockquote class="text">
2628 <p>TYPE -
2629 </p>
2630 <blockquote class="text">
2631 <p>either "BOOL" for boolean value(s) or "INT" for integer
2632 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2633 character string(s)
2634 (always returned, no matter which driver parameter)
2635 </p>
2636 </blockquote>
2637
2638
2639 <p>DESCRIPTION -
2640 </p>
2641 <blockquote class="text">
2642 <p>arbitrary text describing the purpose of the parameter
2643 (always returned, no matter which driver parameter)
2644 </p>
2645 </blockquote>
2646
2647
2648 <p>MANDATORY -
2649 </p>
2650 <blockquote class="text">
2651 <p>either true or false, defines if this parameter must be
2652 given when the device is to be created with the
2653 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2654 (always returned, no matter which driver parameter)
2655 </p>
2656 </blockquote>
2657
2658
2659 <p>FIX -
2660 </p>
2661 <blockquote class="text">
2662 <p>either true or false, if false then this parameter can
2663 be changed at any time, once the device is created by
2664 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
2665 (always returned, no matter which driver parameter)
2666 </p>
2667 </blockquote>
2668
2669
2670 <p>MULTIPLICITY -
2671 </p>
2672 <blockquote class="text">
2673 <p>either true or false, defines if this parameter allows
2674 only one value or a list of values, where true means
2675 multiple values and false only a single value allowed
2676 (always returned, no matter which driver parameter)
2677 </p>
2678 </blockquote>
2679
2680
2681 <p>DEPENDS -
2682 </p>
2683 <blockquote class="text">
2684 <p>comma separated list of parameters this parameter depends
2685 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2686 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2687 listed parameters, for example assuming that an audio
2688 driver (like the ALSA driver) offers parameters 'card'
2689 and 'samplerate' then parameter 'samplerate' would
2690 depend on 'card' because the possible values for
2691 'samplerate' depends on the sound card which can be
2692 chosen by the 'card' parameter
2693 (optionally returned, dependent to driver parameter)
2694 </p>
2695 </blockquote>
2696
2697
2698 <p>DEFAULT -
2699 </p>
2700 <blockquote class="text">
2701 <p>reflects the default value for this parameter which is
2702 used when the device is created and not explicitly
2703 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,
2704 in case of MULTIPLCITY=true, this is a comma separated
2705 list, that's why character strings are encapsulated into
2706 apostrophes (')
2707 (optionally returned, dependent to driver parameter)
2708 </p>
2709 </blockquote>
2710
2711
2712 <p>RANGE_MIN -
2713 </p>
2714 <blockquote class="text">
2715 <p>defines lower limit of the allowed value range for this
2716 parameter, can be an integer value as well as a dotted
2717 number, this parameter is often used in conjunction
2718 with RANGE_MAX, but may also appear without
2719 (optionally returned, dependent to driver parameter)
2720 </p>
2721 </blockquote>
2722
2723
2724 <p>RANGE_MAX -
2725 </p>
2726 <blockquote class="text">
2727 <p>defines upper limit of the allowed value range for this
2728 parameter, can be an integer value as well as a dotted
2729 number, this parameter is often used in conjunction with
2730 RANGE_MIN, but may also appear without
2731 (optionally returned, dependent to driver parameter)
2732 </p>
2733 </blockquote>
2734
2735
2736 <p>POSSIBILITIES -
2737 </p>
2738 <blockquote class="text">
2739 <p>comma separated list of possible values for this
2740 parameter, character strings are encapsulated into
2741 apostrophes
2742 (optionally returned, dependent to driver parameter)
2743 </p>
2744 </blockquote>
2745
2746
2747 </blockquote><p>
2748
2749 </p>
2750 <p>The mentioned fields above don't have to be in particular order.
2751 </p>
2752 <p>Example:
2753 </p>
2754 <p>
2755 </p>
2756 <blockquote class="text">
2757 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2758 </p>
2759 <p>S: "DESCRIPTION: Whether device is enabled"
2760 </p>
2761 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2762 </p>
2763 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2764 </p>
2765 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2766 </p>
2767 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2768 </p>
2769 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2770 </p>
2771 <p>&nbsp;&nbsp;&nbsp;"."
2772 </p>
2773 </blockquote><p>
2774
2775 </p>
2776 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2777 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2778 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2779 Creating a MIDI input device</h3>
2780
2781 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2782 </p>
2783 <p>
2784 </p>
2785 <blockquote class="text">
2786 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2787 </p>
2788 </blockquote><p>
2789
2790 </p>
2791 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2792 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
2793 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2794 character string values should be encapsulated into apostrophes (').
2795 Note that there might be drivers which require parameter(s) to be
2796 given with this command. Use the previously described commands in
2797 this chapter to get that information.
2798 </p>
2799 <p>Possible Answers:
2800 </p>
2801 <p>
2802 </p>
2803 <blockquote class="text">
2804 <p>"OK[&lt;device-id&gt;]" -
2805 </p>
2806 <blockquote class="text">
2807 <p>in case the device was successfully created, where
2808 &lt;device-id&gt; is the numerical ID of the new device
2809 </p>
2810 </blockquote>
2811
2812
2813 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2814 </p>
2815 <blockquote class="text">
2816 <p>in case the driver was loaded successfully, where
2817 &lt;device-id&gt; is the numerical ID of the new device, but
2818 there are noteworthy issue(s) related, providing an
2819 appropriate warning code and warning message
2820 </p>
2821 </blockquote>
2822
2823
2824 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2825 </p>
2826 <blockquote class="text">
2827 <p>in case it failed, providing an appropriate error code and error message
2828 </p>
2829 </blockquote>
2830
2831
2832 </blockquote><p>
2833
2834 </p>
2835 <p>Example:
2836 </p>
2837 <p>
2838 </p>
2839 <blockquote class="text">
2840 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2841 </p>
2842 <p>S: "OK[0]"
2843 </p>
2844 </blockquote><p>
2845
2846 </p>
2847 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2848 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2849 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2850 Destroying a MIDI input device</h3>
2851
2852 <p>Use the following command to destroy a created MIDI input device:
2853 </p>
2854 <p>
2855 </p>
2856 <blockquote class="text">
2857 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2858 </p>
2859 </blockquote><p>
2860
2861 </p>
2862 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2863 <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>
2864 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>
2865 command.
2866 </p>
2867 <p>Possible Answers:
2868 </p>
2869 <p>
2870 </p>
2871 <blockquote class="text">
2872 <p>"OK" -
2873 </p>
2874 <blockquote class="text">
2875 <p>in case the device was successfully destroyed
2876 </p>
2877 </blockquote>
2878
2879
2880 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2881 </p>
2882 <blockquote class="text">
2883 <p>in case the device was destroyed, but there are noteworthy
2884 issue(s) related, providing an appropriate warning code and
2885 warning message
2886 </p>
2887 </blockquote>
2888
2889
2890 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2891 </p>
2892 <blockquote class="text">
2893 <p>in case it failed, providing an appropriate error code and error message
2894 </p>
2895 </blockquote>
2896
2897
2898 </blockquote><p>
2899
2900 </p>
2901 <p>Example:
2902 </p>
2903 <p>
2904 </p>
2905 <blockquote class="text">
2906 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2907 </p>
2908 <p>S: "OK"
2909 </p>
2910 </blockquote><p>
2911
2912 </p>
2913 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2914 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2915 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2916 Getting all created MIDI input device count</h3>
2917
2918 <p>Use the following command to count all created MIDI input devices:
2919 </p>
2920 <p>
2921 </p>
2922 <blockquote class="text">
2923 <p>GET MIDI_INPUT_DEVICES
2924 </p>
2925 </blockquote><p>
2926
2927 </p>
2928 <p>Possible Answers:
2929 </p>
2930 <p>
2931 </p>
2932 <blockquote class="text">
2933 <p>LinuxSampler will answer by sending the current number of all
2934 MIDI input devices.
2935 </p>
2936 </blockquote><p>
2937
2938 </p>
2939 <p>Example:
2940 </p>
2941 <p>
2942 </p>
2943 <blockquote class="text">
2944 <p>C: "GET MIDI_INPUT_DEVICES"
2945 </p>
2946 <p>S: "3"
2947 </p>
2948 </blockquote><p>
2949
2950 </p>
2951 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2952 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2953 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2954 Getting all created MIDI input device list</h3>
2955
2956 <p>Use the following command to list all created MIDI input devices:
2957 </p>
2958 <p>
2959 </p>
2960 <blockquote class="text">
2961 <p>LIST MIDI_INPUT_DEVICES
2962 </p>
2963 </blockquote><p>
2964
2965 </p>
2966 <p>Possible Answers:
2967 </p>
2968 <p>
2969 </p>
2970 <blockquote class="text">
2971 <p>LinuxSampler will answer by sending a comma separated list
2972 with the numerical Ids of all created MIDI input devices.
2973 </p>
2974 </blockquote><p>
2975
2976 </p>
2977 <p>Examples:
2978 </p>
2979 <p>
2980 </p>
2981 <blockquote class="text">
2982 <p>C: "LIST MIDI_INPUT_DEVICES"
2983 </p>
2984 <p>S: "0,1,2"
2985 </p>
2986 </blockquote><p>
2987
2988 </p>
2989 <p>
2990 </p>
2991 <blockquote class="text">
2992 <p>C: "LIST MIDI_INPUT_DEVICES"
2993 </p>
2994 <p>S: "1,3"
2995 </p>
2996 </blockquote><p>
2997
2998 </p>
2999 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
3000 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3001 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
3002 Getting current settings of a MIDI input device</h3>
3003
3004 <p>Use the following command to get current settings of a specific, created MIDI input device:
3005 </p>
3006 <p>
3007 </p>
3008 <blockquote class="text">
3009 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3010 </p>
3011 </blockquote><p>
3012
3013 </p>
3014 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3015 <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>
3016 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>
3017 command.
3018 </p>
3019 <p>Possible Answers:
3020 </p>
3021 <p>
3022 </p>
3023 <blockquote class="text">
3024 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3025 Each answer line begins with the information category name
3026 followed by a colon and then a space character &lt;SP&gt; and finally
3027 the info character string to that info category. As some
3028 parameters might allow multiple values, character strings are
3029 encapsulated into apostrophes ('). At the moment the following
3030 information categories are defined (independent of driver):
3031 </p>
3032 <p>
3033 </p>
3034 <blockquote class="text">
3035 <p>DRIVER -
3036 </p>
3037 <blockquote class="text">
3038 <p>identifier of the used MIDI input driver, as e.g.
3039 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>
3040 command
3041 </p>
3042 </blockquote>
3043
3044
3045 </blockquote>
3046
3047 <blockquote class="text">
3048 <p>ACTIVE -
3049 </p>
3050 <blockquote class="text">
3051 <p>either true or false, if false then the MIDI device is
3052 inactive and doesn't listen to any incoming MIDI events
3053 and thus doesn't forward them to connected sampler
3054 channels
3055 </p>
3056 </blockquote>
3057
3058
3059 </blockquote>
3060
3061
3062 </blockquote><p>
3063
3064 </p>
3065 <p>The mentioned fields above don't have to be in particular
3066 order. The fields above are only those fields which are
3067 returned by all MIDI input devices. Every MIDI input driver
3068 might have its own, additional driver specific parameters (see
3069 <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
3070 by this command.
3071 </p>
3072 <p>Example:
3073 </p>
3074 <p>
3075 </p>
3076 <blockquote class="text">
3077 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3078 </p>
3079 <p>S: "DRIVER: ALSA"
3080 </p>
3081 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3082 </p>
3083 <p>&nbsp;&nbsp;&nbsp;"."
3084 </p>
3085 </blockquote><p>
3086
3087 </p>
3088 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3089 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3090 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3091 Changing settings of MIDI input devices</h3>
3092
3093 <p>Use the following command to alter a specific setting of a created MIDI input device:
3094 </p>
3095 <p>
3096 </p>
3097 <blockquote class="text">
3098 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3099 </p>
3100 </blockquote><p>
3101
3102 </p>
3103 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3104 MIDI input device as returned by the
3105 <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>
3106 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>
3107 command, &lt;key&gt; by the name of the parameter to change and
3108 &lt;value&gt; by the new value for this parameter.
3109 </p>
3110 <p>Possible Answers:
3111 </p>
3112 <p>
3113 </p>
3114 <blockquote class="text">
3115 <p>"OK" -
3116 </p>
3117 <blockquote class="text">
3118 <p>in case setting was successfully changed
3119 </p>
3120 </blockquote>
3121
3122
3123 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3124 </p>
3125 <blockquote class="text">
3126 <p>in case setting was changed successfully, but there are
3127 noteworthy issue(s) related, providing an appropriate
3128 warning code and warning message
3129 </p>
3130 </blockquote>
3131
3132
3133 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3134 </p>
3135 <blockquote class="text">
3136 <p>in case it failed, providing an appropriate error code and error message
3137 </p>
3138 </blockquote>
3139
3140
3141 </blockquote><p>
3142
3143 </p>
3144 <p>Example:
3145 </p>
3146 <p>
3147 </p>
3148 <blockquote class="text">
3149 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3150 </p>
3151 <p>S: "OK"
3152 </p>
3153 </blockquote><p>
3154
3155 </p>
3156 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3157 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3158 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3159 Getting information about a MIDI port</h3>
3160
3161 <p>Use the following command to get information about a MIDI port:
3162 </p>
3163 <p>
3164 </p>
3165 <blockquote class="text">
3166 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3167 </p>
3168 </blockquote><p>
3169
3170 </p>
3171 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3172 <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>
3173 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>
3174 command and &lt;midi-port&gt; the MIDI input port number.
3175 </p>
3176 <p>Possible Answers:
3177 </p>
3178 <p>
3179 </p>
3180 <blockquote class="text">
3181 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3182 Each answer line begins with the information category name
3183 followed by a colon and then a space character &lt;SP&gt; and finally
3184 the info character string to that info category. At the moment
3185 the following information categories are defined:
3186 </p>
3187 <p>NAME -
3188 </p>
3189 <blockquote class="text">
3190 <p>arbitrary character string naming the port
3191 </p>
3192 </blockquote>
3193
3194
3195 </blockquote><p>
3196
3197 </p>
3198 <p>The field above is only the one which is returned by all MIDI
3199 ports regardless of the MIDI driver and port. Every MIDI port
3200 might have its own, additional driver and port specific
3201 parameters.
3202 </p>
3203 <p>Example:
3204 </p>
3205 <p>
3206 </p>
3207 <blockquote class="text">
3208 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3209 </p>
3210 <p>S: "NAME: 'Masterkeyboard'"
3211 </p>
3212 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3213 </p>
3214 <p>&nbsp;&nbsp;&nbsp;"."
3215 </p>
3216 </blockquote><p>
3217
3218 </p>
3219 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3220 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3221 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3222 Getting information about specific MIDI port parameter</h3>
3223
3224 <p>Use the following command to get detailed information about specific MIDI port parameter:
3225 </p>
3226 <p>
3227 </p>
3228 <blockquote class="text">
3229 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3230 </p>
3231 </blockquote><p>
3232
3233 </p>
3234 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3235 <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>
3236 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>
3237 command, &lt;port&gt; the MIDI port number and
3238 &lt;param&gt; a specific port parameter name for which information should be
3239 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).
3240 </p>
3241 <p>Possible Answers:
3242 </p>
3243 <p>
3244 </p>
3245 <blockquote class="text">
3246 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3247 Each answer line begins with the information category name
3248 followed by a colon and then a space character &lt;SP&gt; and finally
3249 the info character string to that info category. There is
3250 information which is always returned, independently of the
3251 given channel parameter and there is optional information
3252 which are only shown dependently to the given MIDI port. At the
3253 moment the following information categories are defined:
3254 </p>
3255 <p>TYPE -
3256 </p>
3257 <blockquote class="text">
3258 <p>either "BOOL" for boolean value(s) or "INT" for integer
3259 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3260 character string(s)
3261 (always returned)
3262 </p>
3263 </blockquote>
3264
3265
3266 <p>DESCRIPTION -
3267 </p>
3268 <blockquote class="text">
3269 <p>arbitrary text describing the purpose of the parameter
3270 (always returned)
3271 </p>
3272 </blockquote>
3273
3274
3275 <p>FIX -
3276 </p>
3277 <blockquote class="text">
3278 <p>either true or false, if true then this parameter is
3279 read only, thus cannot be altered
3280 (always returned)
3281 </p>
3282 </blockquote>
3283
3284
3285 <p>MULTIPLICITY -
3286 </p>
3287 <blockquote class="text">
3288 <p>either true or false, defines if this parameter allows
3289 only one value or a list of values, where true means
3290 multiple values and false only a single value allowed
3291 (always returned)
3292 </p>
3293 </blockquote>
3294
3295
3296 <p>RANGE_MIN -
3297 </p>
3298 <blockquote class="text">
3299 <p>defines lower limit of the allowed value range for this
3300 parameter, can be an integer value as well as a dotted
3301 number, this parameter is usually used in conjunction
3302 with 'RANGE_MAX' but may also appear without
3303 (optionally returned, dependent to driver and port
3304 parameter)
3305 </p>
3306 </blockquote>
3307
3308
3309 <p>RANGE_MAX -
3310 </p>
3311 <blockquote class="text">
3312 <p>defines upper limit of the allowed value range for this
3313 parameter, can be an integer value as well as a dotted
3314 number, this parameter is usually used in conjunction
3315 with 'RANGE_MIN' but may also appear without
3316 (optionally returned, dependent to driver and port
3317 parameter)
3318 </p>
3319 </blockquote>
3320
3321
3322 <p>POSSIBILITIES -
3323 </p>
3324 <blockquote class="text">
3325 <p>comma separated list of possible values for this
3326 parameter, character strings are encapsulated into
3327 apostrophes
3328 (optionally returned, dependent to device and port
3329 parameter)
3330 </p>
3331 </blockquote>
3332
3333
3334 </blockquote><p>
3335
3336 </p>
3337 <p>The mentioned fields above don't have to be in particular order.
3338 </p>
3339 <p>Example:
3340 </p>
3341 <p>
3342 </p>
3343 <blockquote class="text">
3344 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3345 </p>
3346 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3347 </p>
3348 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3349 </p>
3350 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3351 </p>
3352 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3353 </p>
3354 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3355 </p>
3356 <p>&nbsp;&nbsp;&nbsp;"."
3357 </p>
3358 </blockquote><p>
3359
3360 </p>
3361 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3362 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3363 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3364 Changing settings of MIDI input ports</h3>
3365
3366 <p>Use the following command to alter a specific setting of a MIDI input port:
3367 </p>
3368 <p>
3369 </p>
3370 <blockquote class="text">
3371 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3372 </p>
3373 </blockquote><p>
3374
3375 </p>
3376 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3377 MIDI device as returned by the
3378 <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>
3379 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>
3380 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3381 the parameter to change and &lt;value&gt; by the new value for this
3382 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3383 for specifying no value for parameters allowing a list of values.
3384 </p>
3385 <p>Possible Answers:
3386 </p>
3387 <p>
3388 </p>
3389 <blockquote class="text">
3390 <p>"OK" -
3391 </p>
3392 <blockquote class="text">
3393 <p>in case setting was successfully changed
3394 </p>
3395 </blockquote>
3396
3397
3398 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3399 </p>
3400 <blockquote class="text">
3401 <p>in case setting was changed successfully, but there are
3402 noteworthy issue(s) related, providing an appropriate
3403 warning code and warning message
3404 </p>
3405 </blockquote>
3406
3407
3408 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3409 </p>
3410 <blockquote class="text">
3411 <p>in case it failed, providing an appropriate error code and error message
3412 </p>
3413 </blockquote>
3414
3415
3416 </blockquote><p>
3417
3418 </p>
3419 <p>Example:
3420 </p>
3421 <p>
3422 </p>
3423 <blockquote class="text">
3424 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3425 </p>
3426 <p>S: "OK"
3427 </p>
3428 </blockquote><p>
3429
3430 </p>
3431 <p>
3432 </p>
3433 <blockquote class="text">
3434 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3435 </p>
3436 <p>S: "OK"
3437 </p>
3438 </blockquote><p>
3439
3440 </p>
3441 <a name="anchor11"></a><br /><hr />
3442 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3443 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3444 Configuring sampler channels</h3>
3445
3446 <p>The following commands describe how to add and remove sampler channels, associate a
3447 sampler channel with a sampler engine, load instruments and connect sampler channels to
3448 MIDI and audio devices.
3449 </p>
3450 <a name="LOAD INSTRUMENT"></a><br /><hr />
3451 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3452 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3453 Loading an instrument</h3>
3454
3455 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3456 </p>
3457 <p>
3458 </p>
3459 <blockquote class="text">
3460 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3461 </p>
3462 </blockquote><p>
3463
3464 </p>
3465 <p>Where &lt;filename&gt; is the name of the instrument file on the
3466 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3467 instrument in the instrument file and &lt;sampler-channel> is the
3468 number of the sampler channel the instrument should be assigned to.
3469 Each sampler channel can only have one instrument.
3470 </p>
3471 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3472 escape characters for special characters (see chapter
3473 "<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>"
3474 for details) and accordingly backslash characters in the filename
3475 MUST now be escaped as well!
3476 </p>
3477 <p>The difference between regular and NON_MODAL versions of the command
3478 is that the regular command returns OK only after the instrument has been
3479 fully loaded and the channel is ready to be used while NON_MODAL version
3480 returns immediately and a background process is launched to load the instrument
3481 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>
3482 command can be used to obtain loading
3483 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3484 such as making sure that the file could be read and it is of a proper format
3485 and SHOULD return ERR and SHOULD not launch the background process should any
3486 errors be detected at that point.
3487 </p>
3488 <p>Possible Answers:
3489 </p>
3490 <p>
3491 </p>
3492 <blockquote class="text">
3493 <p>"OK" -
3494 </p>
3495 <blockquote class="text">
3496 <p>in case the instrument was successfully loaded
3497 </p>
3498 </blockquote>
3499
3500
3501 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3502 </p>
3503 <blockquote class="text">
3504 <p>in case the instrument was loaded successfully, but there
3505 are noteworthy issue(s) related (e.g. Engine doesn't support
3506 one or more patch parameters provided by the loaded
3507 instrument file), providing an appropriate warning code and
3508 warning message
3509 </p>
3510 </blockquote>
3511
3512
3513 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3514 </p>
3515 <blockquote class="text">
3516 <p>in case it failed, providing an appropriate error code and error message
3517 </p>
3518 </blockquote>
3519
3520
3521 </blockquote><p>
3522
3523 </p>
3524 <p>Example (Unix):
3525 </p>
3526 <p>
3527 </p>
3528 <blockquote class="text">
3529 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3530 </p>
3531 <p>S: OK
3532 </p>
3533 </blockquote><p>
3534
3535 </p>
3536 <p>Example (Windows):
3537 </p>
3538 <p>
3539 </p>
3540 <blockquote class="text">
3541 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3542 </p>
3543 <p>S: OK
3544 </p>
3545 </blockquote><p>
3546
3547 </p>
3548 <a name="LOAD ENGINE"></a><br /><hr />
3549 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3550 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3551 Loading a sampler engine</h3>
3552
3553 <p>A sampler engine type can be associated to a specific sampler
3554 channel by the following command:
3555 </p>
3556 <p>
3557 </p>
3558 <blockquote class="text">
3559 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3560 </p>
3561 </blockquote><p>
3562
3563 </p>
3564 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3565 <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;
3566 the sampler channel as returned by the
3567 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3568 <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
3569 the engine type should be assigned to. This command should be issued
3570 after adding a new sampler channel and before any other control
3571 commands on the new sampler channel. It can also be used to change
3572 the engine type of a sampler channel. This command has (currently) no
3573 way to define or force if a new engine instance should be created and
3574 assigned to the given sampler channel or if an already existing
3575 instance of that engine type, shared with other sampler channels,
3576 should be used.
3577 </p>
3578 <p>Possible Answers:
3579 </p>
3580 <p>
3581 </p>
3582 <blockquote class="text">
3583 <p>"OK" -
3584 </p>
3585 <blockquote class="text">
3586 <p>in case the engine was successfully deployed
3587 </p>
3588 </blockquote>
3589
3590
3591 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3592 </p>
3593 <blockquote class="text">
3594 <p>in case the engine was deployed successfully, but there
3595 are noteworthy issue(s) related, providing an appropriate
3596 warning code and warning message
3597 </p>
3598 </blockquote>
3599
3600
3601 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3602 </p>
3603 <blockquote class="text">
3604 <p>in case it failed, providing an appropriate error code and
3605 error message
3606 </p>
3607 </blockquote>
3608
3609
3610 </blockquote><p>
3611
3612 </p>
3613 <p>Example:
3614 </p>
3615 <p>
3616 </p>
3617 <blockquote class="text">
3618 <p>
3619 </p>
3620 </blockquote><p>
3621
3622 </p>
3623 <a name="GET CHANNELS"></a><br /><hr />
3624 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3625 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3626 Getting all created sampler channel count</h3>
3627
3628 <p>The number of sampler channels can change on runtime. To get the
3629 current amount of sampler channels, the front-end can send the
3630 following command:
3631 </p>
3632 <p>
3633 </p>
3634 <blockquote class="text">
3635 <p>GET CHANNELS
3636 </p>
3637 </blockquote><p>
3638
3639 </p>
3640 <p>Possible Answers:
3641 </p>
3642 <p>
3643 </p>
3644 <blockquote class="text">
3645 <p>LinuxSampler will answer by returning the current number of sampler channels.
3646 </p>
3647 </blockquote><p>
3648
3649 </p>
3650 <p>Example:
3651 </p>
3652 <p>
3653 </p>
3654 <blockquote class="text">
3655 <p>C: "GET CHANNELS"
3656 </p>
3657 <p>S: "12"
3658 </p>
3659 </blockquote><p>
3660
3661 </p>
3662 <a name="LIST CHANNELS"></a><br /><hr />
3663 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3664 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3665 Getting all created sampler channel list</h3>
3666
3667 <p>The number of sampler channels can change on runtime. To get the
3668 current list of sampler channels, the front-end can send the
3669 following command:
3670 </p>
3671 <p>
3672 </p>
3673 <blockquote class="text">
3674 <p>LIST CHANNELS
3675 </p>
3676 </blockquote><p>
3677
3678 </p>
3679 <p>Possible Answers:
3680 </p>
3681 <p>
3682 </p>
3683 <blockquote class="text">
3684 <p>LinuxSampler will answer by returning a comma separated list
3685 with all sampler channels numerical IDs.
3686 </p>
3687 </blockquote><p>
3688
3689 </p>
3690 <p>Example:
3691 </p>
3692 <p>
3693 </p>
3694 <blockquote class="text">
3695 <p>C: "LIST CHANNELS"
3696 </p>
3697 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3698 </p>
3699 </blockquote><p>
3700
3701 </p>
3702 <a name="ADD CHANNEL"></a><br /><hr />
3703 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3704 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3705 Adding a new sampler channel</h3>
3706
3707 <p>A new sampler channel can be added to the end of the sampler
3708 channel list by sending the following command:
3709 </p>
3710 <p>
3711 </p>
3712 <blockquote class="text">
3713 <p>ADD CHANNEL
3714 </p>
3715 </blockquote><p>
3716
3717 </p>
3718 <p>This will increment the sampler channel count by one and the new
3719 sampler channel will be appended to the end of the sampler channel
3720 list. The front-end should send the respective, related commands
3721 right after to e.g. load an engine, load an instrument and setting
3722 input, output method and eventually other commands to initialize
3723 the new channel. The front-end should use the sampler channel
3724 returned by the answer of this command to perform the previously
3725 recommended commands, to avoid race conditions e.g. with other
3726 front-ends that might also have sent an "ADD CHANNEL" command.
3727 </p>
3728 <p>Possible Answers:
3729 </p>
3730 <p>
3731 </p>
3732 <blockquote class="text">
3733 <p>"OK[&lt;sampler-channel&gt;]" -
3734 </p>
3735 <blockquote class="text">
3736 <p>in case a new sampler channel could be added, where
3737 &lt;sampler-channel&gt; reflects the channel number of the new
3738 created sampler channel which should be used to set up
3739 the sampler channel by sending subsequent initialization
3740 commands
3741 </p>
3742 </blockquote>
3743
3744
3745 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3746 </p>
3747 <blockquote class="text">
3748 <p>in case a new channel was added successfully, but there are
3749 noteworthy issue(s) related, providing an appropriate
3750 warning code and warning message
3751 </p>
3752 </blockquote>
3753
3754
3755 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3756 </p>
3757 <blockquote class="text">
3758 <p>in case it failed, providing an appropriate error code and
3759 error message
3760 </p>
3761 </blockquote>
3762
3763
3764 </blockquote><p>
3765
3766 </p>
3767 <p>Example:
3768 </p>
3769 <p>
3770 </p>
3771 <blockquote class="text">
3772 <p>
3773 </p>
3774 </blockquote><p>
3775
3776 </p>
3777 <a name="REMOVE CHANNEL"></a><br /><hr />
3778 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3779 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3780 Removing a sampler channel</h3>
3781
3782 <p>A sampler channel can be removed by sending the following command:
3783 </p>
3784 <p>
3785 </p>
3786 <blockquote class="text">
3787 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3788 </p>
3789 </blockquote><p>
3790
3791 </p>
3792 <p>Where &lt;sampler-channel&gt; should be replaced by the
3793 number of the sampler channel as given by the
3794 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3795 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3796 command. The channel numbers of all subsequent sampler channels
3797 remain the same.
3798 </p>
3799 <p>Possible Answers:
3800 </p>
3801 <p>
3802 </p>
3803 <blockquote class="text">
3804 <p>"OK" -
3805 </p>
3806 <blockquote class="text">
3807 <p>in case the given sampler channel could be removed
3808 </p>
3809 </blockquote>
3810
3811
3812 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3813 </p>
3814 <blockquote class="text">
3815 <p>in case the given channel was removed, but there are
3816 noteworthy issue(s) related, providing an appropriate
3817 warning code and warning message
3818 </p>
3819 </blockquote>
3820
3821
3822 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3823 </p>
3824 <blockquote class="text">
3825 <p>in case it failed, providing an appropriate error code and
3826 error message
3827 </p>
3828 </blockquote>
3829
3830
3831 </blockquote><p>
3832
3833 </p>
3834 <p>Example:
3835 </p>
3836 <p>
3837 </p>
3838 <blockquote class="text">
3839 <p>
3840 </p>
3841 </blockquote><p>
3842
3843 </p>
3844 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3845 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3846 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3847 Getting amount of available engines</h3>
3848
3849 <p>The front-end can ask for the number of available engines by sending the following command:
3850 </p>
3851 <p>
3852 </p>
3853 <blockquote class="text">
3854 <p>GET AVAILABLE_ENGINES
3855 </p>
3856 </blockquote><p>
3857
3858 </p>
3859 <p>Possible Answers:
3860 </p>
3861 <p>
3862 </p>
3863 <blockquote class="text">
3864 <p>LinuxSampler will answer by sending the number of available engines.
3865 </p>
3866 </blockquote><p>
3867
3868 </p>
3869 <p>Example:
3870 </p>
3871 <p>
3872 </p>
3873 <blockquote class="text">
3874 <p>C: "GET AVAILABLE_ENGINES"
3875 </p>
3876 <p>S: "4"
3877 </p>
3878 </blockquote><p>
3879
3880 </p>
3881 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3882 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3883 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3884 Getting all available engines</h3>
3885
3886 <p>The front-end can ask for a list of all available engines by sending the following command:
3887 </p>
3888 <p>
3889 </p>
3890 <blockquote class="text">
3891 <p>LIST AVAILABLE_ENGINES
3892 </p>
3893 </blockquote><p>
3894
3895 </p>
3896 <p>Possible Answers:
3897 </p>
3898 <p>
3899 </p>
3900 <blockquote class="text">
3901 <p>LinuxSampler will answer by sending a comma separated list
3902 of the engines' names encapsulated into apostrophes (').
3903 Engine names can consist of lower and upper cases,
3904 digits and underlines ("_" character).
3905 </p>
3906 </blockquote><p>
3907
3908 </p>
3909 <p>Example:
3910 </p>
3911 <p>
3912 </p>
3913 <blockquote class="text">
3914 <p>C: "LIST AVAILABLE_ENGINES"
3915 </p>
3916 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3917 </p>
3918 </blockquote><p>
3919
3920 </p>
3921 <a name="GET ENGINE INFO"></a><br /><hr />
3922 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3923 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3924 Getting information about an engine</h3>
3925
3926 <p>The front-end can ask for information about a specific engine by
3927 sending the following command:
3928 </p>
3929 <p>
3930 </p>
3931 <blockquote class="text">
3932 <p>GET ENGINE INFO &lt;engine-name&gt;
3933 </p>
3934 </blockquote><p>
3935
3936 </p>
3937 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3938 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3939 </p>
3940 <p>Possible Answers:
3941 </p>
3942 <p>
3943 </p>
3944 <blockquote class="text">
3945 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3946 Each answer line begins with the information category name
3947 followed by a colon and then a space character &lt;SP&gt; and finally
3948 the info character string to that info category. At the moment
3949 the following categories are defined:
3950 </p>
3951 <p>
3952 </p>
3953 <blockquote class="text">
3954 <p>DESCRIPTION -
3955 </p>
3956 <blockquote class="text">
3957 <p>arbitrary description text about the engine
3958 (note that the character string may contain
3959 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3960 </p>
3961 </blockquote>
3962
3963
3964 <p>VERSION -
3965 </p>
3966 <blockquote class="text">
3967 <p>arbitrary character string regarding the engine's version
3968 </p>
3969 </blockquote>
3970
3971
3972 </blockquote>
3973
3974
3975 </blockquote><p>
3976
3977 </p>
3978 <p>The mentioned fields above don't have to be in particular order.
3979 </p>
3980 <p>Example:
3981 </p>
3982 <p>
3983 </p>
3984 <blockquote class="text">
3985 <p>C: "GET ENGINE INFO JoesCustomEngine"
3986 </p>
3987 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3988 </p>
3989 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3990 </p>
3991 <p>&nbsp;&nbsp;&nbsp;"."
3992 </p>
3993 </blockquote><p>
3994
3995 </p>
3996 <a name="GET CHANNEL INFO"></a><br /><hr />
3997 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3998 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3999 Getting sampler channel information</h3>
4000
4001 <p>The front-end can ask for the current settings of a sampler channel
4002 by sending the following command:
4003 </p>
4004 <p>
4005 </p>
4006 <blockquote class="text">
4007 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4008 </p>
4009 </blockquote><p>
4010
4011 </p>
4012 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4013 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>
4014 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.
4015 </p>
4016 <p>Possible Answers:
4017 </p>
4018 <p>
4019 </p>
4020 <blockquote class="text">
4021 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4022 Each answer line begins with the settings category name
4023 followed by a colon and then a space character &lt;SP&gt; and finally
4024 the info character string to that setting category. At the
4025 moment the following categories are defined:
4026 </p>
4027 <p>
4028 </p>
4029 <blockquote class="text">
4030 <p>ENGINE_NAME -
4031 </p>
4032 <blockquote class="text">
4033 <p>name of the engine that is associated with the sampler
4034 channel, "NONE" if there's no engine associated yet for
4035 this sampler channel
4036 </p>
4037 </blockquote>
4038
4039
4040 <p>AUDIO_OUTPUT_DEVICE -
4041 </p>
4042 <blockquote class="text">
4043 <p>numerical ID of the audio output device which is
4044 currently connected to this sampler channel to output
4045 the audio signal, "-1" if there's no device
4046 connected to this sampler channel
4047 </p>
4048 </blockquote>
4049
4050
4051 <p>AUDIO_OUTPUT_CHANNELS -
4052 </p>
4053 <blockquote class="text">
4054 <p>number of output channels the sampler channel offers
4055 (dependent to used sampler engine and loaded instrument)
4056 </p>
4057 </blockquote>
4058
4059
4060 <p>AUDIO_OUTPUT_ROUTING -
4061 </p>
4062 <blockquote class="text">
4063 <p>comma separated list which reflects to which audio
4064 channel of the selected audio output device each
4065 sampler output channel is routed to, e.g. "0,3" would
4066 mean the engine's output channel 0 is routed to channel
4067 0 of the audio output device and the engine's output
4068 channel 1 is routed to the channel 3 of the audio
4069 output device
4070 </p>
4071 </blockquote>
4072
4073
4074 <p>INSTRUMENT_FILE -
4075 </p>
4076 <blockquote class="text">
4077 <p>the file name of the loaded instrument, "NONE" if
4078 there's no instrument yet loaded for this sampler
4079 channel (note: since LSCP 1.2 this path may contain
4080 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4081 </p>
4082 </blockquote>
4083
4084
4085 <p>INSTRUMENT_NR -
4086 </p>
4087 <blockquote class="text">
4088 <p>the instrument index number of the loaded instrument,
4089 "-1" if there's no instrument loaded for this sampler
4090 channel
4091 </p>
4092 </blockquote>
4093
4094
4095 <p>INSTRUMENT_NAME -
4096 </p>
4097 <blockquote class="text">
4098 <p>the instrument name of the loaded instrument
4099 (note: since LSCP 1.2 this character string may contain
4100 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4101 </p>
4102 </blockquote>
4103
4104
4105 <p>INSTRUMENT_STATUS -
4106 </p>
4107 <blockquote class="text">
4108 <p>Integer values 0 to 100 indicating loading progress
4109 percentage for the instrument. Negative
4110 value indicates a loading exception (also returns "-1" in case no
4111 instrument was yet to be loaded on the sampler channel).
4112 Value of 100 indicates that the instrument is fully
4113 loaded.
4114 </p>
4115 </blockquote>
4116
4117
4118 <p>MIDI_INPUT_DEVICE -
4119 </p>
4120 <blockquote class="text">
4121 <p>numerical ID of the MIDI input device which is
4122 currently connected to this sampler channel to deliver
4123 MIDI input commands, "-1" if there's no device
4124 connected to this sampler channel
4125 </p>
4126 </blockquote>
4127
4128
4129 <p>MIDI_INPUT_PORT -
4130 </p>
4131 <blockquote class="text">
4132 <p>port number of the MIDI input device (in case a
4133 MIDI device was already assigned to the sampler
4134 channel)
4135 </p>
4136 </blockquote>
4137
4138
4139 <p>MIDI_INPUT_CHANNEL -
4140 </p>
4141 <blockquote class="text">
4142 <p>the MIDI input channel number this sampler channel
4143 should listen to or "ALL" to listen on all MIDI channels
4144 </p>
4145 </blockquote>
4146
4147
4148 <p>VOLUME -
4149 </p>
4150 <blockquote class="text">
4151 <p>optionally dotted number for the channel volume factor
4152 (where a value &lt; 1.0 means attenuation and a value >
4153 1.0 means amplification)
4154 </p>
4155 </blockquote>
4156
4157
4158 <p>MUTE -
4159 </p>
4160 <blockquote class="text">
4161 <p>Determines whether the channel is muted, "true" if the
4162 channel is muted, "false" if the channel is not muted, and
4163 "MUTED_BY_SOLO" if the channel is muted because of the
4164 presence of a solo channel and will be unmuted when
4165 there are no solo channels left
4166 </p>
4167 </blockquote>
4168
4169
4170 <p>SOLO -
4171 </p>
4172 <blockquote class="text">
4173 <p>Determines whether this is a solo channel, "true" if
4174 the channel is a solo channel; "false" otherwise
4175 </p>
4176 </blockquote>
4177
4178
4179 <p>MIDI_INSTRUMENT_MAP -
4180 </p>
4181 <blockquote class="text">
4182 <p>Determines to which MIDI instrument map this sampler
4183 channel is assigned to. Read chapter
4184 <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>
4185 for a list of possible values.
4186 </p>
4187 </blockquote>
4188
4189
4190 </blockquote>
4191
4192
4193 </blockquote><p>
4194
4195 </p>
4196 <p>The mentioned fields above don't have to be in particular order.
4197 </p>
4198 <p>Example:
4199 </p>
4200 <p>
4201 </p>
4202 <blockquote class="text">
4203 <p>C: "GET CHANNEL INFO 34"
4204 </p>
4205 <p>S: "ENGINE_NAME: GigEngine"
4206 </p>
4207 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4208 </p>
4209 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4210 </p>
4211 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4212 </p>
4213 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4214 </p>
4215 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4216 </p>
4217 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4218 </p>
4219 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4220 </p>
4221 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4222 </p>
4223 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4224 </p>
4225 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4226 </p>
4227 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4228 </p>
4229 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4230 </p>
4231 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4232 </p>
4233 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4234 </p>
4235 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4236 </p>
4237 <p>&nbsp;&nbsp;&nbsp;"."
4238 </p>
4239 </blockquote><p>
4240
4241 </p>
4242 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4243 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4244 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4245 Current number of active voices</h3>
4246
4247 <p>The front-end can ask for the current number of active voices on a
4248 sampler channel by sending the following command:
4249 </p>
4250 <p>
4251 </p>
4252 <blockquote class="text">
4253 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4254 </p>
4255 </blockquote><p>
4256
4257 </p>
4258 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4259 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>
4260 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.
4261 </p>
4262 <p>Possible Answers:
4263 </p>
4264 <p>
4265 </p>
4266 <blockquote class="text">
4267 <p>LinuxSampler will answer by returning the number of active
4268 voices on that channel.
4269 </p>
4270 </blockquote><p>
4271
4272 </p>
4273 <p>Example:
4274 </p>
4275 <p>
4276 </p>
4277 <blockquote class="text">
4278 <p>
4279 </p>
4280 </blockquote><p>
4281
4282 </p>
4283 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4284 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4285 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4286 Current number of active disk streams</h3>
4287
4288 <p>The front-end can ask for the current number of active disk streams
4289 on a sampler channel by sending the following command:
4290 </p>
4291 <p>
4292 </p>
4293 <blockquote class="text">
4294 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4295 </p>
4296 </blockquote><p>
4297
4298 </p>
4299 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4300 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>
4301 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.
4302 </p>
4303 <p>Possible Answers:
4304 </p>
4305 <p>
4306 </p>
4307 <blockquote class="text">
4308 <p>LinuxSampler will answer by returning the number of active
4309 disk streams on that channel in case the engine supports disk
4310 streaming, if the engine doesn't support disk streaming it will
4311 return "NA" for not available.
4312 </p>
4313 </blockquote><p>
4314
4315 </p>
4316 <p>Example:
4317 </p>
4318 <p>
4319 </p>
4320 <blockquote class="text">
4321 <p>
4322 </p>
4323 </blockquote><p>
4324
4325 </p>
4326 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4327 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4328 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4329 Current fill state of disk stream buffers</h3>
4330
4331 <p>The front-end can ask for the current fill state of all disk streams
4332 on a sampler channel by sending the following command:
4333 </p>
4334 <p>
4335 </p>
4336 <blockquote class="text">
4337 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4338 </p>
4339 </blockquote><p>
4340
4341 </p>
4342 <p>to get the fill state in bytes or
4343 </p>
4344 <p>
4345 </p>
4346 <blockquote class="text">
4347 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4348 </p>
4349 </blockquote><p>
4350
4351 </p>
4352 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4353 sampler channel number the front-end is interested in
4354 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>
4355 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.
4356 </p>
4357 <p>Possible Answers:
4358 </p>
4359 <p>
4360 </p>
4361 <blockquote class="text">
4362 <p>LinuxSampler will either answer by returning a comma separated
4363 string with the fill state of all disk stream buffers on that
4364 channel or an empty line if there are no active disk streams or
4365 "NA" for *not available* in case the engine which is deployed
4366 doesn't support disk streaming. Each entry in the answer list
4367 will begin with the stream's ID in brackets followed by the
4368 numerical representation of the fill size (either in bytes or
4369 percentage). Note: due to efficiency reasons the fill states in
4370 the response are not in particular order, thus the front-end has
4371 to sort them by itself if necessary.
4372 </p>
4373 </blockquote><p>
4374
4375 </p>
4376 <p>Examples:
4377 </p>
4378 <p>
4379 </p>
4380 <blockquote class="text">
4381 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4382 </p>
4383 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4384 </p>
4385 </blockquote><p>
4386
4387 </p>
4388 <blockquote class="text">
4389 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4390 </p>
4391 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4392 </p>
4393 </blockquote><p>
4394
4395 </p>
4396 <blockquote class="text">
4397 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4398 </p>
4399 <p>S: ""
4400 </p>
4401 </blockquote><p>
4402
4403 </p>
4404 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4405 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4406 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4407 Setting audio output device</h3>
4408
4409 <p>The front-end can set the audio output device on a specific sampler
4410 channel by sending the following command:
4411 </p>
4412 <p>
4413 </p>
4414 <blockquote class="text">
4415 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4416 </p>
4417 </blockquote><p>
4418
4419 </p>
4420 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4421 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>
4422 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
4423 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4424 <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>
4425 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>
4426 command.
4427 </p>
4428 <p>Possible Answers:
4429 </p>
4430 <p>
4431 </p>
4432 <blockquote class="text">
4433 <p>"OK" -
4434 </p>
4435 <blockquote class="text">
4436 <p>on success
4437 </p>
4438 </blockquote>
4439
4440
4441 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4442 </p>
4443 <blockquote class="text">
4444 <p>if audio output device was set, but there are noteworthy
4445 issue(s) related, providing an appropriate warning code and
4446 warning message
4447 </p>
4448 </blockquote>
4449
4450
4451 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4452 </p>
4453 <blockquote class="text">
4454 <p>in case it failed, providing an appropriate error code and error message
4455 </p>
4456 </blockquote>
4457
4458
4459 </blockquote><p>
4460
4461 </p>
4462 <p>Examples:
4463 </p>
4464 <p>
4465 </p>
4466 <blockquote class="text">
4467 <p>
4468 </p>
4469 </blockquote><p>
4470
4471 </p>
4472 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4473 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4474 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4475 Setting audio output type</h3>
4476
4477 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4478 </p>
4479 <p>The front-end can alter the audio output type on a specific sampler
4480 channel by sending the following command:
4481 </p>
4482 <p>
4483 </p>
4484 <blockquote class="text">
4485 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4486 </p>
4487 </blockquote><p>
4488
4489 </p>
4490 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4491 &lt;sampler-channel&gt; is the respective sampler channel number.
4492 </p>
4493 <p>Possible Answers:
4494 </p>
4495 <p>
4496 </p>
4497 <blockquote class="text">
4498 <p>"OK" -
4499 </p>
4500 <blockquote class="text">
4501 <p>on success
4502 </p>
4503 </blockquote>
4504
4505
4506 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4507 </p>
4508 <blockquote class="text">
4509 <p>if audio output type was set, but there are noteworthy
4510 issue(s) related, providing an appropriate warning code and
4511 warning message
4512 </p>
4513 </blockquote>
4514
4515
4516 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4517 </p>
4518 <blockquote class="text">
4519 <p>in case it failed, providing an appropriate error code and error message
4520 </p>
4521 </blockquote>
4522
4523
4524 </blockquote><p>
4525
4526 </p>
4527 <p>Examples:
4528 </p>
4529 <p>
4530 </p>
4531 <blockquote class="text">
4532 <p>
4533 </p>
4534 </blockquote><p>
4535
4536 </p>
4537 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4538 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4539 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4540 Setting audio output channel</h3>
4541
4542 <p>The front-end can alter the audio output channel on a specific
4543 sampler channel by sending the following command:
4544 </p>
4545 <p>
4546 </p>
4547 <blockquote class="text">
4548 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4549 </p>
4550 </blockquote><p>
4551
4552 </p>
4553 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4554 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>
4555 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
4556 numerical ID of the sampler channel's audio output channel which should be
4557 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4558 output device where &lt;audio-out&gt; should be routed to.
4559 </p>
4560 <p>Possible Answers:
4561 </p>
4562 <p>
4563 </p>
4564 <blockquote class="text">
4565 <p>"OK" -
4566 </p>
4567 <blockquote class="text">
4568 <p>on success
4569 </p>
4570 </blockquote>
4571
4572
4573 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4574 </p>
4575 <blockquote class="text">
4576 <p>if audio output channel was set, but there are noteworthy
4577 issue(s) related, providing an appropriate warning code and
4578 warning message
4579 </p>
4580 </blockquote>
4581
4582
4583 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4584 </p>
4585 <blockquote class="text">
4586 <p>in case it failed, providing an appropriate error code and error message
4587 </p>
4588 </blockquote>
4589
4590
4591 </blockquote><p>
4592
4593 </p>
4594 <p>Examples:
4595 </p>
4596 <p>
4597 </p>
4598 <blockquote class="text">
4599 <p>
4600 </p>
4601 </blockquote><p>
4602
4603 </p>
4604 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4605 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4606 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4607 Setting MIDI input device</h3>
4608
4609 <p>The front-end can set the MIDI input device on a specific sampler
4610 channel by sending the following command:
4611 </p>
4612 <p>
4613 </p>
4614 <blockquote class="text">
4615 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4616 </p>
4617 </blockquote><p>
4618
4619 </p>
4620 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4621 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>
4622 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
4623 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4624 <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>
4625 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.
4626 </p>
4627 <p>Possible Answers:
4628 </p>
4629 <p>
4630 </p>
4631 <blockquote class="text">
4632 <p>"OK" -
4633 </p>
4634 <blockquote class="text">
4635 <p>on success
4636 </p>
4637 </blockquote>
4638
4639
4640 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4641 </p>
4642 <blockquote class="text">
4643 <p>if MIDI input device was set, but there are noteworthy
4644 issue(s) related, providing an appropriate warning code and
4645 warning message
4646 </p>
4647 </blockquote>
4648
4649
4650 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4651 </p>
4652 <blockquote class="text">
4653 <p>in case it failed, providing an appropriate error code and error message
4654 </p>
4655 </blockquote>
4656
4657
4658 </blockquote><p>
4659
4660 </p>
4661 <p>Examples:
4662 </p>
4663 <p>
4664 </p>
4665 <blockquote class="text">
4666 <p>
4667 </p>
4668 </blockquote><p>
4669
4670 </p>
4671 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4672 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4673 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4674 Setting MIDI input type</h3>
4675
4676 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4677 </p>
4678 <p>The front-end can alter the MIDI input type on a specific sampler
4679 channel by sending the following command:
4680 </p>
4681 <p>
4682 </p>
4683 <blockquote class="text">
4684 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4685 </p>
4686 </blockquote><p>
4687
4688 </p>
4689 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4690 &lt;sampler-channel&gt; is the respective sampler channel number.
4691 </p>
4692 <p>Possible Answers:
4693 </p>
4694 <p>
4695 </p>
4696 <blockquote class="text">
4697 <p>"OK" -
4698 </p>
4699 <blockquote class="text">
4700 <p>on success
4701 </p>
4702 </blockquote>
4703
4704
4705 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4706 </p>
4707 <blockquote class="text">
4708 <p>if MIDI input type was set, but there are noteworthy
4709 issue(s) related, providing an appropriate warning code and
4710 warning message
4711 </p>
4712 </blockquote>
4713
4714
4715 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4716 </p>
4717 <blockquote class="text">
4718 <p>in case it failed, providing an appropriate error code and error message
4719 </p>
4720 </blockquote>
4721
4722
4723 </blockquote><p>
4724
4725 </p>
4726 <p>Examples:
4727 </p>
4728 <p>
4729 </p>
4730 <blockquote class="text">
4731 <p>
4732 </p>
4733 </blockquote><p>
4734
4735 </p>
4736 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4737 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4738 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4739 Setting MIDI input port</h3>
4740
4741 <p>The front-end can alter the MIDI input port on a specific sampler
4742 channel by sending the following command:
4743 </p>
4744 <p>
4745 </p>
4746 <blockquote class="text">
4747 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4748 </p>
4749 </blockquote><p>
4750
4751 </p>
4752 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4753 MIDI input device connected to the sampler channel given by
4754 &lt;sampler-channel&gt;.
4755 </p>
4756 <p>Possible Answers:
4757 </p>
4758 <p>
4759 </p>
4760 <blockquote class="text">
4761 <p>"OK" -
4762 </p>
4763 <blockquote class="text">
4764 <p>on success
4765 </p>
4766 </blockquote>
4767
4768
4769 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4770 </p>
4771 <blockquote class="text">
4772 <p>if MIDI input port was set, but there are noteworthy
4773 issue(s) related, providing an appropriate warning code and
4774 warning message
4775 </p>
4776 </blockquote>
4777
4778
4779 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4780 </p>
4781 <blockquote class="text">
4782 <p>in case it failed, providing an appropriate error code and error message
4783 </p>
4784 </blockquote>
4785
4786
4787 </blockquote><p>
4788
4789 </p>
4790 <p>Examples:
4791 </p>
4792 <p>
4793 </p>
4794 <blockquote class="text">
4795 <p>
4796 </p>
4797 </blockquote><p>
4798
4799 </p>
4800 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4801 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4802 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4803 Setting MIDI input channel</h3>
4804
4805 <p>The front-end can alter the MIDI channel a sampler channel should
4806 listen to by sending the following command:
4807 </p>
4808 <p>
4809 </p>
4810 <blockquote class="text">
4811 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4812 </p>
4813 </blockquote><p>
4814
4815 </p>
4816 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4817 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4818 channels.
4819 </p>
4820 <p>Possible Answers:
4821 </p>
4822 <p>
4823 </p>
4824 <blockquote class="text">
4825 <p>"OK" -
4826 </p>
4827 <blockquote class="text">
4828 <p>on success
4829 </p>
4830 </blockquote>
4831
4832
4833 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4834 </p>
4835 <blockquote class="text">
4836 <p>if MIDI input channel was set, but there are noteworthy
4837 issue(s) related, providing an appropriate warning code and
4838 warning message
4839 </p>
4840 </blockquote>
4841
4842
4843 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4844 </p>
4845 <blockquote class="text">
4846 <p>in case it failed, providing an appropriate error code and error message
4847 </p>
4848 </blockquote>
4849
4850
4851 </blockquote><p>
4852
4853 </p>
4854 <p>Examples:
4855 </p>
4856 <p>
4857 </p>
4858 <blockquote class="text">
4859 <p>
4860 </p>
4861 </blockquote><p>
4862
4863 </p>
4864 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4865 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4866 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4867 Setting channel volume</h3>
4868
4869 <p>The front-end can alter the volume of a sampler channel by sending
4870 the following command:
4871 </p>
4872 <p>
4873 </p>
4874 <blockquote class="text">
4875 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4876 </p>
4877 </blockquote><p>
4878
4879 </p>
4880 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4881 smaller than 1.0 means attenuation, whereas a value greater than
4882 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4883 channel where this volume factor should be set.
4884 </p>
4885 <p>Possible Answers:
4886 </p>
4887 <p>
4888 </p>
4889 <blockquote class="text">
4890 <p>"OK" -
4891 </p>
4892 <blockquote class="text">
4893 <p>on success
4894 </p>
4895 </blockquote>
4896
4897
4898 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4899 </p>
4900 <blockquote class="text">
4901 <p>if channel volume was set, but there are noteworthy
4902 issue(s) related, providing an appropriate warning code and
4903 warning message
4904 </p>
4905 </blockquote>
4906
4907
4908 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4909 </p>
4910 <blockquote class="text">
4911 <p>in case it failed, providing an appropriate error code and error message
4912 </p>
4913 </blockquote>
4914
4915
4916 </blockquote><p>
4917
4918 </p>
4919 <p>Examples:
4920 </p>
4921 <p>
4922 </p>
4923 <blockquote class="text">
4924 <p>
4925 </p>
4926 </blockquote><p>
4927
4928 </p>
4929 <a name="SET CHANNEL MUTE"></a><br /><hr />
4930 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4931 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4932 Muting a sampler channel</h3>
4933
4934 <p>The front-end can mute/unmute a specific sampler
4935 channel by sending the following command:
4936 </p>
4937 <p>
4938 </p>
4939 <blockquote class="text">
4940 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4941 </p>
4942 </blockquote><p>
4943
4944 </p>
4945 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4946 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>
4947 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
4948 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4949 to unmute the channel.
4950 </p>
4951 <p>Possible Answers:
4952 </p>
4953 <p>
4954 </p>
4955 <blockquote class="text">
4956 <p>"OK" -
4957 </p>
4958 <blockquote class="text">
4959 <p>on success
4960 </p>
4961 </blockquote>
4962
4963
4964 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4965 </p>
4966 <blockquote class="text">
4967 <p>if the channel was muted/unmuted, but there are noteworthy
4968 issue(s) related, providing an appropriate warning code and
4969 warning message
4970 </p>
4971 </blockquote>
4972
4973
4974 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4975 </p>
4976 <blockquote class="text">
4977 <p>in case it failed, providing an appropriate error code and error message
4978 </p>
4979 </blockquote>
4980
4981
4982 </blockquote><p>
4983
4984 </p>
4985 <p>Examples:
4986 </p>
4987 <p>
4988 </p>
4989 <blockquote class="text">
4990 <p>
4991 </p>
4992 </blockquote><p>
4993
4994 </p>
4995 <a name="SET CHANNEL SOLO"></a><br /><hr />
4996 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4997 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4998 Soloing a sampler channel</h3>
4999
5000 <p>The front-end can solo/unsolo a specific sampler channel
5001 by sending the following command:
5002 </p>
5003 <p>
5004 </p>
5005 <blockquote class="text">
5006 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5007 </p>
5008 </blockquote><p>
5009
5010 </p>
5011 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5012 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>
5013 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
5014 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5015 to unsolo the channel.
5016 </p>
5017 <p>Possible Answers:
5018 </p>
5019 <p>
5020 </p>
5021 <blockquote class="text">
5022 <p>"OK" -
5023 </p>
5024 <blockquote class="text">
5025 <p>on success
5026 </p>
5027 </blockquote>
5028
5029
5030 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5031 </p>
5032 <blockquote class="text">
5033 <p>if the channel was soloed/unsoloed, but there are noteworthy
5034 issue(s) related, providing an appropriate warning code and
5035 warning message
5036 </p>
5037 </blockquote>
5038
5039
5040 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5041 </p>
5042 <blockquote class="text">
5043 <p>in case it failed, providing an appropriate error code and error message
5044 </p>
5045 </blockquote>
5046
5047
5048 </blockquote><p>
5049
5050 </p>
5051 <p>Examples:
5052 </p>
5053 <p>
5054 </p>
5055 <blockquote class="text">
5056 <p>
5057 </p>
5058 </blockquote><p>
5059
5060 </p>
5061 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5062 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5063 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5064 Assigning a MIDI instrument map to a sampler channel</h3>
5065
5066 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5067 by sending the following command:
5068 </p>
5069 <p>
5070 </p>
5071 <blockquote class="text">
5072 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5073 </p>
5074 </blockquote><p>
5075
5076 </p>
5077 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5078 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>
5079 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
5080 &lt;map&gt; can have the following possibilites:
5081 </p>
5082 <p>
5083 </p>
5084 <blockquote class="text">
5085 <p>"NONE" -
5086 </p>
5087 <blockquote class="text">
5088 <p>This is the default setting. In this case
5089 the sampler channel is not assigned any MIDI
5090 instrument map and thus will ignore all MIDI
5091 program change messages.
5092 </p>
5093 </blockquote>
5094
5095
5096 <p>"DEFAULT" -
5097 </p>
5098 <blockquote class="text">
5099 <p>The sampler channel will always use the
5100 default MIDI instrument map to handle MIDI
5101 program change messages.
5102 </p>
5103 </blockquote>
5104
5105
5106 <p>numeric ID -
5107 </p>
5108 <blockquote class="text">
5109 <p>You can assign a specific MIDI instrument map
5110 by replacing &lt;map&gt; with the respective numeric
5111 ID of the MIDI instrument map as returned by the
5112 <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>
5113 command. Once that map will be deleted, the sampler
5114 channel would fall back to "NONE".
5115 </p>
5116 </blockquote>
5117
5118
5119 </blockquote><p>
5120
5121 </p>
5122 <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>
5123 for details regarding MIDI instrument mapping.
5124 </p>
5125 <p>Possible Answers:
5126 </p>
5127 <p>
5128 </p>
5129 <blockquote class="text">
5130 <p>"OK" -
5131 </p>
5132 <blockquote class="text">
5133 <p>on success
5134 </p>
5135 </blockquote>
5136
5137
5138 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5139 </p>
5140 <blockquote class="text">
5141 <p>in case it failed, providing an appropriate error code and error message
5142 </p>
5143 </blockquote>
5144
5145
5146 </blockquote><p>
5147
5148 </p>
5149 <p>Examples:
5150 </p>
5151 <p>
5152 </p>
5153 <blockquote class="text">
5154 <p>
5155 </p>
5156 </blockquote><p>
5157
5158 </p>
5159 <a name="CREATE FX_SEND"></a><br /><hr />
5160 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5161 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5162 Adding an effect send to a sampler channel</h3>
5163
5164 <p>The front-end can create an additional effect send on a specific sampler channel
5165 by sending the following command:
5166 </p>
5167 <p>
5168 </p>
5169 <blockquote class="text">
5170 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5171 </p>
5172 </blockquote><p>
5173
5174 </p>
5175 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5176 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5177 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
5178 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5179 is a number between 0..127 defining the MIDI controller which can alter the
5180 effect send level and &lt;name&gt; is an optional argument defining a name
5181 for the effect send entity. The name does not have to be unique, but MUST be
5182 encapsulated into apostrophes and supports escape sequences as described in chapter
5183 "<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>".
5184 </p>
5185 <p>By default, that is as initial routing, the effect send's audio channels
5186 are automatically routed to the last audio channels of the sampler channel's
5187 audio output device, that way you can i.e. first increase the amount of audio
5188 channels on the audio output device for having dedicated effect send output
5189 channels and when "CREATE FX_SEND" is called, those channels will automatically
5190 be picked. You can alter the destination channels however with
5191 <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>.
5192
5193 </p>
5194 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5195 sends on a sampler channel will decrease runtime performance, because for implementing channel
5196 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5197 the voices and route the audio signal afterwards to the master outputs and effect send
5198 outputs (along with their respective effect send levels). A sampler channel without effect
5199 sends however can mix its voices directly into the audio output devices's audio buffers
5200 and is thus faster.
5201
5202 </p>
5203 <p>Possible Answers:
5204 </p>
5205 <p>
5206 </p>
5207 <blockquote class="text">
5208 <p>"OK[&lt;fx-send-id&gt;]" -
5209 </p>
5210 <blockquote class="text">
5211 <p>in case a new effect send could be added to the
5212 sampler channel, where &lt;fx-send-id&gt; reflects the
5213 unique ID of the newly created effect send entity
5214 </p>
5215 </blockquote>
5216
5217
5218 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5219 </p>
5220 <blockquote class="text">
5221 <p>when a new effect send could not be added, i.e.
5222 due to invalid parameters
5223 </p>
5224 </blockquote>
5225
5226
5227 </blockquote><p>
5228
5229 </p>
5230 <p>Examples:
5231 </p>
5232 <p>
5233 </p>
5234 <blockquote class="text">
5235 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5236 </p>
5237 <p>S: "OK[0]"
5238 </p>
5239 </blockquote><p>
5240
5241 </p>
5242 <p>
5243 </p>
5244 <blockquote class="text">
5245 <p>C: "CREATE FX_SEND 0 93"
5246 </p>
5247 <p>S: "OK[1]"
5248 </p>
5249 </blockquote><p>
5250
5251 </p>
5252 <a name="DESTROY FX_SEND"></a><br /><hr />
5253 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5254 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5255 Removing an effect send from a sampler channel</h3>
5256
5257 <p>The front-end can remove an existing effect send on a specific sampler channel
5258 by sending the following command:
5259 </p>
5260 <p>
5261 </p>
5262 <blockquote class="text">
5263 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5264 </p>
5265 </blockquote><p>
5266
5267 </p>
5268 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5269 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>
5270 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
5271 sampler channel from which the effect send should be removed from and
5272 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5273 <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>
5274 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.
5275 </p>
5276 <p>Possible Answers:
5277 </p>
5278 <p>
5279 </p>
5280 <blockquote class="text">
5281 <p>"OK" -
5282 </p>
5283 <blockquote class="text">
5284 <p>on success
5285 </p>
5286 </blockquote>
5287
5288
5289 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5290 </p>
5291 <blockquote class="text">
5292 <p>in case it failed, providing an appropriate error code and
5293 error message
5294 </p>
5295 </blockquote>
5296
5297
5298 </blockquote><p>
5299
5300 </p>
5301 <p>Example:
5302 </p>
5303 <p>
5304 </p>
5305 <blockquote class="text">
5306 <p>C: "DESTROY FX_SEND 0 0"
5307 </p>
5308 <p>S: "OK"
5309 </p>
5310 </blockquote><p>
5311
5312 </p>
5313 <a name="GET FX_SENDS"></a><br /><hr />
5314 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5315 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5316 Getting amount of effect sends on a sampler channel</h3>
5317
5318 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5319 by sending the following command:
5320 </p>
5321 <p>
5322 </p>
5323 <blockquote class="text">
5324 <p>GET FX_SENDS &lt;sampler-channel&gt;
5325 </p>
5326 </blockquote><p>
5327
5328 </p>
5329 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5330 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>
5331 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.
5332 </p>
5333 <p>Possible Answers:
5334 </p>
5335 <p>
5336 </p>
5337 <blockquote class="text">
5338 <p>The sampler will answer by returning the number of effect
5339 sends on the given sampler channel.
5340 </p>
5341 </blockquote><p>
5342
5343 </p>
5344 <p>Example:
5345 </p>
5346 <p>
5347 </p>
5348 <blockquote class="text">
5349 <p>C: "GET FX_SENDS 0"
5350 </p>
5351 <p>S: "2"
5352 </p>
5353 </blockquote><p>
5354
5355 </p>
5356 <a name="LIST FX_SENDS"></a><br /><hr />
5357 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5358 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5359 Listing all effect sends on a sampler channel</h3>
5360
5361 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5362 by sending the following command:
5363 </p>
5364 <p>
5365 </p>
5366 <blockquote class="text">
5367 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5368 </p>
5369 </blockquote><p>
5370
5371 </p>
5372 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5373 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>
5374 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.
5375 </p>
5376 <p>Possible Answers:
5377 </p>
5378 <p>
5379 </p>
5380 <blockquote class="text">
5381 <p>The sampler will answer by returning a comma separated list
5382 with all effect sends' numerical IDs on the given sampler
5383 channel.
5384 </p>
5385 </blockquote><p>
5386
5387 </p>
5388 <p>Examples:
5389 </p>
5390 <p>
5391 </p>
5392 <blockquote class="text">
5393 <p>C: "LIST FX_SENDS 0"
5394 </p>
5395 <p>S: "0,1"
5396 </p>
5397 </blockquote><p>
5398
5399 </p>
5400 <p>
5401 </p>
5402 <blockquote class="text">
5403 <p>C: "LIST FX_SENDS 1"
5404 </p>
5405 <p>S: ""
5406 </p>
5407 </blockquote><p>
5408
5409 </p>
5410 <a name="GET FX_SEND INFO"></a><br /><hr />
5411 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5412 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5413 Getting effect send information</h3>
5414
5415 <p>The front-end can ask for the current settings of an effect send entity
5416 by sending the following command:
5417 </p>
5418 <p>
5419 </p>
5420 <blockquote class="text">
5421 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5422 </p>
5423 </blockquote><p>
5424
5425 </p>
5426 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5427 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>
5428 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
5429 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5430 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>
5431 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.
5432
5433 </p>
5434 <p>Possible Answers:
5435 </p>
5436 <p>
5437 </p>
5438 <blockquote class="text">
5439 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5440 Each answer line begins with the settings category name
5441 followed by a colon and then a space character &lt;SP&gt; and finally
5442 the info character string to that setting category. At the
5443 moment the following categories are defined:
5444 </p>
5445 <p>
5446 </p>
5447 <blockquote class="text">
5448 <p>NAME -
5449 </p>
5450 <blockquote class="text">
5451 <p>name of the effect send entity
5452 (note that this character string may contain
5453 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5454 </p>
5455 </blockquote>
5456
5457
5458 <p>MIDI_CONTROLLER -
5459 </p>
5460 <blockquote class="text">
5461 <p>a value between 0 and 127 reflecting the MIDI controller
5462 which is able to modify the effect send's send level
5463 </p>
5464 </blockquote>
5465
5466
5467 <p>LEVEL -
5468 </p>
5469 <blockquote class="text">
5470 <p>optionally dotted number reflecting the effect send's
5471 current send level (where a value &lt; 1.0 means attenuation
5472 and a value > 1.0 means amplification)
5473 </p>
5474 </blockquote>
5475
5476
5477 <p>AUDIO_OUTPUT_ROUTING -
5478 </p>
5479 <blockquote class="text">
5480 <p>comma separated list which reflects to which audio
5481 channel of the selected audio output device each
5482 effect send output channel is routed to, e.g. "0,3" would
5483 mean the effect send's output channel 0 is routed to channel
5484 0 of the audio output device and the effect send's output
5485 channel 1 is routed to the channel 3 of the audio
5486 output device (see
5487 <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>
5488 for details), if an internal send
5489 effect is assigned to the effect
5490 send, then this setting defines the
5491 audio channel routing to that
5492 effect instance respectively
5493 </p>
5494 </blockquote>
5495
5496
5497 <p>EFFECT -
5498 </p>
5499 <blockquote class="text">
5500 <p>destination send effect chain ID
5501 and destination effect chain
5502 position, separated by comma in the
5503 form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5504 or "NONE" if there is no send effect
5505 assigned to the effect send
5506 </p>
5507 </blockquote>
5508
5509
5510 </blockquote>
5511
5512
5513 </blockquote><p>
5514
5515 </p>
5516 <p>The mentioned fields above don't have to be in particular order.
5517 </p>
5518 <p>Example:
5519 </p>
5520 <p>
5521 </p>
5522 <blockquote class="text">
5523 <p>C: "GET FX_SEND INFO 0 0"
5524 </p>
5525 <p>S: "NAME: Reverb Send"
5526 </p>
5527 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5528 </p>
5529 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5530 </p>
5531 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5532 </p>
5533 <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5534 </p>
5535 <p>&nbsp;&nbsp;&nbsp;"."
5536 </p>
5537 </blockquote><p>
5538
5539 </p>
5540 <p>
5541 </p>
5542 <blockquote class="text">
5543 <p>C: "GET FX_SEND INFO 0 1"
5544 </p>
5545 <p>S: "NAME: Delay Send (Internal)"
5546 </p>
5547 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5548 </p>
5549 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5550 </p>
5551 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5552 </p>
5553 <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5554 </p>
5555 <p>&nbsp;&nbsp;&nbsp;"."
5556 </p>
5557 </blockquote><p>
5558
5559 </p>
5560 <a name="SET FX_SEND NAME"></a><br /><hr />
5561 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5562 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5563 Changing effect send's name</h3>
5564
5565 <p>The front-end can alter the current name of an effect
5566 send entity by sending the following command:
5567 </p>
5568 <p>
5569 </p>
5570 <blockquote class="text">
5571 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5572 </p>
5573 </blockquote><p>
5574
5575 </p>
5576 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5577 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>
5578 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,
5579 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5580 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>
5581 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
5582 &lt;name&gt; is the new name of the effect send entity, which
5583 does not have to be unique (name MUST be encapsulated into apostrophes
5584 and supports escape sequences as described in chapter
5585 "<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>").
5586
5587 </p>
5588 <p>Possible Answers:
5589 </p>
5590 <p>
5591 </p>
5592 <blockquote class="text">
5593 <p>"OK" -
5594 </p>
5595 <blockquote class="text">
5596 <p>on success
5597 </p>
5598 </blockquote>
5599
5600
5601 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5602 </p>
5603 <blockquote class="text">
5604 <p>in case it failed, providing an appropriate error code and error message
5605 </p>
5606 </blockquote>
5607
5608
5609 </blockquote><p>
5610
5611 </p>
5612 <p>Example:
5613 </p>
5614 <p>
5615 </p>
5616 <blockquote class="text">
5617 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5618 </p>
5619 <p>S: "OK"
5620 </p>
5621 </blockquote><p>
5622
5623 </p>
5624 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5625 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5626 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5627 Altering effect send's audio routing</h3>
5628
5629 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5630 sampler channel by sending the following command:
5631 </p>
5632 <p>
5633 </p>
5634 <blockquote class="text">
5635 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5636 </p>
5637 </blockquote><p>
5638
5639 </p>
5640 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5641 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>
5642 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,
5643 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5644 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>
5645 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,
5646 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5647 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5648 the audio channel of the selected audio output device where &lt;audio-src&gt;
5649 should be routed to. If an internal send effect is assigned
5650 to the effect send, then this setting defines the audio
5651 channel routing to that effect instance respectively.
5652 </p>
5653 <p>Note that effect sends can only route audio to the same audio output
5654 device as assigned to the effect send's sampler channel. Also note that an
5655 effect send entity does always have exactly as much audio channels as its
5656 sampler channel. So if the sampler channel is stereo, the effect send does
5657 have two audio channels as well. Also keep in mind that the amount of audio
5658 channels on a sampler channel might be dependant not only to the deployed
5659 sampler engine on the sampler channel, but also dependant to the instrument
5660 currently loaded. However you can (effectively) turn an i.e. stereo effect
5661 send into a mono one by simply altering its audio routing appropriately.
5662 </p>
5663 <p>Possible Answers:
5664 </p>
5665 <p>
5666 </p>
5667 <blockquote class="text">
5668 <p>"OK" -
5669 </p>
5670 <blockquote class="text">
5671 <p>on success
5672 </p>
5673 </blockquote>
5674
5675
5676 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5677 </p>
5678 <blockquote class="text">
5679 <p>if audio output channel was set, but there are noteworthy
5680 issue(s) related, providing an appropriate warning code and
5681 warning message
5682 </p>
5683 </blockquote>
5684
5685
5686 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5687 </p>
5688 <blockquote class="text">
5689 <p>in case it failed, providing an appropriate error code and error message
5690 </p>
5691 </blockquote>
5692
5693
5694 </blockquote><p>
5695
5696 </p>
5697 <p>Example:
5698 </p>
5699 <p>
5700 </p>
5701 <blockquote class="text">
5702 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5703 </p>
5704 <p>S: "OK"
5705 </p>
5706 </blockquote><p>
5707
5708 </p>
5709 <a name="SET FX_SEND EFFECT"></a><br /><hr />
5710 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5711 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5712 Assigning destination effect to an effect send</h3>
5713
5714 <p>The front-end can (re-)assign a destination effect to an
5715 effect send by sending the following command:
5716 </p>
5717 <p>
5718 </p>
5719 <blockquote class="text">
5720 <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
5721 </p>
5722 </blockquote><p>
5723
5724 </p>
5725 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5726 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>
5727 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,
5728 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5729 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>
5730 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,
5731 &lt;effect-chain&gt; by the numerical ID of the destination
5732 effect chain as returned by the
5733 <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>
5734 or
5735 <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>
5736 command and &lt;chain-pos&gt; reflects the exact effect
5737 chain position in the effect chain which hosts the actual
5738 destination effect.
5739 </p>
5740 <p>Possible Answers:
5741 </p>
5742 <p>
5743 </p>
5744 <blockquote class="text">
5745 <p>"OK" -
5746 </p>
5747 <blockquote class="text">
5748 <p>on success
5749 </p>
5750 </blockquote>
5751
5752
5753 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5754 </p>
5755 <blockquote class="text">
5756 <p>in case it failed, providing an appropriate error code and error message
5757 </p>
5758 </blockquote>
5759
5760
5761 </blockquote><p>
5762
5763 </p>
5764 <p>Example:
5765 </p>
5766 <p>
5767 </p>
5768 <blockquote class="text">
5769 <p>C: "SET FX_SEND EFFECT 0 0 2 5"
5770 </p>
5771 <p>S: "OK"
5772 </p>
5773 </blockquote><p>
5774
5775 </p>
5776 <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
5777 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5778 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5779 Removing destination effect from an effect send</h3>
5780
5781 <p>The front-end can (re-)assign a destination effect to an
5782 effect send by sending the following command:
5783 </p>
5784 <p>
5785 </p>
5786 <blockquote class="text">
5787 <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
5788 </p>
5789 </blockquote><p>
5790
5791 </p>
5792 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5793 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>
5794 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,
5795 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5796 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>
5797 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.
5798 </p>
5799 <p>After the destination effect has been removed from the
5800 effect send, the audio signal of the effect send will be
5801 routed directly to the audio output device, according to the
5802 audio channel routing setting of the effect send.
5803
5804 </p>
5805 <p>Possible Answers:
5806 </p>
5807 <p>
5808 </p>
5809 <blockquote class="text">
5810 <p>"OK" -
5811 </p>
5812 <blockquote class="text">
5813 <p>on success
5814 </p>
5815 </blockquote>
5816
5817
5818 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5819 </p>
5820 <blockquote class="text">
5821 <p>in case it failed, providing an appropriate error code and error message
5822 </p>
5823 </blockquote>
5824
5825
5826 </blockquote><p>
5827
5828 </p>
5829 <p>Example:
5830 </p>
5831 <p>
5832 </p>
5833 <blockquote class="text">
5834 <p>C: "REMOVE FX_SEND EFFECT 0 0"
5835 </p>
5836 <p>S: "OK"
5837 </p>
5838 </blockquote><p>
5839
5840 </p>
5841 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5842 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5843 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5844 Altering effect send's MIDI controller</h3>
5845
5846 <p>The front-end can alter the MIDI controller of an effect
5847 send entity by sending the following command:
5848 </p>
5849 <p>
5850 </p>
5851 <blockquote class="text">
5852 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5853 </p>
5854 </blockquote><p>
5855
5856 </p>
5857 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5858 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>
5859 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,
5860 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5861 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>
5862 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
5863 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5864 able to modify the effect send's send level.
5865 </p>
5866 <p>Possible Answers:
5867 </p>
5868 <p>
5869 </p>
5870 <blockquote class="text">
5871 <p>"OK" -
5872 </p>
5873 <blockquote class="text">
5874 <p>on success
5875 </p>
5876 </blockquote>
5877
5878
5879 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5880 </p>
5881 <blockquote class="text">
5882 <p>if MIDI controller was set, but there are noteworthy
5883 issue(s) related, providing an appropriate warning code and
5884 warning message
5885 </p>
5886 </blockquote>
5887
5888
5889 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5890 </p>
5891 <blockquote class="text">
5892 <p>in case it failed, providing an appropriate error code and error message
5893 </p>
5894 </blockquote>
5895
5896
5897 </blockquote><p>
5898
5899 </p>
5900 <p>Example:
5901 </p>
5902 <p>
5903 </p>
5904 <blockquote class="text">
5905 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5906 </p>
5907 <p>S: "OK"
5908 </p>
5909 </blockquote><p>
5910
5911 </p>
5912 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5913 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5914 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5915 Altering effect send's send level</h3>
5916
5917 <p>The front-end can alter the current send level of an effect
5918 send entity by sending the following command:
5919 </p>
5920 <p>
5921 </p>
5922 <blockquote class="text">
5923 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5924 </p>
5925 </blockquote><p>
5926
5927 </p>
5928 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5929 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>
5930 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,
5931 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5932 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>
5933 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
5934 &lt;volume&gt; is an optionally dotted positive number (a value
5935 smaller than 1.0 means attenuation, whereas a value greater than
5936 1.0 means amplification) reflecting the new send level.
5937 </p>
5938 <p>Possible Answers:
5939 </p>
5940 <p>
5941 </p>
5942 <blockquote class="text">
5943 <p>"OK" -
5944 </p>
5945 <blockquote class="text">
5946 <p>on success
5947 </p>
5948 </blockquote>
5949
5950
5951 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5952 </p>
5953 <blockquote class="text">
5954 <p>if new send level was set, but there are noteworthy
5955 issue(s) related, providing an appropriate warning code and
5956 warning message
5957 </p>
5958 </blockquote>
5959
5960
5961 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5962 </p>
5963 <blockquote class="text">
5964 <p>in case it failed, providing an appropriate error code and error message
5965 </p>
5966 </blockquote>
5967
5968
5969 </blockquote><p>
5970
5971 </p>
5972 <p>Example:
5973 </p>
5974 <p>
5975 </p>
5976 <blockquote class="text">
5977 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5978 </p>
5979 <p>S: "OK"
5980 </p>
5981 </blockquote><p>
5982
5983 </p>
5984 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5985 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5986 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
5987 Sending MIDI messages to sampler channel</h3>
5988
5989 <p>The front-end can send MIDI events to a specific sampler channel
5990 by sending the following command:
5991 </p>
5992 <p>
5993 </p>
5994 <blockquote class="text">
5995 <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
5996 </p>
5997 </blockquote><p>
5998
5999 </p>
6000 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6001 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>
6002 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,
6003 &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6004 specifies the MIDI message type. Currently, the following MIDI messages are supported:
6005 </p>
6006 <p>
6007 </p>
6008 <blockquote class="text">
6009 <p>"NOTE_ON" -
6010 </p>
6011 <blockquote class="text">
6012 <p>For turning on MIDI notes, where &lt;arg1&gt;
6013 specifies the key number and &lt;arg2&gt; the velocity
6014 as described in the MIDI specification.
6015 </p>
6016 </blockquote>
6017
6018
6019 <p>"NOTE_OFF" -
6020 </p>
6021 <blockquote class="text">
6022 <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6023 specifies the key number and &lt;arg2&gt; the velocity
6024 as described in the MIDI specification.
6025 </p>
6026 </blockquote>
6027
6028
6029 <p>"CC" -
6030 </p>
6031 <blockquote class="text">
6032 <p>For changing a MIDI controller, where &lt;arg1&gt;
6033 specifies the controller number and &lt;arg2&gt; the
6034 new value of the controller as described in the Control
6035 Change section of the MIDI specification.
6036 </p>
6037 </blockquote>
6038
6039
6040 </blockquote><p>
6041
6042 </p>
6043 <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6044 and no realtime guarantee whatsoever will be made!
6045 </p>
6046 <p>Possible Answers:
6047 </p>
6048 <p>
6049 </p>
6050 <blockquote class="text">
6051 <p>"OK" -
6052 </p>
6053 <blockquote class="text">
6054 <p>on success
6055 </p>
6056 </blockquote>
6057
6058
6059 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6060 </p>
6061 <blockquote class="text">
6062 <p>in case it failed, providing an appropriate error code and error message
6063 </p>
6064 </blockquote>
6065
6066
6067 </blockquote><p>
6068
6069 </p>
6070 <p>Example:
6071 </p>
6072 <p>
6073 </p>
6074 <blockquote class="text">
6075 <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6076 </p>
6077 <p>S: "OK"
6078 </p>
6079 </blockquote><p>
6080
6081 </p>
6082 <a name="RESET CHANNEL"></a><br /><hr />
6083 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6084 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6085 Resetting a sampler channel</h3>
6086
6087 <p>The front-end can reset a particular sampler channel by sending the following command:
6088 </p>
6089 <p>
6090 </p>
6091 <blockquote class="text">
6092 <p>RESET CHANNEL &lt;sampler-channel&gt;
6093 </p>
6094 </blockquote><p>
6095
6096 </p>
6097 <p>
6098 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6099 This will cause the engine on that sampler channel, its voices and
6100 eventually disk streams and all control and status variables to be
6101 reset.
6102 </p>
6103 <p>Possible Answers:
6104 </p>
6105 <p>
6106 </p>
6107 <blockquote class="text">
6108 <p>"OK" -
6109 </p>
6110 <blockquote class="text">
6111 <p>on success
6112 </p>
6113 </blockquote>
6114
6115
6116 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6117 </p>
6118 <blockquote class="text">
6119 <p>if channel was reset, but there are noteworthy issue(s)
6120 related, providing an appropriate warning code and warning
6121 message
6122 </p>
6123 </blockquote>
6124
6125
6126 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6127 </p>
6128 <blockquote class="text">
6129 <p>in case it failed, providing an appropriate error code and
6130 error message
6131 </p>
6132 </blockquote>
6133
6134
6135 </blockquote><p>
6136
6137 </p>
6138 <p>Examples:
6139 </p>
6140 <p>
6141 </p>
6142 <blockquote class="text">
6143 <p>
6144 </p>
6145 </blockquote><p>
6146
6147 </p>
6148 <a name="anchor12"></a><br /><hr />
6149 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6150 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6151 Controlling connection</h3>
6152
6153 <p>The following commands are used to control the connection to LinuxSampler.
6154 </p>
6155 <a name="SUBSCRIBE"></a><br /><hr />
6156 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6157 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6158 Register front-end for receiving event messages</h3>
6159
6160 <p>The front-end can register itself to the LinuxSampler application to
6161 be informed about noteworthy events by sending this command:
6162 </p>
6163 <p>
6164 </p>
6165 <blockquote class="text">
6166 <p>SUBSCRIBE &lt;event-id&gt;
6167 </p>
6168 </blockquote><p>
6169
6170 </p>
6171 <p>where &lt;event-id&gt; will be replaced by the respective event that
6172 client wants to subscribe to.
6173 </p>
6174 <p>Possible Answers:
6175 </p>
6176 <p>
6177 </p>
6178 <blockquote class="text">
6179 <p>"OK" -
6180 </p>
6181 <blockquote class="text">
6182 <p>on success
6183 </p>
6184 </blockquote>
6185
6186
6187 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6188 </p>
6189 <blockquote class="text">
6190 <p>if registration succeeded, but there are noteworthy
6191 issue(s) related, providing an appropriate warning code and
6192 warning message
6193 </p>
6194 </blockquote>
6195
6196
6197 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6198 </p>
6199 <blockquote class="text">
6200 <p>in case it failed, providing an appropriate error code and
6201 error message
6202 </p>
6203 </blockquote>
6204
6205
6206 </blockquote><p>
6207
6208 </p>
6209 <p>Examples:
6210 </p>
6211 <p>
6212 </p>
6213 <blockquote class="text">
6214 <p>
6215 </p>
6216 </blockquote><p>
6217
6218 </p>
6219 <a name="UNSUBSCRIBE"></a><br /><hr />
6220 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6221 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6222 Unregister front-end for not receiving event messages</h3>
6223
6224 <p>The front-end can unregister itself if it doesn't want to receive event
6225 messages anymore by sending the following command:
6226 </p>
6227 <p>
6228 </p>
6229 <blockquote class="text">
6230 <p>UNSUBSCRIBE &lt;event-id&gt;
6231 </p>
6232 </blockquote><p>
6233
6234 </p>
6235 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6236 client doesn't want to receive anymore.
6237 </p>
6238 <p>Possible Answers:
6239 </p>
6240 <p>
6241 </p>
6242 <blockquote class="text">
6243 <p>"OK" -
6244 </p>
6245 <blockquote class="text">
6246 <p>on success
6247 </p>
6248 </blockquote>
6249
6250
6251 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6252 </p>
6253 <blockquote class="text">
6254 <p>if unregistration succeeded, but there are noteworthy
6255 issue(s) related, providing an appropriate warning code and
6256 warning message
6257 </p>
6258 </blockquote>
6259
6260
6261 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6262 </p>
6263 <blockquote class="text">
6264 <p>in case it failed, providing an appropriate error code and
6265 error message
6266 </p>
6267 </blockquote>
6268
6269
6270 </blockquote><p>
6271
6272 </p>
6273 <p>Examples:
6274 </p>
6275 <p>
6276 </p>
6277 <blockquote class="text">
6278 <p>
6279 </p>
6280 </blockquote><p>
6281
6282 </p>
6283 <a name="SET ECHO"></a><br /><hr />
6284 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6285 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6286 Enable or disable echo of commands</h3>
6287
6288 <p>To enable or disable back sending of commands to the client the following command can be used:
6289 </p>
6290 <p>
6291 </p>
6292 <blockquote class="text">
6293 <p>SET ECHO &lt;value&gt;
6294 </p>
6295 </blockquote><p>
6296
6297 </p>
6298 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6299 or "0" to disable echo mode. When echo mode is enabled, all
6300 commands send to LinuxSampler will be immediately send back and
6301 after this echo the actual response to the command will be
6302 returned. Echo mode will only be altered for the client connection
6303 that issued the "SET ECHO" command, not globally for all client
6304 connections.
6305 </p>
6306 <p>Possible Answers:
6307 </p>
6308 <p>
6309 </p>
6310 <blockquote class="text">
6311 <p>"OK" -
6312 </p>
6313 <blockquote class="text">
6314 <p>usually
6315 </p>
6316 </blockquote>
6317
6318
6319 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6320 </p>
6321 <blockquote class="text">
6322 <p>on syntax error, e.g. non boolean value
6323 </p>
6324 </blockquote>
6325
6326
6327 </blockquote><p>
6328
6329 </p>
6330 <p>Examples:
6331 </p>
6332 <p>
6333 </p>
6334 <blockquote class="text">
6335 <p>
6336 </p>
6337 </blockquote><p>
6338
6339 </p>
6340 <a name="QUIT"></a><br /><hr />
6341 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6342 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6343 Close client connection</h3>
6344
6345 <p>The client can close its network connection to LinuxSampler by sending the following command:
6346 </p>
6347 <p>
6348 </p>
6349 <blockquote class="text">
6350 <p>QUIT
6351 </p>
6352 </blockquote><p>
6353
6354 </p>
6355 <p>This is probably more interesting for manual telnet connections to
6356 LinuxSampler than really useful for a front-end implementation.
6357 </p>
6358 <a name="anchor13"></a><br /><hr />
6359 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6360 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6361 Global commands</h3>
6362
6363 <p>The following commands have global impact on the sampler.
6364 </p>
6365 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6366 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6367 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6368 Current number of active voices</h3>
6369
6370 <p>The front-end can ask for the current number of active voices on
6371 the sampler by sending the following command:
6372 </p>
6373 <p>
6374 </p>
6375 <blockquote class="text">
6376 <p>GET TOTAL_VOICE_COUNT
6377 </p>
6378 </blockquote><p>
6379
6380 </p>
6381 <p>Possible Answers:
6382 </p>
6383 <p>
6384 </p>
6385 <blockquote class="text">
6386 <p>LinuxSampler will answer by returning the number of all active
6387 voices on the sampler.
6388 </p>
6389 </blockquote><p>
6390
6391 </p>
6392 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6393 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6394 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6395 Maximum amount of active voices</h3>
6396
6397 <p>The front-end can ask for the maximum number of active voices
6398 by sending the following command:
6399 </p>
6400 <p>
6401 </p>
6402 <blockquote class="text">
6403 <p>GET TOTAL_VOICE_COUNT_MAX
6404 </p>
6405 </blockquote><p>
6406
6407 </p>
6408 <p>Possible Answers:
6409 </p>
6410 <p>
6411 </p>
6412 <blockquote class="text">
6413 <p>LinuxSampler will answer by returning the maximum number
6414 of active voices.
6415 </p>
6416 </blockquote><p>
6417
6418 </p>
6419 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6420 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6421 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6422 Current number of active disk streams</h3>
6423
6424 <p>The front-end can ask for the current number of active disk streams on
6425 the sampler by sending the following command:
6426 </p>
6427 <p>
6428 </p>
6429 <blockquote class="text">
6430 <p>GET TOTAL_STREAM_COUNT
6431 </p>
6432 </blockquote><p>
6433
6434 </p>
6435 <p>Possible Answers:
6436 </p>
6437 <p>
6438 </p>
6439 <blockquote class="text">
6440 <p>LinuxSampler will answer by returning the number of all active
6441 disk streams on the sampler.
6442 </p>
6443 </blockquote><p>
6444
6445 </p>
6446 <a name="RESET"></a><br /><hr />
6447 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6448 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6449 Reset sampler</h3>
6450
6451 <p>The front-end can reset the whole sampler by sending the following command:
6452 </p>
6453 <p>
6454 </p>
6455 <blockquote class="text">
6456 <p>RESET
6457 </p>
6458 </blockquote><p>
6459
6460 </p>
6461 <p>Possible Answers:
6462 </p>
6463 <p>
6464 </p>
6465 <blockquote class="text">
6466 <p>"OK" -
6467 </p>
6468 <blockquote class="text">
6469 <p>always
6470 </p>
6471 </blockquote>
6472
6473
6474 </blockquote><p>
6475
6476 </p>
6477 <p>Examples:
6478 </p>
6479 <p>
6480 </p>
6481 <blockquote class="text">
6482 <p>
6483 </p>
6484 </blockquote><p>
6485
6486 </p>
6487 <a name="GET SERVER INFO"></a><br /><hr />
6488 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6489 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6490 General sampler informations</h3>
6491
6492 <p>The client can ask for general informations about the LinuxSampler
6493 instance by sending the following command:
6494 </p>
6495 <p>
6496 </p>
6497 <blockquote class="text">
6498 <p>GET SERVER INFO
6499 </p>
6500 </blockquote><p>
6501
6502 </p>
6503 <p>Possible Answers:
6504 </p>
6505 <p>
6506 </p>
6507 <blockquote class="text">
6508 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6509 Each answer line begins with the information category name
6510 followed by a colon and then a space character &lt;SP&gt; and finally
6511 the info character string to that information category. At the
6512 moment the following categories are defined:
6513
6514 </p>
6515 <p>
6516 </p>
6517 <blockquote class="text">
6518 <p>DESCRIPTION -
6519 </p>
6520 <blockquote class="text">
6521 <p>arbitrary textual description about the sampler
6522 (note that the character string may contain
6523 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6524 </p>
6525 </blockquote>
6526
6527
6528 <p>VERSION -
6529 </p>
6530 <blockquote class="text">
6531 <p>version of the sampler
6532 </p>
6533 </blockquote>
6534
6535
6536 <p>PROTOCOL_VERSION -
6537 </p>
6538 <blockquote class="text">
6539 <p>version of the LSCP specification the sampler
6540 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)
6541 </p>
6542 </blockquote>
6543
6544
6545 <p>INSTRUMENTS_DB_SUPPORT -
6546 </p>
6547 <blockquote class="text">
6548 <p>either yes or no, specifies whether the
6549 sampler is build with instruments database support.
6550 </p>
6551 </blockquote>
6552
6553
6554 </blockquote>
6555
6556
6557 </blockquote><p>
6558
6559 </p>
6560 <p>The mentioned fields above don't have to be in particular order.
6561 Other fields might be added in future.
6562 </p>
6563 <a name="GET VOLUME"></a><br /><hr />
6564 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6565 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6566 Getting global volume attenuation</h3>
6567
6568 <p>The client can ask for the current global sampler-wide volume
6569 attenuation by sending the following command:
6570 </p>
6571 <p>
6572 </p>
6573 <blockquote class="text">
6574 <p>GET VOLUME
6575 </p>
6576 </blockquote><p>
6577
6578 </p>
6579 <p>Possible Answers:
6580 </p>
6581 <p>
6582 </p>
6583 <blockquote class="text">
6584 <p>The sampler will always answer by returning the optional
6585 dotted floating point coefficient, reflecting the current
6586 global volume attenuation.
6587
6588 </p>
6589 </blockquote><p>
6590
6591 </p>
6592 <p>Note: it is up to the respective sampler engine whether to obey
6593 that global volume parameter or not, but in general all engines SHOULD
6594 use this parameter.
6595 </p>
6596 <a name="SET VOLUME"></a><br /><hr />
6597 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6598 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6599 Setting global volume attenuation</h3>
6600
6601 <p>The client can alter the current global sampler-wide volume
6602 attenuation by sending the following command:
6603 </p>
6604 <p>
6605 </p>
6606 <blockquote class="text">
6607 <p>SET VOLUME &lt;volume&gt;
6608 </p>
6609 </blockquote><p>
6610
6611 </p>
6612 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6613 floating point value, reflecting the new global volume parameter.
6614 This value might usually be in the range between 0.0 and 1.0, that
6615 is for attenuating the overall volume.
6616 </p>
6617 <p>Possible Answers:
6618 </p>
6619 <p>
6620 </p>
6621 <blockquote class="text">
6622 <p>"OK" -
6623 </p>
6624 <blockquote class="text">
6625 <p>on success
6626 </p>
6627 </blockquote>
6628
6629
6630 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6631 </p>
6632 <blockquote class="text">
6633 <p>if the global volume was set, but there are noteworthy
6634 issue(s) related, providing an appropriate warning code and
6635 warning message
6636 </p>
6637 </blockquote>
6638
6639
6640 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6641 </p>
6642 <blockquote class="text">
6643 <p>in case it failed, providing an appropriate error code and error message
6644 </p>
6645 </blockquote>
6646
6647
6648 </blockquote><p>
6649
6650 </p>
6651 <a name="GET VOICES"></a><br /><hr />
6652 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6653 <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
6654 Getting global voice limit</h3>
6655
6656 <p>The client can ask for the current global sampler-wide limit
6657 for maximum voices by sending the following command:
6658 </p>
6659 <p>
6660 </p>
6661 <blockquote class="text">
6662 <p>GET VOICES
6663 </p>
6664 </blockquote><p>
6665
6666 </p>
6667 <p>Possible Answers:
6668 </p>
6669 <p>
6670 </p>
6671 <blockquote class="text">
6672 <p>LinuxSampler will answer by returning the number for
6673 the current limit of maximum voices.
6674 </p>
6675 </blockquote><p>
6676
6677 </p>
6678 <p>The voice limit setting defines how many voices should maximum
6679 be processed by the sampler at the same time. If the user
6680 triggers new notes which would exceed that voice limit, the
6681 sampler engine will react by stealing old voices for those
6682 newly triggered notes. Note that the amount of voices triggered
6683 by a new note can be larger than one and is dependent to the
6684 respective instrument and probably further criterias.
6685 </p>
6686 <a name="SET VOICES"></a><br /><hr />
6687 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6688 <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
6689 Setting global voice limit</h3>
6690
6691 <p>The client can alter the current global sampler-wide limit
6692 for maximum voices by sending the following command:
6693 </p>
6694 <p>
6695 </p>
6696 <blockquote class="text">
6697 <p>SET VOICES &lt;max-voices&gt;
6698 </p>
6699 </blockquote><p>
6700
6701 </p>
6702 <p>Where &lt;max-voices&gt; should be replaced by the integer
6703 value, reflecting the new global amount limit of maximum voices.
6704 This value has to be larger than 0.
6705 </p>
6706 <p>Possible Answers:
6707 </p>
6708 <p>
6709 </p>
6710 <blockquote class="text">
6711 <p>"OK" -
6712 </p>
6713 <blockquote class="text">
6714 <p>on success
6715 </p>
6716 </blockquote>
6717
6718
6719 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6720 </p>
6721 <blockquote class="text">
6722 <p>if the voice limit was set, but there are noteworthy
6723 issue(s) related, providing an appropriate warning code and
6724 warning message
6725 </p>
6726 </blockquote>
6727
6728
6729 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6730 </p>
6731 <blockquote class="text">
6732 <p>in case it failed, providing an appropriate error code and error message
6733 </p>
6734 </blockquote>
6735
6736
6737 </blockquote><p>
6738
6739 </p>
6740 <p>Note: the given value will be passed to all sampler engine instances.
6741 The total amount of maximum voices on the running system might thus
6742 be as big as the given value multiplied by the current amount of engine
6743 instances.
6744 </p>
6745 <p>Caution: when adjusting the voice limit, you SHOULD also
6746 adjust the disk stream limit respectively and vice versa.
6747 </p>
6748 <a name="GET STREAMS"></a><br /><hr />
6749 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6750 <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
6751 Getting global disk stream limit</h3>
6752
6753 <p>The client can ask for the current global sampler-wide limit
6754 for maximum disk streams by sending the following command:
6755 </p>
6756 <p>
6757 </p>
6758 <blockquote class="text">
6759 <p>GET STREAMS
6760 </p>
6761 </blockquote><p>
6762
6763 </p>
6764 <p>Possible Answers:
6765 </p>
6766 <p>
6767 </p>
6768 <blockquote class="text">
6769 <p>LinuxSampler will answer by returning the number for
6770 the current limit of maximum disk streams.
6771 </p>
6772 </blockquote><p>
6773
6774 </p>
6775 <p>The disk stream limit setting defines how many disk streams should
6776 maximum be processed by a sampler engine at the same time. The
6777 higher this value, the more memory (RAM) will be occupied, since
6778 every disk streams allocates a certain buffer size for being able
6779 to perform its streaming operations.
6780 </p>
6781 <a name="SET STREAMS"></a><br /><hr />
6782 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6783 <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
6784 Setting global disk stream limit</h3>
6785
6786 <p>The client can alter the current global sampler-wide limit
6787 for maximum disk streams by sending the following command:
6788 </p>
6789 <p>
6790 </p>
6791 <blockquote class="text">
6792 <p>SET STREAMS &lt;max-streams&gt;
6793 </p>
6794 </blockquote><p>
6795
6796 </p>
6797 <p>Where &lt;max-streams&gt; should be replaced by the integer
6798 value, reflecting the new global amount limit of maximum disk streams.
6799 This value has to be positive.
6800 </p>
6801 <p>Possible Answers:
6802 </p>
6803 <p>
6804 </p>
6805 <blockquote class="text">
6806 <p>"OK" -
6807 </p>
6808 <blockquote class="text">
6809 <p>on success
6810 </p>
6811 </blockquote>
6812
6813
6814 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6815 </p>
6816 <blockquote class="text">
6817 <p>if the disk stream limit was set, but there are noteworthy
6818 issue(s) related, providing an appropriate warning code and
6819 warning message
6820 </p>
6821 </blockquote>
6822
6823
6824 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6825 </p>
6826 <blockquote class="text">
6827 <p>in case it failed, providing an appropriate error code and error message
6828 </p>
6829 </blockquote>
6830
6831
6832 </blockquote><p>
6833
6834 </p>
6835 <p>Note: the given value will be passed to all sampler engine instances.
6836 The total amount of maximum disk streams on the running system might
6837 thus be as big as the given value multiplied by the current amount of
6838 engine instances.
6839 </p>
6840 <p>Caution: when adjusting the disk stream limit, you SHOULD also
6841 adjust the voice limit respectively and vice versa.
6842 </p>
6843 <a name="MIDI Instrument Mapping"></a><br /><hr />
6844 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6845 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6846 MIDI Instrument Mapping</h3>
6847
6848 <p>The MIDI protocol provides a way to switch between instruments
6849 by sending so called MIDI bank select and MIDI program change
6850 messages which are essentially just numbers. The following commands
6851 allow to actually map arbitrary MIDI bank select / program change
6852 numbers with real instruments.
6853 </p>
6854 <p>The sampler allows to manage an arbitrary amount of MIDI
6855 instrument maps which define which instrument to load on
6856 which MIDI program change message.
6857 </p>
6858 <p>By default, that is when the sampler is launched, there is no
6859 map, thus the sampler will simply ignore all program change
6860 messages. The front-end has to explicitly create at least one
6861 map, add entries to the map and tell the respective sampler
6862 channel(s) which MIDI instrument map to use, so the sampler
6863 knows how to react on a given program change message on the
6864 respective sampler channel, that is by switching to the
6865 respectively defined engine type and loading the respective
6866 instrument. See command
6867 <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>
6868 for how to assign a MIDI instrument map to a sampler channel.
6869 </p>
6870 <p>Also note per MIDI specification a bank select message does not
6871 cause to switch to another instrument. Instead when receiving a
6872 bank select message the bank value will be stored and a subsequent
6873 program change message (which may occur at any time) will finally
6874 cause the sampler to switch to the respective instrument as
6875 reflected by the current MIDI instrument map.
6876 </p>
6877 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6878 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6879 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6880 Create a new MIDI instrument map</h3>
6881
6882 <p>The front-end can add a new MIDI instrument map by sending
6883 the following command:
6884 </p>
6885 <p>
6886 </p>
6887 <blockquote class="text">
6888 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6889 </p>
6890 </blockquote><p>
6891
6892 </p>
6893 <p>Where &lt;name&gt; is an optional argument allowing to
6894 assign a custom name to the new map. MIDI instrument Map
6895 names do not have to be unique, but MUST be encapsulated
6896 into apostrophes and support escape sequences as described
6897 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>".
6898
6899 </p>
6900 <p>Possible Answers:
6901 </p>
6902 <p>
6903 </p>
6904 <blockquote class="text">
6905 <p>"OK[&lt;map&gt;]" -
6906 </p>
6907 <blockquote class="text">
6908 <p>in case a new MIDI instrument map could
6909 be added, where &lt;map&gt; reflects the
6910 unique ID of the newly created MIDI
6911 instrument map
6912 </p>
6913 </blockquote>
6914
6915
6916 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6917 </p>
6918 <blockquote class="text">
6919 <p>when a new map could not be created, which
6920 might never occur in practice
6921 </p>
6922 </blockquote>
6923
6924
6925 </blockquote><p>
6926
6927 </p>
6928 <p>Examples:
6929 </p>
6930 <p>
6931 </p>
6932 <blockquote class="text">
6933 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6934 </p>
6935 <p>S: "OK[0]"
6936 </p>
6937 </blockquote><p>
6938
6939 </p>
6940 <p>
6941 </p>
6942 <blockquote class="text">
6943 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6944 </p>
6945 <p>S: "OK[1]"
6946 </p>
6947 </blockquote><p>
6948
6949 </p>
6950 <p>
6951 </p>
6952 <blockquote class="text">
6953 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6954 </p>
6955 <p>S: "OK[5]"
6956 </p>
6957 </blockquote><p>
6958
6959 </p>
6960 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6961 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6962 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6963 Delete one particular or all MIDI instrument maps</h3>
6964
6965 <p>The front-end can delete a particular MIDI instrument map
6966 by sending the following command:
6967 </p>
6968 <p>
6969 </p>
6970 <blockquote class="text">
6971 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6972 </p>
6973 </blockquote><p>
6974
6975 </p>
6976 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6977 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>
6978 command.
6979 </p>
6980 <p>The front-end can delete all MIDI instrument maps by
6981 sending the following command:
6982 </p>
6983 <p>
6984 </p>
6985 <blockquote class="text">
6986 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6987 </p>
6988 </blockquote><p>
6989
6990 </p>
6991 <p>Possible Answers:
6992 </p>
6993 <p>
6994 </p>
6995 <blockquote class="text">
6996 <p>"OK" -
6997 </p>
6998 <blockquote class="text">
6999 <p>in case the map(s) could be deleted
7000 </p>
7001 </blockquote>
7002
7003
7004 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7005 </p>
7006 <blockquote class="text">
7007 <p>when the given map does not exist
7008 </p>
7009 </blockquote>
7010
7011
7012 </blockquote><p>
7013
7014 </p>
7015 <p>Examples:
7016 </p>
7017 <p>
7018 </p>
7019 <blockquote class="text">
7020 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7021 </p>
7022 <p>S: "OK"
7023 </p>
7024 </blockquote><p>
7025
7026 </p>
7027 <p>
7028 </p>
7029 <blockquote class="text">
7030 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7031 </p>
7032 <p>S: "OK"
7033 </p>
7034 </blockquote><p>
7035
7036 </p>
7037 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7038 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7039 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7040 Get amount of existing MIDI instrument maps</h3>
7041
7042 <p>The front-end can retrieve the current amount of MIDI
7043 instrument maps by sending the following command:
7044 </p>
7045 <p>
7046 </p>
7047 <blockquote class="text">
7048 <p>GET MIDI_INSTRUMENT_MAPS
7049 </p>
7050 </blockquote><p>
7051
7052 </p>
7053 <p>Possible Answers:
7054 </p>
7055 <p>
7056 </p>
7057 <blockquote class="text">
7058 <p>The sampler will answer by returning the current
7059 number of MIDI instrument maps.
7060 </p>
7061 </blockquote><p>
7062
7063 </p>
7064 <p>Example:
7065 </p>
7066 <p>
7067 </p>
7068 <blockquote class="text">
7069 <p>C: "GET MIDI_INSTRUMENT_MAPS"
7070 </p>
7071 <p>S: "2"
7072 </p>
7073 </blockquote><p>
7074
7075 </p>
7076 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7077 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7078 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7079 Getting all created MIDI instrument maps</h3>
7080
7081 <p>The number of MIDI instrument maps can change on runtime. To get the
7082 current list of MIDI instrument maps, the front-end can send the
7083 following command:
7084 </p>
7085 <p>
7086 </p>
7087 <blockquote class="text">
7088 <p>LIST MIDI_INSTRUMENT_MAPS
7089 </p>
7090 </blockquote><p>
7091
7092 </p>
7093 <p>Possible Answers:
7094 </p>
7095 <p>
7096 </p>
7097 <blockquote class="text">
7098 <p>The sampler will answer by returning a comma separated list
7099 with all MIDI instrument maps' numerical IDs.
7100 </p>
7101 </blockquote><p>
7102
7103 </p>
7104 <p>Example:
7105 </p>
7106 <p>
7107 </p>
7108 <blockquote class="text">
7109 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7110 </p>
7111 <p>S: "0,1,5,12"
7112 </p>
7113 </blockquote><p>
7114
7115 </p>
7116 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7117 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7118 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7119 Getting MIDI instrument map information</h3>
7120
7121 <p>The front-end can ask for the current settings of a MIDI
7122 instrument map by sending the following command:
7123 </p>
7124 <p>
7125 </p>
7126 <blockquote class="text">
7127 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7128 </p>
7129 </blockquote><p>
7130
7131 </p>
7132 <p>Where &lt;map&gt; is the numerical ID of the map the
7133 front-end is interested in as returned by the
7134 <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>
7135 command.
7136 </p>
7137 <p>Possible Answers:
7138 </p>
7139 <p>
7140 </p>
7141 <blockquote class="text">
7142 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7143 Each answer line begins with the settings category name
7144 followed by a colon and then a space character &lt;SP&gt; and finally
7145 the info character string to that setting category. At the
7146 moment the following categories are defined:
7147 </p>
7148 <p>
7149 </p>
7150 <blockquote class="text">
7151 <p>NAME -
7152 </p>
7153 <blockquote class="text">
7154 <p>custom name of the given map,
7155 which does not have to be unique
7156 (note that this character string may contain
7157 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7158 </p>
7159 </blockquote>
7160
7161
7162 <p>DEFAULT -
7163 </p>
7164 <blockquote class="text">
7165 <p>either true or false,
7166 defines whether this map is the default map
7167 </p>
7168 </blockquote>
7169
7170
7171 </blockquote>
7172
7173
7174 </blockquote><p>
7175
7176 </p>
7177 <p>The mentioned fields above don't have to be in particular order.
7178 </p>
7179 <p>Example:
7180 </p>
7181 <p>
7182 </p>
7183 <blockquote class="text">
7184 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7185 </p>
7186 <p>S: "NAME: Standard Map"
7187 </p>
7188 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7189 </p>
7190 <p>&nbsp;&nbsp;&nbsp;"."
7191 </p>
7192 </blockquote><p>
7193
7194 </p>
7195 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7196 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7197 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7198 Renaming a MIDI instrument map</h3>
7199
7200 <p>The front-end can alter the custom name of a MIDI
7201 instrument map by sending the following command:
7202 </p>
7203 <p>
7204 </p>
7205 <blockquote class="text">
7206 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7207 </p>
7208 </blockquote><p>
7209
7210 </p>
7211 <p>Where &lt;map&gt; is the numerical ID of the map and
7212 &lt;name&gt; the new custom name of the map, which does not
7213 have to be unique (name MUST be encapsulated into apostrophes
7214 and supports escape sequences as described in chapter
7215 "<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>").
7216
7217 </p>
7218 <p>Possible Answers:
7219 </p>
7220 <p>
7221 </p>
7222 <blockquote class="text">
7223 <p>"OK" -
7224 </p>
7225 <blockquote class="text">
7226 <p>on success
7227 </p>
7228 </blockquote>
7229
7230
7231 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7232 </p>
7233 <blockquote class="text">
7234 <p>in case the given map does not exist
7235 </p>
7236 </blockquote>
7237
7238
7239 </blockquote><p>
7240
7241 </p>
7242 <p>Example:
7243 </p>
7244 <p>
7245 </p>
7246 <blockquote class="text">
7247 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7248 </p>
7249 <p>S: "OK"
7250 </p>
7251 </blockquote><p>
7252
7253 </p>
7254 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7255 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7256 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7257 Create or replace a MIDI instrument map entry</h3>
7258
7259 <p>The front-end can create a new or replace an existing entry
7260 in a sampler's MIDI instrument map by sending the following
7261 command:
7262 </p>
7263 <p>
7264 </p>
7265 <blockquote class="text">
7266 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7267 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7268 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7269 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7270 </p>
7271 </blockquote><p>
7272
7273 </p>
7274 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7275 &lt;midi_bank&gt; is an integer value between
7276 0..16383 reflecting the MIDI bank select index,
7277 &lt;midi_prog&gt; an
7278 integer value between 0..127 reflecting the MIDI program change
7279 index, &lt;engine_name&gt; a sampler engine name as returned by
7280 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
7281 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7282 of the instrument's file to be deployed (encapsulated into apostrophes,
7283 supporting escape sequences as described in chapter
7284 "<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>"),
7285 &lt;instrument_index&gt; the index (integer value) of the instrument
7286 within the given file, &lt;volume_value&gt; reflects the master
7287 volume of the instrument as optionally dotted number (where a
7288 value &lt; 1.0 means attenuation and a value > 1.0 means
7289 amplification). This parameter easily allows to adjust the
7290 volume of all intruments within a custom instrument map
7291 without having to adjust their instrument files. The
7292 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7293 time of the instrument, that is when the instrument should
7294 be loaded, when freed and has exactly the following
7295 possibilities:
7296 </p>
7297 <p>
7298 </p>
7299 <blockquote class="text">
7300 <p>"ON_DEMAND" -
7301 </p>
7302 <blockquote class="text">
7303 <p>The instrument will be loaded when needed,
7304 that is when demanded by at least one sampler
7305 channel. It will immediately be freed from memory
7306 when not needed by any sampler channel anymore.
7307 </p>
7308 </blockquote>
7309
7310
7311 <p>"ON_DEMAND_HOLD" -
7312 </p>
7313 <blockquote class="text">
7314 <p>The instrument will be loaded when needed,
7315 that is when demanded by at least one sampler
7316 channel. It will be kept in memory even when
7317 not needed by any sampler channel anymore.
7318 Instruments with this mode are only freed
7319 when the sampler is reset or all mapping
7320 entries with this mode (and respective
7321 instrument) are explicitly changed to
7322 "ON_DEMAND" and no sampler channel is using
7323 the instrument anymore.
7324 </p>
7325 </blockquote>
7326
7327
7328 <p>"PERSISTENT" -
7329 </p>
7330 <blockquote class="text">
7331 <p>The instrument will immediately be loaded
7332 into memory when this mapping
7333 command is sent and the instrument is kept all
7334 the time. Instruments with this mode are
7335 only freed when the sampler is reset or all
7336 mapping entries with this mode (and
7337 respective instrument) are explicitly
7338 changed to "ON_DEMAND" and no sampler
7339 channel is using the instrument anymore.
7340 </p>
7341 </blockquote>
7342
7343
7344 <p>not supplied -
7345 </p>
7346 <blockquote class="text">
7347 <p>In case there is no &lt;instr_load_mode&gt;
7348 argument given, it will be up to the
7349 InstrumentManager to decide which mode to use.
7350 Usually it will use "ON_DEMAND" if an entry
7351 for the given instrument does not exist in
7352 the InstrumentManager's list yet, otherwise
7353 if an entry already exists, it will simply
7354 stick with the mode currently reflected by
7355 the already existing entry, that is it will
7356 not change the mode.
7357 </p>
7358 </blockquote>
7359
7360
7361 </blockquote><p>
7362
7363 </p>
7364 <p>
7365 The &lt;instr_load_mode&gt; argument thus allows to define an
7366 appropriate strategy (low memory consumption vs. fast
7367 instrument switching) for each instrument individually. Note, the
7368 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7369 "PERSISTENT" have to be supported by the respective sampler engine
7370 (which is technically the case when the engine provides an
7371 InstrumentManager for its format). If this is not the case the
7372 argument will automatically fall back to the default value
7373 "ON_DEMAND". Also the load mode of one instrument may
7374 automatically change the laod mode of other instrument(s), i.e.
7375 because the instruments are part of the same file and the
7376 engine does not allow a way to manage load modes for them
7377 individually. Due to this, in case the frontend shows the
7378 load modes of entries, the frontend should retrieve the actual
7379 mode by i.e. sending
7380 <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>
7381 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7382 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7383 "<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
7384 mapping entry, useful for frontends for displaying an appropriate name for
7385 mapped instruments (using
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
7388 </p>
7389 <p>
7390 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7391 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7392 however causes the respective "MAP MIDI_INSTRUMENT" command to return
7393 immediately, that is to let the sampler establish the mapping in the
7394 background. So this argument might be especially useful for mappings with
7395 a "PERSISTENT" type, because these have to load the respective instruments
7396 immediately and might thus block for a very long time. It is recommended
7397 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7398 because it has the following drawbacks: as "NON_MODAL" instructions return
7399 immediately, they may not necessarily return an error i.e. when the given
7400 instrument file turns out to be corrupt, beside that subsequent commands
7401 in a LSCP instruction sequence might fail, because mandatory mappings are
7402 not yet completed.
7403
7404 </p>
7405 <p>Possible Answers:
7406 </p>
7407 <p>
7408 </p>
7409 <blockquote class="text">
7410 <p>"OK" -
7411 </p>
7412 <blockquote class="text">
7413 <p>usually
7414 </p>
7415 </blockquote>
7416
7417
7418 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7419 </p>
7420 <blockquote class="text">
7421 <p>when the given map or engine does not exist or a value
7422 is out of range
7423 </p>
7424 </blockquote>
7425
7426
7427 </blockquote><p>
7428
7429 </p>
7430 <p>Examples:
7431 </p>
7432 <p>
7433 </p>
7434 <blockquote class="text">
7435 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7436 </p>
7437 <p>S: "OK"
7438 </p>
7439 </blockquote><p>
7440
7441 </p>
7442 <p>
7443 </p>
7444 <blockquote class="text">
7445 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7446 </p>
7447 <p>S: "OK"
7448 </p>
7449 </blockquote><p>
7450
7451 </p>
7452 <p>
7453 </p>
7454 <blockquote class="text">
7455 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7456 </p>
7457 <p>S: "OK"
7458 </p>
7459 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7460 </p>
7461 <p>S: "OK"
7462 </p>
7463 </blockquote><p>
7464
7465 </p>
7466 <p>
7467 </p>
7468 <blockquote class="text">
7469 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7470 </p>
7471 <p>S: "OK"
7472 </p>
7473 </blockquote><p>
7474
7475 </p>
7476 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7477 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7478 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7479 Getting ammount of MIDI instrument map entries</h3>
7480
7481 <p>The front-end can query the amount of currently existing
7482 entries in a MIDI instrument map by sending the following
7483 command:
7484 </p>
7485 <p>
7486 </p>
7487 <blockquote class="text">
7488 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7489 </p>
7490 </blockquote><p>
7491
7492 </p>
7493 <p>The front-end can query the amount of currently existing
7494 entries in all MIDI instrument maps by sending the following
7495 command:
7496 </p>
7497 <p>
7498 </p>
7499 <blockquote class="text">
7500 <p>GET MIDI_INSTRUMENTS ALL
7501 </p>
7502 </blockquote><p>
7503
7504 </p>
7505 <p>Possible Answers:
7506 </p>
7507 <p>
7508 </p>
7509 <blockquote class="text">
7510 <p>The sampler will answer by sending the current number of
7511 entries in the MIDI instrument map(s).
7512 </p>
7513 </blockquote><p>
7514
7515 </p>
7516 <p>Example:
7517 </p>
7518 <p>
7519 </p>
7520 <blockquote class="text">
7521 <p>C: "GET MIDI_INSTRUMENTS 0"
7522 </p>
7523 <p>S: "234"
7524 </p>
7525 </blockquote><p>
7526
7527 </p>
7528 <p>
7529 </p>
7530 <blockquote class="text">
7531 <p>C: "GET MIDI_INSTRUMENTS ALL"
7532 </p>
7533 <p>S: "954"
7534 </p>
7535 </blockquote><p>
7536
7537 </p>
7538 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7539 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7540 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7541 Getting indeces of all entries of a MIDI instrument map</h3>
7542
7543 <p>The front-end can query a list of all currently existing
7544 entries in a certain MIDI instrument map by sending the following
7545 command:
7546 </p>
7547 <p>
7548 </p>
7549 <blockquote class="text">
7550 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7551 </p>
7552 </blockquote><p>
7553
7554 </p>
7555 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7556 </p>
7557 <p>The front-end can query a list of all currently existing
7558 entries of all MIDI instrument maps by sending the following
7559 command:
7560 </p>
7561 <p>
7562 </p>
7563 <blockquote class="text">
7564 <p>LIST MIDI_INSTRUMENTS ALL
7565 </p>
7566 </blockquote><p>
7567
7568 </p>
7569 <p>Possible Answers:
7570 </p>
7571 <p>
7572 </p>
7573 <blockquote class="text">
7574 <p>The sampler will answer by sending a comma separated
7575 list of map ID - MIDI bank - MIDI program triples, where
7576 each triple is encapsulated into curly braces. The
7577 list is returned in one single line. Each triple
7578 just reflects the key of the respective map entry,
7579 thus subsequent
7580 <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>
7581 command(s) are necessary to retrieve detailed informations
7582 about each entry.
7583 </p>
7584 </blockquote><p>
7585
7586 </p>
7587 <p>Example:
7588 </p>
7589 <p>
7590 </p>
7591 <blockquote class="text">
7592 <p>C: "LIST MIDI_INSTRUMENTS 0"
7593 </p>
7594 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7595 </p>
7596 </blockquote><p>
7597
7598 </p>
7599 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7600 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7601 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7602 Remove an entry from the MIDI instrument map</h3>
7603
7604 <p>The front-end can delete an entry from a MIDI instrument
7605 map by sending the following command:
7606 </p>
7607 <p>
7608 </p>
7609 <blockquote class="text">
7610 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7611 </p>
7612 </blockquote><p>
7613
7614 </p>
7615 <p>
7616 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7617 &lt;midi_bank&gt; is an integer value between 0..16383
7618 reflecting the MIDI bank value and
7619 &lt;midi_prog&gt; an integer value between
7620 0..127 reflecting the MIDI program value of the map's entrie's key
7621 index triple.
7622
7623 </p>
7624 <p>Possible Answers:
7625 </p>
7626 <p>
7627 </p>
7628 <blockquote class="text">
7629 <p>"OK" -
7630 </p>
7631 <blockquote class="text">
7632 <p>usually
7633 </p>
7634 </blockquote>
7635
7636
7637 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7638 </p>
7639 <blockquote class="text">
7640 <p>when index out of bounds
7641 </p>
7642 </blockquote>
7643
7644
7645 </blockquote><p>
7646
7647 </p>
7648 <p>Example:
7649 </p>
7650 <p>
7651 </p>
7652 <blockquote class="text">
7653 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7654 </p>
7655 <p>S: "OK"
7656 </p>
7657 </blockquote><p>
7658
7659 </p>
7660 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7661 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7662 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7663 Get current settings of MIDI instrument map entry</h3>
7664
7665 <p>The front-end can retrieve the current settings of a certain
7666 instrument map entry by sending the following command:
7667 </p>
7668 <p>
7669 </p>
7670 <blockquote class="text">
7671 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7672 </p>
7673 </blockquote><p>
7674
7675 </p>
7676 <p>
7677 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7678 &lt;midi_bank&gt; is an integer value between 0..16383
7679 reflecting the MIDI bank value, &lt;midi_bank&gt;
7680 and &lt;midi_prog&gt; an integer value between
7681 0..127 reflecting the MIDI program value of the map's entrie's key
7682 index triple.
7683
7684 </p>
7685 <p>Possible Answers:
7686 </p>
7687 <p>
7688 </p>
7689 <blockquote class="text">
7690 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7691 separated list. Each answer line begins with the
7692 information category name followed by a colon and then
7693 a space character &lt;SP&gt; and finally the info
7694 character string to that info category. At the moment
7695 the following categories are defined:
7696 </p>
7697 <p>"NAME" -
7698 </p>
7699 <blockquote class="text">
7700 <p>Name for this MIDI instrument map entry (if defined).
7701 This name shall be used by frontends for displaying a
7702 name for this mapped instrument. It can be set and
7703 changed with the
7704 <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>
7705 command and does not have to be unique.
7706 (note that this character string may contain
7707 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7708 </p>
7709 </blockquote>
7710
7711
7712 <p>"ENGINE_NAME" -
7713 </p>
7714 <blockquote class="text">
7715 <p>Name of the engine to be deployed for this
7716 instrument.
7717 </p>
7718 </blockquote>
7719
7720
7721 <p>"INSTRUMENT_FILE" -
7722 </p>
7723 <blockquote class="text">
7724 <p>File name of the instrument
7725 (note that this path may contain
7726 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7727 </p>
7728 </blockquote>
7729
7730
7731 <p>"INSTRUMENT_NR" -
7732 </p>
7733 <blockquote class="text">
7734 <p>Index of the instrument within the file.
7735 </p>
7736 </blockquote>
7737
7738
7739 <p>"INSTRUMENT_NAME" -
7740 </p>
7741 <blockquote class="text">
7742 <p>Name of the loaded instrument as reflected by its file.
7743 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7744 cannot be changed (note that this character string may contain
7745 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7746 </p>
7747 </blockquote>
7748
7749
7750 <p>"LOAD_MODE" -
7751 </p>
7752 <blockquote class="text">
7753 <p>Life time of instrument
7754 (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).
7755 </p>
7756 </blockquote>
7757
7758
7759 <p>"VOLUME" -
7760 </p>
7761 <blockquote class="text">
7762 <p>master volume of the instrument as optionally
7763 dotted number (where a value &lt; 1.0 means attenuation
7764 and a value > 1.0 means amplification)
7765 </p>
7766 </blockquote>
7767
7768
7769 <p>The mentioned fields above don't have to be in particular order.
7770 </p>
7771 </blockquote><p>
7772
7773 </p>
7774 <p>Example:
7775 </p>
7776 <p>
7777 </p>
7778 <blockquote class="text">
7779 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7780 </p>
7781 <p>S: "NAME: Drums for Foo Song"
7782 </p>
7783 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7784 </p>
7785 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7786 </p>
7787 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7788 </p>
7789 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7790 </p>
7791 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7792 </p>
7793 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7794 </p>
7795 <p>&nbsp;&nbsp;&nbsp;"."
7796 </p>
7797 </blockquote><p>
7798
7799 </p>
7800 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7801 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7802 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7803 Clear MIDI instrument map</h3>
7804
7805 <p>The front-end can clear a whole MIDI instrument map, that
7806 is delete all its entries by sending the following command:
7807 </p>
7808 <p>
7809 </p>
7810 <blockquote class="text">
7811 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7812 </p>
7813 </blockquote><p>
7814
7815 </p>
7816 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7817 </p>
7818 <p>The front-end can clear all MIDI instrument maps, that
7819 is delete all entries of all maps by sending the following
7820 command:
7821 </p>
7822 <p>
7823 </p>
7824 <blockquote class="text">
7825 <p>CLEAR MIDI_INSTRUMENTS ALL
7826 </p>
7827 </blockquote><p>
7828
7829 </p>
7830 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7831 maps, only their entries, thus the map's settings like
7832 custom name will be preservevd.
7833 </p>
7834 <p>Possible Answers:
7835 </p>
7836 <p>
7837 </p>
7838 <blockquote class="text">
7839 <p>"OK" -
7840 </p>
7841 <blockquote class="text">
7842 <p>always
7843 </p>
7844 </blockquote>
7845
7846
7847 </blockquote><p>
7848
7849 </p>
7850 <p>Examples:
7851 </p>
7852 <p>
7853 </p>
7854 <blockquote class="text">
7855 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7856 </p>
7857 <p>S: "OK"
7858 </p>
7859 </blockquote><p>
7860
7861 </p>
7862 <p>
7863 </p>
7864 <blockquote class="text">
7865 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7866 </p>
7867 <p>S: "OK"
7868 </p>
7869 </blockquote><p>
7870
7871 </p>
7872 <a name="Managing Instruments Database"></a><br /><hr />
7873 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7874 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7875 Managing Instruments Database</h3>
7876
7877 <p>The following commands describe how to use and manage
7878 the instruments database.
7879 </p>
7880 <p>Notice:
7881 </p>
7882 <p>
7883 </p>
7884 <blockquote class="text">
7885 <p>All command arguments representing a path or
7886 instrument/directory name support escape sequences as described in chapter
7887 "<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>".
7888
7889 </p>
7890 <p>All occurrences of a forward slash in instrument and directory
7891 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7892
7893 </p>
7894 </blockquote><p>
7895
7896 </p>
7897 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7898 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7899 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7900 Creating a new instrument directory</h3>
7901
7902 <p>The front-end can add a new instrument directory to the
7903 instruments database by sending the following command:
7904 </p>
7905 <p>
7906 </p>
7907 <blockquote class="text">
7908 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7909 </p>
7910 </blockquote><p>
7911
7912 </p>
7913 <p>Where &lt;dir&gt; is the absolute path name of the directory
7914 to be created (encapsulated into apostrophes).
7915 </p>
7916 <p>Possible Answers:
7917 </p>
7918 <p>
7919 </p>
7920 <blockquote class="text">
7921 <p>"OK" -
7922 </p>
7923 <blockquote class="text">
7924 <p>on success
7925 </p>
7926 </blockquote>
7927
7928
7929 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7930 </p>
7931 <blockquote class="text">
7932 <p>when the directory could not be created, which
7933 can happen if the directory already exists or the
7934 name contains not allowed symbols
7935 </p>
7936 </blockquote>
7937
7938
7939 </blockquote><p>
7940
7941 </p>
7942 <p>Examples:
7943 </p>
7944 <p>
7945 </p>
7946 <blockquote class="text">
7947 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7948 </p>
7949 <p>S: "OK"
7950 </p>
7951 </blockquote><p>
7952
7953 </p>
7954 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7955 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7956 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7957 Deleting an instrument directory</h3>
7958
7959 <p>The front-end can delete a particular instrument directory
7960 from the instruments database by sending the following command:
7961 </p>
7962 <p>
7963 </p>
7964 <blockquote class="text">
7965 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7966 </p>
7967 </blockquote><p>
7968
7969 </p>
7970 <p>Where &lt;dir&gt; is the absolute path name of the directory
7971 to delete. The optional FORCE argument can be used to
7972 force the deletion of a non-empty directory and all its content.
7973 </p>
7974 <p>Possible Answers:
7975 </p>
7976 <p>
7977 </p>
7978 <blockquote class="text">
7979 <p>"OK" -
7980 </p>
7981 <blockquote class="text">
7982 <p>if the directory is deleted successfully
7983 </p>
7984 </blockquote>
7985
7986
7987 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7988 </p>
7989 <blockquote class="text">
7990 <p>if the given directory does not exist, or
7991 if trying to delete a non-empty directory,
7992 without using the FORCE argument.
7993 </p>
7994 </blockquote>
7995
7996
7997 </blockquote><p>
7998
7999 </p>
8000 <p>Examples:
8001 </p>
8002 <p>
8003 </p>
8004 <blockquote class="text">
8005 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8006 </p>
8007 <p>S: "OK"
8008 </p>
8009 </blockquote><p>
8010
8011 </p>
8012 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8013 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8014 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8015 Getting amount of instrument directories</h3>
8016
8017 <p>The front-end can retrieve the current amount of
8018 directories in a specific directory by sending the following command:
8019 </p>
8020 <p>
8021 </p>
8022 <blockquote class="text">
8023 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8024 </p>
8025 </blockquote><p>
8026
8027 </p>
8028 <p>Where &lt;dir&gt; should be replaced by the absolute path
8029 name of the directory. If RECURSIVE is specified, the number of
8030 all directories, including those located in subdirectories of the
8031 specified directory, will be returned.
8032 </p>
8033 <p>Possible Answers:
8034 </p>
8035 <p>
8036 </p>
8037 <blockquote class="text">
8038 <p>The current number of instrument directories
8039 in the specified directory.
8040 </p>
8041 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8042 </p>
8043 <blockquote class="text">
8044 <p>if the given directory does not exist.
8045 </p>
8046 </blockquote>
8047
8048
8049 </blockquote><p>
8050
8051 </p>
8052 <p>Example:
8053 </p>
8054 <p>
8055 </p>
8056 <blockquote class="text">
8057 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8058 </p>
8059 <p>S: "2"
8060 </p>
8061 </blockquote><p>
8062
8063 </p>
8064 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8065 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8066 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8067 Listing all directories in specific directory</h3>
8068
8069 <p>The front-end can retrieve the current list of directories
8070 in specific directory by sending the following command:
8071 </p>
8072 <p>
8073 </p>
8074 <blockquote class="text">
8075 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8076 </p>
8077 </blockquote><p>
8078
8079 </p>
8080 <p>Where &lt;dir&gt; should be replaced by the absolute path
8081 name of the directory. If RECURSIVE is specified, the absolute path names
8082 of all directories, including those located in subdirectories of the
8083 specified directory, will be returned.
8084 </p>
8085 <p>Possible Answers:
8086 </p>
8087 <p>
8088 </p>
8089 <blockquote class="text">
8090 <p>A comma separated list of all instrument directories
8091 (encapsulated into apostrophes) in the specified directory.
8092 </p>
8093 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8094 </p>
8095 <blockquote class="text">
8096 <p>if the given directory does not exist.
8097 </p>
8098 </blockquote>
8099
8100
8101 </blockquote><p>
8102
8103 </p>
8104 <p>Example:
8105 </p>
8106 <p>
8107 </p>
8108 <blockquote class="text">
8109 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8110 </p>
8111 <p>S: "'Piano Collection','Percussion Collection'"
8112 </p>
8113 </blockquote><p>
8114
8115 </p>
8116 <p>
8117 </p>
8118 <blockquote class="text">
8119 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8120 </p>
8121 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8122 </p>
8123 </blockquote><p>
8124
8125 </p>
8126 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8127 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8128 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8129 Getting instrument directory information</h3>
8130
8131 <p>The front-end can ask for the current settings of an
8132 instrument directory by sending the following command:
8133 </p>
8134 <p>
8135 </p>
8136 <blockquote class="text">
8137 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8138 </p>
8139 </blockquote><p>
8140
8141 </p>
8142 <p>Where &lt;dir&gt; should be replaced by the absolute path
8143 name of the directory the front-end is interested in.
8144 </p>
8145 <p>Possible Answers:
8146 </p>
8147 <p>
8148 </p>
8149 <blockquote class="text">
8150 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8151 Each answer line begins with the settings category name
8152 followed by a colon and then a space character &lt;SP&gt; and finally
8153 the info character string to that setting category. At the
8154 moment the following categories are defined:
8155 </p>
8156 <p>
8157 </p>
8158 <blockquote class="text">
8159 <p>DESCRIPTION -
8160 </p>
8161 <blockquote class="text">
8162 <p>A brief description of the directory content.
8163 Note that the character string may contain
8164 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8165 </p>
8166 </blockquote>
8167
8168
8169 <p>CREATED -
8170 </p>
8171 <blockquote class="text">
8172 <p>The creation date and time of the directory,
8173 represented in "YYYY-MM-DD HH:MM:SS" format
8174 </p>
8175 </blockquote>
8176
8177
8178 <p>MODIFIED -
8179 </p>
8180 <blockquote class="text">
8181 <p>The date and time of the last modification of the
8182 directory, represented in "YYYY-MM-DD HH:MM:SS" format
8183 </p>
8184 </blockquote>
8185
8186
8187 </blockquote>
8188
8189
8190 </blockquote><p>
8191
8192 </p>
8193 <p>The mentioned fields above don't have to be in particular order.
8194 </p>
8195 <p>Example:
8196 </p>
8197 <p>
8198 </p>
8199 <blockquote class="text">
8200 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8201 </p>
8202 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8203 </p>
8204 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8205 </p>
8206 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8207 </p>
8208 <p>&nbsp;&nbsp;&nbsp;"."
8209 </p>
8210 </blockquote><p>
8211
8212 </p>
8213 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8214 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8215 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8216 Renaming an instrument directory</h3>
8217
8218 <p>The front-end can alter the name of a specific
8219 instrument directory by sending the following command:
8220 </p>
8221 <p>
8222 </p>
8223 <blockquote class="text">
8224 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8225 </p>
8226 </blockquote><p>
8227
8228 </p>
8229 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8230 &lt;name&gt; is the new name for that directory.
8231 </p>
8232 <p>Possible Answers:
8233 </p>
8234 <p>
8235 </p>
8236 <blockquote class="text">
8237 <p>"OK" -
8238 </p>
8239 <blockquote class="text">
8240 <p>on success
8241 </p>
8242 </blockquote>
8243
8244
8245 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8246 </p>
8247 <blockquote class="text">
8248 <p>in case the given directory does not exists,
8249 or if a directory with name equal to the new
8250 name already exists.
8251 </p>
8252 </blockquote>
8253
8254
8255 </blockquote><p>
8256
8257 </p>
8258 <p>Example:
8259 </p>
8260 <p>
8261 </p>
8262 <blockquote class="text">
8263 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8264 </p>
8265 <p>S: "OK"
8266 </p>
8267 </blockquote><p>
8268
8269 </p>
8270 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8271 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8272 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8273 Moving an instrument directory</h3>
8274
8275 <p>The front-end can move a specific
8276 instrument directory by sending the following command:
8277 </p>
8278 <p>
8279 </p>
8280 <blockquote class="text">
8281 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8282 </p>
8283 </blockquote><p>
8284
8285 </p>
8286 <p>Where &lt;dir&gt; is the absolute path name of the directory
8287 to move and &lt;dst&gt; is the location where the directory will
8288 be moved to.
8289 </p>
8290 <p>Possible Answers:
8291 </p>
8292 <p>
8293 </p>
8294 <blockquote class="text">
8295 <p>"OK" -
8296 </p>
8297 <blockquote class="text">
8298 <p>on success
8299 </p>
8300 </blockquote>
8301
8302
8303 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8304 </p>
8305 <blockquote class="text">
8306 <p>in case a given directory does not exists,
8307 or if a directory with name equal to the name
8308 of the specified directory already exists in
8309 the destination directory. Error is also thrown
8310 when trying to move a directory to a subdirectory
8311 of itself.
8312 </p>
8313 </blockquote>
8314
8315
8316 </blockquote><p>
8317
8318 </p>
8319 <p>Example:
8320 </p>
8321 <p>
8322 </p>
8323 <blockquote class="text">
8324 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8325 </p>
8326 <p>S: "OK"
8327 </p>
8328 </blockquote><p>
8329
8330 </p>
8331 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8332 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8333 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8334 Copying instrument directories</h3>
8335
8336 <p>The front-end can copy a specific
8337 instrument directory by sending the following command:
8338 </p>
8339 <p>
8340 </p>
8341 <blockquote class="text">
8342 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8343 </p>
8344 </blockquote><p>
8345
8346 </p>
8347 <p>Where &lt;dir&gt; is the absolute path name of the directory
8348 to copy and &lt;dst&gt; is the location where the directory will
8349 be copied to.
8350 </p>
8351 <p>Possible Answers:
8352 </p>
8353 <p>
8354 </p>
8355 <blockquote class="text">
8356 <p>"OK" -
8357 </p>
8358 <blockquote class="text">
8359 <p>on success
8360 </p>
8361 </blockquote>
8362
8363
8364 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8365 </p>
8366 <blockquote class="text">
8367 <p>in case a given directory does not exists,
8368 or if a directory with name equal to the name
8369 of the specified directory already exists in
8370 the destination directory. Error is also thrown
8371 when trying to copy a directory to a subdirectory
8372 of itself.
8373 </p>
8374 </blockquote>
8375
8376
8377 </blockquote><p>
8378
8379 </p>
8380 <p>Example:
8381 </p>
8382 <p>
8383 </p>
8384 <blockquote class="text">
8385 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8386 </p>
8387 <p>S: "OK"
8388 </p>
8389 </blockquote><p>
8390
8391 </p>
8392 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8393 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8394 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8395 Changing the description of directory</h3>
8396
8397 <p>The front-end can alter the description of a specific
8398 instrument directory by sending the following command:
8399 </p>
8400 <p>
8401 </p>
8402 <blockquote class="text">
8403 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8404 </p>
8405 </blockquote><p>
8406
8407 </p>
8408 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8409 &lt;desc&gt; is the new description for the directory
8410 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8411 "<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>").
8412 </p>
8413 <p>Possible Answers:
8414 </p>
8415 <p>
8416 </p>
8417 <blockquote class="text">
8418 <p>"OK" -
8419 </p>
8420 <blockquote class="text">
8421 <p>on success
8422 </p>
8423 </blockquote>
8424
8425
8426 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8427 </p>
8428 <blockquote class="text">
8429 <p>in case the given directory does not exists.
8430 </p>
8431 </blockquote>
8432
8433
8434 </blockquote><p>
8435
8436 </p>
8437 <p>Example:
8438 </p>
8439 <p>
8440 </p>
8441 <blockquote class="text">
8442 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8443 </p>
8444 <p>S: "OK"
8445 </p>
8446 </blockquote><p>
8447
8448 </p>
8449 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8450 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8451 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8452 Finding directories</h3>
8453
8454 <p>The front-end can search for directories
8455 in specific directory by sending the following command:
8456 </p>
8457 <p>
8458 </p>
8459 <blockquote class="text">
8460 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8461 </p>
8462 </blockquote><p>
8463
8464 </p>
8465 <p>Where &lt;dir&gt; should be replaced by the absolute path
8466 name of the directory to search in. If NON_RECURSIVE is specified, the
8467 directories located in subdirectories of the specified directory will not
8468 be searched. &lt;criteria-list&gt; is a list of search criterias
8469 in form of "key1=val1 key2=val2 ...". The following criterias are
8470 allowed:
8471 </p>
8472 <p>
8473
8474 <p>NAME='&lt;search-string&gt;'
8475 </p>
8476 <blockquote class="text">
8477 <p>Restricts the search to directories, which names
8478 satisfy the supplied search string (encapsulated into apostrophes,
8479 supporting escape sequences as described in chapter
8480 "<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>").
8481 </p>
8482 </blockquote><p>
8483
8484 </p>
8485
8486
8487 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8488 </p>
8489 <blockquote class="text">
8490 <p>Restricts the search to directories, which creation
8491 date satisfies the specified period, where &lt;date-after&gt;
8492 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8493 If &lt;date-after&gt; is omitted the search is restricted to
8494 directories created before &lt;date-before&gt;. If
8495 &lt;date-before&gt; is omitted, the search is restricted
8496 to directories created after &lt;date-after&gt;.
8497 </p>
8498 </blockquote><p>
8499
8500 </p>
8501
8502
8503 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8504 </p>
8505 <blockquote class="text">
8506 <p>Restricts the search to directories, which
8507 date of last modification satisfies the specified period, where
8508 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8509 format. If &lt;date-after&gt; is omitted the search is restricted to
8510 directories, which are last modified before &lt;date-before&gt;. If
8511 &lt;date-before&gt; is omitted, the search is restricted to directories,
8512 which are last modified after &lt;date-after&gt;.
8513 </p>
8514 </blockquote><p>
8515
8516 </p>
8517
8518
8519 <p>DESCRIPTION='&lt;search-string&gt;'
8520 </p>
8521 <blockquote class="text">
8522 <p>Restricts the search to directories with description
8523 that satisfies the supplied search string
8524 (encapsulated into apostrophes, supporting escape
8525 sequences as described in chapter
8526 "<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>").
8527 </p>
8528 </blockquote><p>
8529
8530 </p>
8531
8532
8533 <p>Where &lt;search-string&gt; is either a regular expression, or a
8534 word list separated with spaces for OR search and with '+' for AND search.
8535 </p>
8536 <p>Possible Answers:
8537 </p>
8538 <p>
8539 </p>
8540 <blockquote class="text">
8541 <p>A comma separated list with the absolute path names (encapsulated into
8542 apostrophes) of all directories in the specified directory that satisfy
8543 the supplied search criterias.
8544 </p>
8545 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8546 </p>
8547 <blockquote class="text">
8548 <p>if the given directory does not exist.
8549 </p>
8550 </blockquote>
8551
8552
8553 </blockquote><p>
8554
8555 </p>
8556 <p>Example:
8557 </p>
8558 <p>
8559 </p>
8560 <blockquote class="text">
8561 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8562 </p>
8563 <p>S: "'/Piano Collection'"
8564 </p>
8565 </blockquote><p>
8566
8567 </p>
8568 <p>
8569 </p>
8570 <blockquote class="text">
8571 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8572 </p>
8573 <p>S: "'/Piano Collection','/Percussions'"
8574 </p>
8575 </blockquote><p>
8576
8577 </p>
8578 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8579 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8580 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8581 Adding instruments to the instruments database</h3>
8582
8583 <p>The front-end can add one or more instruments
8584 to the instruments database by sending the following command:
8585 </p>
8586 <p>
8587 </p>
8588 <blockquote class="text">
8589 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8590 </p>
8591 </blockquote><p>
8592
8593 </p>
8594 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8595 (encapsulated into apostrophes) in the instruments database in which
8596 only the new instruments (that are not already in the database) will
8597 be added, &lt;file_path&gt; is the absolute path name of a file or
8598 directory in the file system (encapsulated into apostrophes). In case
8599 an instrument file is supplied, only the instruments in the specified
8600 file will be added to the instruments database. If the optional
8601 &lt;instr_index&gt; (the index of the instrument within the given file)
8602 is supplied too, then only the specified instrument will be added.
8603 In case a directory is supplied, the instruments in that directory
8604 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8605 when a directory is provided as &lt;file_path&gt; and specifies how the
8606 scanning will be done and has exactly the following possibilities:
8607 </p>
8608 <p>
8609 </p>
8610 <blockquote class="text">
8611 <p>"RECURSIVE" -
8612 </p>
8613 <blockquote class="text">
8614 <p>All instruments will be processed, including those
8615 in the subdirectories, and the respective subdirectory
8616 tree structure will be recreated in the instruments
8617 database
8618 </p>
8619 </blockquote>
8620
8621
8622 <p>"NON_RECURSIVE" -
8623 </p>
8624 <blockquote class="text">
8625 <p>Only the instruments in the specified directory
8626 will be added, the instruments in the subdirectories
8627 will not be processed.
8628 </p>
8629 </blockquote>
8630
8631
8632 <p>"FLAT" -
8633 </p>
8634 <blockquote class="text">
8635 <p>All instruments will be processed, including those
8636 in the subdirectories, but the respective subdirectory
8637 structure will not be recreated in the instruments
8638 database. All instruments will be added directly in
8639 the specified database directory.
8640 </p>
8641 </blockquote>
8642
8643
8644 </blockquote><p>
8645
8646 </p>
8647 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
8648 file will be added to a separate directory in the instruments database, which
8649 name will be the name of the instrument file with the file extension stripped off.
8650
8651 </p>
8652 <p>The difference between regular and NON_MODAL versions of the command
8653 is that the regular command returns when the scanning is finished
8654 while NON_MODAL version returns immediately and a background process is launched.
8655 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>
8656 command can be used to monitor the scanning progress.
8657 </p>
8658 <p>Possible Answers:
8659 </p>
8660 <p>
8661 </p>
8662 <blockquote class="text">
8663 <p>"OK" -
8664 </p>
8665 <blockquote class="text">
8666 <p>on success when NON_MODAL is not supplied
8667 </p>
8668 </blockquote>
8669
8670
8671 <p>"OK[&lt;job-id&gt;]" -
8672 </p>
8673 <blockquote class="text">
8674 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8675 is a numerical ID used to obtain status information about the job progress.
8676 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>
8677
8678 </p>
8679 </blockquote>
8680
8681
8682 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8683 </p>
8684 <blockquote class="text">
8685 <p>if an invalid path is specified.
8686 </p>
8687 </blockquote>
8688
8689
8690 </blockquote><p>
8691
8692 </p>
8693 <p>Examples:
8694 </p>
8695 <p>
8696 </p>
8697 <blockquote class="text">
8698 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8699 </p>
8700 <p>S: "OK"
8701 </p>
8702 </blockquote><p>
8703
8704 </p>
8705 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8706 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8707 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8708 Removing an instrument</h3>
8709
8710 <p>The front-end can remove a particular instrument
8711 from the instruments database by sending the following command:
8712 </p>
8713 <p>
8714 </p>
8715 <blockquote class="text">
8716 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8717 </p>
8718 </blockquote><p>
8719
8720 </p>
8721 <p>Where &lt;instr_path&gt; is the absolute path name
8722 (in the instruments database) of the instrument to remove.
8723 </p>
8724 <p>Possible Answers:
8725 </p>
8726 <p>
8727 </p>
8728 <blockquote class="text">
8729 <p>"OK" -
8730 </p>
8731 <blockquote class="text">
8732 <p>if the instrument is removed successfully
8733 </p>
8734 </blockquote>
8735
8736
8737 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8738 </p>
8739 <blockquote class="text">
8740 <p>if the given path does not exist or
8741 is a directory.
8742 </p>
8743 </blockquote>
8744
8745
8746 </blockquote><p>
8747
8748 </p>
8749 <p>Examples:
8750 </p>
8751 <p>
8752 </p>
8753 <blockquote class="text">
8754 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8755 </p>
8756 <p>S: "OK"
8757 </p>
8758 </blockquote><p>
8759
8760 </p>
8761 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8762 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8763 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8764 Getting amount of instruments</h3>
8765
8766 <p>The front-end can retrieve the current amount of
8767 instruments in a specific directory by sending the following command:
8768 </p>
8769 <p>
8770 </p>
8771 <blockquote class="text">
8772 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8773 </p>
8774 </blockquote><p>
8775
8776 </p>
8777 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8778 of the directory. If RECURSIVE is specified, the number of all
8779 instruments, including those located in subdirectories of the
8780 specified directory, will be returned.
8781 </p>
8782 <p>Possible Answers:
8783 </p>
8784 <p>
8785 </p>
8786 <blockquote class="text">
8787 <p>The current number of instruments
8788 in the specified directory.
8789 </p>
8790 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8791 </p>
8792 <blockquote class="text">
8793 <p>if the given directory does not exist.
8794 </p>
8795 </blockquote>
8796
8797
8798 </blockquote><p>
8799
8800 </p>
8801 <p>Example:
8802 </p>
8803 <p>
8804 </p>
8805 <blockquote class="text">
8806 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8807 </p>
8808 <p>S: "2"
8809 </p>
8810 </blockquote><p>
8811
8812 </p>
8813 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8814 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8815 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8816 Listing all instruments in specific directory</h3>
8817
8818 <p>The front-end can retrieve the current list of instruments
8819 in specific directory by sending the following command:
8820 </p>
8821 <p>
8822 </p>
8823 <blockquote class="text">
8824 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8825 </p>
8826 </blockquote><p>
8827
8828 </p>
8829 <p>Where &lt;dir&gt; should be replaced by the absolute path
8830 name of the directory. If RECURSIVE is specified, the absolute path
8831 names of all instruments, including those located in subdirectories
8832 of the specified directory, will be returned.
8833 </p>
8834 <p>Possible Answers:
8835 </p>
8836 <p>
8837 </p>
8838 <blockquote class="text">
8839 <p>A comma separated list of all instruments
8840 (encapsulated into apostrophes) in the specified directory.
8841 </p>
8842 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8843 </p>
8844 <blockquote class="text">
8845 <p>if the given directory does not exist.
8846 </p>
8847 </blockquote>
8848
8849
8850 </blockquote><p>
8851
8852 </p>
8853 <p>Example:
8854 </p>
8855 <p>
8856 </p>
8857 <blockquote class="text">
8858 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8859 </p>
8860 <p>S: "'Bosendorfer 290','Steinway D'"
8861 </p>
8862 </blockquote><p>
8863
8864 </p>
8865 <p>
8866 </p>
8867 <blockquote class="text">
8868 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8869 </p>
8870 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8871 </p>
8872 </blockquote><p>
8873
8874 </p>
8875 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8876 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8877 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8878 Getting instrument information</h3>
8879
8880 <p>The front-end can ask for the current settings of an
8881 instrument by sending the following command:
8882 </p>
8883 <p>
8884 </p>
8885 <blockquote class="text">
8886 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8887 </p>
8888 </blockquote><p>
8889
8890 </p>
8891 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8892 name of the instrument the front-end is interested in.
8893 </p>
8894 <p>Possible Answers:
8895 </p>
8896 <p>
8897 </p>
8898 <blockquote class="text">
8899 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8900 Each answer line begins with the settings category name
8901 followed by a colon and then a space character &lt;SP&gt; and finally
8902 the info character string to that setting category. At the
8903 moment the following categories are defined:
8904 </p>
8905 <p>
8906 </p>
8907 <blockquote class="text">
8908 <p>INSTRUMENT_FILE -
8909 </p>
8910 <blockquote class="text">
8911 <p>File name of the instrument.
8912 Note that the character string may contain
8913 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8914 </p>
8915 </blockquote>
8916
8917
8918 <p>INSTRUMENT_NR -
8919 </p>
8920 <blockquote class="text">
8921 <p>Index of the instrument within the file.
8922 </p>
8923 </blockquote>
8924
8925
8926 <p>FORMAT_FAMILY -
8927 </p>
8928 <blockquote class="text">
8929 <p>The format family of the instrument.
8930 </p>
8931 </blockquote>
8932
8933
8934 <p>FORMAT_VERSION -
8935 </p>
8936 <blockquote class="text">
8937 <p>The format version of the instrument.
8938 </p>
8939 </blockquote>
8940
8941
8942 <p>SIZE -
8943 </p>
8944 <blockquote class="text">
8945 <p>The size of the instrument in bytes.
8946 </p>
8947 </blockquote>
8948
8949
8950 <p>CREATED -
8951 </p>
8952 <blockquote class="text">
8953 <p>The date and time when the instrument is added
8954 in the instruments database, represented in
8955 "YYYY-MM-DD HH:MM:SS" format
8956 </p>
8957 </blockquote>
8958
8959
8960 <p>MODIFIED -
8961 </p>
8962 <blockquote class="text">
8963 <p>The date and time of the last modification of the
8964 instrument's database settings, represented in
8965 "YYYY-MM-DD HH:MM:SS" format
8966 </p>
8967 </blockquote>
8968
8969
8970 <p>DESCRIPTION -
8971 </p>
8972 <blockquote class="text">
8973 <p>A brief description of the instrument.
8974 Note that the character string may contain
8975 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8976 </p>
8977 </blockquote>
8978
8979
8980 <p>IS_DRUM -
8981 </p>
8982 <blockquote class="text">
8983 <p>either true or false, determines whether the
8984 instrument is a drumkit or a chromatic instrument
8985 </p>
8986 </blockquote>
8987
8988
8989 <p>PRODUCT -
8990 </p>
8991 <blockquote class="text">
8992 <p>The product title of the instrument.
8993 Note that the character string may contain
8994 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8995 </p>
8996 </blockquote>
8997
8998
8999 <p>ARTISTS -
9000 </p>
9001 <blockquote class="text">
9002 <p>Lists the artist names.
9003 Note that the character string may contain
9004 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9005 </p>
9006 </blockquote>
9007
9008
9009 <p>KEYWORDS -
9010 </p>
9011 <blockquote class="text">
9012 <p>Provides a list of keywords that refer to the instrument.
9013 Keywords are separated with semicolon and blank.
9014 Note that the character string may contain
9015 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9016 </p>
9017 </blockquote>
9018
9019
9020 </blockquote>
9021
9022
9023 </blockquote><p>
9024
9025 </p>
9026 <p>The mentioned fields above don't have to be in particular order.
9027 </p>
9028 <p>Example:
9029 </p>
9030 <p>
9031 </p>
9032 <blockquote class="text">
9033 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9034 </p>
9035 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9036 </p>
9037 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9038 </p>
9039 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9040 </p>
9041 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9042 </p>
9043 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9044 </p>
9045 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9046 </p>
9047 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9048 </p>
9049 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9050 </p>
9051 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9052 </p>
9053 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9054 </p>
9055 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9056 </p>
9057 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9058 </p>
9059 <p>&nbsp;&nbsp;&nbsp;"."
9060 </p>
9061 </blockquote><p>
9062
9063 </p>
9064 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9065 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9066 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9067 Renaming an instrument</h3>
9068
9069 <p>The front-end can alter the name of a specific
9070 instrument by sending the following command:
9071 </p>
9072 <p>
9073 </p>
9074 <blockquote class="text">
9075 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9076 </p>
9077 </blockquote><p>
9078
9079 </p>
9080 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9081 &lt;name&gt; is the new name for that instrument.
9082 </p>
9083 <p>Possible Answers:
9084 </p>
9085 <p>
9086 </p>
9087 <blockquote class="text">
9088 <p>"OK" -
9089 </p>
9090 <blockquote class="text">
9091 <p>on success
9092 </p>
9093 </blockquote>
9094
9095
9096 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9097 </p>
9098 <blockquote class="text">
9099 <p>in case the given instrument does not exists,
9100 or if an instrument with name equal to the new
9101 name already exists.
9102 </p>
9103 </blockquote>
9104
9105
9106 </blockquote><p>
9107
9108 </p>
9109 <p>Example:
9110 </p>
9111 <p>
9112 </p>
9113 <blockquote class="text">
9114 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9115 </p>
9116 <p>S: "OK"
9117 </p>
9118 </blockquote><p>
9119
9120 </p>
9121 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9123 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9124 Moving an instrument</h3>
9125
9126 <p>The front-end can move a specific instrument to another directory by
9127 sending the following command:
9128 </p>
9129 <p>
9130 </p>
9131 <blockquote class="text">
9132 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9133 </p>
9134 </blockquote><p>
9135
9136 </p>
9137 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9138 to move and &lt;dst&gt; is the directory where the instrument will
9139 be moved to.
9140 </p>
9141 <p>Possible Answers:
9142 </p>
9143 <p>
9144 </p>
9145 <blockquote class="text">
9146 <p>"OK" -
9147 </p>
9148 <blockquote class="text">
9149 <p>on success
9150 </p>
9151 </blockquote>
9152
9153
9154 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9155 </p>
9156 <blockquote class="text">
9157 <p>in case the given instrument does not exists,
9158 or if an instrument with name equal to the name of the
9159 specified instrument already exists in the destination
9160 directory.
9161 </p>
9162 </blockquote>
9163
9164
9165 </blockquote><p>
9166
9167 </p>
9168 <p>Example:
9169 </p>
9170 <p>
9171 </p>
9172 <blockquote class="text">
9173 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9174 </p>
9175 <p>S: "OK"
9176 </p>
9177 </blockquote><p>
9178
9179 </p>
9180 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9181 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9182 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9183 Copying instruments</h3>
9184
9185 <p>The front-end can copy a specific instrument to another directory by
9186 sending the following command:
9187 </p>
9188 <p>
9189 </p>
9190 <blockquote class="text">
9191 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9192 </p>
9193 </blockquote><p>
9194
9195 </p>
9196 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9197 to copy and &lt;dst&gt; is the directory where the instrument will
9198 be copied to.
9199 </p>
9200 <p>Possible Answers:
9201 </p>
9202 <p>
9203 </p>
9204 <blockquote class="text">
9205 <p>"OK" -
9206 </p>
9207 <blockquote class="text">
9208 <p>on success
9209 </p>
9210 </blockquote>
9211
9212
9213 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9214 </p>
9215 <blockquote class="text">
9216 <p>in case the given instrument does not exists,
9217 or if an instrument with name equal to the name of the
9218 specified instrument already exists in the destination
9219 directory.
9220 </p>
9221 </blockquote>
9222
9223
9224 </blockquote><p>
9225
9226 </p>
9227 <p>Example:
9228 </p>
9229 <p>
9230 </p>
9231 <blockquote class="text">
9232 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9233 </p>
9234 <p>S: "OK"
9235 </p>
9236 </blockquote><p>
9237
9238 </p>
9239 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9240 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9241 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9242 Changing the description of instrument</h3>
9243
9244 <p>The front-end can alter the description of a specific
9245 instrument by sending the following command:
9246 </p>
9247 <p>
9248 </p>
9249 <blockquote class="text">
9250 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9251 </p>
9252 </blockquote><p>
9253
9254 </p>
9255 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9256 &lt;desc&gt; is the new description for the instrument
9257 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9258 "<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>").
9259 </p>
9260 <p>Possible Answers:
9261 </p>
9262 <p>
9263 </p>
9264 <blockquote class="text">
9265 <p>"OK" -
9266 </p>
9267 <blockquote class="text">
9268 <p>on success
9269 </p>
9270 </blockquote>
9271
9272
9273 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9274 </p>
9275 <blockquote class="text">
9276 <p>in case the given instrument does not exists.
9277 </p>
9278 </blockquote>
9279
9280
9281 </blockquote><p>
9282
9283 </p>
9284 <p>Example:
9285 </p>
9286 <p>
9287 </p>
9288 <blockquote class="text">
9289 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9290 </p>
9291 <p>S: "OK"
9292 </p>
9293 </blockquote><p>
9294
9295 </p>
9296 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9297 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9298 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9299 Finding instruments</h3>
9300
9301 <p>The front-end can search for instruments
9302 in specific directory by sending the following command:
9303 </p>
9304 <p>
9305 </p>
9306 <blockquote class="text">
9307 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9308 </p>
9309 </blockquote><p>
9310
9311 </p>
9312 <p>Where &lt;dir&gt; should be replaced by the absolute path
9313 name of the directory to search in. If NON_RECURSIVE is specified, the
9314 directories located in subdirectories of the specified directory will not
9315 be searched. &lt;criteria-list&gt; is a list of search criterias
9316 in form of "key1=val1 key2=val2 ...". The following criterias are
9317 allowed:
9318 </p>
9319 <p>
9320
9321 <p>NAME='&lt;search-string&gt;'
9322 </p>
9323 <blockquote class="text">
9324 <p>Restricts the search to instruments, which names
9325 satisfy the supplied search string (encapsulated into apostrophes,
9326 supporting escape sequences as described in chapter
9327 "<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>").
9328 </p>
9329 </blockquote><p>
9330
9331 </p>
9332
9333
9334 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9335 </p>
9336 <blockquote class="text">
9337 <p>Restricts the search to instruments, which
9338 size is in the specified range. If &lt;min&gt; is omitted,
9339 the search results are restricted to instruments with size less then
9340 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9341 search is restricted to instruments with size greater then
9342 or equal to &lt;min&gt;.
9343 </p>
9344 </blockquote><p>
9345
9346 </p>
9347
9348
9349 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9350 </p>
9351 <blockquote class="text">
9352 <p>Restricts the search to instruments, which creation
9353 date satisfies the specified period, where &lt;date-after&gt;
9354 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9355 If &lt;date-after&gt; is omitted the search is restricted to
9356 instruments created before &lt;date-before&gt;. If
9357 &lt;date-before&gt; is omitted, the search is restricted
9358 to instruments created after &lt;date-after&gt;.
9359 </p>
9360 </blockquote><p>
9361
9362 </p>
9363
9364
9365 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9366 </p>
9367 <blockquote class="text">
9368 <p>Restricts the search to instruments, which
9369 date of last modification satisfies the specified period, where
9370 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9371 format. If &lt;date-after&gt; is omitted the search is restricted to
9372 instruments, which are last modified before &lt;date-before&gt;. If
9373 &lt;date-before&gt; is omitted, the search is restricted to instruments,
9374 which are last modified after &lt;date-after&gt;.
9375 </p>
9376 </blockquote><p>
9377
9378 </p>
9379
9380
9381 <p>DESCRIPTION='&lt;search-string&gt;'
9382 </p>
9383 <blockquote class="text">
9384 <p>Restricts the search to instruments with description
9385 that satisfies the supplied search string (encapsulated into apostrophes,
9386 supporting escape sequences as described in chapter
9387 "<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>").
9388 </p>
9389 </blockquote><p>
9390
9391 </p>
9392
9393
9394 <p>PRODUCT='&lt;search-string&gt;'
9395 </p>
9396 <blockquote class="text">
9397 <p>Restricts the search to instruments with product info
9398 that satisfies the supplied search string (encapsulated into apostrophes,
9399 supporting escape sequences as described in chapter
9400 "<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>").
9401 </p>
9402 </blockquote><p>
9403
9404 </p>
9405
9406
9407 <p>ARTISTS='&lt;search-string&gt;'
9408 </p>
9409 <blockquote class="text">
9410 <p>Restricts the search to instruments with artists info
9411 that satisfies the supplied search string (encapsulated into apostrophes,
9412 supporting escape sequences as described in chapter
9413 "<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>").
9414 </p>
9415 </blockquote><p>
9416
9417 </p>
9418
9419
9420 <p>KEYWORDS='&lt;search-string&gt;'
9421 </p>
9422 <blockquote class="text">
9423 <p>Restricts the search to instruments with keyword list
9424 that satisfies the supplied search string (encapsulated into apostrophes,
9425 supporting escape sequences as described in chapter
9426 "<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>").
9427 </p>
9428 </blockquote><p>
9429
9430 </p>
9431
9432
9433 <p>IS_DRUM=true | false
9434 </p>
9435 <blockquote class="text">
9436 <p>Either true or false. Restricts the search to
9437 drum kits or chromatic instruments.
9438 </p>
9439 </blockquote><p>
9440
9441 </p>
9442
9443
9444 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9445 </p>
9446 <blockquote class="text">
9447 <p>Restricts the search to instruments of the supplied format families,
9448 where &lt;format-list&gt; is a comma separated list of format families.
9449 </p>
9450 </blockquote><p>
9451
9452 </p>
9453
9454
9455 <p>Where &lt;search-string&gt; is either a regular expression, or a
9456 word list separated with spaces for OR search and with '+' for AND search.
9457 </p>
9458 <p>Possible Answers:
9459 </p>
9460 <p>
9461 </p>
9462 <blockquote class="text">
9463 <p>A comma separated list with the absolute path names (encapsulated into
9464 apostrophes) of all instruments in the specified directory that satisfy
9465 the supplied search criterias.
9466 </p>
9467 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9468 </p>
9469 <blockquote class="text">
9470 <p>if the given directory does not exist.
9471 </p>
9472 </blockquote>
9473
9474
9475 </blockquote><p>
9476
9477 </p>
9478 <p>Example:
9479 </p>
9480 <p>
9481 </p>
9482 <blockquote class="text">
9483 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9484 </p>
9485 <p>S: "'/Piano Collection/Bosendorfer 290'"
9486 </p>
9487 </blockquote><p>
9488
9489 </p>
9490 <p>
9491 </p>
9492 <blockquote class="text">
9493 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9494 </p>
9495 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9496 </p>
9497 </blockquote><p>
9498
9499 </p>
9500 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9501 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9502 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9503 Getting job status information</h3>
9504
9505 <p>The front-end can ask for the current status of a
9506 particular database instruments job by sending the following command:
9507 </p>
9508 <p>
9509 </p>
9510 <blockquote class="text">
9511 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9512 </p>
9513 </blockquote><p>
9514
9515 </p>
9516 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9517 of the job the front-end is interested in.
9518 </p>
9519 <p>Possible Answers:
9520 </p>
9521 <p>
9522 </p>
9523 <blockquote class="text">
9524 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9525 Each answer line begins with the settings category name
9526 followed by a colon and then a space character &lt;SP&gt; and finally
9527 the info character string to that setting category. At the
9528 moment the following categories are defined:
9529 </p>
9530 <p>
9531 </p>
9532 <blockquote class="text">
9533 <p>FILES_TOTAL -
9534 </p>
9535 <blockquote class="text">
9536 <p>The total number of files scheduled for scanning
9537 </p>
9538 </blockquote>
9539
9540
9541 <p>FILES_SCANNED -
9542 </p>
9543 <blockquote class="text">
9544 <p>The current number of scanned files
9545 </p>
9546 </blockquote>
9547
9548
9549 <p>SCANNING -
9550 </p>
9551 <blockquote class="text">
9552 <p>The absolute path name of the file which is currently
9553 being scanned
9554 </p>
9555 </blockquote>
9556
9557
9558 <p>STATUS -
9559 </p>
9560 <blockquote class="text">
9561 <p>An integer value between 0 and 100 indicating the
9562 scanning progress percentage of the file which is
9563 currently being scanned
9564 </p>
9565 </blockquote>
9566
9567
9568 </blockquote>
9569
9570
9571 </blockquote><p>
9572
9573 </p>
9574 <p>The mentioned fields above don't have to be in particular order.
9575 </p>
9576 <p>Example:
9577 </p>
9578 <p>
9579 </p>
9580 <blockquote class="text">
9581 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9582 </p>
9583 <p>S: "FILES_TOTAL: 12"
9584 </p>
9585 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9586 </p>
9587 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9588 </p>
9589 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9590 </p>
9591 <p>&nbsp;&nbsp;&nbsp;"."
9592 </p>
9593 </blockquote><p>
9594
9595 </p>
9596 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9597 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9598 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9599 Formatting the instruments database</h3>
9600
9601 <p>The front-end can remove all instruments and directories and re-create
9602 the instruments database structure (e.g., in case of a database corruption)
9603 by sending the following command:
9604 </p>
9605 <p>
9606 </p>
9607 <blockquote class="text">
9608 <p>FORMAT INSTRUMENTS_DB
9609 </p>
9610 </blockquote><p>
9611
9612 </p>
9613 <p>Possible Answers:
9614 </p>
9615 <p>
9616 </p>
9617 <blockquote class="text">
9618 <p>"OK" -
9619 </p>
9620 <blockquote class="text">
9621 <p>on success
9622 </p>
9623 </blockquote>
9624
9625
9626 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9627 </p>
9628 <blockquote class="text">
9629 <p>If the formatting of the instruments database
9630 failed.
9631 </p>
9632 </blockquote>
9633
9634
9635 </blockquote><p>
9636
9637 </p>
9638 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9639 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9640 <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9641 Checking for lost instrument files</h3>
9642
9643 <p>The front-end can retrieve the list of all instrument files in the instruments database
9644 that don't exist in the filesystem by sending the following command:
9645 </p>
9646 <p>
9647 </p>
9648 <blockquote class="text">
9649 <p>FIND LOST DB_INSTRUMENT_FILES
9650 </p>
9651 </blockquote><p>
9652
9653 </p>
9654 <p>Possible Answers:
9655 </p>
9656 <p>
9657 </p>
9658 <blockquote class="text">
9659 <p>A comma separated list with the absolute path names
9660 (encapsulated into apostrophes) of all lost instrument files.
9661 </p>
9662 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9663 </p>
9664 <blockquote class="text">
9665 <p>in case it failed, providing an appropriate error code and error message.
9666 </p>
9667 </blockquote>
9668
9669
9670 </blockquote><p>
9671
9672 </p>
9673 <p>Example:
9674 </p>
9675 <p>
9676 </p>
9677 <blockquote class="text">
9678 <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9679 </p>
9680 <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9681 </p>
9682 </blockquote><p>
9683
9684 </p>
9685 <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9686 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9687 <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9688 Replacing an instrument file</h3>
9689
9690 <p>The front-end can substitute all occurrences of an instrument file
9691 in the instruments database with a new one by sending the following command:
9692 </p>
9693 <p>
9694 </p>
9695 <blockquote class="text">
9696 <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9697 </p>
9698 </blockquote><p>
9699
9700 </p>
9701 <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9702 to substitute with &lt;new_path&gt;.
9703 </p>
9704 <p>Possible Answers:
9705 </p>
9706 <p>
9707 </p>
9708 <blockquote class="text">
9709 <p>"OK" -
9710 </p>
9711 <blockquote class="text">
9712 <p>on success
9713 </p>
9714 </blockquote>
9715
9716
9717 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9718 </p>
9719 <blockquote class="text">
9720 <p>in case it failed, providing an appropriate error code and error message.
9721 </p>
9722 </blockquote>
9723
9724
9725 </blockquote><p>
9726
9727 </p>
9728 <p>Example:
9729 </p>
9730 <p>
9731 </p>
9732 <blockquote class="text">
9733 <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9734 </p>
9735 <p>S: "OK"
9736 </p>
9737 </blockquote><p>
9738
9739 </p>
9740 <a name="editing_instruments"></a><br /><hr />
9741 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9742 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9743 Editing Instruments</h3>
9744
9745 <p>The sampler allows to edit instruments while playing with the
9746 sampler by spawning an external (3rd party) instrument editor
9747 application for a given instrument. The 3rd party instrument
9748 editor applications have to place a respective plugin DLL file
9749 into the sampler's plugins directory. The sampler will
9750 automatically try to load all plugin DLLs in that directory on
9751 startup and only on startup!
9752 </p>
9753 <p>At the moment there is only one command for this feature set,
9754 but this will most probably change in future.
9755 </p>
9756 <a name="EDIT INSTRUMENT"></a><br /><hr />
9757 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9758 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9759 Opening an appropriate instrument editor application</h3>
9760
9761 <p>The front-end can request to open an appropriate instrument
9762 editor application by sending the following command:
9763 </p>
9764 <p>
9765 </p>
9766 <blockquote class="text">
9767 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9768 </p>
9769 </blockquote><p>
9770
9771 </p>
9772 <p>Where &lt;sampler-channel&gt; should be replaced by the
9773 number of the sampler channel as given by the
9774 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9775 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9776 command.
9777 </p>
9778 <p>The sampler will try to ask all registered instrument
9779 editors (or to be more specific: their sampler plugins)
9780 whether they are capable to handle the instrument on the
9781 given sampler channel. The sampler will simply use the first
9782 instrument editor application which replied with a positive
9783 answer and spawn that instrument editor application within
9784 the sampler's process and provide that application access
9785 to the instrument's data structures, so both applications
9786 can share and access the same instruments data at the same
9787 time, thus allowing to immediately hear changes with the
9788 sampler made by the instrument editor.
9789 </p>
9790 <p>Note: consequently instrument editors are always spawned
9791 locally on the same machine where the sampler is running
9792 on!
9793 </p>
9794 <p>Possible Answers:
9795 </p>
9796 <p>
9797 </p>
9798 <blockquote class="text">
9799 <p>"OK" -
9800 </p>
9801 <blockquote class="text">
9802 <p>when an appropriate instrument editor was
9803 launched
9804 </p>
9805 </blockquote>
9806
9807
9808 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9809 </p>
9810 <blockquote class="text">
9811 <p>when an appropriate instrument editor was
9812 launched, but there are noteworthy issues
9813 </p>
9814 </blockquote>
9815
9816
9817 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9818 </p>
9819 <blockquote class="text">
9820 <p>when an appropriate instrument editor
9821 could not be launched
9822 </p>
9823 </blockquote>
9824
9825
9826 </blockquote><p>
9827
9828 </p>
9829 <p>Examples:
9830 </p>
9831 <p>
9832 </p>
9833 <blockquote class="text">
9834 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9835 </p>
9836 <p>S: "OK"
9837 </p>
9838 </blockquote><p>
9839
9840 </p>
9841 <a name="file_management"></a><br /><hr />
9842 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9843 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9844 Managing Files</h3>
9845
9846 <p>You can query detailed informations about files located
9847 at the same system where the sampler instance is running on.
9848 Using this command set allows to retrieve file informations
9849 even remotely from another machine.
9850 </p>
9851 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9852 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9853 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9854 Retrieving amount of instruments of a file</h3>
9855
9856 <p>The front-end can retrieve the amount of instruments
9857 within a given instrument file by sending the
9858 following command:
9859 </p>
9860 <p>
9861 </p>
9862 <blockquote class="text">
9863 <p>GET FILE INSTRUMENTS &lt;filename&gt;
9864 </p>
9865 </blockquote><p>
9866
9867 </p>
9868 <p>Where &lt;filename&gt; is the name of the instrument
9869 file (encapsulated into apostrophes, supporting escape
9870 sequences as described in chapter
9871 "<a class='info' href='#character_set'>Character Set and Escape
9872 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9873 </p>
9874 <p>The sampler will try to ask all sampler engines,
9875 whether they support the given file and ask the first
9876 engine with a positive answer for the amount of
9877 instruments.
9878 </p>
9879 <p>Possible Answers:
9880 </p>
9881 <p>
9882 </p>
9883 <blockquote class="text">
9884 <p>On success, the sampler will answer by
9885 returning the amount of instruments.
9886
9887 </p>
9888 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9889 </p>
9890 <blockquote class="text">
9891 <p>if the file could not be handled
9892 </p>
9893 </blockquote>
9894
9895
9896 </blockquote><p>
9897
9898 </p>
9899 <p>Examples:
9900 </p>
9901 <p>
9902 </p>
9903 <blockquote class="text">
9904 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9905 </p>
9906 <p>S: "10"
9907 </p>
9908 </blockquote><p>
9909
9910 </p>
9911 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9912 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9913 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9914 Retrieving all instruments of a file</h3>
9915
9916 <p>The front-end can retrieve a list of all instruments
9917 within a given instrument file by sending the
9918 following command:
9919 </p>
9920 <p>
9921 </p>
9922 <blockquote class="text">
9923 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9924 </p>
9925 </blockquote><p>
9926
9927 </p>
9928 <p>Where &lt;filename&gt; is the name of the instrument
9929 file (encapsulated into apostrophes, supporting escape
9930 sequences as described in chapter
9931 "<a class='info' href='#character_set'>Character Set and Escape
9932 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9933 </p>
9934 <p>The sampler will try to ask all sampler engines,
9935 whether they support the given file and ask the first
9936 engine with a positive answer for a list of IDs for the
9937 instruments in the given file.
9938 </p>
9939 <p>Possible Answers:
9940 </p>
9941 <p>
9942 </p>
9943 <blockquote class="text">
9944 <p>On success, the sampler will answer by
9945 returning a comma separated list of
9946 instrument IDs.
9947
9948 </p>
9949 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9950 </p>
9951 <blockquote class="text">
9952 <p>if the file could not be handled
9953 </p>
9954 </blockquote>
9955
9956
9957 </blockquote><p>
9958
9959 </p>
9960 <p>Examples:
9961 </p>
9962 <p>
9963 </p>
9964 <blockquote class="text">
9965 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9966 </p>
9967 <p>S: "0,1,2,3,4,5,6,7,8,9"
9968 </p>
9969 </blockquote><p>
9970
9971 </p>
9972 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9973 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9974 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9975 Retrieving informations about one instrument in a file</h3>
9976
9977 <p>The front-end can retrieve detailed informations
9978 about a specific instrument within a given instrument
9979 file by sending the following command:
9980 </p>
9981 <p>
9982 </p>
9983 <blockquote class="text">
9984 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9985 &lt;instr-id&gt;
9986 </p>
9987 </blockquote><p>
9988
9989 </p>
9990 <p>Where &lt;filename&gt; is the name of the instrument
9991 file (encapsulated into apostrophes, supporting escape
9992 sequences as described in chapter
9993 "<a class='info' href='#character_set'>Character Set and Escape
9994 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9995 instrument ID as returned by the
9996 <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.
9997 </p>
9998 <p>The sampler will try to ask all sampler engines,
9999 whether they support the given file and ask the first
10000 engine with a positive answer for informations about the
10001 specific instrument in the given file.
10002 </p>
10003 <p>Possible Answers:
10004 </p>
10005 <p>
10006 </p>
10007 <blockquote class="text">
10008 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10009 Each answer line begins with the settings category name
10010 followed by a colon and then a space character &lt;SP&gt; and finally
10011 the info character string to that setting category. At the
10012 moment the following categories are defined:
10013 </p>
10014 <p>
10015 </p>
10016 <blockquote class="text">
10017 <p>NAME -
10018 </p>
10019 <blockquote class="text">
10020 <p>name of the instrument as
10021 stored in the instrument file
10022 </p>
10023 </blockquote>
10024
10025
10026 <p>FORMAT_FAMILY -
10027 </p>
10028 <blockquote class="text">
10029 <p>name of the sampler format
10030 of the given instrument
10031 </p>
10032 </blockquote>
10033
10034
10035 <p>FORMAT_VERSION -
10036 </p>
10037 <blockquote class="text">
10038 <p>version of the sampler format
10039 the instrumen is stored as
10040 </p>
10041 </blockquote>
10042
10043
10044 <p>PRODUCT -
10045 </p>
10046 <blockquote class="text">
10047 <p>official product name of the
10048 instrument as stored in the file
10049
10050 </p>
10051 </blockquote>
10052
10053
10054 <p>ARTISTS -
10055 </p>
10056 <blockquote class="text">
10057 <p>artists / sample library
10058 vendor of the instrument
10059 </p>
10060 </blockquote>
10061
10062
10063 <p>KEY_BINDINGS -
10064 </p>
10065 <blockquote class="text">
10066 <p>comma separated list of integer values representing
10067 the instrument's key mapping in the range between 0 .. 127,
10068 reflecting the analog meaning of the MIDI specification.
10069 </p>
10070 </blockquote>
10071
10072
10073 <p>KEYSWITCH_BINDINGS -
10074 </p>
10075 <blockquote class="text">
10076 <p>comma separated list of integer values representing
10077 the instrument's keyswitch mapping in the range between 0 .. 127,
10078 reflecting the analog meaning of the MIDI specification.
10079 </p>
10080 </blockquote>
10081
10082
10083 </blockquote>
10084
10085
10086 </blockquote><p>
10087
10088 </p>
10089 <p>The mentioned fields above don't have to be in particular order.
10090 </p>
10091 <p>Example:
10092 </p>
10093 <p>
10094 </p>
10095 <blockquote class="text">
10096 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10097 </p>
10098 <p>S: "NAME: Lunatic Loops"
10099 </p>
10100 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10101 </p>
10102 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10103 </p>
10104 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10105 </p>
10106 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10107 </p>
10108 <p>&nbsp;&nbsp;&nbsp;"."
10109 </p>
10110 </blockquote><p>
10111
10112 </p>
10113 <a name="effects"></a><br /><hr />
10114 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10115 <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10116 Managing Effects</h3>
10117
10118 <p>Audio effects (e.g. reverb, delay, compression) can be
10119 applied to the audio signals generated by the sampler. The
10120 sampler usually provides a set of internal audio effects for
10121 this task. The exact set of effects depends on the availability
10122 of third party effect plugins installed on the system where the
10123 sampler runs on.
10124 </p>
10125 <p>At the moment only "send effects" are supported. Support for
10126 "insert effects" and "master effects" is planned to be added at
10127 a later point.
10128 </p>
10129 <p>The following commands allow to retrieve the set of internal
10130 effects available to the sampler, detailed informations about
10131 those effects and to create and destroy instances of such
10132 effects. After an instance of an effect is created, the effect
10133 instance can be inserted into the audio signal path of the
10134 sampler, e.g. as send effect.
10135 </p>
10136 <p>The sampler allows to create an arbitrary amount of so called
10137 send effect chains. Each effect chain can host an arbitrary
10138 amount of effect instances. The output of the first effect
10139 instance in an effect chain is fed to the input of the second
10140 effect instance of the chain and so on. So effects in one chain
10141 are processed sequentially. Send effect chains however are
10142 processed in parallel to other send effect chains. Audio signals
10143 of sampler channels are fed to send effects by creating FX sends
10144 to the respective sampler channel and assigning a destination
10145 send effect to that FX by using the
10146 <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>
10147 command. The latter allows to route the FX send to the beginning
10148 of a send effect chain, as well as directly to any other
10149 position of the send effect chain.
10150 </p>
10151 <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10152 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10153 <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10154 Retrieve amount of available effects</h3>
10155
10156 <p>The front-end can retrieve the amount of internal
10157 effects, available to the sampler by sending
10158 the following command:
10159 </p>
10160 <p>
10161 </p>
10162 <blockquote class="text">
10163 <p>GET AVAILABLE_EFFECTS
10164 </p>
10165 </blockquote><p>
10166
10167 </p>
10168 <p>Possible Answers:
10169 </p>
10170 <p>
10171 </p>
10172 <blockquote class="text">
10173 <p>The sampler will answer by returning the current
10174 number of effects available to the sampler.
10175 </p>
10176 </blockquote><p>
10177
10178 </p>
10179 <p>Examples:
10180 </p>
10181 <p>
10182 </p>
10183 <blockquote class="text">
10184 <p>C: "GET AVAILABLE_EFFECTS"
10185 </p>
10186 <p>S: "129"
10187 </p>
10188 </blockquote><p>
10189
10190 </p>
10191 <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10192 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10193 <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10194 Get list of available effects</h3>
10195
10196 <p>The set of available internal effects can change at
10197 runtime. The front-end can retrieve the list of internal
10198 effects, available to the sampler by sending the following
10199 command:
10200 </p>
10201 <p>
10202 </p>
10203 <blockquote class="text">
10204 <p>LIST AVAILABLE_EFFECTS
10205 </p>
10206 </blockquote><p>
10207
10208 </p>
10209 <p>Possible Answers:
10210 </p>
10211 <p>
10212 </p>
10213 <blockquote class="text">
10214 <p>The sampler will answer by returning a comma
10215 separated list with numerical IDs of effects. Note:
10216 the numercial ID of an effect is generated by the
10217 sampler for the current moment. The numerical ID of
10218 the same effect can change at runtime, e.g. when the
10219 user requests a rescan of available effect plugins.
10220
10221 </p>
10222 </blockquote><p>
10223
10224 </p>
10225 <p>Example:
10226 </p>
10227 <p>
10228 </p>
10229 <blockquote class="text">
10230 <p>C: "LIST AVAILABLE_EFFECTS"
10231 </p>
10232 <p>S: "5,6,7,120,121,122,123,124"
10233 </p>
10234 </blockquote><p>
10235
10236 </p>
10237 <a name="GET EFFECT INFO"></a><br /><hr />
10238 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10239 <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10240 Retrieving general information about an effect</h3>
10241
10242 <p>The front-end can ask for general informations about an
10243 effect by sending the following command:
10244 </p>
10245 <p>
10246 </p>
10247 <blockquote class="text">
10248 <p>GET EFFECT INFO &lt;effect-index&gt;
10249 </p>
10250 </blockquote><p>
10251
10252 </p>
10253 <p>Where &lt;effect-index&gt; is the numerical ID of an
10254 effect as returned by the
10255 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10256 command.
10257 </p>
10258 <p>Possible Answers:
10259 </p>
10260 <p>
10261 </p>
10262 <blockquote class="text">
10263 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10264 Each answer line begins with the effect information
10265 category name, followed by a colon and then a space
10266 character &lt;SP&gt; and finally the info character
10267 string to that effect information category. At the
10268 moment the following categories are defined:
10269 </p>
10270 <p>
10271 </p>
10272 <blockquote class="text">
10273 <p>SYSTEM -
10274 </p>
10275 <blockquote class="text">
10276 <p>name of the effect plugin system
10277 the effect is based on
10278 (e.g. "LADSPA")
10279 </p>
10280 </blockquote>
10281
10282
10283 <p>MODULE -
10284 </p>
10285 <blockquote class="text">
10286 <p>module of the effect plugin
10287 system that contains this effect,
10288 the module is usually the
10289 dynamic-linked library (DLL)
10290 filename of the effect plugin,
10291 including full path (note that this
10292 filename may contain
10293 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10294 </p>
10295 </blockquote>
10296
10297
10298 <p>NAME -
10299 </p>
10300 <blockquote class="text">
10301 <p>character string defining the
10302 unique name of the effect within its
10303 module (note that the character
10304 string may contain
10305 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10306 </p>
10307 </blockquote>
10308
10309
10310 <p>DESCRIPTION -
10311 </p>
10312 <blockquote class="text">
10313 <p>human readable name of the
10314 effect, intended to be displayed in
10315 user interfaces (note that the
10316 character string may contain
10317 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10318 </p>
10319 </blockquote>
10320
10321
10322 </blockquote>
10323
10324
10325 </blockquote><p>
10326
10327 </p>
10328 <p>The mentioned fields above don't have to be in particular order.
10329 </p>
10330 <p>Example:
10331 </p>
10332 <p>
10333 </p>
10334 <blockquote class="text">
10335 <p>C: "GET EFFECT INFO 121"
10336 </p>
10337 <p>S: "SYSTEM: LADSPA"
10338 </p>
10339 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10340 </p>
10341 <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10342 </p>
10343 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10344 </p>
10345 <p>&nbsp;&nbsp;&nbsp;"."
10346 </p>
10347 </blockquote><p>
10348
10349 </p>
10350 <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10351 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10352 <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10353 Creating an instance of an effect by its portable ID</h3>
10354
10355 <p>The front-end can spawn an instance of the desired
10356 effect by sending the following command:
10357 </p>
10358 <p>
10359 </p>
10360 <blockquote class="text">
10361 <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10362 </p>
10363 </blockquote><p>
10364
10365 </p>
10366 <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10367 &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10368 the "NAME" field as returned by the
10369 <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>
10370 command. The filename of argument &lt;module&gt; and the
10371 character string of argument &lt;effect-name&gt; may contain
10372 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10373 </p>
10374 <p>The sampler will try to load the requested effect and to
10375 create an instance of it. To allow loading the same effect
10376 on a different machine, probably even running a completely
10377 different operating system (e.g. Linux vs. Windows), the
10378 sampler tries to match &lt;module&gt; "softly". That means
10379 it first tries to find an effect that exactly matches the
10380 given &lt;module&gt; argument. If there is no exact match,
10381 the sampler will try to lower the restrictions on matching
10382 the &lt;module&gt; argument more and more, e.g. by ignoring
10383 upper / lower case differences and by ignoring the path of
10384 the DLL filename and file extension. If there is still no
10385 match at the end, the sampler will try to ignore the
10386 &lt;module&gt; argument completely and as a last resort
10387 search for an effect that only matches the given
10388 &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10389 </p>
10390 <p>Possible Answers:
10391 </p>
10392 <p>
10393 </p>
10394 <blockquote class="text">
10395 <p>"OK[&lt;effect-instance&gt;]" -
10396 </p>
10397 <blockquote class="text">
10398 <p>in case the effect instance was
10399 successfully created, where
10400 &lt;effect-instance&gt; is the numerical ID
10401 of the new effect instance
10402 </p>
10403 </blockquote>
10404
10405
10406 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10407 </p>
10408 <blockquote class="text">
10409 <p>in case the effect instance was spawned
10410 successfully, but there are noteworthy
10411 issue(s) related, providing an appropriate
10412 warning code and warning message
10413 </p>
10414 </blockquote>
10415
10416
10417 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10418 </p>
10419 <blockquote class="text">
10420 <p>if the effect could not be instantiated
10421 </p>
10422 </blockquote>
10423
10424
10425 </blockquote><p>
10426
10427 </p>
10428 <p>Examples:
10429 </p>
10430 <p>
10431 </p>
10432 <blockquote class="text">
10433 <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10434 </p>
10435 <p>S: "OK[0]"
10436 </p>
10437 </blockquote><p>
10438
10439 </p>
10440 <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10441 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10442 <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10443 Creating an instance of an effect by its numerical ID</h3>
10444
10445 <p>The front-end can spawn an instance of the desired
10446 effect by sending the following command:
10447 </p>
10448 <p>
10449 </p>
10450 <blockquote class="text">
10451 <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10452 </p>
10453 </blockquote><p>
10454
10455 </p>
10456 <p>Where &lt;effect-index&gt; is the numerical ID of the
10457 effect as returned by the
10458 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10459 command.
10460 </p>
10461 <p>The sampler will try to load the requested effect and to
10462 create an instance of it.
10463 </p>
10464 <p>Note: Since the numerical ID of a certain effect can
10465 change at any time, you should not use this command in
10466 LSCP files to restore a certain effect at a later time! To
10467 store a sampler session including all its effects, use the
10468 <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10469 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
10470 allows to restore a sampler session with all its effects
10471 also on other machines, possibly even running a completely
10472 different operating system (e.g. Linux vs. Windows), with
10473 different plugin directories or plugin DLL names.
10474 </p>
10475 <p>Possible Answers:
10476 </p>
10477 <p>
10478 </p>
10479 <blockquote class="text">
10480 <p>"OK[&lt;effect-instance&gt;]" -
10481 </p>
10482 <blockquote class="text">
10483 <p>in case the effect instance was
10484 successfully created, where
10485 &lt;effect-instance&gt; is the numerical ID
10486 of the new effect instance
10487 </p>
10488 </blockquote>
10489
10490
10491 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10492 </p>
10493 <blockquote class="text">
10494 <p>in case the effect instance was spawned
10495 successfully, but there are noteworthy
10496 issue(s) related, providing an appropriate
10497 warning code and warning message
10498 </p>
10499 </blockquote>
10500
10501
10502 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10503 </p>
10504 <blockquote class="text">
10505 <p>if the effect could not be instantiated
10506 </p>
10507 </blockquote>
10508
10509
10510 </blockquote><p>
10511
10512 </p>
10513 <p>Examples:
10514 </p>
10515 <p>
10516 </p>
10517 <blockquote class="text">
10518 <p>C: "CREATE EFFECT_INSTANCE 72"
10519 </p>
10520 <p>S: "OK[5]"
10521 </p>
10522 </blockquote><p>
10523
10524 </p>
10525 <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10526 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10527 <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10528 Destroy an effect instance</h3>
10529
10530 <p>The front-end can destroy an unusued effect instance and
10531 thus freeing it from memory by sending the following command:
10532 </p>
10533 <p>
10534 </p>
10535 <blockquote class="text">
10536 <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10537 </p>
10538 </blockquote><p>
10539
10540 </p>
10541 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10542 effect instance as returned by the
10543 <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
10544 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10545 command.
10546 </p>
10547 <p>The effect instance can only be destroyed if it's not
10548 used in any part of the sampler's audio signal path anymore.
10549 If the effect instance is still in use somewhere, trying to
10550 destroy the effect instance will result in an error
10551 message.
10552 </p>
10553 <p>Possible Answers:
10554 </p>
10555 <p>
10556 </p>
10557 <blockquote class="text">
10558 <p>"OK" -
10559 </p>
10560 <blockquote class="text">
10561 <p>in case the effect instance was successfully destroyed
10562 </p>
10563 </blockquote>
10564
10565
10566 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10567 </p>
10568 <blockquote class="text">
10569 <p>in case it failed, providing an appropriate error code and
10570 error message
10571 </p>
10572 </blockquote>
10573
10574
10575 </blockquote><p>
10576
10577 </p>
10578 <p>Examples:
10579 </p>
10580 <p>
10581 </p>
10582 <blockquote class="text">
10583 <p>C: "DESTROY EFFECT_INSTANCE 5"
10584 </p>
10585 <p>S: "OK"
10586 </p>
10587 </blockquote><p>
10588
10589 </p>
10590 <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10591 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10592 <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10593 Retrieve amount of effect instances</h3>
10594
10595 <p>The front-end can retrieve the current amount of effect
10596 instances by sending the following command:
10597 </p>
10598 <p>
10599 </p>
10600 <blockquote class="text">
10601 <p>GET EFFECT_INSTANCES
10602 </p>
10603 </blockquote><p>
10604
10605 </p>
10606 <p>Possible Answers:
10607 </p>
10608 <p>
10609 </p>
10610 <blockquote class="text">
10611 <p>The sampler will answer by returning the current
10612 number of effect instances created and not yet
10613 destroyed in the current sampler session.
10614 </p>
10615 </blockquote><p>
10616
10617 </p>
10618 <p>Examples:
10619 </p>
10620 <p>
10621 </p>
10622 <blockquote class="text">
10623 <p>C: "GET EFFECT_INSTANCES"
10624 </p>
10625 <p>S: "14"
10626 </p>
10627 </blockquote><p>
10628
10629 </p>
10630 <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
10631 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10632 <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
10633 Get list of effect instances</h3>
10634
10635 <p>The front-end can retrieve the current list of effect
10636 instances by sending the following command:
10637 </p>
10638 <p>
10639 </p>
10640 <blockquote class="text">
10641 <p>LIST EFFECT_INSTANCES
10642 </p>
10643 </blockquote><p>
10644
10645 </p>
10646 <p>Possible Answers:
10647 </p>
10648 <p>
10649 </p>
10650 <blockquote class="text">
10651 <p>The sampler will answer by returning a comma
10652 separated list with numerical IDs of effects
10653 instances.
10654
10655 </p>
10656 </blockquote><p>
10657
10658 </p>
10659 <p>Example:
10660 </p>
10661 <p>
10662 </p>
10663 <blockquote class="text">
10664 <p>C: "LIST EFFECT_INSTANCES"
10665 </p>
10666 <p>S: "9,11,14,15,16,17,25"
10667 </p>
10668 </blockquote><p>
10669
10670 </p>
10671 <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
10672 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10673 <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
10674 Retrieving current information about an effect instance</h3>
10675
10676 <p>The front-end can ask for the current informations about
10677 a particular effect instance by sending the following command:
10678 </p>
10679 <p>
10680 </p>
10681 <blockquote class="text">
10682 <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
10683 </p>
10684 </blockquote><p>
10685
10686 </p>
10687 <p>Where &lt;effect-instance&gt; is the numerical ID of an
10688 effect instance as returned by the
10689 <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>
10690 or
10691 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10692 command.
10693 </p>
10694 <p>Possible Answers:
10695 </p>
10696 <p>
10697 </p>
10698 <blockquote class="text">
10699 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10700 Each answer line begins with the information
10701 category name, followed by a colon and then a space
10702 character &lt;SP&gt; and finally the info character
10703 string to that information category. At the
10704 moment the following categories are defined:
10705 </p>
10706 <p>
10707 </p>
10708 <blockquote class="text">
10709 <p>SYSTEM -
10710 </p>
10711 <blockquote class="text">
10712 <p>name of the effect plugin system
10713 the effect is based on
10714 (e.g. "LADSPA")
10715 </p>
10716 </blockquote>
10717
10718
10719 <p>MODULE -
10720 </p>
10721 <blockquote class="text">
10722 <p>module of the effect plugin
10723 system that contains this effect,
10724 the module is usually the
10725 dynamic-linked library (DLL)
10726 filename of the effect plugin,
10727 including full path (note that this
10728 filename may contain
10729 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10730 </p>
10731 </blockquote>
10732
10733
10734 <p>NAME -
10735 </p>
10736 <blockquote class="text">
10737 <p>character string defining the
10738 unique name of the effect within its
10739 module (note that the character
10740 string may contain
10741 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10742 </p>
10743 </blockquote>
10744
10745
10746 <p>DESCRIPTION -
10747 </p>
10748 <blockquote class="text">
10749 <p>human readable name of the
10750 effect, intended to be displayed in
10751 user interfaces (note that the
10752 character string may contain
10753 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10754 </p>
10755 </blockquote>
10756
10757
10758 <p>INPUT_CONTROLS -
10759 </p>
10760 <blockquote class="text">
10761 <p>amount of input controls the
10762 effect instance provides, to allow
10763 controlling the effect parameters in
10764 realtime
10765 </p>
10766 </blockquote>
10767
10768
10769 </blockquote>
10770
10771
10772 </blockquote><p>
10773
10774 </p>
10775 <p>The mentioned fields above don't have to be in particular order.
10776 </p>
10777 <p>Example:
10778 </p>
10779 <p>
10780 </p>
10781 <blockquote class="text">
10782 <p>C: "GET EFFECT_INSTANCE INFO 3"
10783 </p>
10784 <p>S: "SYSTEM: LADSPA"
10785 </p>
10786 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
10787 </p>
10788 <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
10789 </p>
10790 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
10791 </p>
10792 <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
10793 </p>
10794 <p>&nbsp;&nbsp;&nbsp;"."
10795 </p>
10796 </blockquote><p>
10797
10798 </p>
10799 <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
10800 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10801 <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
10802 Retrieving information about an effect parameter</h3>
10803
10804 <p>Effects typically provide a certain set of effect
10805 parameters which can be altered by the user in realtime
10806 (e.g. depth of a reverb effect, duration of a delay effect,
10807 dry / wet signal ratio). Those controllable effect parameters
10808 are called "input controls". The front-end can ask for the
10809 current informations of an effect instance's input control
10810 by sending the following command:
10811 </p>
10812 <p>
10813 </p>
10814 <blockquote class="text">
10815 <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
10816 </p>
10817 </blockquote><p>
10818
10819 </p>
10820 <p>Where &lt;effect-instance&gt; is the numerical ID of an
10821 effect instance as returned by the
10822 <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>
10823 or
10824 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10825 command and &lt;input-control&gt; is the index of the input
10826 control within the numerical bounds as returned by the
10827 "INPUT_CONTROLS" field of the
10828 <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>
10829 command.
10830 </p>
10831 <p>Possible Answers:
10832 </p>
10833 <p>
10834 </p>
10835 <blockquote class="text">
10836 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10837 Each answer line begins with the information
10838 category name, followed by a colon and then a space
10839 character &lt;SP&gt; and finally the info character
10840 string to that information category. There are
10841 information categories which are always returned,
10842 independent of the respective effect parameter and
10843 there are optional information categories
10844 which are only shown for certain effect parameters.
10845 At the moment the following categories are defined:
10846 </p>
10847 <p>
10848 </p>
10849 <blockquote class="text">
10850 <p>DESCRIPTION -
10851 </p>
10852 <blockquote class="text">
10853 <p>(always returned)
10854 human readable name of the
10855 effect parameter, intended to be
10856 displayed in user interfaces (note
10857 that the character string may
10858 contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10859 </p>
10860 </blockquote>
10861
10862
10863 <p>VALUE -
10864 </p>
10865 <blockquote class="text">
10866 <p>
10867 (always returned)
10868 current (optional dotted)
10869 floating point value of this effect
10870 parameter
10871 </p>
10872 </blockquote>
10873
10874
10875 <p>RANGE_MIN -
10876 </p>
10877 <blockquote class="text">
10878 <p>
10879 (optionally returned)
10880 minimum allowed value for this
10881 effect parameter
10882 </p>
10883 </blockquote>
10884
10885
10886 <p>RANGE_MAX -
10887 </p>
10888 <blockquote class="text">
10889 <p>
10890 (optionally returned)
10891 maximum allowed value for this
10892 effect parameter
10893 </p>
10894 </blockquote>
10895
10896
10897 <p>POSSIBILITIES -
10898 </p>
10899 <blockquote class="text">
10900 <p>
10901 (optionally returned)
10902 comma separated list of
10903 (optional dotted) floating point
10904 numbers, reflecting the exact set of
10905 possible values for this effect
10906 parameter
10907 </p>
10908 </blockquote>
10909
10910
10911 <p>DEFAULT -
10912 </p>
10913 <blockquote class="text">
10914 <p>
10915 (optionally returned)
10916 default value of this effect
10917 parameter
10918 </p>
10919 </blockquote>
10920
10921
10922 </blockquote>
10923
10924
10925 </blockquote><p>
10926
10927 </p>
10928 <p>The mentioned fields above don't have to be in particular order.
10929 </p>
10930 <p>Example:
10931 </p>
10932 <p>
10933 </p>
10934 <blockquote class="text">
10935 <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
10936 </p>
10937 <p>S: "DESCRIPTION: Base delay (s)"
10938 </p>
10939 <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
10940 </p>
10941 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
10942 </p>
10943 <p>&nbsp;&nbsp;&nbsp;"."
10944 </p>
10945 </blockquote><p>
10946
10947 </p>
10948 <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
10949 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10950 <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
10951 Altering an effect parameter</h3>
10952
10953 <p>The front-end can alter the current value of an effect
10954 parameter by sending the following command:
10955 </p>
10956 <p>
10957 </p>
10958 <blockquote class="text">
10959 <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
10960 </p>
10961 </blockquote><p>
10962
10963 </p>
10964 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10965 effect instance as returned by the
10966 <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
10967 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10968 command, &lt;input-control&gt; is the index of the input
10969 control within the numerical bounds as returned by the
10970 "INPUT_CONTROLS" field of the
10971 <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>
10972 command and &lt;value&gt; is the new (optional dotted)
10973 floating point value for this effect parameter.
10974 </p>
10975 <p>Possible Answers:
10976 </p>
10977 <p>
10978 </p>
10979 <blockquote class="text">
10980 <p>"OK" -
10981 </p>
10982 <blockquote class="text">
10983 <p>in case the effect was altered successfully
10984 </p>
10985 </blockquote>
10986
10987
10988 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10989 </p>
10990 <blockquote class="text">
10991 <p>in case it failed, providing an appropriate error code and
10992 error message
10993 </p>
10994 </blockquote>
10995
10996
10997 </blockquote><p>
10998
10999 </p>
11000 <p>Examples:
11001 </p>
11002 <p>
11003 </p>
11004 <blockquote class="text">
11005 <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11006 </p>
11007 <p>S: "OK"
11008 </p>
11009 </blockquote><p>
11010
11011 </p>
11012 <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11013 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11014 <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11015 Retrieve amount of send effect chains</h3>
11016
11017 <p>The front-end can retrieve the current amount of send
11018 effect chains of an audio output device by sending the
11019 following command:
11020 </p>
11021 <p>
11022 </p>
11023 <blockquote class="text">
11024 <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11025 </p>
11026 </blockquote><p>
11027
11028 </p>
11029 <p>Where &lt;audio-device&gt; should be replaced by the
11030 numerical ID of the audio output device as given by the
11031 <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>
11032 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>
11033 command.
11034 </p>
11035 <p>Possible Answers:
11036 </p>
11037 <p>
11038 </p>
11039 <blockquote class="text">
11040 <p>The sampler will answer by returning the current
11041 number of send effect chains of the supplied audio
11042 output device.
11043 </p>
11044 </blockquote><p>
11045
11046 </p>
11047 <p>Examples:
11048 </p>
11049 <p>
11050 </p>
11051 <blockquote class="text">
11052 <p>C: "GET SEND_EFFECT_CHAINS 0"
11053 </p>
11054 <p>S: "4"
11055 </p>
11056 </blockquote><p>
11057
11058 </p>
11059 <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11060 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11061 <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11062 Retrieve list of send effect chains</h3>
11063
11064 <p>The front-end can retrieve the current list of send
11065 effect chains of an audio output device by sending the
11066 following command:
11067 </p>
11068 <p>
11069 </p>
11070 <blockquote class="text">
11071 <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11072 </p>
11073 </blockquote><p>
11074
11075 </p>
11076 <p>Where &lt;audio-device&gt; should be replaced by the
11077 numerical ID of the audio output device as given by the
11078 <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>
11079 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>
11080 command.
11081 </p>
11082 <p>Possible Answers:
11083 </p>
11084 <p>
11085 </p>
11086 <blockquote class="text">
11087 <p>The sampler will answer by returning a comma
11088 separated list with numerical IDs of send effect
11089 chains of the supplied audio output device.
11090
11091 </p>
11092 </blockquote><p>
11093
11094 </p>
11095 <p>Examples:
11096 </p>
11097 <p>
11098 </p>
11099 <blockquote class="text">
11100 <p>C: "LIST SEND_EFFECT_CHAINS 0"
11101 </p>
11102 <p>S: "3,4,7"
11103 </p>
11104 </blockquote><p>
11105
11106 </p>
11107 <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11108 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11109 <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11110 Add send effect chain</h3>
11111
11112 <p>The front-end can add a send effect chain by sending the
11113 following command:
11114 </p>
11115 <p>
11116 </p>
11117 <blockquote class="text">
11118 <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11119 </p>
11120 </blockquote><p>
11121
11122 </p>
11123 <p>Where &lt;audio-device&gt; should be replaced by the
11124 numerical ID of the audio output device as given by the
11125 <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>
11126 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>
11127 command.
11128 </p>
11129 <p>Possible Answers:
11130 </p>
11131 <p>
11132 </p>
11133 <blockquote class="text">
11134 <p>"OK[&lt;effect-chain&gt;]" -
11135 </p>
11136 <blockquote class="text">
11137 <p>in case the send effect chain was
11138 added successfully, where
11139 &lt;effect-chain&gt; is the numerical ID
11140 of the new send effect chain
11141 </p>
11142 </blockquote>
11143
11144
11145 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11146 </p>
11147 <blockquote class="text">
11148 <p>if the send effect chain could not be added
11149 </p>
11150 </blockquote>
11151
11152
11153 </blockquote><p>
11154
11155 </p>
11156 <p>Examples:
11157 </p>
11158 <p>
11159 </p>
11160 <blockquote class="text">
11161 <p>C: "ADD SEND_EFFECT_CHAIN 0"
11162 </p>
11163 <p>S: "OK[2]"
11164 </p>
11165 </blockquote><p>
11166
11167 </p>
11168 <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11169 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11170 <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11171 Remove send effect chain</h3>
11172
11173 <p>The front-end can remove a send effect chain by sending
11174 the following command:
11175 </p>
11176 <p>
11177 </p>
11178 <blockquote class="text">
11179 <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11180 </p>
11181 </blockquote><p>
11182
11183 </p>
11184 <p>Where &lt;audio-device&gt; should be replaced by the
11185 numerical ID of the audio output device as given by the
11186 <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>
11187 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>
11188 command and &lt;effect-chain&gt; by the numerical ID as
11189 returned by the
11190 <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>
11191 or
11192 <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>
11193 command.
11194 </p>
11195 <p>Possible Answers:
11196 </p>
11197 <p>
11198 </p>
11199 <blockquote class="text">
11200 <p>"OK" -
11201 </p>
11202 <blockquote class="text">
11203 <p>in case the send effect chain was
11204 removed successfully
11205 </p>
11206 </blockquote>
11207
11208
11209 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11210 </p>
11211 <blockquote class="text">
11212 <p>if the send effect chain could not be removed
11213 </p>
11214 </blockquote>
11215
11216
11217 </blockquote><p>
11218
11219 </p>
11220 <p>Examples:
11221 </p>
11222 <p>
11223 </p>
11224 <blockquote class="text">
11225 <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11226 </p>
11227 <p>S: "OK"
11228 </p>
11229 </blockquote><p>
11230
11231 </p>
11232 <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11233 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11234 <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11235 Retrieving information about a send effect chain</h3>
11236
11237 <p>The front-end can ask for informations of a send effect
11238 chain by sending the following command:
11239 </p>
11240 <p>
11241 </p>
11242 <blockquote class="text">
11243 <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11244 </p>
11245 </blockquote><p>
11246
11247 </p>
11248 <p>Where &lt;audio-device&gt; should be replaced by the
11249 numerical ID of the audio output device as given by the
11250 <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>
11251 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>
11252 command and &lt;effect-chain&gt; by the numerical ID as
11253 returned by the
11254 <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>
11255 or
11256 <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>
11257 command.
11258 </p>
11259 <p>Possible Answers:
11260 </p>
11261 <p>
11262 </p>
11263 <blockquote class="text">
11264 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11265 Each answer line begins with the information
11266 category name, followed by a colon and then a space
11267 character &lt;SP&gt; and finally the info character
11268 string to that information category.
11269 At the moment the following categories are defined:
11270 </p>
11271 <p>
11272 </p>
11273 <blockquote class="text">
11274 <p>EFFECT_COUNT -
11275 </p>
11276 <blockquote class="text">
11277 <p>amount of effects in this send
11278 effect chain
11279 </p>
11280 </blockquote>
11281
11282
11283 <p>EFFECT_SEQUENCE -
11284 </p>
11285 <blockquote class="text">
11286 <p>comma separated list of the
11287 numerical IDs of the effect
11288 instances in this send effect chain,
11289 in the order as they are procssed in
11290 the effect chain
11291 </p>
11292 </blockquote>
11293
11294
11295 </blockquote>
11296
11297
11298 </blockquote><p>
11299
11300 </p>
11301 <p>The mentioned fields above don't have to be in particular order.
11302 </p>
11303 <p>Example:
11304 </p>
11305 <p>
11306 </p>
11307 <blockquote class="text">
11308 <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11309 </p>
11310 <p>S: "EFFECT_COUNT: 3"
11311 </p>
11312 <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11313 </p>
11314 <p>&nbsp;&nbsp;&nbsp;"."
11315 </p>
11316 </blockquote><p>
11317
11318 </p>
11319 <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11320 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11321 <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11322 Append effect instance to a send effect chain</h3>
11323
11324 <p>The front-end can add an unused effect instance to the
11325 end of a send effect chain by sending the following command:
11326 </p>
11327 <p>
11328 </p>
11329 <blockquote class="text">
11330 <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11331 </p>
11332 </blockquote><p>
11333
11334 </p>
11335 <p>Where &lt;audio-device&gt; should be replaced by the
11336 numerical ID of the audio output device as given by the
11337 <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>
11338 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>
11339 command and &lt;effect-chain&gt; by the numerical ID as
11340 returned by the
11341 <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>
11342 or
11343 <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>
11344 command and &lt;effect-instance&gt; as returned by the
11345 <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
11346 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11347 command.
11348 </p>
11349 <p>Only unused effect instances can be added to the effect
11350 chain. Trying to add an effect instance which is already in
11351 use somewhere in the audio signal path of the sampler will
11352 result in an error.
11353 </p>
11354 <p>Possible Answers:
11355 </p>
11356 <p>
11357 </p>
11358 <blockquote class="text">
11359 <p>"OK" -
11360 </p>
11361 <blockquote class="text">
11362 <p>in case the effect instance was
11363 added successfully to the chain
11364 </p>
11365 </blockquote>
11366
11367
11368 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11369 </p>
11370 <blockquote class="text">
11371 <p>if the effect instance could not be added
11372 </p>
11373 </blockquote>
11374
11375
11376 </blockquote><p>
11377
11378 </p>
11379 <p>Examples:
11380 </p>
11381 <p>
11382 </p>
11383 <blockquote class="text">
11384 <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11385 </p>
11386 <p>S: "OK"
11387 </p>
11388 </blockquote><p>
11389
11390 </p>
11391 <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11392 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11393 <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11394 Insert effect instance to a send effect chain</h3>
11395
11396 <p>The front-end can add an unused effect instance to a
11397 certain position of a send effect chain by sending the
11398 following command:
11399 </p>
11400 <p>
11401 </p>
11402 <blockquote class="text">
11403 <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11404 </p>
11405 </blockquote><p>
11406
11407 </p>
11408 <p>Where &lt;audio-device&gt; should be replaced by the
11409 numerical ID of the audio output device as given by the
11410 <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>
11411 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>
11412 command, &lt;effect-chain&gt; by the numerical ID as
11413 returned by the
11414 <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>
11415 or
11416 <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>
11417 command, &lt;effect-instance&gt; as returned by the
11418 <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
11419 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11420 command and &lt;chain-pos&gt; the exact position of the
11421 effect chain where the supplied effect shall be inserted
11422 to.
11423 </p>
11424 <p>Only unused effect instances can be added to the effect
11425 chain. Trying to add an effect instance which is already in
11426 use somewhere in the audio signal path of the sampler will
11427 result in an error.
11428 </p>
11429 <p>Possible Answers:
11430 </p>
11431 <p>
11432 </p>
11433 <blockquote class="text">
11434 <p>"OK" -
11435 </p>
11436 <blockquote class="text">
11437 <p>in case the effect instance was
11438 added successfully to the chain
11439 </p>
11440 </blockquote>
11441
11442
11443 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11444 </p>
11445 <blockquote class="text">
11446 <p>if the effect instance could not be added
11447 </p>
11448 </blockquote>
11449
11450
11451 </blockquote><p>
11452
11453 </p>
11454 <p>Examples:
11455 </p>
11456 <p>
11457 </p>
11458 <blockquote class="text">
11459 <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11460 </p>
11461 <p>S: "OK"
11462 </p>
11463 </blockquote><p>
11464
11465 </p>
11466 <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11467 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11468 <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11469 Remove effect instance from send effect chain</h3>
11470
11471 <p>The front-end can remove an effect instance from a
11472 certain position of a send effect chain by sending the
11473 following command:
11474 </p>
11475 <p>
11476 </p>
11477 <blockquote class="text">
11478 <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11479 </p>
11480 </blockquote><p>
11481
11482 </p>
11483 <p>Where &lt;audio-device&gt; should be replaced by the
11484 numerical ID of the audio output device as given by the
11485 <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>
11486 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>
11487 command, &lt;effect-chain&gt; by the numerical ID as
11488 returned by the
11489 <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>
11490 or
11491 <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>
11492 command and &lt;chain-pos&gt; the exact position of the
11493 effect instance to be removed from the effect chain.
11494 </p>
11495 <p>Possible Answers:
11496 </p>
11497 <p>
11498 </p>
11499 <blockquote class="text">
11500 <p>"OK" -
11501 </p>
11502 <blockquote class="text">
11503 <p>in case the effect instance was
11504 removed successfully
11505 </p>
11506 </blockquote>
11507
11508
11509 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11510 </p>
11511 <blockquote class="text">
11512 <p>if the effect instance could not be removed
11513 </p>
11514 </blockquote>
11515
11516
11517 </blockquote><p>
11518
11519 </p>
11520 <p>Examples:
11521 </p>
11522 <p>
11523 </p>
11524 <blockquote class="text">
11525 <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11526 </p>
11527 <p>S: "OK"
11528 </p>
11529 </blockquote><p>
11530
11531 </p>
11532 <a name="command_syntax"></a><br /><hr />
11533 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11534 <a name="rfc.section.7"></a><h3>7.&nbsp;
11535 Command Syntax</h3>
11536
11537 <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>
11538 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>)
11539 where applicable.
11540
11541 </p>
11542 <p>input =
11543 </p>
11544 <blockquote class="text">
11545 <p>line LF
11546
11547 </p>
11548 <p>/ line CR LF
11549
11550 </p>
11551 </blockquote><p>
11552
11553 </p>
11554 <p>line =
11555 </p>
11556 <blockquote class="text">
11557 <p>/* epsilon (empty line ignored) */
11558
11559 </p>
11560 <p>/ comment
11561
11562 </p>
11563 <p>/ command
11564
11565 </p>
11566 <p>/ error
11567
11568 </p>
11569 </blockquote><p>
11570
11571 </p>
11572 <p>comment =
11573 </p>
11574 <blockquote class="text">
11575 <p>'#'
11576
11577 </p>
11578 <p>/ comment '#'
11579
11580 </p>
11581 <p>/ comment SP
11582
11583 </p>
11584 <p>/ comment number
11585
11586 </p>
11587 <p>/ comment string
11588
11589 </p>
11590 </blockquote><p>
11591
11592 </p>
11593 <p>command =
11594 </p>
11595 <blockquote class="text">
11596 <p>ADD SP add_instruction
11597
11598 </p>
11599 <p>/ MAP SP map_instruction
11600
11601 </p>
11602 <p>/ UNMAP SP unmap_instruction
11603
11604 </p>
11605 <p>/ GET SP get_instruction
11606
11607 </p>
11608 <p>/ CREATE SP create_instruction
11609
11610 </p>
11611 <p>/ DESTROY SP destroy_instruction
11612
11613 </p>
11614 <p>/ LIST SP list_instruction
11615
11616 </p>
11617 <p>/ LOAD SP load_instruction
11618
11619 </p>
11620 <p>/ REMOVE SP remove_instruction
11621
11622 </p>
11623 <p>/ SET SP set_instruction
11624
11625 </p>
11626 <p>/ SUBSCRIBE SP subscribe_event
11627
11628 </p>
11629 <p>/ UNSUBSCRIBE SP unsubscribe_event
11630
11631 </p>
11632 <p>/ RESET SP reset_instruction
11633
11634 </p>
11635 <p>/ CLEAR SP clear_instruction
11636
11637 </p>
11638 <p>/ FIND SP find_instruction
11639
11640 </p>
11641 <p>/ MOVE SP move_instruction
11642
11643 </p>
11644 <p>/ COPY SP copy_instruction
11645
11646 </p>
11647 <p>/ EDIT SP edit_instruction
11648
11649 </p>
11650 <p>/ FORMAT SP format_instruction
11651
11652 </p>
11653 <p>/ SEND SP send_instruction
11654
11655 </p>
11656 <p>/ APPEND SP append_instruction
11657
11658 </p>
11659 <p>/ INSERT SP insert_instruction
11660
11661 </p>
11662 <p>/ RESET
11663
11664 </p>
11665 <p>/ QUIT
11666
11667 </p>
11668 </blockquote><p>
11669
11670 </p>
11671 <p>add_instruction =
11672 </p>
11673 <blockquote class="text">
11674 <p>CHANNEL
11675
11676 </p>
11677 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11678
11679 </p>
11680 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
11681
11682 </p>
11683 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11684
11685 </p>
11686 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
11687
11688 </p>
11689 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11690
11691 </p>
11692 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
11693
11694 </p>
11695 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
11696
11697 </p>
11698 <p>/ DB_INSTRUMENTS SP db_path SP filename
11699
11700 </p>
11701 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
11702
11703 </p>
11704 <p>/ MIDI_INSTRUMENT_MAP
11705
11706 </p>
11707 <p>/ MIDI_INSTRUMENT_MAP SP map_name
11708
11709 </p>
11710 <p>/ SEND_EFFECT_CHAIN SP device_index
11711
11712 </p>
11713 </blockquote><p>
11714
11715 </p>
11716 <p>subscribe_event =
11717 </p>
11718 <blockquote class="text">
11719 <p>AUDIO_OUTPUT_DEVICE_COUNT
11720
11721 </p>
11722 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11723
11724 </p>
11725 <p>/ MIDI_INPUT_DEVICE_COUNT
11726
11727 </p>
11728 <p>/ MIDI_INPUT_DEVICE_INFO
11729
11730 </p>
11731 <p>/ CHANNEL_COUNT
11732
11733 </p>
11734 <p>/ CHANNEL_MIDI
11735
11736 </p>
11737 <p>/ DEVICE_MIDI
11738
11739 </p>
11740 <p>/ VOICE_COUNT
11741
11742 </p>
11743 <p>/ STREAM_COUNT
11744
11745 </p>
11746 <p>/ BUFFER_FILL
11747
11748 </p>
11749 <p>/ CHANNEL_INFO
11750
11751 </p>
11752 <p>/ FX_SEND_COUNT
11753
11754 </p>
11755 <p>/ FX_SEND_INFO
11756
11757 </p>
11758 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11759
11760 </p>
11761 <p>/ MIDI_INSTRUMENT_MAP_INFO
11762
11763 </p>
11764 <p>/ MIDI_INSTRUMENT_COUNT
11765
11766 </p>
11767 <p>/ MIDI_INSTRUMENT_INFO
11768
11769 </p>
11770 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11771
11772 </p>
11773 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11774
11775 </p>
11776 <p>/ DB_INSTRUMENT_COUNT
11777
11778 </p>
11779 <p>/ DB_INSTRUMENT_INFO
11780
11781 </p>
11782 <p>/ DB_INSTRUMENTS_JOB_INFO
11783
11784 </p>
11785 <p>/ MISCELLANEOUS
11786
11787 </p>
11788 <p>/ TOTAL_STREAM_COUNT
11789
11790 </p>
11791 <p>/ TOTAL_VOICE_COUNT
11792
11793 </p>
11794 <p>/ GLOBAL_INFO
11795
11796 </p>
11797 <p>/ EFFECT_INSTANCE_COUNT
11798
11799 </p>
11800 <p>/ EFFECT_INSTANCE_INFO
11801
11802 </p>
11803 <p>/ SEND_EFFECT_CHAIN_COUNT
11804
11805 </p>
11806 <p>/ SEND_EFFECT_CHAIN_INFO
11807
11808 </p>
11809 </blockquote><p>
11810
11811 </p>
11812 <p>unsubscribe_event =
11813 </p>
11814 <blockquote class="text">
11815 <p>AUDIO_OUTPUT_DEVICE_COUNT
11816
11817 </p>
11818 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11819
11820 </p>
11821 <p>/ MIDI_INPUT_DEVICE_COUNT
11822
11823 </p>
11824 <p>/ MIDI_INPUT_DEVICE_INFO
11825
11826 </p>
11827 <p>/ CHANNEL_COUNT
11828
11829 </p>
11830 <p>/ CHANNEL_MIDI
11831
11832 </p>
11833 <p>/ DEVICE_MIDI
11834
11835 </p>
11836 <p>/ VOICE_COUNT
11837
11838 </p>
11839 <p>/ STREAM_COUNT
11840
11841 </p>
11842 <p>/ BUFFER_FILL
11843
11844 </p>
11845 <p>/ CHANNEL_INFO
11846
11847 </p>
11848 <p>/ FX_SEND_COUNT
11849
11850 </p>
11851 <p>/ FX_SEND_INFO
11852
11853 </p>
11854 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11855
11856 </p>
11857 <p>/ MIDI_INSTRUMENT_MAP_INFO
11858
11859 </p>
11860 <p>/ MIDI_INSTRUMENT_COUNT
11861
11862 </p>
11863 <p>/ MIDI_INSTRUMENT_INFO
11864
11865 </p>
11866 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11867
11868 </p>
11869 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11870
11871 </p>
11872 <p>/ DB_INSTRUMENT_COUNT
11873
11874 </p>
11875 <p>/ DB_INSTRUMENT_INFO
11876
11877 </p>
11878 <p>/ DB_INSTRUMENTS_JOB_INFO
11879
11880 </p>
11881 <p>/ MISCELLANEOUS
11882
11883 </p>
11884 <p>/ TOTAL_STREAM_COUNT
11885
11886 </p>
11887 <p>/ TOTAL_VOICE_COUNT
11888
11889 </p>
11890 <p>/ GLOBAL_INFO
11891
11892 </p>
11893 <p>/ EFFECT_INSTANCE_COUNT
11894
11895 </p>
11896 <p>/ EFFECT_INSTANCE_INFO
11897
11898 </p>
11899 <p>/ SEND_EFFECT_CHAIN_COUNT
11900
11901 </p>
11902 <p>/ SEND_EFFECT_CHAIN_INFO
11903
11904 </p>
11905 </blockquote><p>
11906
11907 </p>
11908 <p>map_instruction =
11909 </p>
11910 <blockquote class="text">
11911 <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
11912
11913 </p>
11914 <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
11915
11916 </p>
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 SP entry_name
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 SP entry_name
11921
11922 </p>
11923 </blockquote><p>
11924
11925 </p>
11926 <p>unmap_instruction =
11927 </p>
11928 <blockquote class="text">
11929 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
11930
11931 </p>
11932 </blockquote><p>
11933
11934 </p>
11935 <p>remove_instruction =
11936 </p>
11937 <blockquote class="text">
11938 <p>CHANNEL SP sampler_channel
11939
11940 </p>
11941 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
11942
11943 </p>
11944 <p>/ MIDI_INSTRUMENT_MAP SP ALL
11945
11946 </p>
11947 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
11948
11949 </p>
11950 <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
11951
11952 </p>
11953 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
11954
11955 </p>
11956 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
11957
11958 </p>
11959 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11960
11961 </p>
11962 <p>/ DB_INSTRUMENT SP db_path
11963
11964 </p>
11965 </blockquote><p>
11966
11967 </p>
11968 <p>get_instruction =
11969 </p>
11970 <blockquote class="text">
11971 <p>AVAILABLE_ENGINES
11972
11973 </p>
11974 <p>/ AVAILABLE_EFFECTS
11975
11976 </p>
11977 <p>/ EFFECT_INSTANCES
11978
11979 </p>
11980 <p>/ EFFECT SP INFO SP effect_index
11981
11982 </p>
11983 <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
11984
11985 </p>
11986 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
11987
11988 </p>
11989 <p>/ SEND_EFFECT_CHAINS SP device_index
11990
11991 </p>
11992 <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
11993
11994 </p>
11995 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
11996
11997 </p>
11998 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
11999
12000 </p>
12001 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12002
12003 </p>
12004 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12005
12006 </p>
12007 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12008
12009 </p>
12010 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12011
12012 </p>
12013 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12014
12015 </p>
12016 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12017
12018 </p>
12019 <p>/ AUDIO_OUTPUT_DEVICES
12020
12021 </p>
12022 <p>/ MIDI_INPUT_DEVICES
12023
12024 </p>
12025 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12026
12027 </p>
12028 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12029
12030 </p>
12031 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12032
12033 </p>
12034 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12035
12036 </p>
12037 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12038
12039 </p>
12040 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12041
12042 </p>
12043 <p>/ CHANNELS
12044
12045 </p>
12046 <p>/ CHANNEL SP INFO SP sampler_channel
12047
12048 </p>
12049 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12050
12051 </p>
12052 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12053
12054 </p>
12055 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12056
12057 </p>
12058 <p>/ ENGINE SP INFO SP engine_name
12059
12060 </p>
12061 <p>/ SERVER SP INFO
12062
12063 </p>
12064 <p>/ TOTAL_STREAM_COUNT
12065
12066 </p>
12067 <p>/ TOTAL_VOICE_COUNT
12068
12069 </p>
12070 <p>/ TOTAL_VOICE_COUNT_MAX
12071
12072 </p>
12073 <p>/ MIDI_INSTRUMENTS SP midi_map
12074
12075 </p>
12076 <p>/ MIDI_INSTRUMENTS SP ALL
12077
12078 </p>
12079 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12080
12081 </p>
12082 <p>/ MIDI_INSTRUMENT_MAPS
12083
12084 </p>
12085 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12086
12087 </p>
12088 <p>/ FX_SENDS SP sampler_channel
12089
12090 </p>
12091 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12092
12093 </p>
12094 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12095
12096 </p>
12097 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12098
12099 </p>
12100 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12101
12102 </p>
12103 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12104
12105 </p>
12106 <p>/ DB_INSTRUMENTS SP db_path
12107
12108 </p>
12109 <p>/ DB_INSTRUMENT SP INFO SP db_path
12110
12111 </p>
12112 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12113
12114 </p>
12115 <p>/ VOLUME
12116
12117 </p>
12118 <p>/ VOICES
12119
12120 </p>
12121 <p>/ STREAMS
12122
12123 </p>
12124 <p>/ FILE SP INSTRUMENTS SP filename
12125
12126 </p>
12127 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12128
12129 </p>
12130 </blockquote><p>
12131
12132 </p>
12133 <p>set_instruction =
12134 </p>
12135 <blockquote class="text">
12136 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12137
12138 </p>
12139 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12140
12141 </p>
12142 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12143
12144 </p>
12145 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12146
12147 </p>
12148 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12149
12150 </p>
12151 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12152
12153 </p>
12154 <p>/ CHANNEL SP set_chan_instruction
12155
12156 </p>
12157 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12158
12159 </p>
12160 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12161
12162 </p>
12163 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12164
12165 </p>
12166 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12167
12168 </p>
12169 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12170
12171 </p>
12172 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12173
12174 </p>
12175 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12176
12177 </p>
12178 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12179
12180 </p>
12181 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12182
12183 </p>
12184 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12185
12186 </p>
12187 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12188
12189 </p>
12190 <p>/ ECHO SP boolean
12191
12192 </p>
12193 <p>/ VOLUME SP volume_value
12194
12195 </p>
12196 <p>/ VOICES SP number
12197
12198 </p>
12199 <p>/ STREAMS SP number
12200
12201 </p>
12202 </blockquote><p>
12203
12204 </p>
12205 <p>create_instruction =
12206 </p>
12207 <blockquote class="text">
12208 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12209
12210 </p>
12211 <p>/ AUDIO_OUTPUT_DEVICE SP string
12212
12213 </p>
12214 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12215
12216 </p>
12217 <p>/ MIDI_INPUT_DEVICE SP string
12218
12219 </p>
12220 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12221
12222 </p>
12223 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12224
12225 </p>
12226 <p>/ EFFECT_INSTANCE SP effect_index
12227
12228 </p>
12229 <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12230
12231 </p>
12232 </blockquote><p>
12233
12234 </p>
12235 <p>reset_instruction =
12236 </p>
12237 <blockquote class="text">
12238 <p>CHANNEL SP sampler_channel
12239
12240 </p>
12241 </blockquote><p>
12242
12243 </p>
12244 <p>clear_instruction =
12245 </p>
12246 <blockquote class="text">
12247 <p>MIDI_INSTRUMENTS SP midi_map
12248
12249 </p>
12250 <p>/ MIDI_INSTRUMENTS SP ALL
12251
12252 </p>
12253 </blockquote><p>
12254
12255 </p>
12256 <p>find_instruction =
12257 </p>
12258 <blockquote class="text">
12259 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12260
12261 </p>
12262 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12263
12264 </p>
12265 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12266
12267 </p>
12268 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12269
12270 </p>
12271 <p>/ LOST SP DB_INSTRUMENT_FILES
12272
12273 </p>
12274 </blockquote><p>
12275
12276 </p>
12277 <p>move_instruction =
12278 </p>
12279 <blockquote class="text">
12280 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12281
12282 </p>
12283 <p>/ DB_INSTRUMENT SP db_path SP db_path
12284
12285 </p>
12286 </blockquote><p>
12287
12288 </p>
12289 <p>copy_instruction =
12290 </p>
12291 <blockquote class="text">
12292 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12293
12294 </p>
12295 <p>/ DB_INSTRUMENT SP db_path SP db_path
12296
12297 </p>
12298 </blockquote><p>
12299
12300 </p>
12301 <p>destroy_instruction =
12302 </p>
12303 <blockquote class="text">
12304 <p>AUDIO_OUTPUT_DEVICE SP number
12305
12306 </p>
12307 <p>/ MIDI_INPUT_DEVICE SP number
12308
12309 </p>
12310 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12311
12312 </p>
12313 <p>/ EFFECT_INSTANCE SP number
12314
12315 </p>
12316 </blockquote><p>
12317
12318 </p>
12319 <p>load_instruction =
12320 </p>
12321 <blockquote class="text">
12322 <p>INSTRUMENT SP load_instr_args
12323
12324 </p>
12325 <p>/ ENGINE SP load_engine_args
12326
12327 </p>
12328 </blockquote><p>
12329
12330 </p>
12331 <p>append_instruction =
12332 </p>
12333 <blockquote class="text">
12334 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12335
12336 </p>
12337 </blockquote><p>
12338
12339 </p>
12340 <p>insert_instruction =
12341 </p>
12342 <blockquote class="text">
12343 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12344
12345 </p>
12346 </blockquote><p>
12347
12348 </p>
12349 <p>set_chan_instruction =
12350 </p>
12351 <blockquote class="text">
12352 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12353
12354 </p>
12355 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12356
12357 </p>
12358 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12359
12360 </p>
12361 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12362
12363 </p>
12364 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12365
12366 </p>
12367 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12368
12369 </p>
12370 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12371
12372 </p>
12373 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12374
12375 </p>
12376 <p>/ VOLUME SP sampler_channel SP volume_value
12377
12378 </p>
12379 <p>/ MUTE SP sampler_channel SP boolean
12380
12381 </p>
12382 <p>/ SOLO SP sampler_channel SP boolean
12383
12384 </p>
12385 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12386
12387 </p>
12388 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12389
12390 </p>
12391 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12392
12393 </p>
12394 </blockquote><p>
12395
12396 </p>
12397 <p>edit_instruction =
12398 </p>
12399 <blockquote class="text">
12400 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12401
12402 </p>
12403 </blockquote><p>
12404
12405 </p>
12406 <p>format_instruction =
12407 </p>
12408 <blockquote class="text">
12409 <p>INSTRUMENTS_DB
12410
12411 </p>
12412 </blockquote><p>
12413
12414 </p>
12415 <p>modal_arg =
12416 </p>
12417 <blockquote class="text">
12418 <p>/* epsilon (empty argument) */
12419
12420 </p>
12421 <p>/ NON_MODAL SP
12422
12423 </p>
12424 </blockquote><p>
12425
12426 </p>
12427 <p>key_val_list =
12428 </p>
12429 <blockquote class="text">
12430 <p>string '=' param_val_list
12431
12432 </p>
12433 <p>/ key_val_list SP string '=' param_val_list
12434
12435 </p>
12436 </blockquote><p>
12437
12438 </p>
12439 <p>buffer_size_type =
12440 </p>
12441 <blockquote class="text">
12442 <p>BYTES
12443
12444 </p>
12445 <p>/ PERCENTAGE
12446
12447 </p>
12448 </blockquote><p>
12449
12450 </p>
12451 <p>list_instruction =
12452 </p>
12453 <blockquote class="text">
12454 <p>AUDIO_OUTPUT_DEVICES
12455
12456 </p>
12457 <p>/ MIDI_INPUT_DEVICES
12458
12459 </p>
12460 <p>/ CHANNELS
12461
12462 </p>
12463 <p>/ AVAILABLE_ENGINES
12464
12465 </p>
12466 <p>/ AVAILABLE_EFFECTS
12467
12468 </p>
12469 <p>/ EFFECT_INSTANCES
12470
12471 </p>
12472 <p>/ SEND_EFFECT_CHAINS SP number
12473
12474 </p>
12475 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12476
12477 </p>
12478 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12479
12480 </p>
12481 <p>/ MIDI_INSTRUMENTS SP midi_map
12482
12483 </p>
12484 <p>/ MIDI_INSTRUMENTS SP ALL
12485
12486 </p>
12487 <p>/ MIDI_INSTRUMENT_MAPS
12488
12489 </p>
12490 <p>/ FX_SENDS SP sampler_channel
12491
12492 </p>
12493 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12494
12495 </p>
12496 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12497
12498 </p>
12499 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12500
12501 </p>
12502 <p>/ DB_INSTRUMENTS SP db_path
12503
12504 </p>
12505 <p>/ FILE SP INSTRUMENTS SP filename
12506
12507 </p>
12508 </blockquote><p>
12509
12510 </p>
12511 <p>send_instruction =
12512 </p>
12513 <blockquote class="text">
12514 <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12515
12516 </p>
12517 </blockquote><p>
12518
12519 </p>
12520 <p>load_instr_args =
12521 </p>
12522 <blockquote class="text">
12523 <p>filename SP instrument_index SP sampler_channel
12524
12525 </p>
12526 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12527
12528 </p>
12529 </blockquote><p>
12530
12531 </p>
12532 <p>load_engine_args =
12533 </p>
12534 <blockquote class="text">
12535 <p>engine_name SP sampler_channel
12536
12537 </p>
12538 </blockquote><p>
12539
12540 </p>
12541 <p>instr_load_mode =
12542 </p>
12543 <blockquote class="text">
12544 <p>ON_DEMAND
12545
12546 </p>
12547 <p>/ ON_DEMAND_HOLD
12548
12549 </p>
12550 <p>/ PERSISTENT
12551
12552 </p>
12553 </blockquote><p>
12554
12555 </p>
12556 <p>effect_instance =
12557 </p>
12558 <blockquote class="text">
12559 <p>number
12560
12561 </p>
12562 </blockquote><p>
12563
12564 </p>
12565 <p>device_index =
12566 </p>
12567 <blockquote class="text">
12568 <p>number
12569
12570 </p>
12571 </blockquote><p>
12572
12573 </p>
12574 <p>audio_channel_index =
12575 </p>
12576 <blockquote class="text">
12577 <p>number
12578
12579 </p>
12580 </blockquote><p>
12581
12582 </p>
12583 <p>audio_output_type_name =
12584 </p>
12585 <blockquote class="text">
12586 <p>string
12587
12588 </p>
12589 </blockquote><p>
12590
12591 </p>
12592 <p>midi_input_port_index =
12593 </p>
12594 <blockquote class="text">
12595 <p>number
12596
12597 </p>
12598 </blockquote><p>
12599
12600 </p>
12601 <p>midi_input_channel_index =
12602 </p>
12603 <blockquote class="text">
12604 <p>number
12605
12606 </p>
12607 <p>/ ALL
12608
12609 </p>
12610 </blockquote><p>
12611
12612 </p>
12613 <p>midi_input_type_name =
12614 </p>
12615 <blockquote class="text">
12616 <p>string
12617
12618 </p>
12619 </blockquote><p>
12620
12621 </p>
12622 <p>midi_map =
12623 </p>
12624 <blockquote class="text">
12625 <p>number
12626
12627 </p>
12628 </blockquote><p>
12629
12630 </p>
12631 <p>midi_bank =
12632 </p>
12633 <blockquote class="text">
12634 <p>number
12635
12636 </p>
12637 </blockquote><p>
12638
12639 </p>
12640 <p>midi_prog =
12641 </p>
12642 <blockquote class="text">
12643 <p>number
12644
12645 </p>
12646 </blockquote><p>
12647
12648 </p>
12649 <p>midi_ctrl =
12650 </p>
12651 <blockquote class="text">
12652 <p>number
12653
12654 </p>
12655 </blockquote><p>
12656
12657 </p>
12658 <p>volume_value =
12659 </p>
12660 <blockquote class="text">
12661 <p>dotnum
12662
12663 </p>
12664 <p>/ number
12665
12666 </p>
12667 </blockquote><p>
12668
12669 </p>
12670 <p>control_value =
12671 </p>
12672 <blockquote class="text">
12673 <p>real
12674
12675 </p>
12676 </blockquote><p>
12677
12678 </p>
12679 <p>sampler_channel =
12680 </p>
12681 <blockquote class="text">
12682 <p>number
12683
12684 </p>
12685 </blockquote><p>
12686
12687 </p>
12688 <p>instrument_index =
12689 </p>
12690 <blockquote class="text">
12691 <p>number
12692
12693 </p>
12694 </blockquote><p>
12695
12696 </p>
12697 <p>fx_send_id =
12698 </p>
12699 <blockquote class="text">
12700 <p>number
12701
12702 </p>
12703 </blockquote><p>
12704
12705 </p>
12706 <p>engine_name =
12707 </p>
12708 <blockquote class="text">
12709 <p>string
12710
12711 </p>
12712 </blockquote><p>
12713
12714 </p>
12715 <p>filename =
12716 </p>
12717 <blockquote class="text">
12718 <p>path
12719
12720 </p>
12721 </blockquote><p>
12722
12723 </p>
12724 <p>db_path =
12725 </p>
12726 <blockquote class="text">
12727 <p>path
12728
12729 </p>
12730 </blockquote><p>
12731
12732 </p>
12733 <p>map_name =
12734 </p>
12735 <blockquote class="text">
12736 <p>stringval_escaped
12737
12738 </p>
12739 </blockquote><p>
12740
12741 </p>
12742 <p>entry_name =
12743 </p>
12744 <blockquote class="text">
12745 <p>stringval_escaped
12746
12747 </p>
12748 </blockquote><p>
12749
12750 </p>
12751 <p>fx_send_name =
12752 </p>
12753 <blockquote class="text">
12754 <p>stringval_escaped
12755
12756 </p>
12757 </blockquote><p>
12758
12759 </p>
12760 <p>effect_name =
12761 </p>
12762 <blockquote class="text">
12763 <p>stringval_escaped
12764
12765 </p>
12766 </blockquote><p>
12767
12768 </p>
12769 <p>effect_index =
12770 </p>
12771 <blockquote class="text">
12772 <p>number
12773
12774 </p>
12775 </blockquote><p>
12776
12777 </p>
12778 <p>effect_chain =
12779 </p>
12780 <blockquote class="text">
12781 <p>number
12782
12783 </p>
12784 </blockquote><p>
12785
12786 </p>
12787 <p>chain_pos =
12788 </p>
12789 <blockquote class="text">
12790 <p>number
12791
12792 </p>
12793 </blockquote><p>
12794
12795 </p>
12796 <p>input_control =
12797 </p>
12798 <blockquote class="text">
12799 <p>number
12800
12801 </p>
12802 </blockquote><p>
12803
12804 </p>
12805 <p>param_val_list =
12806 </p>
12807 <blockquote class="text">
12808 <p>param_val
12809
12810 </p>
12811 <p>/ param_val_list','param_val
12812
12813 </p>
12814 </blockquote><p>
12815
12816 </p>
12817 <p>param_val =
12818 </p>
12819 <blockquote class="text">
12820 <p>string
12821
12822 </p>
12823 <p>/ stringval
12824
12825 </p>
12826 <p>/ number
12827
12828 </p>
12829 <p>/ dotnum
12830
12831 </p>
12832 </blockquote><p>
12833
12834 </p>
12835 <p>query_val_list =
12836 </p>
12837 <blockquote class="text">
12838 <p>string '=' query_val
12839
12840 </p>
12841 <p>/ query_val_list SP string '=' query_val
12842
12843 </p>
12844 </blockquote><p>
12845
12846 </p>
12847 <p>query_val =
12848 </p>
12849 <blockquote class="text">
12850 <p>text_escaped
12851
12852 </p>
12853 <p>/ stringval_escaped
12854
12855 </p>
12856 </blockquote><p>
12857
12858 </p>
12859 <p>scan_mode =
12860 </p>
12861 <blockquote class="text">
12862 <p>RECURSIVE
12863
12864 </p>
12865 <p>/ NON_RECURSIVE
12866
12867 </p>
12868 <p>/ FLAT
12869
12870 </p>
12871 </blockquote><p>
12872
12873 </p>
12874 <p>effect_system =
12875 </p>
12876 <blockquote class="text">
12877 <p>string
12878
12879 </p>
12880 </blockquote><p>
12881
12882 </p>
12883 <p>module =
12884 </p>
12885 <blockquote class="text">
12886 <p>filename
12887
12888 </p>
12889 </blockquote><p>
12890
12891 </p>
12892 <a name="character_set"></a><br /><hr />
12893 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
12894 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
12895 Character Set and Escape Sequences</h3>
12896
12897 <p>Older versions of this protocol up to and including v1.1 only
12898 supported the standard ASCII character set (ASCII code 0 - 127)
12899 <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
12900 however support the Extended ASCII character set (ASCII code
12901 0 - 255). The same group of younger protocols also support
12902 escape sequences, but only for certain, explicitly declared
12903 parts of the protocol. The supported escape sequences are
12904 defined as follows:
12905 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
12906 <col align="left"><col align="left">
12907 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
12908 <tr>
12909 <td align="left">\n</td>
12910 <td align="left">new line</td>
12911 </tr>
12912 <tr>
12913 <td align="left">\r</td>
12914 <td align="left">carriage return</td>
12915 </tr>
12916 <tr>
12917 <td align="left">\f</td>
12918 <td align="left">form feed</td>
12919 </tr>
12920 <tr>
12921 <td align="left">\t</td>
12922 <td align="left">horizontal tab</td>
12923 </tr>
12924 <tr>
12925 <td align="left">\v</td>
12926 <td align="left">vertical tab</td>
12927 </tr>
12928 <tr>
12929 <td align="left">\'</td>
12930 <td align="left">apostrophe</td>
12931 </tr>
12932 <tr>
12933 <td align="left">\"</td>
12934 <td align="left">quotation mark</td>
12935 </tr>
12936 <tr>
12937 <td align="left">\\</td>
12938 <td align="left">backslash</td>
12939 </tr>
12940 <tr>
12941 <td align="left">\OOO</td>
12942 <td align="left">three digit octal ASCII code of the character</td>
12943 </tr>
12944 <tr>
12945 <td align="left">\xHH</td>
12946 <td align="left">two digit hex ASCII code of the character</td>
12947 </tr>
12948 </table>
12949 <br clear="all" />
12950
12951 <p>Notice: due to the transition of certain parts of the
12952 protocol which now support escape sequences, a slight backward
12953 incompatibility to protocols version v1.1 and younger has been
12954 introduced. The only difference is that in parts of the protocol
12955 where escape characters are now supported, a backslash characters
12956 MUST be escaped as well (that is as double backslash), whereas
12957 in the old versions a single backslash was sufficient.
12958 </p>
12959 <p>The following LSCP commands support escape sequences as part
12960 of their filename / path based arguments and / or may contain
12961 a filename / path with escape sequences in their response:
12962 </p>
12963 <blockquote class="text">
12964 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
12965 </p>
12966 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
12967 </p>
12968 <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>
12969 </p>
12970 <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>
12971 </p>
12972 <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>
12973 </p>
12974 <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>
12975 </p>
12976 <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>
12977 </p>
12978 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
12979 </p>
12980 <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>
12981 </p>
12982 <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>
12983 </p>
12984 <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>
12985 </p>
12986 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
12987 </p>
12988 <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>
12989 </p>
12990 <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>
12991 </p>
12992 <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>
12993 </p>
12994 <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>
12995 </p>
12996 <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>
12997 </p>
12998 <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>
12999 </p>
13000 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13001 </p>
13002 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13003 </p>
13004 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13005 </p>
13006 <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>
13007 </p>
13008 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13009 </p>
13010 <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>
13011 </p>
13012 <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>
13013 </p>
13014 <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>
13015 </p>
13016 <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>
13017 </p>
13018 <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>
13019 </p>
13020 <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>
13021 </p>
13022 <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>
13023 </p>
13024 <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>
13025 </p>
13026 <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>
13027 </p>
13028 </blockquote><p>
13029 Note that the forward slash character ('/') has a special meaning in
13030 filename / path based arguments: it acts as separator of the nodes in
13031 the path, thus if a directory- or filename includes a forward slash
13032 (not intended as path node separator), you MUST escape that slash
13033 either with the respective hex escape sequence ("\x2f") or with the
13034 respective octal escape sequence ("\057").
13035
13036 </p>
13037 <p>
13038 Note for Windows: file path arguments in LSCP are expected
13039 to use forward slashes as directory node separator similar
13040 to Unix based operating systems. In contrast to Unix however
13041 a Windows typical drive character is expected to be
13042 prefixed to the path. That is an original Windows file path
13043 like "D:\Sounds\My.gig" would become in LSCP:
13044 "D:/Sounds/My.gig".
13045
13046 </p>
13047 <p>
13048 The following LSCP commands even support escape sequences as
13049 part of at least one of their text-based arguments (i.e. entity name,
13050 description) and / or may contain escape sequences in at least one of
13051 their text-based fields in their response:
13052 </p>
13053 <blockquote class="text">
13054 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
13055 </p>
13056 <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>
13057 </p>
13058 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13059 </p>
13060 <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>
13061 </p>
13062 <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>
13063 </p>
13064 <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>
13065 </p>
13066 <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>
13067 </p>
13068 <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>
13069 </p>
13070 <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>
13071 </p>
13072 <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>
13073 </p>
13074 <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>
13075 </p>
13076 <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>
13077 </p>
13078 <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>
13079 </p>
13080 <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>
13081 </p>
13082 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13083 </p>
13084 <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>
13085 </p>
13086 <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>
13087 </p>
13088 <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>
13089 </p>
13090 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13091 </p>
13092 <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>
13093 </p>
13094 <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>
13095 </p>
13096 <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>
13097 </p>
13098 </blockquote><p>
13099 Please note that these lists are manually maintained. If you
13100 find a command that also supports escape sequences we forgot to
13101 mention here, please report it!
13102
13103 </p>
13104 <a name="events"></a><br /><hr />
13105 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13106 <a name="rfc.section.8"></a><h3>8.&nbsp;
13107 Events</h3>
13108
13109 <p>This chapter will describe all currently defined events supported by LinuxSampler.
13110 </p>
13111 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13112 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13113 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13114 Number of audio output devices changed</h3>
13115
13116 <p>Client may want to be notified when the total number of audio output devices on the
13117 back-end changes by issuing the following command:
13118 </p>
13119 <p>
13120 </p>
13121 <blockquote class="text">
13122 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13123 </p>
13124 </blockquote><p>
13125
13126 </p>
13127 <p>Server will start sending the following notification messages:
13128 </p>
13129 <p>
13130 </p>
13131 <blockquote class="text">
13132 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13133 </p>
13134 </blockquote><p>
13135
13136 </p>
13137 <p>where &lt;devices&gt; will be replaced by the new number
13138 of audio output devices.
13139 </p>
13140 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13141 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13142 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13143 Audio output device's settings changed</h3>
13144
13145 <p>Client may want to be notified when changes were made to audio output devices on the
13146 back-end by issuing the following command:
13147 </p>
13148 <p>
13149 </p>
13150 <blockquote class="text">
13151 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13152 </p>
13153 </blockquote><p>
13154
13155 </p>
13156 <p>Server will start sending the following notification messages:
13157 </p>
13158 <p>
13159 </p>
13160 <blockquote class="text">
13161 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13162 </p>
13163 </blockquote><p>
13164
13165 </p>
13166 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13167 which settings has been changed. The front-end will have to send
13168 the respective command to actually get the audio output device info. Because these messages
13169 will be triggered by LSCP commands issued by other clients rather than real
13170 time events happening on the server, it is believed that an empty notification
13171 message is sufficient here.
13172 </p>
13173 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13174 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13175 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13176 Number of MIDI input devices changed</h3>
13177
13178 <p>Client may want to be notified when the total number of MIDI input devices on the
13179 back-end changes by issuing the following command:
13180 </p>
13181 <p>
13182 </p>
13183 <blockquote class="text">
13184 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13185 </p>
13186 </blockquote><p>
13187
13188 </p>
13189 <p>Server will start sending the following notification messages:
13190 </p>
13191 <p>
13192 </p>
13193 <blockquote class="text">
13194 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13195 </p>
13196 </blockquote><p>
13197
13198 </p>
13199 <p>where &lt;devices&gt; will be replaced by the new number
13200 of MIDI input devices.
13201 </p>
13202 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13203 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13204 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13205 MIDI input device's settings changed</h3>
13206
13207 <p>Client may want to be notified when changes were made to MIDI input devices on the
13208 back-end by issuing the following command:
13209 </p>
13210 <p>
13211 </p>
13212 <blockquote class="text">
13213 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13214 </p>
13215 </blockquote><p>
13216
13217 </p>
13218 <p>Server will start sending the following notification messages:
13219 </p>
13220 <p>
13221 </p>
13222 <blockquote class="text">
13223 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13224 </p>
13225 </blockquote><p>
13226
13227 </p>
13228 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13229 which settings has been changed. The front-end will have to send
13230 the respective command to actually get the MIDI input device info. Because these messages
13231 will be triggered by LSCP commands issued by other clients rather than real
13232 time events happening on the server, it is believed that an empty notification
13233 message is sufficient here.
13234 </p>
13235 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13236 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13237 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13238 Number of sampler channels changed</h3>
13239
13240 <p>Client may want to be notified when the total number of channels on the
13241 back-end changes by issuing the following command:
13242 </p>
13243 <p>
13244 </p>
13245 <blockquote class="text">
13246 <p>SUBSCRIBE CHANNEL_COUNT
13247 </p>
13248 </blockquote><p>
13249
13250 </p>
13251 <p>Server will start sending the following notification messages:
13252 </p>
13253 <p>
13254 </p>
13255 <blockquote class="text">
13256 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13257 </p>
13258 </blockquote><p>
13259
13260 </p>
13261 <p>where &lt;channels&gt; will be replaced by the new number
13262 of sampler channels.
13263 </p>
13264 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13265 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13266 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13267 MIDI data on a sampler channel arrived</h3>
13268
13269 <p>Client may want to be notified when MIDI data arrive on sampler channels on
13270 back-end side, by issuing the following command:
13271 </p>
13272 <p>
13273 </p>
13274 <blockquote class="text">
13275 <p>SUBSCRIBE CHANNEL_MIDI
13276 </p>
13277 </blockquote><p>
13278
13279 </p>
13280 <p>Server will start sending one of the the following notification messages:
13281 </p>
13282 <p>
13283 </p>
13284 <blockquote class="text">
13285 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13286 </p>
13287 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13288 </p>
13289 </blockquote><p>
13290
13291 </p>
13292 <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13293 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13294 0 .. 127, reflecting the analog meaning of the MIDI specification.
13295
13296 </p>
13297 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13298 delivered by this mechanism! With other words: events could be lost at any time!
13299 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13300 thread unaffected by this feature.
13301 </p>
13302 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13303 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13304 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13305 MIDI data on a MIDI input device arrived</h3>
13306
13307 <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13308 </p>
13309 <p>
13310 </p>
13311 <blockquote class="text">
13312 <p>SUBSCRIBE DEVICE_MIDI
13313 </p>
13314 </blockquote><p>
13315
13316 </p>
13317 <p>Server will start sending one of the the following notification messages:
13318 </p>
13319 <p>
13320 </p>
13321 <blockquote class="text">
13322 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13323 </p>
13324 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13325 </p>
13326 </blockquote><p>
13327
13328 </p>
13329 <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13330 by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13331 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13332 0 .. 127, reflecting the analog meaning of the MIDI specification.
13333
13334 </p>
13335 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13336 delivered by this mechanism! With other words: events could be lost at any time!
13337 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13338 thread unaffected by this feature.
13339 </p>
13340 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13341 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13342 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13343 Number of active voices changed</h3>
13344
13345 <p>Client may want to be notified when the number of voices on the
13346 back-end changes by issuing the following command:
13347 </p>
13348 <p>
13349 </p>
13350 <blockquote class="text">
13351 <p>SUBSCRIBE VOICE_COUNT
13352 </p>
13353 </blockquote><p>
13354
13355 </p>
13356 <p>Server will start sending the following notification messages:
13357 </p>
13358 <p>
13359 </p>
13360 <blockquote class="text">
13361 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13362 </p>
13363 </blockquote><p>
13364
13365 </p>
13366 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13367 voice count change occurred and &lt;voices&gt; by the new number of
13368 active voices on that channel.
13369 </p>
13370 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13371 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13372 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13373 Number of active disk streams changed</h3>
13374
13375 <p>Client may want to be notified when the number of streams on the back-end
13376 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13377 </p>
13378 <p>
13379 </p>
13380 <blockquote class="text">
13381 <p>SUBSCRIBE STREAM_COUNT
13382 </p>
13383 </blockquote><p>
13384
13385 </p>
13386 <p>Server will start sending the following notification messages:
13387 </p>
13388 <p>
13389 </p>
13390 <blockquote class="text">
13391 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13392 </p>
13393 </blockquote><p>
13394
13395 </p>
13396 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13397 stream count change occurred and &lt;streams&gt; by the new number of
13398 active disk streams on that channel.
13399 </p>
13400 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13401 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13402 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13403 Disk stream buffer fill state changed</h3>
13404
13405 <p>Client may want to be notified when the buffer fill state of a disk stream
13406 on the back-end changes by issuing the following command:
13407 </p>
13408 <p>
13409 </p>
13410 <blockquote class="text">
13411 <p>SUBSCRIBE BUFFER_FILL
13412 </p>
13413 </blockquote><p>
13414
13415 </p>
13416 <p>Server will start sending the following notification messages:
13417 </p>
13418 <p>
13419 </p>
13420 <blockquote class="text">
13421 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13422 </p>
13423 </blockquote><p>
13424
13425 </p>
13426 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13427 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13428 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>
13429 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.
13430 </p>
13431 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13432 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13433 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13434 Channel information changed</h3>
13435
13436 <p>Client may want to be notified when changes were made to sampler channels on the
13437 back-end by issuing the following command:
13438 </p>
13439 <p>
13440 </p>
13441 <blockquote class="text">
13442 <p>SUBSCRIBE CHANNEL_INFO
13443 </p>
13444 </blockquote><p>
13445
13446 </p>
13447 <p>Server will start sending the following notification messages:
13448 </p>
13449 <p>
13450 </p>
13451 <blockquote class="text">
13452 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13453 </p>
13454 </blockquote><p>
13455
13456 </p>
13457 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13458 channel info change occurred. The front-end will have to send
13459 the respective command to actually get the channel info. Because these messages
13460 will be triggered by LSCP commands issued by other clients rather than real
13461 time events happening on the server, it is believed that an empty notification
13462 message is sufficient here.
13463 </p>
13464 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13465 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13466 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13467 Number of effect sends changed</h3>
13468
13469 <p>Client may want to be notified when the number of effect sends on
13470 a particular sampler channel is changed by issuing the following command:
13471 </p>
13472 <p>
13473 </p>
13474 <blockquote class="text">
13475 <p>SUBSCRIBE FX_SEND_COUNT
13476 </p>
13477 </blockquote><p>
13478
13479 </p>
13480 <p>Server will start sending the following notification messages:
13481 </p>
13482 <p>
13483 </p>
13484 <blockquote class="text">
13485 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13486 </p>
13487 </blockquote><p>
13488
13489 </p>
13490 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13491 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13492 be replaced by the new number of effect sends on that channel.
13493 </p>
13494 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13495 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13496 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13497 Effect send information changed</h3>
13498
13499 <p>Client may want to be notified when changes were made to effect sends on a
13500 a particular sampler channel by issuing the following command:
13501 </p>
13502 <p>
13503 </p>
13504 <blockquote class="text">
13505 <p>SUBSCRIBE FX_SEND_INFO
13506 </p>
13507 </blockquote><p>
13508
13509 </p>
13510 <p>Server will start sending the following notification messages:
13511 </p>
13512 <p>
13513 </p>
13514 <blockquote class="text">
13515 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13516 </p>
13517 </blockquote><p>
13518
13519 </p>
13520 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13521 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13522 be replaced by the numerical ID of the changed effect send.
13523 </p>
13524 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13525 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13526 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13527 Total number of active voices changed</h3>
13528
13529 <p>Client may want to be notified when the total number of voices on the
13530 back-end changes by issuing the following command:
13531 </p>
13532 <p>
13533 </p>
13534 <blockquote class="text">
13535 <p>SUBSCRIBE TOTAL_VOICE_COUNT
13536 </p>
13537 </blockquote><p>
13538
13539 </p>
13540 <p>Server will start sending the following notification messages:
13541 </p>
13542 <p>
13543 </p>
13544 <blockquote class="text">
13545 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13546 </p>
13547 </blockquote><p>
13548
13549 </p>
13550 <p>where &lt;voices&gt; will be replaced by the new number of
13551 all currently active voices.
13552 </p>
13553 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13554 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13555 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13556 Total number of active disk streams changed</h3>
13557
13558 <p>Client may want to be notified when the total number of disk streams on the
13559 back-end changes by issuing the following command:
13560 </p>
13561 <p>
13562 </p>
13563 <blockquote class="text">
13564 <p>SUBSCRIBE TOTAL_STREAM_COUNT
13565 </p>
13566 </blockquote><p>
13567
13568 </p>
13569 <p>Server will start sending the following notification messages:
13570 </p>
13571 <p>
13572 </p>
13573 <blockquote class="text">
13574 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13575 </p>
13576 </blockquote><p>
13577
13578 </p>
13579 <p>where &lt;streams&gt; will be replaced by the new number of
13580 all currently active disk streams.
13581 </p>
13582 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13583 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13584 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13585 Number of MIDI instrument maps changed</h3>
13586
13587 <p>Client may want to be notified when the number of MIDI instrument maps on the
13588 back-end changes by issuing the following command:
13589 </p>
13590 <p>
13591 </p>
13592 <blockquote class="text">
13593 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
13594 </p>
13595 </blockquote><p>
13596
13597 </p>
13598 <p>Server will start sending the following notification messages:
13599 </p>
13600 <p>
13601 </p>
13602 <blockquote class="text">
13603 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
13604 </p>
13605 </blockquote><p>
13606
13607 </p>
13608 <p>where &lt;maps&gt; will be replaced by the new number
13609 of MIDI instrument maps.
13610 </p>
13611 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
13612 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13613 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
13614 MIDI instrument map information changed</h3>
13615
13616 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
13617 back-end by issuing the following command:
13618 </p>
13619 <p>
13620 </p>
13621 <blockquote class="text">
13622 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
13623 </p>
13624 </blockquote><p>
13625
13626 </p>
13627 <p>Server will start sending the following notification messages:
13628 </p>
13629 <p>
13630 </p>
13631 <blockquote class="text">
13632 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
13633 </p>
13634 </blockquote><p>
13635
13636 </p>
13637 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13638 for which information changes occurred. The front-end will have to send
13639 the respective command to actually get the MIDI instrument map info. Because these messages
13640 will be triggered by LSCP commands issued by other clients rather than real
13641 time events happening on the server, it is believed that an empty notification
13642 message is sufficient here.
13643 </p>
13644 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
13645 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13646 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
13647 Number of MIDI instruments changed</h3>
13648
13649 <p>Client may want to be notified when the number of MIDI instrument maps on the
13650 back-end changes by issuing the following command:
13651 </p>
13652 <p>
13653 </p>
13654 <blockquote class="text">
13655 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
13656 </p>
13657 </blockquote><p>
13658
13659 </p>
13660 <p>Server will start sending the following notification messages:
13661 </p>
13662 <p>
13663 </p>
13664 <blockquote class="text">
13665 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
13666 </p>
13667 </blockquote><p>
13668
13669 </p>
13670 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
13671 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
13672 the new number of MIDI instruments in the specified map.
13673 </p>
13674 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
13675 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13676 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
13677 MIDI instrument information changed</h3>
13678
13679 <p>Client may want to be notified when changes were made to MIDI instruments on the
13680 back-end by issuing the following command:
13681 </p>
13682 <p>
13683 </p>
13684 <blockquote class="text">
13685 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
13686 </p>
13687 </blockquote><p>
13688
13689 </p>
13690 <p>Server will start sending the following notification messages:
13691 </p>
13692 <p>
13693 </p>
13694 <blockquote class="text">
13695 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
13696 </p>
13697 </blockquote><p>
13698
13699 </p>
13700 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13701 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
13702 the location of the changed MIDI instrument in the map. The front-end will have to send
13703 the respective command to actually get the MIDI instrument info. Because these messages
13704 will be triggered by LSCP commands issued by other clients rather than real
13705 time events happening on the server, it is believed that an empty notification
13706 message is sufficient here.
13707 </p>
13708 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
13709 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13710 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
13711 Global settings changed</h3>
13712
13713 <p>Client may want to be notified when changes to the global settings
13714 of the sampler were made by issuing the following command:
13715 </p>
13716 <p>
13717 </p>
13718 <blockquote class="text">
13719 <p>SUBSCRIBE GLOBAL_INFO
13720 </p>
13721 </blockquote><p>
13722
13723 </p>
13724 <p>Server will start sending the following types of notification messages:
13725 </p>
13726 <p>
13727 </p>
13728 <blockquote class="text">
13729 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
13730 golbal volume of the sampler is changed, where &lt;volume&gt; will be
13731 replaced by the optional dotted floating point value, reflecting the
13732 new global volume parameter.
13733 </p>
13734 </blockquote><p>
13735 </p>
13736 <blockquote class="text">
13737 <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
13738 golbal limit of the sampler for maximum voices is changed, where
13739 &lt;max-voices&gt; will be an integer value, reflecting the
13740 new global voice limit parameter.
13741 </p>
13742 </blockquote><p>
13743 </p>
13744 <blockquote class="text">
13745 <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
13746 golbal limit of the sampler for maximum disk streams is changed, where
13747 &lt;max-streams&gt; will be an integer value, reflecting the
13748 new global disk streams limit parameter.
13749 </p>
13750 </blockquote><p>
13751
13752 </p>
13753 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
13754 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13755 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
13756 Number of database instrument directories changed</h3>
13757
13758 <p>Client may want to be notified when the number of instrument
13759 directories in a particular directory in the instruments database
13760 is changed by issuing the following command:
13761 </p>
13762 <p>
13763 </p>
13764 <blockquote class="text">
13765 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
13766 </p>
13767 </blockquote><p>
13768
13769 </p>
13770 <p>Server will start sending the following notification messages:
13771 </p>
13772 <p>
13773 </p>
13774 <blockquote class="text">
13775 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
13776 </p>
13777 </blockquote><p>
13778
13779 </p>
13780 <p>where &lt;dir-path&gt; will be replaced by the absolute path
13781 name of the directory in the instruments database,
13782 in which the number of directories is changed.
13783 </p>
13784 <p>Note that when a non-empty directory is removed, this event
13785 is not sent for the subdirectories in that directory.
13786 </p>
13787 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
13788 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13789 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
13790 Database instrument directory information changed</h3>
13791
13792 <p>Client may want to be notified when changes were made to directories
13793 in the instruments database by issuing the following command:
13794 </p>
13795 <p>
13796 </p>
13797 <blockquote class="text">
13798 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
13799 </p>
13800 </blockquote><p>
13801
13802 </p>
13803 <p>Server will start sending the following notification messages:
13804 </p>
13805 <p>
13806 </p>
13807 <blockquote class="text">
13808 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
13809 </p>
13810 </blockquote><p>
13811
13812 </p>
13813 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
13814 of the directory, for which information changes occurred. The front-end will have to send
13815 the respective command to actually get the updated directory info. Because these messages
13816 will be triggered by LSCP commands issued by other clients rather than real
13817 time events happening on the server, it is believed that an empty notification
13818 message is sufficient here.
13819 </p>
13820 <p>
13821 </p>
13822 <blockquote class="text">
13823 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
13824 </p>
13825 </blockquote><p>
13826
13827 </p>
13828 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
13829 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13830 the new name of the directory, encapsulated into apostrophes.
13831 </p>
13832 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
13833 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13834 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
13835 Number of database instruments changed</h3>
13836
13837 <p>Client may want to be notified when the number of instruments
13838 in a particular directory in the instruments database
13839 is changed by issuing the following command:
13840 </p>
13841 <p>
13842 </p>
13843 <blockquote class="text">
13844 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
13845 </p>
13846 </blockquote><p>
13847
13848 </p>
13849 <p>Server will start sending the following notification messages:
13850 </p>
13851 <p>
13852 </p>
13853 <blockquote class="text">
13854 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
13855 </p>
13856 </blockquote><p>
13857
13858 </p>
13859 <p>where &lt;dir-path&gt; will be replaced by the absolute path
13860 name of the directory in the instruments database,
13861 in which the number of instruments is changed.
13862 </p>
13863 <p>Note that when a non-empty directory is removed, this event
13864 is not sent for the instruments in that directory.
13865 </p>
13866 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
13867 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13868 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
13869 Database instrument information changed</h3>
13870
13871 <p>Client may want to be notified when changes were made to instruments
13872 in the instruments database by issuing the following command:
13873 </p>
13874 <p>
13875 </p>
13876 <blockquote class="text">
13877 <p>SUBSCRIBE DB_INSTRUMENT_INFO
13878 </p>
13879 </blockquote><p>
13880
13881 </p>
13882 <p>Server will start sending the following notification messages:
13883 </p>
13884 <p>
13885 </p>
13886 <blockquote class="text">
13887 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
13888 </p>
13889 </blockquote><p>
13890
13891 </p>
13892 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
13893 of the instrument, which settings are changed. The front-end will have to send
13894 the respective command to actually get the updated directory info. Because these messages
13895 will be triggered by LSCP commands issued by other clients rather than real
13896 time events happening on the server, it is believed that an empty notification
13897 message is sufficient here.
13898 </p>
13899 <p>
13900 </p>
13901 <blockquote class="text">
13902 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
13903 </p>
13904 </blockquote><p>
13905
13906 </p>
13907 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
13908 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13909 the new name of the instrument, encapsulated into apostrophes.
13910 </p>
13911 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
13912 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13913 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
13914 Database job status information changed</h3>
13915
13916 <p>Client may want to be notified when the status of particular database
13917 instruments job is changed by issuing the following command:
13918 </p>
13919 <p>
13920 </p>
13921 <blockquote class="text">
13922 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
13923 </p>
13924 </blockquote><p>
13925
13926 </p>
13927 <p>Server will start sending the following notification messages:
13928 </p>
13929 <p>
13930 </p>
13931 <blockquote class="text">
13932 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
13933 </p>
13934 </blockquote><p>
13935
13936 </p>
13937 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
13938 which status is changed. The front-end will have to send the respective
13939 command to actually get the status info. Because these messages
13940 will be triggered by LSCP commands issued by other clients rather than real
13941 time events happening on the server, it is believed that an empty notification
13942 message is sufficient here.
13943 </p>
13944 <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
13945 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13946 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
13947 Number of effect instances changed</h3>
13948
13949 <p>Client may want to be notified when the number of effect instances
13950 is changed by issuing the following command:
13951 </p>
13952 <p>
13953 </p>
13954 <blockquote class="text">
13955 <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
13956 </p>
13957 </blockquote><p>
13958
13959 </p>
13960 <p>Server will start sending the following notification messages:
13961 </p>
13962 <p>
13963 </p>
13964 <blockquote class="text">
13965 <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
13966 </p>
13967 </blockquote><p>
13968
13969 </p>
13970 <p>where &lt;instances&gt; will be replaced by the new number
13971 of effect instances.
13972 </p>
13973 <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
13974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13975 <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
13976 Effect instance information changed</h3>
13977
13978 <p>Client may want to be notified when changes were made to effect instances
13979 on the back-end by issuing the following command:
13980 </p>
13981 <p>
13982 </p>
13983 <blockquote class="text">
13984 <p>SUBSCRIBE EFFECT_INSTANCE_INFO
13985 </p>
13986 </blockquote><p>
13987
13988 </p>
13989 <p>Server will start sending the following notification messages:
13990 </p>
13991 <p>
13992 </p>
13993 <blockquote class="text">
13994 <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
13995 </p>
13996 </blockquote><p>
13997
13998 </p>
13999 <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14000 of the effect instance.
14001 </p>
14002 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14003 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14004 <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14005 Number of send effect chains changed</h3>
14006
14007 <p>Client may want to be notified when the number of send effect chains
14008 is changed by issuing the following command:
14009 </p>
14010 <p>
14011 </p>
14012 <blockquote class="text">
14013 <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14014 </p>
14015 </blockquote><p>
14016
14017 </p>
14018 <p>Server will start sending the following notification messages:
14019 </p>
14020 <p>
14021 </p>
14022 <blockquote class="text">
14023 <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14024 </p>
14025 </blockquote><p>
14026
14027 </p>
14028 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14029 output device, in which the number of send effect chains is changed and
14030 &lt;chains&gt; will be replaced by the new number of send effect chains.
14031 </p>
14032 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14033 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14034 <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14035 Send effect chain information changed</h3>
14036
14037 <p>Client may want to be notified when changes were made to send effect chains
14038 on the back-end by issuing the following command:
14039 </p>
14040 <p>
14041 </p>
14042 <blockquote class="text">
14043 <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14044 </p>
14045 </blockquote><p>
14046
14047 </p>
14048 <p>Server will start sending the following notification messages:
14049 </p>
14050 <p>
14051 </p>
14052 <blockquote class="text">
14053 <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14054 Notifies that the number of effect instances in a particular send effect chain
14055 is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14056 output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14057 by the numerical ID of the send effect chain in which the number of effect instances
14058 has changed and &lt;instances&gt; will be replaced by the new number
14059 of effect instances in the specified send effect chain.
14060 </p>
14061 </blockquote><p>
14062
14063 </p>
14064 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14065 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14066 <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14067 Miscellaneous and debugging events</h3>
14068
14069 <p>Client may want to be notified of miscellaneous and debugging events occurring at
14070 the server by issuing the following command:
14071 </p>
14072 <p>
14073 </p>
14074 <blockquote class="text">
14075 <p>SUBSCRIBE MISCELLANEOUS
14076 </p>
14077 </blockquote><p>
14078
14079 </p>
14080 <p>Server will start sending the following notification messages:
14081 </p>
14082 <p>
14083 </p>
14084 <blockquote class="text">
14085 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14086 </p>
14087 </blockquote><p>
14088
14089 </p>
14090 <p>where &lt;string&gt; will be replaced by whatever data server
14091 wants to send to the client. Client MAY display this data to the
14092 user AS IS to facilitate debugging.
14093 </p>
14094 <a name="anchor14"></a><br /><hr />
14095 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14096 <a name="rfc.section.9"></a><h3>9.&nbsp;
14097 Security Considerations</h3>
14098
14099 <p>As there is so far no method of authentication and authorization
14100 defined and so not required for a client applications to succeed to
14101 connect, running LinuxSampler might be a security risk for the host
14102 system the LinuxSampler instance is running on.
14103 </p>
14104 <a name="anchor15"></a><br /><hr />
14105 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14106 <a name="rfc.section.10"></a><h3>10.&nbsp;
14107 Acknowledgments</h3>
14108
14109 <p>This document has benefited greatly from the comments of the
14110 following people, discussed on the LinuxSampler developer's mailing
14111 list:
14112 </p>
14113 <p>
14114 </p>
14115 <blockquote class="text">
14116 <p>Rui Nuno Capela
14117 </p>
14118 <p>Vladimir Senkov
14119 </p>
14120 <p>Mark Knecht
14121 </p>
14122 <p>Grigor Iliev
14123 </p>
14124 </blockquote><p>
14125
14126 </p>
14127 <a name="rfc.references1"></a><br /><hr />
14128 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14129 <h3>11.&nbsp;References</h3>
14130 <table width="99%" border="0">
14131 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14132 <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>
14133 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14134 <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>
14135 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14136 <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>
14137 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14138 <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>
14139 </table>
14140
14141 <a name="rfc.authors"></a><br /><hr />
14142 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14143 <h3>Author's Address</h3>
14144 <table width="99%" border="0" cellpadding="0" cellspacing="0">
14145 <tr><td class="author-text">&nbsp;</td>
14146 <td class="author-text">C.
14147 Schoenebeck</td></tr>
14148 <tr><td class="author-text">&nbsp;</td>
14149 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
14150 <tr><td class="author-text">&nbsp;</td>
14151 <td class="author-text">Max-Planck-Str. 39</td></tr>
14152 <tr><td class="author-text">&nbsp;</td>
14153 <td class="author-text">74081 Heilbronn</td></tr>
14154 <tr><td class="author-text">&nbsp;</td>
14155 <td class="author-text">Germany</td></tr>
14156 <tr><td class="author" align="right">Email:&nbsp;</td>
14157 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
14158 </table>
14159 <a name="rfc.copyright"></a><br /><hr />
14160 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14161 <h3>Full Copyright Statement</h3>
14162 <p class='copyright'>
14163 Copyright &copy; The IETF Trust (2011).</p>
14164 <p class='copyright'>
14165 This document is subject to the rights,
14166 licenses and restrictions contained in BCP&nbsp;78,
14167 and except as set forth therein,
14168 the authors retain all their rights.</p>
14169 <p class='copyright'>
14170 This document and the information contained herein are provided
14171 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14172 THE ORGANIZATION HE/SHE REPRESENTS
14173 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14174 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14175 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14176 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14177 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14178 PURPOSE.</p>
14179 <h3>Intellectual Property</h3>
14180 <p class='copyright'>
14181 The IETF takes no position regarding the validity or scope of any
14182 Intellectual Property Rights or other rights that might be claimed
14183 to pertain to the implementation or use of the technology
14184 described in this document or the extent to which any license
14185 under such rights might or might not be available; nor does it
14186 represent that it has made any independent effort to identify any
14187 such rights.
14188 Information on the procedures with respect to
14189 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14190 <p class='copyright'>
14191 Copies of IPR disclosures made to the IETF Secretariat and any
14192 assurances of licenses to be made available,
14193 or the result of an attempt made to obtain a general license or
14194 permission for the use of such proprietary rights by implementers or
14195 users of this specification can be obtained from the IETF on-line IPR
14196 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14197 <p class='copyright'>
14198 The IETF invites any interested party to bring to its attention
14199 any copyrights,
14200 patents or patent applications,
14201 or other
14202 proprietary rights that may cover technology that may be required
14203 to implement this standard.
14204 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14205 </body></html>

  ViewVC Help
Powered by ViewVC