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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2791 - (show annotations) (download) (as text)
Wed Jul 15 21:41:19 2015 UTC (8 years, 9 months ago) by schoenebeck
File MIME type: text/html
File size: 521968 byte(s)
* Updated LSCP spec document (v1.7 for LinuxSampler release 2.0.0).

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.37pre1 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">LinuxSampler.org</td></tr>
147 <tr><td class="header">Intended status: Standards Track</td><td class="header">July 15, 2015</td></tr>
148 <tr><td class="header">Expires: January 16, 2016</td><td class="header">&nbsp;</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.7</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 January 16, 2016.</p>
180 <a name="toc"></a><br /><hr />
181 <h3>Table of Contents</h3>
182 <p class="toc">
183 <a href="#anchor1">1.</a>&nbsp;
184 Requirements notation<br />
185 <a href="#LSCP versioning">2.</a>&nbsp;
186 Versioning of this specification<br />
187 <a href="#anchor2">3.</a>&nbsp;
188 Introduction<br />
189 <a href="#anchor3">4.</a>&nbsp;
190 Focus of this protocol<br />
191 <a href="#anchor4">5.</a>&nbsp;
192 Communication Overview<br />
193 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194 Request/response communication method<br />
195 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196 Result format<br />
197 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198 Subscribe/notify communication method<br />
199 <a href="#control_commands">6.</a>&nbsp;
200 Description for control commands<br />
201 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202 Ignored lines and comments<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204 Configuring audio drivers<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206 Getting amount of available audio output drivers<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208 Getting all available audio output drivers<br />
209 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210 Getting information about a specific audio
211 output driver<br />
212 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213 Getting information about specific audio
214 output driver parameter<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216 Creating an audio output device<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218 Destroying an audio output device<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220 Getting all created audio output device count<br />
221 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222 Getting all created audio output device list<br />
223 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224 Getting current settings of an audio output device<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226 Changing settings of audio output devices<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228 Getting information about an audio channel<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230 Getting information about specific audio channel parameter<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232 Changing settings of audio output channels<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234 Configuring MIDI input drivers<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236 Getting amount of available MIDI input drivers<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238 Getting all available MIDI input drivers<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240 Getting information about a specific MIDI input driver<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242 Getting information about specific MIDI input driver parameter<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244 Creating a MIDI input device<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246 Destroying a MIDI input device<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248 Getting all created MIDI input device count<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250 Getting all created MIDI input device list<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252 Getting current settings of a MIDI input device<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254 Changing settings of MIDI input devices<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256 Getting information about a MIDI port<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258 Getting information about specific MIDI port parameter<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260 Changing settings of MIDI input ports<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262 Configuring sampler channels<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264 Loading an instrument<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266 Loading a sampler engine<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268 Getting all created sampler channel count<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270 Getting all created sampler channel list<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272 Adding a new sampler channel<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274 Removing a sampler channel<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276 Getting amount of available engines<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278 Getting all available engines<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280 Getting information about an engine<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282 Getting sampler channel information<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284 Current number of active voices<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286 Current number of active disk streams<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288 Current fill state of disk stream buffers<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290 Setting audio output device<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292 Setting audio output type<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294 Setting audio output channel<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL MIDI_INPUT">6.4.17.</a>&nbsp;
296 Add MIDI input to sampler channel<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL MIDI_INPUT">6.4.18.</a>&nbsp;
298 Remove MIDI input(s) from sampler channel<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNEL MIDI_INPUTS">6.4.19.</a>&nbsp;
300 Getting all MIDI inputs of a sampler channel<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.20.</a>&nbsp;
302 Setting MIDI input device<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.21.</a>&nbsp;
304 Setting MIDI input type<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.22.</a>&nbsp;
306 Setting MIDI input port<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.23.</a>&nbsp;
308 Setting MIDI input channel<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.24.</a>&nbsp;
310 Setting channel volume<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.25.</a>&nbsp;
312 Muting a sampler channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.26.</a>&nbsp;
314 Soloing a sampler channel<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.27.</a>&nbsp;
316 Assigning a MIDI instrument map to a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.28.</a>&nbsp;
318 Adding an effect send to a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.29.</a>&nbsp;
320 Removing an effect send from a sampler channel<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.30.</a>&nbsp;
322 Getting amount of effect sends on a sampler channel<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.31.</a>&nbsp;
324 Listing all effect sends on a sampler channel<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.32.</a>&nbsp;
326 Getting effect send information<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.33.</a>&nbsp;
328 Changing effect send's name<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.34.</a>&nbsp;
330 Altering effect send's audio routing<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.35.</a>&nbsp;
332 Assigning destination effect to an effect send<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.36.</a>&nbsp;
334 Removing destination effect from an effect send<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.37.</a>&nbsp;
336 Altering effect send's MIDI controller<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.38.</a>&nbsp;
338 Altering effect send's send level<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.39.</a>&nbsp;
340 Sending MIDI messages to sampler channel<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.40.</a>&nbsp;
342 Resetting a sampler channel<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
344 Controlling connection<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
346 Register front-end for receiving event messages<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
348 Unregister front-end for not receiving event messages<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
350 Enable or disable echo of commands<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
352 Close client connection<br />
353 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
354 Global commands<br />
355 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
356 Current number of active voices<br />
357 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
358 Maximum amount of active voices<br />
359 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
360 Current number of active disk streams<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
362 Reset sampler<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
364 General sampler informations<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
366 Getting global volume attenuation<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
368 Setting global volume attenuation<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
370 Getting global voice limit<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
372 Setting global voice limit<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
374 Getting global disk stream limit<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
376 Setting global disk stream limit<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
378 MIDI Instrument Mapping<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
380 Create a new MIDI instrument map<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
382 Delete one particular or all MIDI instrument maps<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
384 Get amount of existing MIDI instrument maps<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
386 Getting all created MIDI instrument maps<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
388 Getting MIDI instrument map information<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
390 Renaming a MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
392 Create or replace a MIDI instrument map entry<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
394 Getting amount of MIDI instrument map entries<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
396 Getting indeces of all entries of a MIDI instrument map<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
398 Remove an entry from the MIDI instrument map<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
400 Get current settings of MIDI instrument map entry<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
402 Clear MIDI instrument map<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
404 Managing Instruments Database<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
406 Creating a new instrument directory<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
408 Deleting an instrument directory<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
410 Getting amount of instrument directories<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
412 Listing all directories in specific directory<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
414 Getting instrument directory information<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
416 Renaming an instrument directory<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
418 Moving an instrument directory<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
420 Copying instrument directories<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
422 Changing the description of directory<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
424 Finding directories<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
426 Adding instruments to the instruments database<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
428 Removing an instrument<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
430 Getting amount of instruments<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
432 Listing all instruments in specific directory<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
434 Getting instrument information<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
436 Renaming an instrument<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
438 Moving an instrument<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
440 Copying instruments<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
442 Changing the description of instrument<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
444 Finding instruments<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
446 Getting job status information<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
448 Formatting the instruments database<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
450 Checking for lost instrument files<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
452 Replacing an instrument file<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
454 Editing Instruments<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
456 Opening an appropriate instrument editor application<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
458 Managing Files<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
460 Retrieving amount of instruments of a file<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
462 Retrieving all instruments of a file<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
464 Retrieving informations about one instrument in a file<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
466 Managing Effects<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
468 Retrieve amount of available effects<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
470 Get list of available effects<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
472 Retrieving general information about an effect<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
474 Creating an instance of an effect by its portable ID<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
476 Creating an instance of an effect by its numerical ID<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
478 Destroy an effect instance<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
480 Retrieve amount of effect instances<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
482 Get list of effect instances<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
484 Retrieving current information about an effect instance<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
486 Retrieving information about an effect parameter<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
488 Altering an effect parameter<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
490 Retrieve amount of send effect chains<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
492 Retrieve list of send effect chains<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
494 Add send effect chain<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
496 Remove send effect chain<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
498 Retrieving information about a send effect chain<br />
499 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
500 Append effect instance to a send effect chain<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
502 Insert effect instance to a send effect chain<br />
503 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
504 Remove effect instance from send effect chain<br />
505 <a href="#command_syntax">7.</a>&nbsp;
506 Command Syntax<br />
507 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
508 Character Set and Escape Sequences<br />
509 <a href="#events">8.</a>&nbsp;
510 Events<br />
511 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
512 Number of audio output devices changed<br />
513 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
514 Audio output device's settings changed<br />
515 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
516 Number of MIDI input devices changed<br />
517 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
518 MIDI input device's settings changed<br />
519 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
520 Number of sampler channels changed<br />
521 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
522 MIDI data on a sampler channel arrived<br />
523 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
524 MIDI data on a MIDI input device arrived<br />
525 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
526 Number of active voices changed<br />
527 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
528 Number of active disk streams changed<br />
529 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
530 Disk stream buffer fill state changed<br />
531 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
532 Channel information changed<br />
533 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
534 Number of effect sends changed<br />
535 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
536 Effect send information changed<br />
537 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
538 Total number of active voices changed<br />
539 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
540 Total number of active disk streams changed<br />
541 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
542 Number of MIDI instrument maps changed<br />
543 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
544 MIDI instrument map information changed<br />
545 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
546 Number of MIDI instruments changed<br />
547 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
548 MIDI instrument information changed<br />
549 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
550 Global settings changed<br />
551 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
552 Number of database instrument directories changed<br />
553 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
554 Database instrument directory information changed<br />
555 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
556 Number of database instruments changed<br />
557 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
558 Database instrument information changed<br />
559 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
560 Database job status information changed<br />
561 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_COUNT">8.26.</a>&nbsp;
562 Number of effect instances changed<br />
563 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_INFO">8.27.</a>&nbsp;
564 Effect instance information changed<br />
565 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_COUNT">8.28.</a>&nbsp;
566 Number of send effect chains changed<br />
567 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_INFO">8.29.</a>&nbsp;
568 Send effect chain information changed<br />
569 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.30.</a>&nbsp;
570 Miscellaneous and debugging events<br />
571 <a href="#anchor14">9.</a>&nbsp;
572 Security Considerations<br />
573 <a href="#anchor15">10.</a>&nbsp;
574 Acknowledgments<br />
575 <a href="#rfc.references1">11.</a>&nbsp;
576 References<br />
577 <a href="#rfc.authors">&#167;</a>&nbsp;
578 Author's Address<br />
579 <a href="#rfc.copyright">&#167;</a>&nbsp;
580 Intellectual Property and Copyright Statements<br />
581 </p>
582 <br clear="all" />
583
584 <a name="anchor1"></a><br /><hr />
585 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
586 <a name="rfc.section.1"></a><h3>1.&nbsp;
587 Requirements notation</h3>
588
589 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
590 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
591 and "OPTIONAL" in this document are to be interpreted as
592 described in <a class='info' href='#RFC2119'>[RFC2119]<span> (</span><span class='info'>Bradner, S., &ldquo;Key words for use in RFCs to Indicate Requirement Levels,&rdquo; 1997.</span><span>)</span></a>.
593 </p>
594 <p>This protocol is always case-sensitive if not explicitly
595 claimed the opposite.
596 </p>
597 <p>In examples, "C:" and "S:" indicate lines sent by the client
598 (front-end) and server (LinuxSampler) respectively. Lines in
599 examples must be interpreted as every line being CRLF
600 terminated (carriage return character followed by line feed
601 character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
602 thus the following example:
603 </p>
604 <p>
605 </p>
606 <blockquote class="text">
607 <p>C: "some line"
608 </p>
609 <p>&nbsp;&nbsp;&nbsp;"another line"
610 </p>
611 </blockquote><p>
612
613 </p>
614 <p>must actually be interpreted as client sending the following
615 message:
616 </p>
617 <p>
618 </p>
619 <blockquote class="text">
620 <p>"some line&lt;CR&gt;&lt;LF&gt;another
621 line&lt;CR&gt;&lt;LF&gt;"
622 </p>
623 </blockquote><p>
624
625 </p>
626 <p>where &lt;CR&gt; symbolizes the carriage return character and
627 &lt;LF&gt; the line feed character as defined in the ASCII
628 standard.
629 </p>
630 <p>Due to technical reasons, messages can arbitrary be
631 fragmented, means the following example:
632 </p>
633 <p>
634 </p>
635 <blockquote class="text">
636 <p>S: "abcd"
637 </p>
638 </blockquote><p>
639
640 </p>
641 <p>could also happen to be sent in three messages like in the
642 following sequence scenario:
643 </p>
644 <p>
645 </p>
646 <ul class="text">
647 <li>server sending message "a"
648 </li>
649 <li>followed by a delay (pause) with
650 arbitrary duration
651 </li>
652 <li>followed by server sending message
653 "bcd&lt;CR&gt;"
654 </li>
655 <li>again followed by a delay (pause) with arbitrary
656 duration
657 </li>
658 <li>followed by server sending the message
659 "&lt;LF&gt;"
660 </li>
661 </ul><p>
662
663 </p>
664 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
665 return and line feed characters respectively.
666 </p>
667 <a name="LSCP versioning"></a><br /><hr />
668 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
669 <a name="rfc.section.2"></a><h3>2.&nbsp;
670 Versioning of this specification</h3>
671
672 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
673 release of the LSCP specification will be tagged with a unique version
674 tuple. The version tuple consists at least of a major and minor version
675 number like:
676
677 </p>
678 <p>
679 </p>
680 <blockquote class="text">
681 <p>"1.2"
682 </p>
683 </blockquote><p>
684
685 </p>
686 <p>
687 In this example the major version number would be "1" and the minor
688 version number would be "2". Note that the version tuple might also
689 have more than two elements. The major version number defines a
690 group of backward compatible versions. That means a frontend is
691 compatible to the connected sampler if and only if the LSCP versions
692 to which each of the two parties complies to, match both of the
693 following rules:
694
695 </p>
696 <p>Compatibility:
697 </p>
698 <p>
699 </p>
700 <ol class="text">
701 <li>The frontend's LSCP major version and the sampler's LSCP
702 major version are exactly equal.
703 </li>
704 <li>The frontend's LSCP minor version is less or equal than
705 the sampler's LSCP minor version.
706 </li>
707 </ol><p>
708
709 </p>
710 <p>
711 Compatibility can only be claimed if both rules are true.
712 The frontend can use the
713 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
714 get the version of the LSCP specification the sampler complies with.
715
716 </p>
717 <a name="anchor2"></a><br /><hr />
718 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
719 <a name="rfc.section.3"></a><h3>3.&nbsp;
720 Introduction</h3>
721
722 <p>LinuxSampler is a so called software sampler application
723 capable to playback audio samples from a computer's Random
724 Access Memory (RAM) as well as directly streaming it from disk.
725 LinuxSampler is designed to be modular. It provides several so
726 called "sampler engines" where each engine is specialized for a
727 certain purpose. LinuxSampler has virtual channels which will be
728 referred in this document as "sampler channels". The channels
729 are in such way virtual as they can be connected to an
730 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
731 sampler channel 17 could be connected to an ALSA sequencer
732 device 64:0 and listening to MIDI channel 1 there). Each sampler
733 channel will be associated with an instance of one of the available
734 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
735 each sampler channel can be routed to an arbitrary audio output
736 method (ALSA / JACK) and an arbitrary audio output channel
737 there.
738 </p>
739 <a name="anchor3"></a><br /><hr />
740 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
741 <a name="rfc.section.4"></a><h3>4.&nbsp;
742 Focus of this protocol</h3>
743
744 <p>Main focus of this protocol is to provide a way to configure
745 a running LinuxSampler instance and to retrieve information
746 about it. The focus of this protocol is not to provide a way to
747 control synthesis parameters or even to trigger or release
748 notes. Or in other words; the focus are those functionalities
749 which are not covered by MIDI or which may at most be handled
750 via MIDI System Exclusive Messages.
751 </p>
752 <a name="anchor4"></a><br /><hr />
753 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
754 <a name="rfc.section.5"></a><h3>5.&nbsp;
755 Communication Overview</h3>
756
757 <p>There are two distinct methods of communication between a
758 running instance of LinuxSampler and one or more control
759 applications, so called "front-ends": a simple request/response
760 communication method used by the clients to give commands to the
761 server as well as to inquire about server's status and a
762 subscribe/notify communication method used by the client to
763 subscribe to and receive notifications of certain events as they
764 happen on the server. The latter needs more effort to be
765 implemented in the front-end application. The two communication
766 methods will be described next.
767 </p>
768 <a name="anchor5"></a><br /><hr />
769 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
770 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
771 Request/response communication method</h3>
772
773 <p>This simple communication method is based on
774 <a class='info' href='#RFC793'>TCP<span> (</span><span class='info'>Defense Advanced Research Projects Agency, &ldquo;TRANSMISSION CONTROL PROTOCOL,&rdquo; 1981.</span><span>)</span></a> [RFC793]. The
775 front-end application establishes a TCP connection to the
776 LinuxSampler instance on a certain host system. Then the
777 front-end application will send certain ASCII based commands
778 as defined in this document (every command line must be CRLF
779 terminated - see "Conventions used in this document" at the
780 beginning of this document) and the LinuxSampler application
781 will response after a certain process time with an
782 appropriate ASCII based answer, also as defined in this
783 document. So this TCP communication is simply based on query
784 and answer paradigm. That way LinuxSampler is only able to
785 answer on queries from front-ends, but not able to
786 automatically send messages to the client if it's not asked
787 to. The fronted should not reconnect to LinuxSampler for
788 every single command, instead it should keep the connection
789 established and simply resend message(s) for subsequent
790 commands. To keep information in the front-end up-to-date
791 the front-end has to periodically send new requests to get
792 the current information from the LinuxSampler instance. This
793 is often referred to as "polling". While polling is simple
794 to implement and may be OK to use in some cases, there may
795 be disadvantages to polling such as network traffic overhead
796 and information being out of date.
797 It is possible for a client or several clients to open more
798 than one connection to the server at the same time. It is
799 also possible to send more than one request to the server
800 at the same time but if those requests are sent over the
801 same connection server MUST execute them sequentially. Upon
802 executing a request server will produce a result set and
803 send it to the client. Each and every request made by the
804 client MUST result in a result set being sent back to the
805 client. No other data other than a result set may be sent by
806 a server to a client. No result set may be sent to a client
807 without the client sending request to the server first. On
808 any particular connection, result sets MUST be sent in their
809 entirety without being interrupted by other result sets. If
810 several requests got queued up at the server they MUST be
811 processed in the order they were received and result sets
812 MUST be sent back in the same order.
813 </p>
814 <a name="anchor6"></a><br /><hr />
815 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
816 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
817 Result format</h3>
818
819 <p>Result set could be one of the following types:
820 </p>
821 <p>
822 </p>
823 <ol class="text">
824 <li>Normal
825 </li>
826 <li>Warning
827 </li>
828 <li>Error
829 </li>
830 </ol><p>
831
832 </p>
833 <p>Warning and Error result sets MUST be single line and
834 have the following format:
835 </p>
836 <p>
837 </p>
838 <ul class="text">
839 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
840 </li>
841 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
842 </li>
843 </ul><p>
844
845 </p>
846 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
847 numeric unique identifiers of the warning or error and
848 &lt;warning-message&gt; and &lt;error-message&gt; are
849 human readable descriptions of the warning or error
850 respectively.
851 </p>
852 <p>Examples:
853 </p>
854 <p>
855 </p>
856 <blockquote class="text">
857 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
858 </p>
859 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
860 </p>
861 </blockquote><p>
862
863 </p>
864 <p>
865 </p>
866 <blockquote class="text">
867 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
868 </p>
869 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
870 </p>
871 </blockquote><p>
872
873 </p>
874 <p>
875 </p>
876 <blockquote class="text">
877 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
878 </p>
879 <p>S: "ERR:9:There is no audio output device with index 123456."
880 </p>
881 </blockquote><p>
882
883 </p>
884 <p>Normal result sets could be:
885 </p>
886 <p>
887 </p>
888 <ol class="text">
889 <li>Empty
890 </li>
891 <li>Single line
892 </li>
893 <li>Multi-line
894 </li>
895 </ol><p>
896
897 </p>
898 <p> Empty result set is issued when the server only
899 needed to acknowledge the fact that the request was
900 received and it was processed successfully and no
901 additional information is available. This result set has
902 the following format:
903 </p>
904 <p>
905 </p>
906 <blockquote class="text">
907 <p>"OK"
908 </p>
909 </blockquote><p>
910
911 </p>
912 <p>Example:
913 </p>
914 <p>
915 </p>
916 <blockquote class="text">
917 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
918 </p>
919 <p>S: "OK"
920 </p>
921 </blockquote><p>
922
923 </p>
924 <p>Single line result sets are command specific. One
925 example of a single line result set is an empty line.
926 Multi-line result sets are command specific and may
927 include one or more lines of information. They MUST
928 always end with the following line:
929 </p>
930 <p>
931 </p>
932 <blockquote class="text">
933 <p>"."
934 </p>
935 </blockquote><p>
936
937 </p>
938 <p>Example:
939 </p>
940 <p>
941 </p>
942 <blockquote class="text">
943 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
944 </p>
945 <p>S: "DRIVER: ALSA"
946 </p>
947 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
948 </p>
949 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
950 </p>
951 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
952 </p>
953 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
954 </p>
955 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
956 </p>
957 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
958 </p>
959 <p>&nbsp;&nbsp;&nbsp;"."
960 </p>
961 </blockquote><p>
962
963 </p>
964 <p>In addition to above mentioned formats, warnings and
965 empty result sets MAY be indexed. In this case, they
966 have the following formats respectively:
967 </p>
968 <p>
969 </p>
970 <ul class="text">
971 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
972 </li>
973 <li>"OK[&lt;index&gt;]"
974 </li>
975 </ul><p>
976
977 </p>
978 <p>where &lt;index&gt; is command specific and is used
979 to indicate channel number that the result set was
980 related to or other integer value.
981 </p>
982 <p>Each line of the result set MUST end with
983 &lt;CRLF&gt;.
984 </p>
985 <p>Examples:
986 </p>
987 <p>
988 </p>
989 <blockquote class="text">
990 <p>C: "ADD CHANNEL"
991 </p>
992 <p>S: "OK[12]"
993 </p>
994 </blockquote><p>
995
996 </p>
997 <p>
998 </p>
999 <blockquote class="text">
1000 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
1001 </p>
1002 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
1003 </p>
1004 </blockquote><p>
1005
1006 </p>
1007 <a name="anchor7"></a><br /><hr />
1008 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1009 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
1010 Subscribe/notify communication method</h3>
1011
1012 <p>This more sophisticated communication method is actually
1013 only an extension of the simple request/response
1014 communication method. The front-end still uses a TCP
1015 connection and sends the same commands on the TCP
1016 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1017 commands that allow a client to tell the server that it is
1018 interested in receiving notifications about certain events
1019 as they happen on the server. The SUBSCRIBE command has the
1020 following syntax:
1021 </p>
1022 <p>
1023 </p>
1024 <blockquote class="text">
1025 <p>SUBSCRIBE &lt;event-id&gt;
1026 </p>
1027 </blockquote><p>
1028
1029 </p>
1030 <p>where &lt;event-id&gt; will be replaced by the respective
1031 event that client wants to subscribe to. Upon receiving such
1032 request, server SHOULD respond with OK and start sending
1033 EVENT notifications when a given even has occurred to the
1034 front-end when an event has occurred. It MAY be possible
1035 certain events may be sent before OK response during real
1036 time nature of their generation. Event messages have the
1037 following format:
1038 </p>
1039 <p>
1040 </p>
1041 <blockquote class="text">
1042 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1043 </p>
1044 </blockquote><p>
1045
1046 </p>
1047 <p>where &lt;event-id&gt; uniquely identifies the event that
1048 has occurred and &lt;custom-event-data&gt; is event
1049 specific.
1050 </p>
1051 <p>Several rules must be followed by the server when
1052 generating events:
1053 </p>
1054 <p>
1055 </p>
1056 <ol class="text">
1057 <li>Events MUST NOT be sent to any client who has not
1058 issued an appropriate SUBSCRIBE command.
1059 </li>
1060 <li>Events MUST only be sent using the same
1061 connection that was used to subscribe to them.
1062 </li>
1063 <li>When response is being sent to the client, event
1064 MUST be inserted in the stream before or after the
1065 response, but NOT in the middle. Same is true about
1066 the response. It should never be inserted in the
1067 middle of the event message as well as any other
1068 response.
1069 </li>
1070 </ol><p>
1071
1072 </p>
1073 <p>If the client is not interested in a particular event
1074 anymore it MAY issue UNSUBSCRIBE command using the following
1075 syntax:
1076 </p>
1077 <p>
1078 </p>
1079 <blockquote class="text">
1080 <p>UNSUBSCRIBE &lt;event-id&gt;
1081 </p>
1082 </blockquote><p>
1083
1084 </p>
1085 <p>where &lt;event-id&gt; will be replace by the respective
1086 event that client is no longer interested in receiving. For
1087 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1088 </p>
1089 <p>Example: the fill states of disk stream buffers have
1090 changed on sampler channel 4 and the LinuxSampler instance
1091 will react by sending the following message to all clients
1092 who subscribed to this event:
1093 </p>
1094 <p>
1095 </p>
1096 <blockquote class="text">
1097 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1098 </p>
1099 </blockquote><p>
1100
1101 </p>
1102 <p>Which means there are currently three active streams on
1103 sampler channel 4, where the stream with ID "35" is filled
1104 by 62%, stream with ID 33 is filled by 80% and stream with
1105 ID 37 is filled by 98%.
1106 </p>
1107 <p>Clients may choose to open more than one connection to
1108 the server and use some connections to receive notifications
1109 while using other connections to issue commands to the
1110 back-end. This is entirely legal and up to the
1111 implementation. This does not change the protocol in any way
1112 and no special restrictions exist on the server to allow or
1113 disallow this or to track what connections belong to what
1114 front-ends. Server will listen on a single port, accept
1115 multiple connections and support protocol described in this
1116 specification in it's entirety on this single port on each
1117 connection that it accepted.
1118 </p>
1119 <p>Due to the fact that TCP is used for this communication,
1120 dead peers will be detected automatically by the OS TCP
1121 stack. While it may take a while to detect dead peers if no
1122 traffic is being sent from server to client (TCP keep-alive
1123 timer is set to 2 hours on many OSes) it will not be an
1124 issue here as when notifications are sent by the server,
1125 dead client will be detected quickly.
1126 </p>
1127 <p>When connection is closed for any reason server MUST
1128 forget all subscriptions that were made on this connection.
1129 If client reconnects it MUST resubscribe to all events that
1130 it wants to receive.
1131 </p>
1132 <a name="control_commands"></a><br /><hr />
1133 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1134 <a name="rfc.section.6"></a><h3>6.&nbsp;
1135 Description for control commands</h3>
1136
1137 <p>This chapter will describe the available control commands
1138 that can be sent on the TCP connection in detail. Some certain
1139 commands (e.g. <a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
1140 or <a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>) lead to
1141 multiple-line responses. In this case LinuxSampler signals the
1142 end of the response by a "." (single dot) line.
1143 </p>
1144 <a name="anchor8"></a><br /><hr />
1145 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1146 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1147 Ignored lines and comments</h3>
1148
1149 <p>White lines, that is lines which only contain space and
1150 tabulator characters, and lines that start with a "#"
1151 character are ignored, thus it's possible for example to
1152 group commands and to place comments in a LSCP script
1153 file.
1154 </p>
1155 <a name="anchor9"></a><br /><hr />
1156 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1157 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1158 Configuring audio drivers</h3>
1159
1160 <p>Instances of drivers in LinuxSampler are called devices.
1161 You can use multiple audio devices simultaneously, e.g. to
1162 output the sound of one sampler channel using the ALSA audio
1163 output driver, and on another sampler channel you might want
1164 to use the JACK audio output driver. For particular audio
1165 output systems it's also possible to create several devices
1166 of the same audio output driver, e.g. two separate ALSA
1167 audio output devices for using two different sound cards at
1168 the same time. This chapter describes all commands to
1169 configure LinuxSampler's audio output devices and their
1170 parameters.
1171 </p>
1172 <p>Instead of defining commands and parameters for each
1173 driver individually, all possible parameters, their meanings
1174 and possible values have to be obtained at runtime. This
1175 makes the protocol a bit abstract, but has the advantage,
1176 that front-ends can be written independently of what drivers
1177 are currently implemented and what parameters these drivers
1178 are actually offering. This means front-ends can even handle
1179 drivers which are implemented somewhere in future without
1180 modifying the front-end at all.
1181 </p>
1182 <p>Note: examples in this chapter showing particular
1183 parameters of drivers are not meant as specification of the
1184 drivers' parameters. Driver implementations in LinuxSampler
1185 might have complete different parameter names and meanings
1186 than shown in these examples or might change in future, so
1187 these examples are only meant for showing how to retrieve
1188 what parameters drivers are offering, how to retrieve their
1189 possible values, etc.
1190 </p>
1191 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1192 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1193 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1194 Getting amount of available audio output drivers</h3>
1195
1196 <p>Use the following command to get the number of
1197 audio output drivers currently available for the
1198 LinuxSampler instance:
1199 </p>
1200 <p>
1201 </p>
1202 <blockquote class="text">
1203 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1204 </p>
1205 </blockquote><p>
1206
1207 </p>
1208 <p>Possible Answers:
1209 </p>
1210 <p>
1211 </p>
1212 <blockquote class="text">
1213 <p>LinuxSampler will answer by sending the
1214 number of audio output drivers.
1215 </p>
1216 </blockquote><p>
1217
1218 </p>
1219 <p>Example:
1220 </p>
1221 <p>
1222 </p>
1223 <blockquote class="text">
1224 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1225 </p>
1226 <p>S: "2"
1227 </p>
1228 </blockquote><p>
1229
1230 </p>
1231 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1232 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1233 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1234 Getting all available audio output drivers</h3>
1235
1236 <p>Use the following command to list all audio output
1237 drivers currently available for the LinuxSampler
1238 instance:
1239 </p>
1240 <p>
1241 </p>
1242 <blockquote class="text">
1243 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1244 </p>
1245 </blockquote><p>
1246
1247 </p>
1248 <p>Possible Answers:
1249 </p>
1250 <p>
1251 </p>
1252 <blockquote class="text">
1253 <p>LinuxSampler will answer by sending comma
1254 separated character strings, each symbolizing an
1255 audio output driver.
1256 </p>
1257 </blockquote><p>
1258
1259 </p>
1260 <p>Example:
1261 </p>
1262 <p>
1263 </p>
1264 <blockquote class="text">
1265 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1266 </p>
1267 <p>S: "ALSA,JACK"
1268 </p>
1269 </blockquote><p>
1270
1271 </p>
1272 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1273 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1274 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1275 Getting information about a specific audio
1276 output driver</h3>
1277
1278 <p>Use the following command to get detailed information
1279 about a specific audio output driver:
1280 </p>
1281 <p>
1282 </p>
1283 <blockquote class="text">
1284 <p>GET AUDIO_OUTPUT_DRIVER INFO
1285 &lt;audio-output-driver&gt;
1286 </p>
1287 </blockquote><p>
1288
1289 </p>
1290 <p>Where &lt;audio-output-driver&gt; is the name of the
1291 audio output driver, returned by the
1292 <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a> command.
1293 </p>
1294 <p>Possible Answers:
1295 </p>
1296 <p>
1297 </p>
1298 <blockquote class="text">
1299 <p>LinuxSampler will answer by sending a
1300 &lt;CRLF&gt; separated list. Each answer line
1301 begins with the information category name
1302 followed by a colon and then a space character
1303 &lt;SP&gt; and finally the info character string
1304 to that info category. At the moment the
1305 following information categories are
1306 defined:
1307 </p>
1308 <p>
1309 </p>
1310 <blockquote class="text">
1311 <p>DESCRIPTION -
1312 </p>
1313 <blockquote class="text">
1314 <p> character string describing the
1315 audio output driver
1316 </p>
1317 </blockquote>
1318
1319
1320 <p>VERSION -
1321 </p>
1322 <blockquote class="text">
1323 <p>character string reflecting the
1324 driver's version
1325 </p>
1326 </blockquote>
1327
1328
1329 <p>PARAMETERS -
1330 </p>
1331 <blockquote class="text">
1332 <p>comma separated list of all
1333 parameters available for the given
1334 audio output driver, at least
1335 parameters 'channels', 'samplerate'
1336 and 'active' are offered by all audio
1337 output drivers
1338 </p>
1339 </blockquote>
1340
1341
1342 </blockquote>
1343
1344
1345 <p>The mentioned fields above don't have to be
1346 in particular order.
1347 </p>
1348 </blockquote><p>
1349
1350 </p>
1351 <p>Example:
1352 </p>
1353 <p>
1354 </p>
1355 <blockquote class="text">
1356 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1357 </p>
1358 <p>S: "DESCRIPTION: Advanced Linux Sound
1359 Architecture"
1360 </p>
1361 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1362 </p>
1363 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1364 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1365 FRAGMENTSIZE,CARD"
1366 </p>
1367 <p>&nbsp;&nbsp;&nbsp;"."
1368 </p>
1369 </blockquote><p>
1370
1371 </p>
1372 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1373 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1374 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1375 Getting information about specific audio
1376 output driver parameter</h3>
1377
1378 <p>Use the following command to get detailed information
1379 about a specific audio output driver parameter:
1380 </p>
1381 <p>
1382 </p>
1383 <blockquote class="text">
1384 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1385 </p>
1386 </blockquote><p>
1387
1388 </p>
1389 <p>Where &lt;audio&gt; is the name of the audio output
1390 driver as returned by the <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a> command,
1391 &lt;prm&gt; a specific parameter name for which information should be
1392 obtained (as returned by the
1393 <a class='info' href='#GET AUDIO_OUTPUT_DRIVER INFO'>"GET AUDIO_OUTPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific audio output driver</span><span>)</span></a> command) and
1394 &lt;deplist&gt; is an optional list of parameters on which the sought
1395 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1396 pairs in form of "key1=val1 key2=val2 ...", where character string values
1397 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1398 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1399 the front-end application can simply put all parameters into &lt;deplist&gt;
1400 with the values already selected by the user.
1401 </p>
1402 <p>Possible Answers:
1403 </p>
1404 <p>
1405 </p>
1406 <blockquote class="text">
1407 <p>LinuxSampler will answer by sending a
1408 &lt;CRLF&gt; separated list.
1409 Each answer line begins with the information category name
1410 followed by a colon and then a space character &lt;SP&gt; and
1411 finally
1412 the info character string to that info category. There are
1413 information which is always returned, independently of the
1414 given driver parameter and there are optional information
1415 which is only shown dependently to given driver parameter. At
1416 the moment the following information categories are defined:
1417 </p>
1418 </blockquote><p>
1419
1420 </p>
1421 <p>
1422 </p>
1423 <blockquote class="text">
1424 <p>TYPE -
1425 </p>
1426 <blockquote class="text">
1427 <p>either "BOOL" for boolean value(s) or
1428 "INT" for integer
1429 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1430 character string(s)
1431 (always returned, no matter which driver parameter)
1432 </p>
1433 </blockquote>
1434
1435
1436 <p>DESCRIPTION -
1437 </p>
1438 <blockquote class="text">
1439 <p>arbitrary text describing the purpose of the parameter
1440 (always returned, no matter which driver parameter)
1441 </p>
1442 </blockquote>
1443
1444
1445 <p>MANDATORY -
1446 </p>
1447 <blockquote class="text">
1448 <p>either true or false, defines if this parameter must be
1449 given when the device is to be created with the
1450 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1451 command (always returned, no matter which driver parameter)
1452 </p>
1453 </blockquote>
1454
1455
1456 <p>FIX -
1457 </p>
1458 <blockquote class="text">
1459 <p>either true or false, if false then this parameter can
1460 be changed at any time, once the device is created by
1461 the <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1462 command (always returned, no matter which driver parameter)
1463 </p>
1464 </blockquote>
1465
1466
1467 <p>MULTIPLICITY -
1468 </p>
1469 <blockquote class="text">
1470 <p>either true or false, defines if this parameter allows
1471 only one value or a list of values, where true means
1472 multiple values and false only a single value allowed
1473 (always returned, no matter which driver parameter)
1474 </p>
1475 </blockquote>
1476
1477
1478 <p>DEPENDS -
1479 </p>
1480 <blockquote class="text">
1481 <p>comma separated list of parameters this parameter depends
1482 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1483 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1484 listed parameters, for example assuming that an audio
1485 driver (like the ALSA driver) offers parameters 'card'
1486 and 'samplerate' then parameter 'samplerate' would
1487 depend on 'card' because the possible values for
1488 'samplerate' depends on the sound card which can be
1489 chosen by the 'card' parameter
1490 (optionally returned, dependent to driver parameter)
1491 </p>
1492 </blockquote>
1493
1494
1495 <p>DEFAULT -
1496 </p>
1497 <blockquote class="text">
1498 <p>reflects the default value for this parameter which is
1499 used when the device is created and not explicitly
1500 given with the <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a> command,
1501 in case of MULTIPLCITY=true, this is a comma separated
1502 list, that's why character strings are encapsulated into
1503 apostrophes (')
1504 (optionally returned, dependent to driver parameter)
1505 </p>
1506 </blockquote>
1507
1508
1509 <p>RANGE_MIN -
1510 </p>
1511 <blockquote class="text">
1512 <p>defines lower limit of the allowed value range for this
1513 parameter, can be an integer value as well as a dotted
1514 number, this parameter is often used in conjunction
1515 with RANGE_MAX, but may also appear without
1516 (optionally returned, dependent to driver parameter)
1517 </p>
1518 </blockquote>
1519
1520
1521 <p>RANGE_MAX -
1522 </p>
1523 <blockquote class="text">
1524 <p>defines upper limit of the allowed value range for this
1525 parameter, can be an integer value as well as a dotted
1526 number, this parameter is often used in conjunction with
1527 RANGE_MIN, but may also appear without
1528 (optionally returned, dependent to driver parameter)
1529 </p>
1530 </blockquote>
1531
1532
1533 <p>POSSIBILITIES -
1534 </p>
1535 <blockquote class="text">
1536 <p>comma separated list of possible values for this
1537 parameter, character strings are encapsulated into
1538 apostrophes
1539 (optionally returned, dependent to driver parameter)
1540 </p>
1541 </blockquote>
1542
1543
1544 </blockquote><p>
1545
1546 </p>
1547 <p>The mentioned fields above don't have to be in particular order.
1548 </p>
1549 <p>Examples:
1550 </p>
1551 <p>
1552 </p>
1553 <blockquote class="text">
1554 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1555 </p>
1556 <p>S: "DESCRIPTION: sound card to be used"
1557 </p>
1558 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1559 </p>
1560 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1561 </p>
1562 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1563 </p>
1564 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1565 </p>
1566 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1567 </p>
1568 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1569 </p>
1570 <p>&nbsp;&nbsp;&nbsp;"."
1571 </p>
1572 </blockquote><p>
1573
1574 </p>
1575 <p>
1576 </p>
1577 <blockquote class="text">
1578 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1579 </p>
1580 <p>S: "DESCRIPTION: output sample rate in Hz"
1581 </p>
1582 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1583 </p>
1584 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1585 </p>
1586 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1587 </p>
1588 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1589 </p>
1590 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1591 </p>
1592 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1593 </p>
1594 <p>&nbsp;&nbsp;&nbsp;"."
1595 </p>
1596 </blockquote><p>
1597
1598 </p>
1599 <p>
1600 </p>
1601 <blockquote class="text">
1602 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1603 </p>
1604 <p>S: "DESCRIPTION: output sample rate in Hz"
1605 </p>
1606 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1607 </p>
1608 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1609 </p>
1610 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1611 </p>
1612 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1613 </p>
1614 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1615 </p>
1616 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1617 </p>
1618 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1619 </p>
1620 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1621 </p>
1622 <p>&nbsp;&nbsp;&nbsp;"."
1623 </p>
1624 </blockquote><p>
1625
1626 </p>
1627 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1628 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1629 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1630 Creating an audio output device</h3>
1631
1632 <p>Use the following command to create a new audio output device for the desired audio output system:
1633 </p>
1634 <p>
1635 </p>
1636 <blockquote class="text">
1637 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1638 </p>
1639 </blockquote><p>
1640
1641 </p>
1642 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1643 output system as returned by the
1644 <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a>
1645 command and &lt;param-list&gt; by an optional list of driver
1646 specific parameters in form of "key1=val1 key2=val2 ...", where
1647 character string values should be encapsulated into apostrophes (').
1648 Note that there might be drivers which require parameter(s) to be
1649 given with this command. Use the previously described commands in
1650 this chapter to get this information.
1651 </p>
1652 <p>Possible Answers:
1653 </p>
1654 <p>
1655 </p>
1656 <blockquote class="text">
1657 <p>"OK[&lt;device-id&gt;]" -
1658 </p>
1659 <blockquote class="text">
1660 <p>in case the device was successfully created, where
1661 &lt;device-id&gt; is the numerical ID of the new device
1662 </p>
1663 </blockquote>
1664
1665
1666 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1667 </p>
1668 <blockquote class="text">
1669 <p>in case the device was created successfully, where
1670 &lt;device-id&gt; is the numerical ID of the new device, but there
1671 are noteworthy issue(s) related (e.g. sound card doesn't
1672 support given hardware parameters and the driver is using
1673 fall-back values), providing an appropriate warning code and
1674 warning message
1675 </p>
1676 </blockquote>
1677
1678
1679 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1680 </p>
1681 <blockquote class="text">
1682 <p>in case it failed, providing an appropriate error code and error message
1683 </p>
1684 </blockquote>
1685
1686
1687 </blockquote><p>
1688
1689 </p>
1690 <p>Examples:
1691 </p>
1692 <p>
1693 </p>
1694 <blockquote class="text">
1695 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1696 </p>
1697 <p>S: "OK[0]"
1698 </p>
1699 </blockquote><p>
1700
1701 </p>
1702 <p>
1703 </p>
1704 <blockquote class="text">
1705 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1706 </p>
1707 <p>S: "OK[1]"
1708 </p>
1709 </blockquote><p>
1710
1711 </p>
1712 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1713 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1714 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1715 Destroying an audio output device</h3>
1716
1717 <p>Use the following command to destroy a created output device:
1718 </p>
1719 <p>
1720 </p>
1721 <blockquote class="text">
1722 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1723 </p>
1724 </blockquote><p>
1725
1726 </p>
1727 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1728 audio output device as given by the
1729 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1730 or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1731 command.
1732 </p>
1733 <p>Possible Answers:
1734 </p>
1735 <p>
1736 </p>
1737 <blockquote class="text">
1738 <p>"OK" -
1739 </p>
1740 <blockquote class="text">
1741 <p>in case the device was successfully destroyed
1742 </p>
1743 </blockquote>
1744
1745
1746 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1747 </p>
1748 <blockquote class="text">
1749 <p>in case the device was destroyed successfully, but there are
1750 noteworthy issue(s) related (e.g. an audio over ethernet
1751 driver was unloaded but the other host might not be
1752 informed about this situation), providing an appropriate
1753 warning code and warning message
1754 </p>
1755 </blockquote>
1756
1757
1758 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1759 </p>
1760 <blockquote class="text">
1761 <p>in case it failed, providing an appropriate error code and
1762 error message
1763 </p>
1764 </blockquote>
1765
1766
1767 </blockquote><p>
1768
1769 </p>
1770 <p>Example:
1771 </p>
1772 <p>
1773 </p>
1774 <blockquote class="text">
1775 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1776 </p>
1777 <p>S: "OK"
1778 </p>
1779 </blockquote><p>
1780
1781 </p>
1782 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1784 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1785 Getting all created audio output device count</h3>
1786
1787 <p>Use the following command to count all created audio output devices:
1788 </p>
1789 <p>
1790 </p>
1791 <blockquote class="text">
1792 <p>GET AUDIO_OUTPUT_DEVICES
1793 </p>
1794 </blockquote><p>
1795
1796 </p>
1797 <p>Possible Answers:
1798 </p>
1799 <p>
1800 </p>
1801 <blockquote class="text">
1802 <p>LinuxSampler will answer by sending the current number of all
1803 audio output devices.
1804 </p>
1805 </blockquote><p>
1806
1807 </p>
1808 <p>Example:
1809 </p>
1810 <p>
1811 </p>
1812 <blockquote class="text">
1813 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1814 </p>
1815 <p>S: "4"
1816 </p>
1817 </blockquote><p>
1818
1819 </p>
1820 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1821 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1822 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1823 Getting all created audio output device list</h3>
1824
1825 <p>Use the following command to list all created audio output devices:
1826 </p>
1827 <p>
1828 </p>
1829 <blockquote class="text">
1830 <p>LIST AUDIO_OUTPUT_DEVICES
1831 </p>
1832 </blockquote><p>
1833
1834 </p>
1835 <p>Possible Answers:
1836 </p>
1837 <p>
1838 </p>
1839 <blockquote class="text">
1840 <p>LinuxSampler will answer by sending a comma separated list with
1841 the numerical IDs of all audio output devices.
1842 </p>
1843 </blockquote><p>
1844
1845 </p>
1846 <p>Example:
1847 </p>
1848 <p>
1849 </p>
1850 <blockquote class="text">
1851 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1852 </p>
1853 <p>S: "0,1,4,5"
1854 </p>
1855 </blockquote><p>
1856
1857 </p>
1858 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1859 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1860 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1861 Getting current settings of an audio output device</h3>
1862
1863 <p>Use the following command to get current settings of a specific, created audio output device:
1864 </p>
1865 <p>
1866 </p>
1867 <blockquote class="text">
1868 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1869 </p>
1870 </blockquote><p>
1871
1872 </p>
1873 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1874 of the audio output device as e.g. returned by the
1875 <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a> command.
1876 </p>
1877 <p>Possible Answers:
1878 </p>
1879 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1880 Each answer line begins with the information category name
1881 followed by a colon and then a space character &lt;SP&gt; and finally
1882 the info character string to that info category. As some
1883 parameters might allow multiple values, character strings are
1884 encapsulated into apostrophes ('). At the moment the following
1885 information categories are defined (independently of device):
1886 </p>
1887 <p>
1888 </p>
1889 <blockquote class="text">
1890 <p>DRIVER -
1891 </p>
1892 <blockquote class="text">
1893 <p>identifier of the used audio output driver, as also
1894 returned by the
1895 <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a>
1896 command
1897 </p>
1898 </blockquote>
1899
1900
1901 <p>CHANNELS -
1902 </p>
1903 <blockquote class="text">
1904 <p>amount of audio output channels this device currently
1905 offers
1906 </p>
1907 </blockquote>
1908
1909
1910 <p>SAMPLERATE -
1911 </p>
1912 <blockquote class="text">
1913 <p>playback sample rate the device uses
1914 </p>
1915 </blockquote>
1916
1917
1918 <p>ACTIVE -
1919 </p>
1920 <blockquote class="text">
1921 <p>either true or false, if false then the audio device is
1922 inactive and doesn't output any sound, nor do the
1923 sampler channels connected to this audio device render
1924 any audio
1925 </p>
1926 </blockquote>
1927
1928
1929 </blockquote><p>
1930
1931 </p>
1932 <p>The mentioned fields above don't have to be in particular
1933 order. The fields above are only those fields which are
1934 returned by all audio output devices. Every audio output driver
1935 might have its own, additional driver specific parameters (see
1936 <a class='info' href='#GET AUDIO_OUTPUT_DRIVER INFO'>Section&nbsp;6.2.3<span> (</span><span class='info'>Getting information about a specific audio output driver</span><span>)</span></a>)
1937 which are also returned by this command.
1938 </p>
1939 <p>Example:
1940 </p>
1941 <p>
1942 </p>
1943 <blockquote class="text">
1944 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1945 </p>
1946 <p>S: "DRIVER: ALSA"
1947 </p>
1948 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1949 </p>
1950 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1951 </p>
1952 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1953 </p>
1954 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1955 </p>
1956 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1957 </p>
1958 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1959 </p>
1960 <p>&nbsp;&nbsp;&nbsp;"."
1961 </p>
1962 </blockquote><p>
1963
1964 </p>
1965 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1966 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1967 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1968 Changing settings of audio output devices</h3>
1969
1970 <p>Use the following command to alter a specific setting of a created audio output device:
1971 </p>
1972 <p>
1973 </p>
1974 <blockquote class="text">
1975 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1976 </p>
1977 </blockquote><p>
1978
1979 </p>
1980 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1981 audio output device as given by the
1982 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1983 or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1984 command, &lt;key&gt; by the name of the parameter to change
1985 and &lt;value&gt; by the new value for this parameter.
1986 </p>
1987 <p>Possible Answers:
1988 </p>
1989 <p>
1990 </p>
1991 <blockquote class="text">
1992 <p>"OK" -
1993 </p>
1994 <blockquote class="text">
1995 <p>in case setting was successfully changed
1996 </p>
1997 </blockquote>
1998
1999
2000 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2001 </p>
2002 <blockquote class="text">
2003 <p>in case setting was changed successfully, but there are
2004 noteworthy issue(s) related, providing an appropriate
2005 warning code and warning message
2006 </p>
2007 </blockquote>
2008
2009
2010 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2011 </p>
2012 <blockquote class="text">
2013 <p>in case it failed, providing an appropriate error code and
2014 error message
2015 </p>
2016 </blockquote>
2017
2018
2019 </blockquote><p>
2020
2021 </p>
2022 <p>Example:
2023 </p>
2024 <p>
2025 </p>
2026 <blockquote class="text">
2027 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2028 </p>
2029 <p>S: "OK"
2030 </p>
2031 </blockquote><p>
2032
2033 </p>
2034 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2035 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2036 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2037 Getting information about an audio channel</h3>
2038
2039 <p>Use the following command to get information about an audio channel:
2040 </p>
2041 <p>
2042 </p>
2043 <blockquote class="text">
2044 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2045 </p>
2046 </blockquote><p>
2047
2048 </p>
2049 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2050 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2051 or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2052 command and &lt;audio-chan&gt; the audio channel number.
2053 </p>
2054 <p>Possible Answers:
2055 </p>
2056 <p>
2057 </p>
2058 <blockquote class="text">
2059 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2060 Each answer line begins with the information category name
2061 followed by a colon and then a space character &lt;SP&gt; and finally
2062 the info character string to that info category. At the moment
2063 the following information categories are defined:
2064 </p>
2065 <p>
2066 </p>
2067 <blockquote class="text">
2068 <p>NAME -
2069 </p>
2070 <blockquote class="text">
2071 <p>arbitrary character string naming the channel, which
2072 doesn't have to be unique (always returned by all audio channels)
2073 </p>
2074 </blockquote>
2075
2076
2077 <p>IS_MIX_CHANNEL -
2078 </p>
2079 <blockquote class="text">
2080 <p>either true or false, a mix-channel is not a real,
2081 independent audio channel, but a virtual channel which
2082 is mixed to another real channel, this mechanism is
2083 needed for sampler engines which need more audio
2084 channels than the used audio system might be able to offer
2085 (always returned by all audio channels)
2086 </p>
2087 </blockquote>
2088
2089
2090 <p>MIX_CHANNEL_DESTINATION -
2091 </p>
2092 <blockquote class="text">
2093 <p>numerical ID (positive integer including 0)
2094 which reflects the real audio channel (of the same audio
2095 output device) this mix channel refers to, means where
2096 the audio signal actually will be routed / added to
2097 (only returned in case the audio channel is mix channel)
2098 </p>
2099 </blockquote>
2100
2101
2102 </blockquote>
2103
2104
2105 </blockquote><p>
2106
2107 </p>
2108 <p>The mentioned fields above don't have to be in particular
2109 order. The fields above are only those fields which are
2110 generally returned for the described cases by all audio
2111 channels regardless of the audio driver. Every audio channel
2112 might have its own, additional driver and channel specific
2113 parameters.
2114 </p>
2115 <p>Examples:
2116 </p>
2117 <p>
2118 </p>
2119 <blockquote class="text">
2120 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2121 </p>
2122 <p>S: "NAME: studio monitor left"
2123 </p>
2124 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2125 </p>
2126 <p>&nbsp;&nbsp;&nbsp;"."
2127 </p>
2128 </blockquote><p>
2129
2130 </p>
2131 <p>
2132 </p>
2133 <blockquote class="text">
2134 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2135 </p>
2136 <p>S: "NAME: studio monitor right"
2137 </p>
2138 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2139 </p>
2140 <p>&nbsp;&nbsp;&nbsp;"."
2141 </p>
2142 </blockquote><p>
2143
2144 </p>
2145 <p>
2146 </p>
2147 <blockquote class="text">
2148 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2149 </p>
2150 <p>S: "NAME: studio monitor left"
2151 </p>
2152 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2153 </p>
2154 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2155 </p>
2156 <p>&nbsp;&nbsp;&nbsp;"."
2157 </p>
2158 </blockquote><p>
2159
2160 </p>
2161 <p>
2162 </p>
2163 <blockquote class="text">
2164 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2165 </p>
2166 <p>S: "NAME: 'ardour (left)'"
2167 </p>
2168 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2169 </p>
2170 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2171 </p>
2172 <p>&nbsp;&nbsp;&nbsp;"."
2173 </p>
2174 </blockquote><p>
2175
2176 </p>
2177 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2178 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2179 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2180 Getting information about specific audio channel parameter</h3>
2181
2182 <p>Use the following command to get detailed information about specific audio channel parameter:
2183 </p>
2184 <p>
2185 </p>
2186 <blockquote class="text">
2187 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2188 </p>
2189 </blockquote><p>
2190
2191 </p>
2192 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2193 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2194 or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2195 command, &lt;chan&gt; the audio channel number
2196 and &lt;param&gt; a specific channel parameter name for which information should
2197 be obtained (as returned by the <a class='info' href='#GET AUDIO_OUTPUT_CHANNEL INFO'>"GET AUDIO_OUTPUT_CHANNEL INFO"<span> (</span><span class='info'>Getting information about an audio channel</span><span>)</span></a> command).
2198 </p>
2199 <p>Possible Answers:
2200 </p>
2201 <p>
2202 </p>
2203 <blockquote class="text">
2204 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2205 Each answer line begins with the information category name
2206 followed by a colon and then a space character &lt;SP&gt; and finally
2207 the info character string to that info category. There are
2208 information which is always returned, independently of the
2209 given channel parameter and there is optional information
2210 which is only shown dependently to the given audio channel. At
2211 the moment the following information categories are defined:
2212 </p>
2213 <p>
2214 </p>
2215 <blockquote class="text">
2216 <p>TYPE -
2217 </p>
2218 <blockquote class="text">
2219 <p>either "BOOL" for boolean value(s) or "INT" for integer
2220 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2221 character string(s)
2222 (always returned)
2223 </p>
2224 </blockquote>
2225
2226
2227 <p>DESCRIPTION -
2228 </p>
2229 <blockquote class="text">
2230 <p>arbitrary text describing the purpose of the parameter (always returned)
2231 </p>
2232 </blockquote>
2233
2234
2235 <p>FIX -
2236 </p>
2237 <blockquote class="text">
2238 <p>either true or false, if true then this parameter is
2239 read only, thus cannot be altered
2240 (always returned)
2241 </p>
2242 </blockquote>
2243
2244
2245 <p>MULTIPLICITY -
2246 </p>
2247 <blockquote class="text">
2248 <p>either true or false, defines if this parameter allows
2249 only one value or a list of values, where true means
2250 multiple values and false only a single value allowed
2251 (always returned)
2252 </p>
2253 </blockquote>
2254
2255
2256 <p>RANGE_MIN -
2257 </p>
2258 <blockquote class="text">
2259 <p>defines lower limit of the allowed value range for this
2260 parameter, can be an integer value as well as a dotted
2261 number, usually used in conjunction with 'RANGE_MAX',
2262 but may also appear without
2263 (optionally returned, dependent to driver and channel
2264 parameter)
2265 </p>
2266 </blockquote>
2267
2268
2269 <p>RANGE_MAX -
2270 </p>
2271 <blockquote class="text">
2272 <p>defines upper limit of the allowed value range for this
2273 parameter, can be an integer value as well as a dotted
2274 number, usually used in conjunction with 'RANGE_MIN',
2275 but may also appear without
2276 (optionally returned, dependent to driver and channel
2277 parameter)
2278 </p>
2279 </blockquote>
2280
2281
2282 <p>POSSIBILITIES -
2283 </p>
2284 <blockquote class="text">
2285 <p>comma separated list of possible values for this
2286 parameter, character strings are encapsulated into
2287 apostrophes
2288 (optionally returned, dependent to driver and channel
2289 parameter)
2290 </p>
2291 </blockquote>
2292
2293
2294 </blockquote>
2295
2296
2297 <p>The mentioned fields above don't have to be in particular order.
2298 </p>
2299 </blockquote><p>
2300
2301 </p>
2302 <p>Example:
2303 </p>
2304 <p>
2305 </p>
2306 <blockquote class="text">
2307 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2308 </p>
2309 <p>S: "DESCRIPTION: bindings to other JACK clients"
2310 </p>
2311 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2312 </p>
2313 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2314 </p>
2315 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2316 </p>
2317 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2318 </p>
2319 <p>&nbsp;&nbsp;&nbsp;"."
2320 </p>
2321 </blockquote><p>
2322
2323 </p>
2324 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2325 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2326 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2327 Changing settings of audio output channels</h3>
2328
2329 <p>Use the following command to alter a specific setting of an audio output channel:
2330 </p>
2331 <p>
2332 </p>
2333 <blockquote class="text">
2334 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2335 </p>
2336 </blockquote><p>
2337
2338 </p>
2339 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2340 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2341 or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2342 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2343 parameter to change and &lt;value&gt; by the new value for this parameter.
2344 </p>
2345 <p>Possible Answers:
2346 </p>
2347 <p>
2348 </p>
2349 <blockquote class="text">
2350 <p>"OK" -
2351 </p>
2352 <blockquote class="text">
2353 <p>in case setting was successfully changed
2354 </p>
2355 </blockquote>
2356
2357
2358 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2359 </p>
2360 <blockquote class="text">
2361 <p>in case setting was changed successfully, but there are
2362 noteworthy issue(s) related, providing an appropriate
2363 warning code and warning message
2364 </p>
2365 </blockquote>
2366
2367
2368 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2369 </p>
2370 <blockquote class="text">
2371 <p>in case it failed, providing an appropriate error code and
2372 error message
2373 </p>
2374 </blockquote>
2375
2376
2377 </blockquote><p>
2378
2379 </p>
2380 <p>Example:
2381 </p>
2382 <p>
2383 </p>
2384 <blockquote class="text">
2385 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2386 </p>
2387 <p>S: "OK"
2388 </p>
2389 </blockquote><p>
2390
2391 </p>
2392 <p>
2393 </p>
2394 <blockquote class="text">
2395 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2396 </p>
2397 <p>S: "OK"
2398 </p>
2399 </blockquote><p>
2400
2401 </p>
2402 <a name="anchor10"></a><br /><hr />
2403 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2404 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2405 Configuring MIDI input drivers</h3>
2406
2407 <p>Instances of drivers in LinuxSampler are called devices. You can use
2408 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2409 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2410 channel. For particular MIDI input systems it's also possible to create
2411 several devices of the same MIDI input type. This chapter describes all
2412 commands to configure LinuxSampler's MIDI input devices and their parameters.
2413 </p>
2414 <p>Instead of defining commands and parameters for each driver individually,
2415 all possible parameters, their meanings and possible values have to be obtained
2416 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2417 front-ends can be written independently of what drivers are currently implemented
2418 and what parameters these drivers are actually offering. This means front-ends can
2419 even handle drivers which are implemented somewhere in future without modifying
2420 the front-end at all.
2421 </p>
2422 <p>Commands for configuring MIDI input devices are pretty much the same as the
2423 commands for configuring audio output drivers, already described in the last
2424 chapter.
2425 </p>
2426 <p>Note: examples in this chapter showing particular parameters of drivers are
2427 not meant as specification of the drivers' parameters. Driver implementations in
2428 LinuxSampler might have complete different parameter names and meanings than shown
2429 in these examples or might change in future, so these examples are only meant for
2430 showing how to retrieve what parameters drivers are offering, how to retrieve their
2431 possible values, etc.
2432 </p>
2433 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2434 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2435 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2436 Getting amount of available MIDI input drivers</h3>
2437
2438 <p>Use the following command to get the number of
2439 MIDI input drivers currently available for the
2440 LinuxSampler instance:
2441 </p>
2442 <p>
2443 </p>
2444 <blockquote class="text">
2445 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2446 </p>
2447 </blockquote><p>
2448
2449 </p>
2450 <p>Possible Answers:
2451 </p>
2452 <p>
2453 </p>
2454 <blockquote class="text">
2455 <p>LinuxSampler will answer by sending the
2456 number of available MIDI input drivers.
2457 </p>
2458 </blockquote><p>
2459
2460 </p>
2461 <p>Example:
2462 </p>
2463 <p>
2464 </p>
2465 <blockquote class="text">
2466 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2467 </p>
2468 <p>S: "2"
2469 </p>
2470 </blockquote><p>
2471
2472 </p>
2473 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2474 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2475 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2476 Getting all available MIDI input drivers</h3>
2477
2478 <p>Use the following command to list all MIDI input drivers currently available
2479 for the LinuxSampler instance:
2480 </p>
2481 <p>
2482 </p>
2483 <blockquote class="text">
2484 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2485 </p>
2486 </blockquote><p>
2487
2488 </p>
2489 <p>Possible Answers:
2490 </p>
2491 <p>
2492 </p>
2493 <blockquote class="text">
2494 <p>LinuxSampler will answer by sending comma separated character
2495 strings, each symbolizing a MIDI input driver.
2496 </p>
2497 </blockquote><p>
2498
2499 </p>
2500 <p>Example:
2501 </p>
2502 <p>
2503 </p>
2504 <blockquote class="text">
2505 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2506 </p>
2507 <p>S: "ALSA,JACK"
2508 </p>
2509 </blockquote><p>
2510
2511 </p>
2512 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2513 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2514 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2515 Getting information about a specific MIDI input driver</h3>
2516
2517 <p>Use the following command to get detailed information about a specific MIDI input driver:
2518 </p>
2519 <p>
2520 </p>
2521 <blockquote class="text">
2522 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2523 </p>
2524 </blockquote><p>
2525
2526 </p>
2527 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2528 by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command.
2529 </p>
2530 <p>Possible Answers:
2531 </p>
2532 <p>
2533 </p>
2534 <blockquote class="text">
2535 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2536 Each answer line begins with the information category name
2537 followed by a colon and then a space character &lt;SP&gt; and finally
2538 the info character string to that info category. At the moment
2539 the following information categories are defined:
2540 </p>
2541 <p>
2542 </p>
2543 <blockquote class="text">
2544 <p>DESCRIPTION -
2545 </p>
2546 <blockquote class="text">
2547 <p>arbitrary description text about the MIDI input driver
2548 </p>
2549 </blockquote>
2550
2551
2552 <p>VERSION -
2553 </p>
2554 <blockquote class="text">
2555 <p>arbitrary character string regarding the driver's version
2556 </p>
2557 </blockquote>
2558
2559
2560 <p>PARAMETERS -
2561 </p>
2562 <blockquote class="text">
2563 <p>comma separated list of all parameters available for the given MIDI input driver
2564 </p>
2565 </blockquote>
2566
2567
2568 </blockquote>
2569
2570
2571 <p>The mentioned fields above don't have to be in particular order.
2572 </p>
2573 </blockquote><p>
2574
2575 </p>
2576 <p>Example:
2577 </p>
2578 <p>
2579 </p>
2580 <blockquote class="text">
2581 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2582 </p>
2583 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2584 </p>
2585 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2586 </p>
2587 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2588 </p>
2589 <p>&nbsp;&nbsp;&nbsp;"."
2590 </p>
2591 </blockquote><p>
2592
2593 </p>
2594 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2595 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2596 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2597 Getting information about specific MIDI input driver parameter</h3>
2598
2599 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2600 </p>
2601 <p>
2602 </p>
2603 <blockquote class="text">
2604 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2605 </p>
2606 </blockquote><p>
2607
2608 </p>
2609 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2610 by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command, &lt;param&gt; a specific
2611 parameter name for which information should be obtained (as returned by the
2612 <a class='info' href='#GET MIDI_INPUT_DRIVER INFO'>"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific MIDI input driver</span><span>)</span></a> command) and &lt;deplist&gt; is an optional list
2613 of parameters on which the sought parameter &lt;param&gt; depends on,
2614 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2615 where character string values are encapsulated into apostrophes ('). Arguments
2616 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2617 will be ignored, means the front-end application can simply put all parameters
2618 in &lt;deplist&gt; with the values selected by the user.
2619 </p>
2620 <p>Possible Answers:
2621 </p>
2622 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2623 Each answer line begins with the information category name
2624 followed by a colon and then a space character &lt;SP> and finally
2625 the info character string to that info category. There is
2626 information which is always returned, independent of the
2627 given driver parameter and there is optional information
2628 which is only shown dependent to given driver parameter. At
2629 the moment the following information categories are defined:
2630 </p>
2631 <p>
2632 </p>
2633 <blockquote class="text">
2634 <p>TYPE -
2635 </p>
2636 <blockquote class="text">
2637 <p>either "BOOL" for boolean value(s) or "INT" for integer
2638 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2639 character string(s)
2640 (always returned, no matter which driver parameter)
2641 </p>
2642 </blockquote>
2643
2644
2645 <p>DESCRIPTION -
2646 </p>
2647 <blockquote class="text">
2648 <p>arbitrary text describing the purpose of the parameter
2649 (always returned, no matter which driver parameter)
2650 </p>
2651 </blockquote>
2652
2653
2654 <p>MANDATORY -
2655 </p>
2656 <blockquote class="text">
2657 <p>either true or false, defines if this parameter must be
2658 given when the device is to be created with the
2659 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2660 (always returned, no matter which driver parameter)
2661 </p>
2662 </blockquote>
2663
2664
2665 <p>FIX -
2666 </p>
2667 <blockquote class="text">
2668 <p>either true or false, if false then this parameter can
2669 be changed at any time, once the device is created by
2670 the <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2671 (always returned, no matter which driver parameter)
2672 </p>
2673 </blockquote>
2674
2675
2676 <p>MULTIPLICITY -
2677 </p>
2678 <blockquote class="text">
2679 <p>either true or false, defines if this parameter allows
2680 only one value or a list of values, where true means
2681 multiple values and false only a single value allowed
2682 (always returned, no matter which driver parameter)
2683 </p>
2684 </blockquote>
2685
2686
2687 <p>DEPENDS -
2688 </p>
2689 <blockquote class="text">
2690 <p>comma separated list of parameters this parameter depends
2691 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2692 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2693 listed parameters, for example assuming that an audio
2694 driver (like the ALSA driver) offers parameters 'card'
2695 and 'samplerate' then parameter 'samplerate' would
2696 depend on 'card' because the possible values for
2697 'samplerate' depends on the sound card which can be
2698 chosen by the 'card' parameter
2699 (optionally returned, dependent to driver parameter)
2700 </p>
2701 </blockquote>
2702
2703
2704 <p>DEFAULT -
2705 </p>
2706 <blockquote class="text">
2707 <p>reflects the default value for this parameter which is
2708 used when the device is created and not explicitly
2709 given with the <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command,
2710 in case of MULTIPLCITY=true, this is a comma separated
2711 list, that's why character strings are encapsulated into
2712 apostrophes (')
2713 (optionally returned, dependent to driver parameter)
2714 </p>
2715 </blockquote>
2716
2717
2718 <p>RANGE_MIN -
2719 </p>
2720 <blockquote class="text">
2721 <p>defines lower limit of the allowed value range for this
2722 parameter, can be an integer value as well as a dotted
2723 number, this parameter is often used in conjunction
2724 with RANGE_MAX, but may also appear without
2725 (optionally returned, dependent to driver parameter)
2726 </p>
2727 </blockquote>
2728
2729
2730 <p>RANGE_MAX -
2731 </p>
2732 <blockquote class="text">
2733 <p>defines upper limit of the allowed value range for this
2734 parameter, can be an integer value as well as a dotted
2735 number, this parameter is often used in conjunction with
2736 RANGE_MIN, but may also appear without
2737 (optionally returned, dependent to driver parameter)
2738 </p>
2739 </blockquote>
2740
2741
2742 <p>POSSIBILITIES -
2743 </p>
2744 <blockquote class="text">
2745 <p>comma separated list of possible values for this
2746 parameter, character strings are encapsulated into
2747 apostrophes
2748 (optionally returned, dependent to driver parameter)
2749 </p>
2750 </blockquote>
2751
2752
2753 </blockquote><p>
2754
2755 </p>
2756 <p>The mentioned fields above don't have to be in particular order.
2757 </p>
2758 <p>Example:
2759 </p>
2760 <p>
2761 </p>
2762 <blockquote class="text">
2763 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2764 </p>
2765 <p>S: "DESCRIPTION: Whether device is enabled"
2766 </p>
2767 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2768 </p>
2769 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2770 </p>
2771 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2772 </p>
2773 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2774 </p>
2775 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2776 </p>
2777 <p>&nbsp;&nbsp;&nbsp;"."
2778 </p>
2779 </blockquote><p>
2780
2781 </p>
2782 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2783 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2784 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2785 Creating a MIDI input device</h3>
2786
2787 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2788 </p>
2789 <p>
2790 </p>
2791 <blockquote class="text">
2792 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2793 </p>
2794 </blockquote><p>
2795
2796 </p>
2797 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2798 by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command and &lt;param-list&gt; by an
2799 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2800 character string values should be encapsulated into apostrophes (').
2801 Note that there might be drivers which require parameter(s) to be
2802 given with this command. Use the previously described commands in
2803 this chapter to get that information.
2804 </p>
2805 <p>Possible Answers:
2806 </p>
2807 <p>
2808 </p>
2809 <blockquote class="text">
2810 <p>"OK[&lt;device-id&gt;]" -
2811 </p>
2812 <blockquote class="text">
2813 <p>in case the device was successfully created, where
2814 &lt;device-id&gt; is the numerical ID of the new device
2815 </p>
2816 </blockquote>
2817
2818
2819 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2820 </p>
2821 <blockquote class="text">
2822 <p>in case the driver was loaded successfully, where
2823 &lt;device-id&gt; is the numerical ID of the new device, but
2824 there are noteworthy issue(s) related, providing an
2825 appropriate warning code and warning message
2826 </p>
2827 </blockquote>
2828
2829
2830 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831 </p>
2832 <blockquote class="text">
2833 <p>in case it failed, providing an appropriate error code and error message
2834 </p>
2835 </blockquote>
2836
2837
2838 </blockquote><p>
2839
2840 </p>
2841 <p>Example:
2842 </p>
2843 <p>
2844 </p>
2845 <blockquote class="text">
2846 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2847 </p>
2848 <p>S: "OK[0]"
2849 </p>
2850 </blockquote><p>
2851
2852 </p>
2853 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2854 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2855 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2856 Destroying a MIDI input device</h3>
2857
2858 <p>Use the following command to destroy a created MIDI input device:
2859 </p>
2860 <p>
2861 </p>
2862 <blockquote class="text">
2863 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2864 </p>
2865 </blockquote><p>
2866
2867 </p>
2868 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2869 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
2870 or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
2871 command.
2872 </p>
2873 <p>Possible Answers:
2874 </p>
2875 <p>
2876 </p>
2877 <blockquote class="text">
2878 <p>"OK" -
2879 </p>
2880 <blockquote class="text">
2881 <p>in case the device was successfully destroyed
2882 </p>
2883 </blockquote>
2884
2885
2886 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2887 </p>
2888 <blockquote class="text">
2889 <p>in case the device was destroyed, but there are noteworthy
2890 issue(s) related, providing an appropriate warning code and
2891 warning message
2892 </p>
2893 </blockquote>
2894
2895
2896 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2897 </p>
2898 <blockquote class="text">
2899 <p>in case it failed, providing an appropriate error code and error message
2900 </p>
2901 </blockquote>
2902
2903
2904 </blockquote><p>
2905
2906 </p>
2907 <p>Example:
2908 </p>
2909 <p>
2910 </p>
2911 <blockquote class="text">
2912 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2913 </p>
2914 <p>S: "OK"
2915 </p>
2916 </blockquote><p>
2917
2918 </p>
2919 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2920 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2921 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2922 Getting all created MIDI input device count</h3>
2923
2924 <p>Use the following command to count all created MIDI input devices:
2925 </p>
2926 <p>
2927 </p>
2928 <blockquote class="text">
2929 <p>GET MIDI_INPUT_DEVICES
2930 </p>
2931 </blockquote><p>
2932
2933 </p>
2934 <p>Possible Answers:
2935 </p>
2936 <p>
2937 </p>
2938 <blockquote class="text">
2939 <p>LinuxSampler will answer by sending the current number of all
2940 MIDI input devices.
2941 </p>
2942 </blockquote><p>
2943
2944 </p>
2945 <p>Example:
2946 </p>
2947 <p>
2948 </p>
2949 <blockquote class="text">
2950 <p>C: "GET MIDI_INPUT_DEVICES"
2951 </p>
2952 <p>S: "3"
2953 </p>
2954 </blockquote><p>
2955
2956 </p>
2957 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2958 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2959 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2960 Getting all created MIDI input device list</h3>
2961
2962 <p>Use the following command to list all created MIDI input devices:
2963 </p>
2964 <p>
2965 </p>
2966 <blockquote class="text">
2967 <p>LIST MIDI_INPUT_DEVICES
2968 </p>
2969 </blockquote><p>
2970
2971 </p>
2972 <p>Possible Answers:
2973 </p>
2974 <p>
2975 </p>
2976 <blockquote class="text">
2977 <p>LinuxSampler will answer by sending a comma separated list
2978 with the numerical Ids of all created MIDI input devices.
2979 </p>
2980 </blockquote><p>
2981
2982 </p>
2983 <p>Examples:
2984 </p>
2985 <p>
2986 </p>
2987 <blockquote class="text">
2988 <p>C: "LIST MIDI_INPUT_DEVICES"
2989 </p>
2990 <p>S: "0,1,2"
2991 </p>
2992 </blockquote><p>
2993
2994 </p>
2995 <p>
2996 </p>
2997 <blockquote class="text">
2998 <p>C: "LIST MIDI_INPUT_DEVICES"
2999 </p>
3000 <p>S: "1,3"
3001 </p>
3002 </blockquote><p>
3003
3004 </p>
3005 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
3006 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3007 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
3008 Getting current settings of a MIDI input device</h3>
3009
3010 <p>Use the following command to get current settings of a specific, created MIDI input device:
3011 </p>
3012 <p>
3013 </p>
3014 <blockquote class="text">
3015 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3016 </p>
3017 </blockquote><p>
3018
3019 </p>
3020 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3021 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3022 or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3023 command.
3024 </p>
3025 <p>Possible Answers:
3026 </p>
3027 <p>
3028 </p>
3029 <blockquote class="text">
3030 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3031 Each answer line begins with the information category name
3032 followed by a colon and then a space character &lt;SP&gt; and finally
3033 the info character string to that info category. As some
3034 parameters might allow multiple values, character strings are
3035 encapsulated into apostrophes ('). At the moment the following
3036 information categories are defined (independent of driver):
3037 </p>
3038 <p>
3039 </p>
3040 <blockquote class="text">
3041 <p>DRIVER -
3042 </p>
3043 <blockquote class="text">
3044 <p>identifier of the used MIDI input driver, as e.g.
3045 returned by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a>
3046 command
3047 </p>
3048 </blockquote>
3049
3050
3051 </blockquote>
3052
3053 <blockquote class="text">
3054 <p>ACTIVE -
3055 </p>
3056 <blockquote class="text">
3057 <p>either true or false, if false then the MIDI device is
3058 inactive and doesn't listen to any incoming MIDI events
3059 and thus doesn't forward them to connected sampler
3060 channels
3061 </p>
3062 </blockquote>
3063
3064
3065 </blockquote>
3066
3067
3068 </blockquote><p>
3069
3070 </p>
3071 <p>The mentioned fields above don't have to be in particular
3072 order. The fields above are only those fields which are
3073 returned by all MIDI input devices. Every MIDI input driver
3074 might have its own, additional driver specific parameters (see
3075 <a class='info' href='#GET MIDI_INPUT_DRIVER INFO'>"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific MIDI input driver</span><span>)</span></a> command) which are also returned
3076 by this command.
3077 </p>
3078 <p>Example:
3079 </p>
3080 <p>
3081 </p>
3082 <blockquote class="text">
3083 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3084 </p>
3085 <p>S: "DRIVER: ALSA"
3086 </p>
3087 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3088 </p>
3089 <p>&nbsp;&nbsp;&nbsp;"."
3090 </p>
3091 </blockquote><p>
3092
3093 </p>
3094 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3095 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3096 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3097 Changing settings of MIDI input devices</h3>
3098
3099 <p>Use the following command to alter a specific setting of a created MIDI input device:
3100 </p>
3101 <p>
3102 </p>
3103 <blockquote class="text">
3104 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3105 </p>
3106 </blockquote><p>
3107
3108 </p>
3109 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3110 MIDI input device as returned by the
3111 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3112 or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3113 command, &lt;key&gt; by the name of the parameter to change and
3114 &lt;value&gt; by the new value for this parameter.
3115 </p>
3116 <p>Possible Answers:
3117 </p>
3118 <p>
3119 </p>
3120 <blockquote class="text">
3121 <p>"OK" -
3122 </p>
3123 <blockquote class="text">
3124 <p>in case setting was successfully changed
3125 </p>
3126 </blockquote>
3127
3128
3129 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3130 </p>
3131 <blockquote class="text">
3132 <p>in case setting was changed successfully, but there are
3133 noteworthy issue(s) related, providing an appropriate
3134 warning code and warning message
3135 </p>
3136 </blockquote>
3137
3138
3139 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3140 </p>
3141 <blockquote class="text">
3142 <p>in case it failed, providing an appropriate error code and error message
3143 </p>
3144 </blockquote>
3145
3146
3147 </blockquote><p>
3148
3149 </p>
3150 <p>Example:
3151 </p>
3152 <p>
3153 </p>
3154 <blockquote class="text">
3155 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3156 </p>
3157 <p>S: "OK"
3158 </p>
3159 </blockquote><p>
3160
3161 </p>
3162 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3163 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3164 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3165 Getting information about a MIDI port</h3>
3166
3167 <p>Use the following command to get information about a MIDI port:
3168 </p>
3169 <p>
3170 </p>
3171 <blockquote class="text">
3172 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3173 </p>
3174 </blockquote><p>
3175
3176 </p>
3177 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3178 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3179 or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3180 command and &lt;midi-port&gt; the MIDI input port number.
3181 </p>
3182 <p>Possible Answers:
3183 </p>
3184 <p>
3185 </p>
3186 <blockquote class="text">
3187 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3188 Each answer line begins with the information category name
3189 followed by a colon and then a space character &lt;SP&gt; and finally
3190 the info character string to that info category. At the moment
3191 the following information categories are defined:
3192 </p>
3193 <p>NAME -
3194 </p>
3195 <blockquote class="text">
3196 <p>arbitrary character string naming the port
3197 </p>
3198 </blockquote>
3199
3200
3201 </blockquote><p>
3202
3203 </p>
3204 <p>The field above is only the one which is returned by all MIDI
3205 ports regardless of the MIDI driver and port. Every MIDI port
3206 might have its own, additional driver and port specific
3207 parameters.
3208 </p>
3209 <p>Example:
3210 </p>
3211 <p>
3212 </p>
3213 <blockquote class="text">
3214 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3215 </p>
3216 <p>S: "NAME: 'Masterkeyboard'"
3217 </p>
3218 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3219 </p>
3220 <p>&nbsp;&nbsp;&nbsp;"."
3221 </p>
3222 </blockquote><p>
3223
3224 </p>
3225 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3226 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3227 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3228 Getting information about specific MIDI port parameter</h3>
3229
3230 <p>Use the following command to get detailed information about specific MIDI port parameter:
3231 </p>
3232 <p>
3233 </p>
3234 <blockquote class="text">
3235 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3236 </p>
3237 </blockquote><p>
3238
3239 </p>
3240 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3241 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3242 or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3243 command, &lt;port&gt; the MIDI port number and
3244 &lt;param&gt; a specific port parameter name for which information should be
3245 obtained (as returned by the <a class='info' href='#GET MIDI_INPUT_PORT INFO'>"GET MIDI_INPUT_PORT INFO"<span> (</span><span class='info'>Getting information about a MIDI port</span><span>)</span></a> command).
3246 </p>
3247 <p>Possible Answers:
3248 </p>
3249 <p>
3250 </p>
3251 <blockquote class="text">
3252 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3253 Each answer line begins with the information category name
3254 followed by a colon and then a space character &lt;SP&gt; and finally
3255 the info character string to that info category. There is
3256 information which is always returned, independently of the
3257 given channel parameter and there is optional information
3258 which are only shown dependently to the given MIDI port. At the
3259 moment the following information categories are defined:
3260 </p>
3261 <p>TYPE -
3262 </p>
3263 <blockquote class="text">
3264 <p>either "BOOL" for boolean value(s) or "INT" for integer
3265 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3266 character string(s)
3267 (always returned)
3268 </p>
3269 </blockquote>
3270
3271
3272 <p>DESCRIPTION -
3273 </p>
3274 <blockquote class="text">
3275 <p>arbitrary text describing the purpose of the parameter
3276 (always returned)
3277 </p>
3278 </blockquote>
3279
3280
3281 <p>FIX -
3282 </p>
3283 <blockquote class="text">
3284 <p>either true or false, if true then this parameter is
3285 read only, thus cannot be altered
3286 (always returned)
3287 </p>
3288 </blockquote>
3289
3290
3291 <p>MULTIPLICITY -
3292 </p>
3293 <blockquote class="text">
3294 <p>either true or false, defines if this parameter allows
3295 only one value or a list of values, where true means
3296 multiple values and false only a single value allowed
3297 (always returned)
3298 </p>
3299 </blockquote>
3300
3301
3302 <p>RANGE_MIN -
3303 </p>
3304 <blockquote class="text">
3305 <p>defines lower limit of the allowed value range for this
3306 parameter, can be an integer value as well as a dotted
3307 number, this parameter is usually used in conjunction
3308 with 'RANGE_MAX' but may also appear without
3309 (optionally returned, dependent to driver and port
3310 parameter)
3311 </p>
3312 </blockquote>
3313
3314
3315 <p>RANGE_MAX -
3316 </p>
3317 <blockquote class="text">
3318 <p>defines upper limit of the allowed value range for this
3319 parameter, can be an integer value as well as a dotted
3320 number, this parameter is usually used in conjunction
3321 with 'RANGE_MIN' but may also appear without
3322 (optionally returned, dependent to driver and port
3323 parameter)
3324 </p>
3325 </blockquote>
3326
3327
3328 <p>POSSIBILITIES -
3329 </p>
3330 <blockquote class="text">
3331 <p>comma separated list of possible values for this
3332 parameter, character strings are encapsulated into
3333 apostrophes
3334 (optionally returned, dependent to device and port
3335 parameter)
3336 </p>
3337 </blockquote>
3338
3339
3340 </blockquote><p>
3341
3342 </p>
3343 <p>The mentioned fields above don't have to be in particular order.
3344 </p>
3345 <p>Example:
3346 </p>
3347 <p>
3348 </p>
3349 <blockquote class="text">
3350 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3351 </p>
3352 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3353 </p>
3354 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3355 </p>
3356 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3357 </p>
3358 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3359 </p>
3360 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3361 </p>
3362 <p>&nbsp;&nbsp;&nbsp;"."
3363 </p>
3364 </blockquote><p>
3365
3366 </p>
3367 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3368 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3369 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3370 Changing settings of MIDI input ports</h3>
3371
3372 <p>Use the following command to alter a specific setting of a MIDI input port:
3373 </p>
3374 <p>
3375 </p>
3376 <blockquote class="text">
3377 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3378 </p>
3379 </blockquote><p>
3380
3381 </p>
3382 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3383 MIDI device as returned by the
3384 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3385 or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3386 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3387 the parameter to change and &lt;value&gt; by the new value for this
3388 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3389 for specifying no value for parameters allowing a list of values.
3390 </p>
3391 <p>Possible Answers:
3392 </p>
3393 <p>
3394 </p>
3395 <blockquote class="text">
3396 <p>"OK" -
3397 </p>
3398 <blockquote class="text">
3399 <p>in case setting was successfully changed
3400 </p>
3401 </blockquote>
3402
3403
3404 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3405 </p>
3406 <blockquote class="text">
3407 <p>in case setting was changed successfully, but there are
3408 noteworthy issue(s) related, providing an appropriate
3409 warning code and warning message
3410 </p>
3411 </blockquote>
3412
3413
3414 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3415 </p>
3416 <blockquote class="text">
3417 <p>in case it failed, providing an appropriate error code and error message
3418 </p>
3419 </blockquote>
3420
3421
3422 </blockquote><p>
3423
3424 </p>
3425 <p>Example:
3426 </p>
3427 <p>
3428 </p>
3429 <blockquote class="text">
3430 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3431 </p>
3432 <p>S: "OK"
3433 </p>
3434 </blockquote><p>
3435
3436 </p>
3437 <p>
3438 </p>
3439 <blockquote class="text">
3440 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3441 </p>
3442 <p>S: "OK"
3443 </p>
3444 </blockquote><p>
3445
3446 </p>
3447 <a name="anchor11"></a><br /><hr />
3448 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3449 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3450 Configuring sampler channels</h3>
3451
3452 <p>The following commands describe how to add and remove sampler channels, associate a
3453 sampler channel with a sampler engine, load instruments and connect sampler channels to
3454 MIDI and audio devices.
3455 </p>
3456 <a name="LOAD INSTRUMENT"></a><br /><hr />
3457 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3458 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3459 Loading an instrument</h3>
3460
3461 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3462 </p>
3463 <p>
3464 </p>
3465 <blockquote class="text">
3466 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3467 </p>
3468 </blockquote><p>
3469
3470 </p>
3471 <p>Where &lt;filename&gt; is the name of the instrument file on the
3472 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3473 instrument in the instrument file and &lt;sampler-channel> is the
3474 number of the sampler channel the instrument should be assigned to.
3475 Each sampler channel can only have one instrument.
3476 </p>
3477 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3478 escape characters for special characters (see chapter
3479 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"
3480 for details) and accordingly backslash characters in the filename
3481 MUST now be escaped as well!
3482 </p>
3483 <p>The difference between regular and NON_MODAL versions of the command
3484 is that the regular command returns OK only after the instrument has been
3485 fully loaded and the channel is ready to be used while NON_MODAL version
3486 returns immediately and a background process is launched to load the instrument
3487 on the channel. The <a class='info' href='#GET CHANNEL INFO'>GET CHANNEL INFO<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
3488 command can be used to obtain loading
3489 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3490 such as making sure that the file could be read and it is of a proper format
3491 and SHOULD return ERR and SHOULD not launch the background process should any
3492 errors be detected at that point.
3493 </p>
3494 <p>Possible Answers:
3495 </p>
3496 <p>
3497 </p>
3498 <blockquote class="text">
3499 <p>"OK" -
3500 </p>
3501 <blockquote class="text">
3502 <p>in case the instrument was successfully loaded
3503 </p>
3504 </blockquote>
3505
3506
3507 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3508 </p>
3509 <blockquote class="text">
3510 <p>in case the instrument was loaded successfully, but there
3511 are noteworthy issue(s) related (e.g. Engine doesn't support
3512 one or more patch parameters provided by the loaded
3513 instrument file), providing an appropriate warning code and
3514 warning message
3515 </p>
3516 </blockquote>
3517
3518
3519 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3520 </p>
3521 <blockquote class="text">
3522 <p>in case it failed, providing an appropriate error code and error message
3523 </p>
3524 </blockquote>
3525
3526
3527 </blockquote><p>
3528
3529 </p>
3530 <p>Example (Unix):
3531 </p>
3532 <p>
3533 </p>
3534 <blockquote class="text">
3535 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3536 </p>
3537 <p>S: OK
3538 </p>
3539 </blockquote><p>
3540
3541 </p>
3542 <p>Example (Windows):
3543 </p>
3544 <p>
3545 </p>
3546 <blockquote class="text">
3547 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3548 </p>
3549 <p>S: OK
3550 </p>
3551 </blockquote><p>
3552
3553 </p>
3554 <a name="LOAD ENGINE"></a><br /><hr />
3555 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3556 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3557 Loading a sampler engine</h3>
3558
3559 <p>A sampler engine type can be associated to a specific sampler
3560 channel by the following command:
3561 </p>
3562 <p>
3563 </p>
3564 <blockquote class="text">
3565 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3566 </p>
3567 </blockquote><p>
3568
3569 </p>
3570 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3571 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command and &lt;sampler-channel&gt;
3572 the sampler channel as returned by the
3573 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3574 <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command where
3575 the engine type should be assigned to. This command should be issued
3576 after adding a new sampler channel and before any other control
3577 commands on the new sampler channel. It can also be used to change
3578 the engine type of a sampler channel. This command has (currently) no
3579 way to define or force if a new engine instance should be created and
3580 assigned to the given sampler channel or if an already existing
3581 instance of that engine type, shared with other sampler channels,
3582 should be used.
3583 </p>
3584 <p>Possible Answers:
3585 </p>
3586 <p>
3587 </p>
3588 <blockquote class="text">
3589 <p>"OK" -
3590 </p>
3591 <blockquote class="text">
3592 <p>in case the engine was successfully deployed
3593 </p>
3594 </blockquote>
3595
3596
3597 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3598 </p>
3599 <blockquote class="text">
3600 <p>in case the engine was deployed successfully, but there
3601 are noteworthy issue(s) related, providing an appropriate
3602 warning code and warning message
3603 </p>
3604 </blockquote>
3605
3606
3607 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3608 </p>
3609 <blockquote class="text">
3610 <p>in case it failed, providing an appropriate error code and
3611 error message
3612 </p>
3613 </blockquote>
3614
3615
3616 </blockquote><p>
3617
3618 </p>
3619 <p>Example:
3620 </p>
3621 <p>
3622 </p>
3623 <blockquote class="text">
3624 <p>
3625 </p>
3626 </blockquote><p>
3627
3628 </p>
3629 <a name="GET CHANNELS"></a><br /><hr />
3630 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3631 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3632 Getting all created sampler channel count</h3>
3633
3634 <p>The number of sampler channels can change on runtime. To get the
3635 current amount of sampler channels, the front-end can send the
3636 following command:
3637 </p>
3638 <p>
3639 </p>
3640 <blockquote class="text">
3641 <p>GET CHANNELS
3642 </p>
3643 </blockquote><p>
3644
3645 </p>
3646 <p>Possible Answers:
3647 </p>
3648 <p>
3649 </p>
3650 <blockquote class="text">
3651 <p>LinuxSampler will answer by returning the current number of sampler channels.
3652 </p>
3653 </blockquote><p>
3654
3655 </p>
3656 <p>Example:
3657 </p>
3658 <p>
3659 </p>
3660 <blockquote class="text">
3661 <p>C: "GET CHANNELS"
3662 </p>
3663 <p>S: "12"
3664 </p>
3665 </blockquote><p>
3666
3667 </p>
3668 <a name="LIST CHANNELS"></a><br /><hr />
3669 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3670 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3671 Getting all created sampler channel list</h3>
3672
3673 <p>The number of sampler channels can change on runtime. To get the
3674 current list of sampler channels, the front-end can send the
3675 following command:
3676 </p>
3677 <p>
3678 </p>
3679 <blockquote class="text">
3680 <p>LIST CHANNELS
3681 </p>
3682 </blockquote><p>
3683
3684 </p>
3685 <p>Possible Answers:
3686 </p>
3687 <p>
3688 </p>
3689 <blockquote class="text">
3690 <p>LinuxSampler will answer by returning a comma separated list
3691 with all sampler channels numerical IDs.
3692 </p>
3693 </blockquote><p>
3694
3695 </p>
3696 <p>Example:
3697 </p>
3698 <p>
3699 </p>
3700 <blockquote class="text">
3701 <p>C: "LIST CHANNELS"
3702 </p>
3703 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3704 </p>
3705 </blockquote><p>
3706
3707 </p>
3708 <a name="ADD CHANNEL"></a><br /><hr />
3709 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3710 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3711 Adding a new sampler channel</h3>
3712
3713 <p>A new sampler channel can be added to the end of the sampler
3714 channel list by sending the following command:
3715 </p>
3716 <p>
3717 </p>
3718 <blockquote class="text">
3719 <p>ADD CHANNEL
3720 </p>
3721 </blockquote><p>
3722
3723 </p>
3724 <p>This will increment the sampler channel count by one and the new
3725 sampler channel will be appended to the end of the sampler channel
3726 list. The front-end should send the respective, related commands
3727 right after to e.g. load an engine, load an instrument and setting
3728 input, output method and eventually other commands to initialize
3729 the new channel. The front-end should use the sampler channel
3730 returned by the answer of this command to perform the previously
3731 recommended commands, to avoid race conditions e.g. with other
3732 front-ends that might also have sent an "ADD CHANNEL" command.
3733 </p>
3734 <p>Possible Answers:
3735 </p>
3736 <p>
3737 </p>
3738 <blockquote class="text">
3739 <p>"OK[&lt;sampler-channel&gt;]" -
3740 </p>
3741 <blockquote class="text">
3742 <p>in case a new sampler channel could be added, where
3743 &lt;sampler-channel&gt; reflects the channel number of the new
3744 created sampler channel which should be used to set up
3745 the sampler channel by sending subsequent initialization
3746 commands
3747 </p>
3748 </blockquote>
3749
3750
3751 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3752 </p>
3753 <blockquote class="text">
3754 <p>in case a new channel was added successfully, but there are
3755 noteworthy issue(s) related, providing an appropriate
3756 warning code and warning message
3757 </p>
3758 </blockquote>
3759
3760
3761 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3762 </p>
3763 <blockquote class="text">
3764 <p>in case it failed, providing an appropriate error code and
3765 error message
3766 </p>
3767 </blockquote>
3768
3769
3770 </blockquote><p>
3771
3772 </p>
3773 <p>Example:
3774 </p>
3775 <p>
3776 </p>
3777 <blockquote class="text">
3778 <p>
3779 </p>
3780 </blockquote><p>
3781
3782 </p>
3783 <a name="REMOVE CHANNEL"></a><br /><hr />
3784 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3785 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3786 Removing a sampler channel</h3>
3787
3788 <p>A sampler channel can be removed by sending the following command:
3789 </p>
3790 <p>
3791 </p>
3792 <blockquote class="text">
3793 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3794 </p>
3795 </blockquote><p>
3796
3797 </p>
3798 <p>Where &lt;sampler-channel&gt; should be replaced by the
3799 number of the sampler channel as given by the
3800 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3801 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3802 command. The channel numbers of all subsequent sampler channels
3803 remain the same.
3804 </p>
3805 <p>Possible Answers:
3806 </p>
3807 <p>
3808 </p>
3809 <blockquote class="text">
3810 <p>"OK" -
3811 </p>
3812 <blockquote class="text">
3813 <p>in case the given sampler channel could be removed
3814 </p>
3815 </blockquote>
3816
3817
3818 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3819 </p>
3820 <blockquote class="text">
3821 <p>in case the given channel was removed, but there are
3822 noteworthy issue(s) related, providing an appropriate
3823 warning code and warning message
3824 </p>
3825 </blockquote>
3826
3827
3828 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3829 </p>
3830 <blockquote class="text">
3831 <p>in case it failed, providing an appropriate error code and
3832 error message
3833 </p>
3834 </blockquote>
3835
3836
3837 </blockquote><p>
3838
3839 </p>
3840 <p>Example:
3841 </p>
3842 <p>
3843 </p>
3844 <blockquote class="text">
3845 <p>
3846 </p>
3847 </blockquote><p>
3848
3849 </p>
3850 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3851 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3852 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3853 Getting amount of available engines</h3>
3854
3855 <p>The front-end can ask for the number of available engines by sending the following command:
3856 </p>
3857 <p>
3858 </p>
3859 <blockquote class="text">
3860 <p>GET AVAILABLE_ENGINES
3861 </p>
3862 </blockquote><p>
3863
3864 </p>
3865 <p>Possible Answers:
3866 </p>
3867 <p>
3868 </p>
3869 <blockquote class="text">
3870 <p>LinuxSampler will answer by sending the number of available engines.
3871 </p>
3872 </blockquote><p>
3873
3874 </p>
3875 <p>Example:
3876 </p>
3877 <p>
3878 </p>
3879 <blockquote class="text">
3880 <p>C: "GET AVAILABLE_ENGINES"
3881 </p>
3882 <p>S: "4"
3883 </p>
3884 </blockquote><p>
3885
3886 </p>
3887 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3888 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3889 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3890 Getting all available engines</h3>
3891
3892 <p>The front-end can ask for a list of all available engines by sending the following command:
3893 </p>
3894 <p>
3895 </p>
3896 <blockquote class="text">
3897 <p>LIST AVAILABLE_ENGINES
3898 </p>
3899 </blockquote><p>
3900
3901 </p>
3902 <p>Possible Answers:
3903 </p>
3904 <p>
3905 </p>
3906 <blockquote class="text">
3907 <p>LinuxSampler will answer by sending a comma separated list
3908 of the engines' names encapsulated into apostrophes (').
3909 Engine names can consist of lower and upper cases,
3910 digits and underlines ("_" character).
3911 </p>
3912 </blockquote><p>
3913
3914 </p>
3915 <p>Example:
3916 </p>
3917 <p>
3918 </p>
3919 <blockquote class="text">
3920 <p>C: "LIST AVAILABLE_ENGINES"
3921 </p>
3922 <p>S: "'gig','sfz','sf2'"
3923 </p>
3924 </blockquote><p>
3925
3926 </p>
3927 <a name="GET ENGINE INFO"></a><br /><hr />
3928 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3929 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3930 Getting information about an engine</h3>
3931
3932 <p>The front-end can ask for information about a specific engine by
3933 sending the following command:
3934 </p>
3935 <p>
3936 </p>
3937 <blockquote class="text">
3938 <p>GET ENGINE INFO &lt;engine-name&gt;
3939 </p>
3940 </blockquote><p>
3941
3942 </p>
3943 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3944 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3945 </p>
3946 <p>Possible Answers:
3947 </p>
3948 <p>
3949 </p>
3950 <blockquote class="text">
3951 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3952 Each answer line begins with the information category name
3953 followed by a colon and then a space character &lt;SP&gt; and finally
3954 the info character string to that info category. At the moment
3955 the following categories are defined:
3956 </p>
3957 <p>
3958 </p>
3959 <blockquote class="text">
3960 <p>DESCRIPTION -
3961 </p>
3962 <blockquote class="text">
3963 <p>arbitrary description text about the engine
3964 (note that the character string may contain
3965 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3966 </p>
3967 </blockquote>
3968
3969
3970 <p>VERSION -
3971 </p>
3972 <blockquote class="text">
3973 <p>arbitrary character string regarding the engine's version
3974 </p>
3975 </blockquote>
3976
3977
3978 </blockquote>
3979
3980
3981 </blockquote><p>
3982
3983 </p>
3984 <p>The mentioned fields above don't have to be in particular order.
3985 </p>
3986 <p>Examples:
3987 </p>
3988 <p>
3989 </p>
3990 <blockquote class="text">
3991 <p>C: "GET ENGINE INFO gig"
3992 </p>
3993 <p>S: "DESCRIPTION: GigaSampler Format Engine"
3994 </p>
3995 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.110"
3996 </p>
3997 <p>&nbsp;&nbsp;&nbsp;"."
3998 </p>
3999 <p>C: "GET ENGINE INFO sf2"
4000 </p>
4001 <p>S: "DESCRIPTION: SoundFont Format Engine"
4002 </p>
4003 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.4"
4004 </p>
4005 <p>&nbsp;&nbsp;&nbsp;"."
4006 </p>
4007 <p>C: "GET ENGINE INFO sfz"
4008 </p>
4009 <p>S: "DESCRIPTION: SFZ Format Engine"
4010 </p>
4011 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.11"
4012 </p>
4013 <p>&nbsp;&nbsp;&nbsp;"."
4014 </p>
4015 </blockquote><p>
4016
4017 </p>
4018 <a name="GET CHANNEL INFO"></a><br /><hr />
4019 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4020 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
4021 Getting sampler channel information</h3>
4022
4023 <p>The front-end can ask for the current settings of a sampler channel
4024 by sending the following command:
4025 </p>
4026 <p>
4027 </p>
4028 <blockquote class="text">
4029 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4030 </p>
4031 </blockquote><p>
4032
4033 </p>
4034 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4035 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4036 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4037 </p>
4038 <p>Possible Answers:
4039 </p>
4040 <p>
4041 </p>
4042 <blockquote class="text">
4043 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4044 Each answer line begins with the settings category name
4045 followed by a colon and then a space character &lt;SP&gt; and finally
4046 the info character string to that setting category. At the
4047 moment the following categories are defined:
4048 </p>
4049 <p>
4050 </p>
4051 <blockquote class="text">
4052 <p>ENGINE_NAME -
4053 </p>
4054 <blockquote class="text">
4055 <p>name of the engine that is associated with the sampler
4056 channel, "NONE" if there's no engine associated yet for
4057 this sampler channel
4058 </p>
4059 </blockquote>
4060
4061
4062 <p>AUDIO_OUTPUT_DEVICE -
4063 </p>
4064 <blockquote class="text">
4065 <p>numerical ID of the audio output device which is
4066 currently connected to this sampler channel to output
4067 the audio signal, "-1" if there's no device
4068 connected to this sampler channel
4069 </p>
4070 </blockquote>
4071
4072
4073 <p>AUDIO_OUTPUT_CHANNELS -
4074 </p>
4075 <blockquote class="text">
4076 <p>number of output channels the sampler channel offers
4077 (dependent to used sampler engine and loaded instrument)
4078 </p>
4079 </blockquote>
4080
4081
4082 <p>AUDIO_OUTPUT_ROUTING -
4083 </p>
4084 <blockquote class="text">
4085 <p>comma separated list which reflects to which audio
4086 channel of the selected audio output device each
4087 sampler output channel is routed to, e.g. "0,3" would
4088 mean the engine's output channel 0 is routed to channel
4089 0 of the audio output device and the engine's output
4090 channel 1 is routed to the channel 3 of the audio
4091 output device
4092 </p>
4093 </blockquote>
4094
4095
4096 <p>INSTRUMENT_FILE -
4097 </p>
4098 <blockquote class="text">
4099 <p>the file name of the loaded instrument, "NONE" if
4100 there's no instrument yet loaded for this sampler
4101 channel (note: since LSCP 1.2 this path may contain
4102 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4103 </p>
4104 </blockquote>
4105
4106
4107 <p>INSTRUMENT_NR -
4108 </p>
4109 <blockquote class="text">
4110 <p>the instrument index number of the loaded instrument,
4111 "-1" if there's no instrument loaded for this sampler
4112 channel
4113 </p>
4114 </blockquote>
4115
4116
4117 <p>INSTRUMENT_NAME -
4118 </p>
4119 <blockquote class="text">
4120 <p>the instrument name of the loaded instrument
4121 (note: since LSCP 1.2 this character string may contain
4122 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4123 </p>
4124 </blockquote>
4125
4126
4127 <p>INSTRUMENT_STATUS -
4128 </p>
4129 <blockquote class="text">
4130 <p>Integer values 0 to 100 indicating loading progress
4131 percentage for the instrument. Negative
4132 value indicates a loading exception (also returns "-1" in case no
4133 instrument was yet to be loaded on the sampler channel).
4134 Value of 100 indicates that the instrument is fully
4135 loaded.
4136 </p>
4137 </blockquote>
4138
4139
4140 <p>MIDI_INPUT_DEVICE -
4141 </p>
4142 <blockquote class="text">
4143 <p>DEPRECATED: THIS FIELD WILL DISAPPEAR!
4144 </p>
4145 <p>numerical ID of the MIDI input device which is
4146 currently connected to this sampler channel to deliver
4147 MIDI input commands, "-1" if there's no device
4148 connected to this sampler channel
4149 </p>
4150 <p>Should not be used anymore as of LSCP v1.6 and younger.
4151 This field is currently only preserved for backward compatibility.
4152
4153 </p>
4154 <p>This field a relict from times where only one MIDI input per
4155 sampler channel was allowed. Use <a class='info' href='#LIST CHANNEL MIDI_INPUTS'>"GET CHANNEL MIDI_INPUTS"<span> (</span><span class='info'>Getting all MIDI inputs of a sampler channel</span><span>)</span></a>
4156 instead.
4157 </p>
4158 </blockquote>
4159
4160
4161 <p>MIDI_INPUT_PORT -
4162 </p>
4163 <blockquote class="text">
4164 <p>DEPRECATED: THIS FIELD WILL DISAPPEAR!
4165 </p>
4166 <p>port number of the MIDI input device (in case a
4167 MIDI device was already assigned to the sampler
4168 channel)
4169 </p>
4170 <p>Should not be used anymore as of LSCP v1.6 and younger.
4171 This field is currently only preserved for backward compatibility.
4172
4173 </p>
4174 <p>This field a relict from times where only one MIDI input per
4175 sampler channel was allowed. Use <a class='info' href='#LIST CHANNEL MIDI_INPUTS'>"GET CHANNEL MIDI_INPUTS"<span> (</span><span class='info'>Getting all MIDI inputs of a sampler channel</span><span>)</span></a>
4176 instead.
4177 </p>
4178 </blockquote>
4179
4180
4181 <p>MIDI_INPUT_CHANNEL -
4182 </p>
4183 <blockquote class="text">
4184 <p>the MIDI input channel number this sampler channel
4185 should listen to or "ALL" to listen on all MIDI channels
4186 </p>
4187 </blockquote>
4188
4189
4190 <p>VOLUME -
4191 </p>
4192 <blockquote class="text">
4193 <p>optionally dotted number for the channel volume factor
4194 (where a value &lt; 1.0 means attenuation and a value >
4195 1.0 means amplification)
4196 </p>
4197 </blockquote>
4198
4199
4200 <p>MUTE -
4201 </p>
4202 <blockquote class="text">
4203 <p>Determines whether the channel is muted, "true" if the
4204 channel is muted, "false" if the channel is not muted, and
4205 "MUTED_BY_SOLO" if the channel is muted because of the
4206 presence of a solo channel and will be unmuted when
4207 there are no solo channels left
4208 </p>
4209 </blockquote>
4210
4211
4212 <p>SOLO -
4213 </p>
4214 <blockquote class="text">
4215 <p>Determines whether this is a solo channel, "true" if
4216 the channel is a solo channel; "false" otherwise
4217 </p>
4218 </blockquote>
4219
4220
4221 <p>MIDI_INSTRUMENT_MAP -
4222 </p>
4223 <blockquote class="text">
4224 <p>Determines to which MIDI instrument map this sampler
4225 channel is assigned to. Read chapter
4226 <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>
4227 for a list of possible values.
4228 </p>
4229 </blockquote>
4230
4231
4232 </blockquote>
4233
4234
4235 </blockquote><p>
4236
4237 </p>
4238 <p>The mentioned fields above don't have to be in particular order.
4239 </p>
4240 <p>Example:
4241 </p>
4242 <p>
4243 </p>
4244 <blockquote class="text">
4245 <p>C: "GET CHANNEL INFO 34"
4246 </p>
4247 <p>S: "ENGINE_NAME: gig"
4248 </p>
4249 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4250 </p>
4251 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4252 </p>
4253 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4254 </p>
4255 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4256 </p>
4257 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4258 </p>
4259 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4260 </p>
4261 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4262 </p>
4263 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4264 </p>
4265 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4266 </p>
4267 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4268 </p>
4269 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4270 </p>
4271 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4272 </p>
4273 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4274 </p>
4275 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4276 </p>
4277 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4278 </p>
4279 <p>&nbsp;&nbsp;&nbsp;"."
4280 </p>
4281 </blockquote><p>
4282
4283 </p>
4284 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4285 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4286 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4287 Current number of active voices</h3>
4288
4289 <p>The front-end can ask for the current number of active voices on a
4290 sampler channel by sending the following command:
4291 </p>
4292 <p>
4293 </p>
4294 <blockquote class="text">
4295 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4296 </p>
4297 </blockquote><p>
4298
4299 </p>
4300 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4301 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>
4302 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.
4303 </p>
4304 <p>Possible Answers:
4305 </p>
4306 <p>
4307 </p>
4308 <blockquote class="text">
4309 <p>LinuxSampler will answer by returning the number of active
4310 voices on that channel.
4311 </p>
4312 </blockquote><p>
4313
4314 </p>
4315 <p>Example:
4316 </p>
4317 <p>
4318 </p>
4319 <blockquote class="text">
4320 <p>
4321 </p>
4322 </blockquote><p>
4323
4324 </p>
4325 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4326 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4327 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4328 Current number of active disk streams</h3>
4329
4330 <p>The front-end can ask for the current number of active disk streams
4331 on a sampler channel by sending the following command:
4332 </p>
4333 <p>
4334 </p>
4335 <blockquote class="text">
4336 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4337 </p>
4338 </blockquote><p>
4339
4340 </p>
4341 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4342 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>
4343 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.
4344 </p>
4345 <p>Possible Answers:
4346 </p>
4347 <p>
4348 </p>
4349 <blockquote class="text">
4350 <p>LinuxSampler will answer by returning the number of active
4351 disk streams on that channel in case the engine supports disk
4352 streaming, if the engine doesn't support disk streaming it will
4353 return "NA" for not available.
4354 </p>
4355 </blockquote><p>
4356
4357 </p>
4358 <p>Example:
4359 </p>
4360 <p>
4361 </p>
4362 <blockquote class="text">
4363 <p>
4364 </p>
4365 </blockquote><p>
4366
4367 </p>
4368 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4369 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4370 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4371 Current fill state of disk stream buffers</h3>
4372
4373 <p>The front-end can ask for the current fill state of all disk streams
4374 on a sampler channel by sending the following command:
4375 </p>
4376 <p>
4377 </p>
4378 <blockquote class="text">
4379 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4380 </p>
4381 </blockquote><p>
4382
4383 </p>
4384 <p>to get the fill state in bytes or
4385 </p>
4386 <p>
4387 </p>
4388 <blockquote class="text">
4389 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4390 </p>
4391 </blockquote><p>
4392
4393 </p>
4394 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4395 sampler channel number the front-end is interested in
4396 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>
4397 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.
4398 </p>
4399 <p>Possible Answers:
4400 </p>
4401 <p>
4402 </p>
4403 <blockquote class="text">
4404 <p>LinuxSampler will either answer by returning a comma separated
4405 string with the fill state of all disk stream buffers on that
4406 channel or an empty line if there are no active disk streams or
4407 "NA" for *not available* in case the engine which is deployed
4408 doesn't support disk streaming. Each entry in the answer list
4409 will begin with the stream's ID in brackets followed by the
4410 numerical representation of the fill size (either in bytes or
4411 percentage). Note: due to efficiency reasons the fill states in
4412 the response are not in particular order, thus the front-end has
4413 to sort them by itself if necessary.
4414 </p>
4415 </blockquote><p>
4416
4417 </p>
4418 <p>Examples:
4419 </p>
4420 <p>
4421 </p>
4422 <blockquote class="text">
4423 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4424 </p>
4425 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4426 </p>
4427 </blockquote><p>
4428
4429 </p>
4430 <blockquote class="text">
4431 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4432 </p>
4433 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4434 </p>
4435 </blockquote><p>
4436
4437 </p>
4438 <blockquote class="text">
4439 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4440 </p>
4441 <p>S: ""
4442 </p>
4443 </blockquote><p>
4444
4445 </p>
4446 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4447 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4448 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4449 Setting audio output device</h3>
4450
4451 <p>The front-end can set the audio output device on a specific sampler
4452 channel by sending the following command:
4453 </p>
4454 <p>
4455 </p>
4456 <blockquote class="text">
4457 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4458 </p>
4459 </blockquote><p>
4460
4461 </p>
4462 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4463 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>
4464 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
4465 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4466 <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>
4467 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>
4468 command.
4469 </p>
4470 <p>Possible Answers:
4471 </p>
4472 <p>
4473 </p>
4474 <blockquote class="text">
4475 <p>"OK" -
4476 </p>
4477 <blockquote class="text">
4478 <p>on success
4479 </p>
4480 </blockquote>
4481
4482
4483 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4484 </p>
4485 <blockquote class="text">
4486 <p>if audio output device was set, but there are noteworthy
4487 issue(s) related, providing an appropriate warning code and
4488 warning message
4489 </p>
4490 </blockquote>
4491
4492
4493 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4494 </p>
4495 <blockquote class="text">
4496 <p>in case it failed, providing an appropriate error code and error message
4497 </p>
4498 </blockquote>
4499
4500
4501 </blockquote><p>
4502
4503 </p>
4504 <p>Examples:
4505 </p>
4506 <p>
4507 </p>
4508 <blockquote class="text">
4509 <p>
4510 </p>
4511 </blockquote><p>
4512
4513 </p>
4514 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4515 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4516 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4517 Setting audio output type</h3>
4518
4519 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4520 </p>
4521 <p>The front-end can alter the audio output type on a specific sampler
4522 channel by sending the following command:
4523 </p>
4524 <p>
4525 </p>
4526 <blockquote class="text">
4527 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4528 </p>
4529 </blockquote><p>
4530
4531 </p>
4532 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4533 &lt;sampler-channel&gt; is the respective sampler channel number.
4534 </p>
4535 <p>Possible Answers:
4536 </p>
4537 <p>
4538 </p>
4539 <blockquote class="text">
4540 <p>"OK" -
4541 </p>
4542 <blockquote class="text">
4543 <p>on success
4544 </p>
4545 </blockquote>
4546
4547
4548 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4549 </p>
4550 <blockquote class="text">
4551 <p>if audio output type was set, but there are noteworthy
4552 issue(s) related, providing an appropriate warning code and
4553 warning message
4554 </p>
4555 </blockquote>
4556
4557
4558 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4559 </p>
4560 <blockquote class="text">
4561 <p>in case it failed, providing an appropriate error code and error message
4562 </p>
4563 </blockquote>
4564
4565
4566 </blockquote><p>
4567
4568 </p>
4569 <p>Examples:
4570 </p>
4571 <p>
4572 </p>
4573 <blockquote class="text">
4574 <p>
4575 </p>
4576 </blockquote><p>
4577
4578 </p>
4579 <p>Deprecated:
4580 </p>
4581 <p>
4582 </p>
4583 <blockquote class="text">
4584 <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
4585 </p>
4586 <p>This command is a relict from times where there was no sophisticated driver management yet. Use <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a> and <a class='info' href='#SET CHANNEL AUDIO_OUTPUT_DEVICE'>"SET CHANNEL AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Setting audio output device</span><span>)</span></a> instead.
4587 </p>
4588 </blockquote><p>
4589
4590 </p>
4591 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4592 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4593 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4594 Setting audio output channel</h3>
4595
4596 <p>The front-end can alter the audio output channel on a specific
4597 sampler channel by sending the following command:
4598 </p>
4599 <p>
4600 </p>
4601 <blockquote class="text">
4602 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4603 </p>
4604 </blockquote><p>
4605
4606 </p>
4607 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4608 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>
4609 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
4610 numerical ID of the sampler channel's audio output channel which should be
4611 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4612 output device where &lt;audio-out&gt; should be routed to.
4613 </p>
4614 <p>Possible Answers:
4615 </p>
4616 <p>
4617 </p>
4618 <blockquote class="text">
4619 <p>"OK" -
4620 </p>
4621 <blockquote class="text">
4622 <p>on success
4623 </p>
4624 </blockquote>
4625
4626
4627 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4628 </p>
4629 <blockquote class="text">
4630 <p>if audio output channel was set, but there are noteworthy
4631 issue(s) related, providing an appropriate warning code and
4632 warning message
4633 </p>
4634 </blockquote>
4635
4636
4637 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4638 </p>
4639 <blockquote class="text">
4640 <p>in case it failed, providing an appropriate error code and error message
4641 </p>
4642 </blockquote>
4643
4644
4645 </blockquote><p>
4646
4647 </p>
4648 <p>Examples:
4649 </p>
4650 <p>
4651 </p>
4652 <blockquote class="text">
4653 <p>
4654 </p>
4655 </blockquote><p>
4656
4657 </p>
4658 <a name="ADD CHANNEL MIDI_INPUT"></a><br /><hr />
4659 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4660 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4661 Add MIDI input to sampler channel</h3>
4662
4663 <p>The front-end can add a MIDI input on a specific sampler
4664 channel by sending the following command:
4665 </p>
4666 <p>
4667 </p>
4668 <blockquote class="text">
4669 <p>ADD CHANNEL MIDI_INPUT &lt;sampler-channel&gt; &lt;midi-device-id&gt; [&lt;midi-input-port&gt;]
4670 </p>
4671 </blockquote><p>
4672
4673 </p>
4674 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4675 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>
4676 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
4677 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input
4678 device as returned by the
4679 <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>
4680 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,
4681 and &lt;midi-input-port&gt; is an optional MIDI input port number of that
4682 MIDI input device. If &lt;midi-input-port&gt; is omitted,
4683 then the MIDI input device's first port (port number 0) is
4684 used.
4685
4686 </p>
4687 <p>Possible Answers:
4688 </p>
4689 <p>
4690 </p>
4691 <blockquote class="text">
4692 <p>"OK" -
4693 </p>
4694 <blockquote class="text">
4695 <p>on success
4696 </p>
4697 </blockquote>
4698
4699
4700 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4701 </p>
4702 <blockquote class="text">
4703 <p>if MIDI input port was connected, but there are noteworthy
4704 issue(s) related, providing an appropriate warning code and
4705 warning message
4706 </p>
4707 </blockquote>
4708
4709
4710 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4711 </p>
4712 <blockquote class="text">
4713 <p>in case it failed, providing an appropriate error code and error message
4714 </p>
4715 </blockquote>
4716
4717
4718 </blockquote><p>
4719
4720 </p>
4721 <p>Examples:
4722 </p>
4723 <p>
4724 </p>
4725 <blockquote class="text">
4726 <p>C: "ADD CHANNEL MIDI_INPUT 0 0"
4727 </p>
4728 <p>S: "OK"
4729 </p>
4730 <p>C: "ADD CHANNEL MIDI_INPUT 1 0"
4731 </p>
4732 <p>S: "OK"
4733 </p>
4734 <p>C: "ADD CHANNEL MIDI_INPUT 1 1 1"
4735 </p>
4736 <p>S: "OK"
4737 </p>
4738 <p>C: "ADD CHANNEL MIDI_INPUT 1 2 0"
4739 </p>
4740 <p>S: "OK"
4741 </p>
4742 </blockquote><p>
4743
4744 </p>
4745 <p>Since:
4746 </p>
4747 <p>
4748 </p>
4749 <blockquote class="text">
4750 <p>Introduced with LSCP v1.6
4751 </p>
4752 </blockquote><p>
4753
4754 </p>
4755 <a name="REMOVE CHANNEL MIDI_INPUT"></a><br /><hr />
4756 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4757 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4758 Remove MIDI input(s) from sampler channel</h3>
4759
4760 <p>The front-end can remove one ore more MIDI input(s) on a
4761 specific sampler channel by sending the following command:
4762 </p>
4763 <p>
4764 </p>
4765 <blockquote class="text">
4766 <p>REMOVE CHANNEL MIDI_INPUT &lt;sampler-channel&gt; [&lt;midi-device-id&gt; [&lt;midi-input-port&gt;]]
4767 </p>
4768 </blockquote><p>
4769
4770 </p>
4771 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4772 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>
4773 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
4774 and &lt;midi-device-id&gt; and &lt;midi-input-port&gt; are
4775 optional numerical IDs defining the MIDI input device and
4776 one of its MIDI ports as returned by the
4777 <a class='info' href='#LIST CHANNEL MIDI_INPUTS'>"LIST CHANNEL MIDI_INPUTS"<span> (</span><span class='info'>Getting all MIDI inputs of a sampler channel</span><span>)</span></a> command.
4778
4779 </p>
4780 <p>
4781 If &lt;midi-input-port&gt; is omitted, then all MIDI input
4782 ports of &lt;midi-device-id&gt; are disconnected from this
4783 sampler channel.
4784
4785 </p>
4786 <p>
4787 If both, &lt;midi-device-id&gt; and &lt;midi-input-port&gt;
4788 are omitted, then all MIDI input ports currently connected
4789 to this sampler channel are disconnected from this sampler
4790 channel.
4791
4792 </p>
4793 <p>Possible Answers:
4794 </p>
4795 <p>
4796 </p>
4797 <blockquote class="text">
4798 <p>"OK" -
4799 </p>
4800 <blockquote class="text">
4801 <p>on success
4802 </p>
4803 </blockquote>
4804
4805
4806 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4807 </p>
4808 <blockquote class="text">
4809 <p>if MIDI input porst were disconnected, but there are noteworthy
4810 issue(s) related, providing an appropriate warning code and
4811 warning message
4812 </p>
4813 </blockquote>
4814
4815
4816 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4817 </p>
4818 <blockquote class="text">
4819 <p>in case it failed, providing an appropriate error code and error message
4820 </p>
4821 </blockquote>
4822
4823
4824 </blockquote><p>
4825
4826 </p>
4827 <p>Examples:
4828 </p>
4829 <p>
4830 </p>
4831 <blockquote class="text">
4832 <p>C: "REMOVE CHANNEL MIDI_INPUT 0"
4833 </p>
4834 <p>S: "OK"
4835 </p>
4836 <p>C: "REMOVE CHANNEL MIDI_INPUT 1"
4837 </p>
4838 <p>S: "OK"
4839 </p>
4840 <p>C: "REMOVE CHANNEL MIDI_INPUT 1 2 0"
4841 </p>
4842 <p>S: "OK"
4843 </p>
4844 </blockquote><p>
4845
4846 </p>
4847 <p>Since:
4848 </p>
4849 <p>
4850 </p>
4851 <blockquote class="text">
4852 <p>Introduced with LSCP v1.6
4853 </p>
4854 </blockquote><p>
4855
4856 </p>
4857 <a name="LIST CHANNEL MIDI_INPUTS"></a><br /><hr />
4858 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4859 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4860 Getting all MIDI inputs of a sampler channel</h3>
4861
4862 <p>The front-end can query a list of all currently connected
4863 MIDI inputs of a certain sampler channel by sending the following
4864 command:
4865 </p>
4866 <p>
4867 </p>
4868 <blockquote class="text">
4869 <p>LIST CHANNEL MIDI_INPUTS &lt;sampler-channel&gt;
4870 </p>
4871 </blockquote><p>
4872
4873 </p>
4874 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4875 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>
4876 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.
4877
4878 </p>
4879 <p>Possible Answers:
4880 </p>
4881 <p>
4882 </p>
4883 <blockquote class="text">
4884 <p>The sampler will answer by sending a comma separated
4885 list of MIDI input device ID - MIDI input port number pairs, where
4886 each pair is encapsulated into curly braces. The
4887 list is returned in one single line. The MIDI input
4888 device ID corresponds to the number returned by
4889 <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>
4890 and the port number is the index of the respective MIDI
4891 port of that MIDI input device.
4892 </p>
4893 </blockquote><p>
4894
4895 </p>
4896 <p>Example:
4897 </p>
4898 <p>
4899 </p>
4900 <blockquote class="text">
4901 <p>C: "LIST CHANNEL MIDI_INPUTS 0"
4902 </p>
4903 <p>S: "{0,0},{1,3},{2,0}"
4904 </p>
4905 </blockquote><p>
4906
4907 </p>
4908 <p>Since:
4909 </p>
4910 <p>
4911 </p>
4912 <blockquote class="text">
4913 <p>Introduced with LSCP v1.6
4914 </p>
4915 </blockquote><p>
4916
4917 </p>
4918 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4919 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4920 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4921 Setting MIDI input device</h3>
4922
4923 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4924 </p>
4925 <p>The front-end can set the MIDI input device on a specific sampler
4926 channel by sending the following command:
4927 </p>
4928 <p>
4929 </p>
4930 <blockquote class="text">
4931 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4932 </p>
4933 </blockquote><p>
4934
4935 </p>
4936 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4937 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>
4938 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
4939 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4940 <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>
4941 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.
4942 </p>
4943 <p>
4944 If more than 1 MIDI inputs are currently connected to this
4945 sampler channel: Sending this command will disconnect ALL
4946 currently connected MIDI input ports connected to this
4947 sampler channel before establishing the new MIDI input
4948 connection. So this command does NOT add the connection,
4949 it replaces all existing ones instead. This behavior is due
4950 to preserving full behavior backward compatibility.
4951
4952 </p>
4953 <p>Possible Answers:
4954 </p>
4955 <p>
4956 </p>
4957 <blockquote class="text">
4958 <p>"OK" -
4959 </p>
4960 <blockquote class="text">
4961 <p>on success
4962 </p>
4963 </blockquote>
4964
4965
4966 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4967 </p>
4968 <blockquote class="text">
4969 <p>if MIDI input device was set, but there are noteworthy
4970 issue(s) related, providing an appropriate warning code and
4971 warning message
4972 </p>
4973 </blockquote>
4974
4975
4976 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4977 </p>
4978 <blockquote class="text">
4979 <p>in case it failed, providing an appropriate error code and error message
4980 </p>
4981 </blockquote>
4982
4983
4984 </blockquote><p>
4985
4986 </p>
4987 <p>Examples:
4988 </p>
4989 <p>
4990 </p>
4991 <blockquote class="text">
4992 <p>
4993 </p>
4994 </blockquote><p>
4995
4996 </p>
4997 <p>Deprecated:
4998 </p>
4999 <p>
5000 </p>
5001 <blockquote class="text">
5002 <p>Should not be used anymore as of LSCP v1.6 and younger. This command is currently only preserved for backward compatibility.
5003 </p>
5004 <p>This command is a relict from times where only one MIDI input per sampler channel was allowed. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5005 </p>
5006 </blockquote><p>
5007
5008 </p>
5009 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
5010 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5011 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
5012 Setting MIDI input type</h3>
5013
5014 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
5015 </p>
5016 <p>The front-end can alter the MIDI input type on a specific sampler
5017 channel by sending the following command:
5018 </p>
5019 <p>
5020 </p>
5021 <blockquote class="text">
5022 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
5023 </p>
5024 </blockquote><p>
5025
5026 </p>
5027 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
5028 &lt;sampler-channel&gt; is the respective sampler channel number.
5029 </p>
5030 <p>
5031 If more than 1 MIDI inputs are currently connected to this
5032 sampler channel: Sending this command will disconnect ALL
5033 currently connected MIDI input ports connected to this
5034 sampler channel before establishing the new MIDI input
5035 connection. So this command does NOT add the connection,
5036 it replaces all existing ones instead. This behavior is due
5037 to preserving full behavior backward compatibility.
5038
5039 </p>
5040 <p>Possible Answers:
5041 </p>
5042 <p>
5043 </p>
5044 <blockquote class="text">
5045 <p>"OK" -
5046 </p>
5047 <blockquote class="text">
5048 <p>on success
5049 </p>
5050 </blockquote>
5051
5052
5053 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5054 </p>
5055 <blockquote class="text">
5056 <p>if MIDI input type was set, but there are noteworthy
5057 issue(s) related, providing an appropriate warning code and
5058 warning message
5059 </p>
5060 </blockquote>
5061
5062
5063 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5064 </p>
5065 <blockquote class="text">
5066 <p>in case it failed, providing an appropriate error code and error message
5067 </p>
5068 </blockquote>
5069
5070
5071 </blockquote><p>
5072
5073 </p>
5074 <p>Examples:
5075 </p>
5076 <p>
5077 </p>
5078 <blockquote class="text">
5079 <p>
5080 </p>
5081 </blockquote><p>
5082
5083 </p>
5084 <p>Deprecated:
5085 </p>
5086 <p>
5087 </p>
5088 <blockquote class="text">
5089 <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
5090 </p>
5091 <p>This command is a relict from times where only 1 MIDI input per sampler channels was allowed and where no sophisticated driver management existed yet. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5092 </p>
5093 </blockquote><p>
5094
5095 </p>
5096 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
5097 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5098 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
5099 Setting MIDI input port</h3>
5100
5101 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
5102 </p>
5103 <p>The front-end can alter the MIDI input port on a specific sampler
5104 channel by sending the following command:
5105 </p>
5106 <p>
5107 </p>
5108 <blockquote class="text">
5109 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
5110 </p>
5111 </blockquote><p>
5112
5113 </p>
5114 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
5115 MIDI input device connected to the sampler channel given by
5116 &lt;sampler-channel&gt;.
5117 </p>
5118 <p>
5119 If more than 1 MIDI inputs are currently connected to this
5120 sampler channel: Sending this command will switch the
5121 connection of the first (and only the first) MIDI input port
5122 currently being connected to this sampler channel, to
5123 another port of the same MIDI input device. Or in other
5124 words: the first MIDI input port currently connected to
5125 this sampler channel will be disconnected, and the requested
5126 other port of its MIDI input device will be connected to
5127 this sampler channel instead. This behavior is due
5128 to preserving full behavior backward compatibility.
5129
5130 </p>
5131 <p>Possible Answers:
5132 </p>
5133 <p>
5134 </p>
5135 <blockquote class="text">
5136 <p>"OK" -
5137 </p>
5138 <blockquote class="text">
5139 <p>on success
5140 </p>
5141 </blockquote>
5142
5143
5144 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5145 </p>
5146 <blockquote class="text">
5147 <p>if MIDI input port was set, but there are noteworthy
5148 issue(s) related, providing an appropriate warning code and
5149 warning message
5150 </p>
5151 </blockquote>
5152
5153
5154 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5155 </p>
5156 <blockquote class="text">
5157 <p>in case it failed, providing an appropriate error code and error message
5158 </p>
5159 </blockquote>
5160
5161
5162 </blockquote><p>
5163
5164 </p>
5165 <p>Examples:
5166 </p>
5167 <p>
5168 </p>
5169 <blockquote class="text">
5170 <p>
5171 </p>
5172 </blockquote><p>
5173
5174 </p>
5175 <p>Deprecated:
5176 </p>
5177 <p>
5178 </p>
5179 <blockquote class="text">
5180 <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
5181 </p>
5182 <p>This command is a relict from times where only one MIDI input per sampler channel was allowed. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5183 </p>
5184 </blockquote><p>
5185
5186 </p>
5187 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
5188 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5189 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
5190 Setting MIDI input channel</h3>
5191
5192 <p>The front-end can alter the MIDI channel a sampler channel should
5193 listen to by sending the following command:
5194 </p>
5195 <p>
5196 </p>
5197 <blockquote class="text">
5198 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
5199 </p>
5200 </blockquote><p>
5201
5202 </p>
5203 <p>Where &lt;midi-input-chan&gt; is the number
5204 of the new MIDI input channel (zero indexed!) where
5205 &lt;sampler-channel&gt; should listen to, or "ALL" to listen on all 16 MIDI
5206 channels.
5207 </p>
5208 <p>Possible Answers:
5209 </p>
5210 <p>
5211 </p>
5212 <blockquote class="text">
5213 <p>"OK" -
5214 </p>
5215 <blockquote class="text">
5216 <p>on success
5217 </p>
5218 </blockquote>
5219
5220
5221 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5222 </p>
5223 <blockquote class="text">
5224 <p>if MIDI input channel was set, but there are noteworthy
5225 issue(s) related, providing an appropriate warning code and
5226 warning message
5227 </p>
5228 </blockquote>
5229
5230
5231 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5232 </p>
5233 <blockquote class="text">
5234 <p>in case it failed, providing an appropriate error code and error message
5235 </p>
5236 </blockquote>
5237
5238
5239 </blockquote><p>
5240
5241 </p>
5242 <p>Examples:
5243 </p>
5244 <p>
5245 </p>
5246 <blockquote class="text">
5247 <p>C: "SET CHANNEL MIDI_INPUT_CHANNEL 0 0"
5248 </p>
5249 <p>S: "OK"
5250 </p>
5251 <p>C: "SET CHANNEL MIDI_INPUT_CHANNEL 1 ALL"
5252 </p>
5253 <p>S: "OK"
5254 </p>
5255 </blockquote><p>
5256
5257 </p>
5258 <a name="SET CHANNEL VOLUME"></a><br /><hr />
5259 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5260 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5261 Setting channel volume</h3>
5262
5263 <p>The front-end can alter the volume of a sampler channel by sending
5264 the following command:
5265 </p>
5266 <p>
5267 </p>
5268 <blockquote class="text">
5269 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
5270 </p>
5271 </blockquote><p>
5272
5273 </p>
5274 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
5275 smaller than 1.0 means attenuation, whereas a value greater than
5276 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
5277 channel where this volume factor should be set.
5278 </p>
5279 <p>Possible Answers:
5280 </p>
5281 <p>
5282 </p>
5283 <blockquote class="text">
5284 <p>"OK" -
5285 </p>
5286 <blockquote class="text">
5287 <p>on success
5288 </p>
5289 </blockquote>
5290
5291
5292 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5293 </p>
5294 <blockquote class="text">
5295 <p>if channel volume was set, but there are noteworthy
5296 issue(s) related, providing an appropriate warning code and
5297 warning message
5298 </p>
5299 </blockquote>
5300
5301
5302 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5303 </p>
5304 <blockquote class="text">
5305 <p>in case it failed, providing an appropriate error code and error message
5306 </p>
5307 </blockquote>
5308
5309
5310 </blockquote><p>
5311
5312 </p>
5313 <p>Examples:
5314 </p>
5315 <p>
5316 </p>
5317 <blockquote class="text">
5318 <p>
5319 </p>
5320 </blockquote><p>
5321
5322 </p>
5323 <a name="SET CHANNEL MUTE"></a><br /><hr />
5324 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5325 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5326 Muting a sampler channel</h3>
5327
5328 <p>The front-end can mute/unmute a specific sampler
5329 channel by sending the following command:
5330 </p>
5331 <p>
5332 </p>
5333 <blockquote class="text">
5334 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
5335 </p>
5336 </blockquote><p>
5337
5338 </p>
5339 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5340 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>
5341 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
5342 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
5343 to unmute the channel.
5344 </p>
5345 <p>Possible Answers:
5346 </p>
5347 <p>
5348 </p>
5349 <blockquote class="text">
5350 <p>"OK" -
5351 </p>
5352 <blockquote class="text">
5353 <p>on success
5354 </p>
5355 </blockquote>
5356
5357
5358 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5359 </p>
5360 <blockquote class="text">
5361 <p>if the channel was muted/unmuted, but there are noteworthy
5362 issue(s) related, providing an appropriate warning code and
5363 warning message
5364 </p>
5365 </blockquote>
5366
5367
5368 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5369 </p>
5370 <blockquote class="text">
5371 <p>in case it failed, providing an appropriate error code and error message
5372 </p>
5373 </blockquote>
5374
5375
5376 </blockquote><p>
5377
5378 </p>
5379 <p>Examples:
5380 </p>
5381 <p>
5382 </p>
5383 <blockquote class="text">
5384 <p>
5385 </p>
5386 </blockquote><p>
5387
5388 </p>
5389 <a name="SET CHANNEL SOLO"></a><br /><hr />
5390 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5391 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5392 Soloing a sampler channel</h3>
5393
5394 <p>The front-end can solo/unsolo a specific sampler channel
5395 by sending the following command:
5396 </p>
5397 <p>
5398 </p>
5399 <blockquote class="text">
5400 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5401 </p>
5402 </blockquote><p>
5403
5404 </p>
5405 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5406 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>
5407 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
5408 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5409 to unsolo the channel.
5410 </p>
5411 <p>Possible Answers:
5412 </p>
5413 <p>
5414 </p>
5415 <blockquote class="text">
5416 <p>"OK" -
5417 </p>
5418 <blockquote class="text">
5419 <p>on success
5420 </p>
5421 </blockquote>
5422
5423
5424 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5425 </p>
5426 <blockquote class="text">
5427 <p>if the channel was soloed/unsoloed, but there are noteworthy
5428 issue(s) related, providing an appropriate warning code and
5429 warning message
5430 </p>
5431 </blockquote>
5432
5433
5434 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5435 </p>
5436 <blockquote class="text">
5437 <p>in case it failed, providing an appropriate error code and error message
5438 </p>
5439 </blockquote>
5440
5441
5442 </blockquote><p>
5443
5444 </p>
5445 <p>Examples:
5446 </p>
5447 <p>
5448 </p>
5449 <blockquote class="text">
5450 <p>
5451 </p>
5452 </blockquote><p>
5453
5454 </p>
5455 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5456 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5457 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5458 Assigning a MIDI instrument map to a sampler channel</h3>
5459
5460 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5461 by sending the following command:
5462 </p>
5463 <p>
5464 </p>
5465 <blockquote class="text">
5466 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5467 </p>
5468 </blockquote><p>
5469
5470 </p>
5471 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5472 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>
5473 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
5474 &lt;map&gt; can have the following possibilites:
5475 </p>
5476 <p>
5477 </p>
5478 <blockquote class="text">
5479 <p>"NONE" -
5480 </p>
5481 <blockquote class="text">
5482 <p>This is the default setting. In this case
5483 the sampler channel is not assigned any MIDI
5484 instrument map and thus will ignore all MIDI
5485 program change messages.
5486 </p>
5487 </blockquote>
5488
5489
5490 <p>"DEFAULT" -
5491 </p>
5492 <blockquote class="text">
5493 <p>The sampler channel will always use the
5494 default MIDI instrument map to handle MIDI
5495 program change messages.
5496 </p>
5497 </blockquote>
5498
5499
5500 <p>numeric ID -
5501 </p>
5502 <blockquote class="text">
5503 <p>You can assign a specific MIDI instrument map
5504 by replacing &lt;map&gt; with the respective numeric
5505 ID of the MIDI instrument map as returned by the
5506 <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>
5507 command. Once that map will be deleted, the sampler
5508 channel would fall back to "NONE".
5509 </p>
5510 </blockquote>
5511
5512
5513 </blockquote><p>
5514
5515 </p>
5516 <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>
5517 for details regarding MIDI instrument mapping.
5518 </p>
5519 <p>Possible Answers:
5520 </p>
5521 <p>
5522 </p>
5523 <blockquote class="text">
5524 <p>"OK" -
5525 </p>
5526 <blockquote class="text">
5527 <p>on success
5528 </p>
5529 </blockquote>
5530
5531
5532 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5533 </p>
5534 <blockquote class="text">
5535 <p>in case it failed, providing an appropriate error code and error message
5536 </p>
5537 </blockquote>
5538
5539
5540 </blockquote><p>
5541
5542 </p>
5543 <p>Examples:
5544 </p>
5545 <p>
5546 </p>
5547 <blockquote class="text">
5548 <p>
5549 </p>
5550 </blockquote><p>
5551
5552 </p>
5553 <a name="CREATE FX_SEND"></a><br /><hr />
5554 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5555 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5556 Adding an effect send to a sampler channel</h3>
5557
5558 <p>The front-end can create an additional effect send on a specific sampler channel
5559 by sending the following command:
5560 </p>
5561 <p>
5562 </p>
5563 <blockquote class="text">
5564 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5565 </p>
5566 </blockquote><p>
5567
5568 </p>
5569 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5570 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>
5571 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
5572 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5573 is a number between 0..127 defining the MIDI controller which can alter the
5574 effect send level and &lt;name&gt; is an optional argument defining a name
5575 for the effect send entity. The name does not have to be unique, but MUST be
5576 encapsulated into apostrophes and supports escape sequences as described in chapter
5577 "<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>".
5578 </p>
5579 <p>By default, that is as initial routing, the effect send's audio channels
5580 are automatically routed to the last audio channels of the sampler channel's
5581 audio output device, that way you can i.e. first increase the amount of audio
5582 channels on the audio output device for having dedicated effect send output
5583 channels and when "CREATE FX_SEND" is called, those channels will automatically
5584 be picked. You can alter the destination channels however with
5585 <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>.
5586
5587 </p>
5588 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5589 sends on a sampler channel will decrease runtime performance, because for implementing channel
5590 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5591 the voices and route the audio signal afterwards to the master outputs and effect send
5592 outputs (along with their respective effect send levels). A sampler channel without effect
5593 sends however can mix its voices directly into the audio output devices's audio buffers
5594 and is thus faster.
5595
5596 </p>
5597 <p>Possible Answers:
5598 </p>
5599 <p>
5600 </p>
5601 <blockquote class="text">
5602 <p>"OK[&lt;fx-send-id&gt;]" -
5603 </p>
5604 <blockquote class="text">
5605 <p>in case a new effect send could be added to the
5606 sampler channel, where &lt;fx-send-id&gt; reflects the
5607 unique ID of the newly created effect send entity
5608 </p>
5609 </blockquote>
5610
5611
5612 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5613 </p>
5614 <blockquote class="text">
5615 <p>when a new effect send could not be added, i.e.
5616 due to invalid parameters
5617 </p>
5618 </blockquote>
5619
5620
5621 </blockquote><p>
5622
5623 </p>
5624 <p>Examples:
5625 </p>
5626 <p>
5627 </p>
5628 <blockquote class="text">
5629 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5630 </p>
5631 <p>S: "OK[0]"
5632 </p>
5633 </blockquote><p>
5634
5635 </p>
5636 <p>
5637 </p>
5638 <blockquote class="text">
5639 <p>C: "CREATE FX_SEND 0 93"
5640 </p>
5641 <p>S: "OK[1]"
5642 </p>
5643 </blockquote><p>
5644
5645 </p>
5646 <a name="DESTROY FX_SEND"></a><br /><hr />
5647 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5648 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5649 Removing an effect send from a sampler channel</h3>
5650
5651 <p>The front-end can remove an existing effect send on a specific sampler channel
5652 by sending the following command:
5653 </p>
5654 <p>
5655 </p>
5656 <blockquote class="text">
5657 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5658 </p>
5659 </blockquote><p>
5660
5661 </p>
5662 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5663 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>
5664 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
5665 sampler channel from which the effect send should be removed from and
5666 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5667 <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>
5668 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.
5669 </p>
5670 <p>Possible Answers:
5671 </p>
5672 <p>
5673 </p>
5674 <blockquote class="text">
5675 <p>"OK" -
5676 </p>
5677 <blockquote class="text">
5678 <p>on success
5679 </p>
5680 </blockquote>
5681
5682
5683 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5684 </p>
5685 <blockquote class="text">
5686 <p>in case it failed, providing an appropriate error code and
5687 error message
5688 </p>
5689 </blockquote>
5690
5691
5692 </blockquote><p>
5693
5694 </p>
5695 <p>Example:
5696 </p>
5697 <p>
5698 </p>
5699 <blockquote class="text">
5700 <p>C: "DESTROY FX_SEND 0 0"
5701 </p>
5702 <p>S: "OK"
5703 </p>
5704 </blockquote><p>
5705
5706 </p>
5707 <a name="GET FX_SENDS"></a><br /><hr />
5708 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5709 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5710 Getting amount of effect sends on a sampler channel</h3>
5711
5712 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5713 by sending the following command:
5714 </p>
5715 <p>
5716 </p>
5717 <blockquote class="text">
5718 <p>GET FX_SENDS &lt;sampler-channel&gt;
5719 </p>
5720 </blockquote><p>
5721
5722 </p>
5723 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5724 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>
5725 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.
5726 </p>
5727 <p>Possible Answers:
5728 </p>
5729 <p>
5730 </p>
5731 <blockquote class="text">
5732 <p>The sampler will answer by returning the number of effect
5733 sends on the given sampler channel.
5734 </p>
5735 </blockquote><p>
5736
5737 </p>
5738 <p>Example:
5739 </p>
5740 <p>
5741 </p>
5742 <blockquote class="text">
5743 <p>C: "GET FX_SENDS 0"
5744 </p>
5745 <p>S: "2"
5746 </p>
5747 </blockquote><p>
5748
5749 </p>
5750 <a name="LIST FX_SENDS"></a><br /><hr />
5751 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5752 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5753 Listing all effect sends on a sampler channel</h3>
5754
5755 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5756 by sending the following command:
5757 </p>
5758 <p>
5759 </p>
5760 <blockquote class="text">
5761 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5762 </p>
5763 </blockquote><p>
5764
5765 </p>
5766 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5767 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>
5768 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.
5769 </p>
5770 <p>Possible Answers:
5771 </p>
5772 <p>
5773 </p>
5774 <blockquote class="text">
5775 <p>The sampler will answer by returning a comma separated list
5776 with all effect sends' numerical IDs on the given sampler
5777 channel.
5778 </p>
5779 </blockquote><p>
5780
5781 </p>
5782 <p>Examples:
5783 </p>
5784 <p>
5785 </p>
5786 <blockquote class="text">
5787 <p>C: "LIST FX_SENDS 0"
5788 </p>
5789 <p>S: "0,1"
5790 </p>
5791 </blockquote><p>
5792
5793 </p>
5794 <p>
5795 </p>
5796 <blockquote class="text">
5797 <p>C: "LIST FX_SENDS 1"
5798 </p>
5799 <p>S: ""
5800 </p>
5801 </blockquote><p>
5802
5803 </p>
5804 <a name="GET FX_SEND INFO"></a><br /><hr />
5805 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5806 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5807 Getting effect send information</h3>
5808
5809 <p>The front-end can ask for the current settings of an effect send entity
5810 by sending the following command:
5811 </p>
5812 <p>
5813 </p>
5814 <blockquote class="text">
5815 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5816 </p>
5817 </blockquote><p>
5818
5819 </p>
5820 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5821 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>
5822 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
5823 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5824 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>
5825 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.
5826
5827 </p>
5828 <p>Possible Answers:
5829 </p>
5830 <p>
5831 </p>
5832 <blockquote class="text">
5833 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5834 Each answer line begins with the settings category name
5835 followed by a colon and then a space character &lt;SP&gt; and finally
5836 the info character string to that setting category. At the
5837 moment the following categories are defined:
5838 </p>
5839 <p>
5840 </p>
5841 <blockquote class="text">
5842 <p>NAME -
5843 </p>
5844 <blockquote class="text">
5845 <p>name of the effect send entity
5846 (note that this character string may contain
5847 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5848 </p>
5849 </blockquote>
5850
5851
5852 <p>MIDI_CONTROLLER -
5853 </p>
5854 <blockquote class="text">
5855 <p>a value between 0 and 127 reflecting the MIDI controller
5856 which is able to modify the effect send's send level
5857 </p>
5858 </blockquote>
5859
5860
5861 <p>LEVEL -
5862 </p>
5863 <blockquote class="text">
5864 <p>optionally dotted number reflecting the effect send's
5865 current send level (where a value &lt; 1.0 means attenuation
5866 and a value > 1.0 means amplification)
5867 </p>
5868 </blockquote>
5869
5870
5871 <p>AUDIO_OUTPUT_ROUTING -
5872 </p>
5873 <blockquote class="text">
5874 <p>comma separated list which reflects to which audio
5875 channel of the selected audio output device each
5876 effect send output channel is routed to, e.g. "0,3" would
5877 mean the effect send's output channel 0 is routed to channel
5878 0 of the audio output device and the effect send's output
5879 channel 1 is routed to the channel 3 of the audio
5880 output device (see
5881 <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>
5882 for details), if an internal send
5883 effect is assigned to the effect
5884 send, then this setting defines the
5885 audio channel routing to that
5886 effect instance respectively
5887 </p>
5888 </blockquote>
5889
5890
5891 <p>EFFECT -
5892 </p>
5893 <blockquote class="text">
5894 <p>destination send effect chain ID
5895 and destination effect chain
5896 position, separated by comma in the
5897 form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5898 or "NONE" if there is no send effect
5899 assigned to the effect send
5900 </p>
5901 </blockquote>
5902
5903
5904 </blockquote>
5905
5906
5907 </blockquote><p>
5908
5909 </p>
5910 <p>The mentioned fields above don't have to be in particular order.
5911 </p>
5912 <p>Example:
5913 </p>
5914 <p>
5915 </p>
5916 <blockquote class="text">
5917 <p>C: "GET FX_SEND INFO 0 0"
5918 </p>
5919 <p>S: "NAME: Reverb Send"
5920 </p>
5921 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5922 </p>
5923 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5924 </p>
5925 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5926 </p>
5927 <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5928 </p>
5929 <p>&nbsp;&nbsp;&nbsp;"."
5930 </p>
5931 </blockquote><p>
5932
5933 </p>
5934 <p>
5935 </p>
5936 <blockquote class="text">
5937 <p>C: "GET FX_SEND INFO 0 1"
5938 </p>
5939 <p>S: "NAME: Delay Send (Internal)"
5940 </p>
5941 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5942 </p>
5943 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5944 </p>
5945 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5946 </p>
5947 <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5948 </p>
5949 <p>&nbsp;&nbsp;&nbsp;"."
5950 </p>
5951 </blockquote><p>
5952
5953 </p>
5954 <a name="SET FX_SEND NAME"></a><br /><hr />
5955 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5956 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5957 Changing effect send's name</h3>
5958
5959 <p>The front-end can alter the current name of an effect
5960 send entity by sending the following command:
5961 </p>
5962 <p>
5963 </p>
5964 <blockquote class="text">
5965 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5966 </p>
5967 </blockquote><p>
5968
5969 </p>
5970 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5971 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>
5972 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,
5973 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5974 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>
5975 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
5976 &lt;name&gt; is the new name of the effect send entity, which
5977 does not have to be unique (name MUST be encapsulated into apostrophes
5978 and supports escape sequences as described in chapter
5979 "<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>").
5980
5981 </p>
5982 <p>Possible Answers:
5983 </p>
5984 <p>
5985 </p>
5986 <blockquote class="text">
5987 <p>"OK" -
5988 </p>
5989 <blockquote class="text">
5990 <p>on success
5991 </p>
5992 </blockquote>
5993
5994
5995 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5996 </p>
5997 <blockquote class="text">
5998 <p>in case it failed, providing an appropriate error code and error message
5999 </p>
6000 </blockquote>
6001
6002
6003 </blockquote><p>
6004
6005 </p>
6006 <p>Example:
6007 </p>
6008 <p>
6009 </p>
6010 <blockquote class="text">
6011 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
6012 </p>
6013 <p>S: "OK"
6014 </p>
6015 </blockquote><p>
6016
6017 </p>
6018 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
6019 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6020 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
6021 Altering effect send's audio routing</h3>
6022
6023 <p>The front-end can alter the destination of an effect send's audio channel on a specific
6024 sampler channel by sending the following command:
6025 </p>
6026 <p>
6027 </p>
6028 <blockquote class="text">
6029 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
6030 </p>
6031 </blockquote><p>
6032
6033 </p>
6034 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6035 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>
6036 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,
6037 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6038 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>
6039 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,
6040 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
6041 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
6042 the audio channel of the selected audio output device where &lt;audio-src&gt;
6043 should be routed to. If an internal send effect is assigned
6044 to the effect send, then this setting defines the audio
6045 channel routing to that effect instance respectively.
6046 </p>
6047 <p>Note that effect sends can only route audio to the same audio output
6048 device as assigned to the effect send's sampler channel. Also note that an
6049 effect send entity does always have exactly as much audio channels as its
6050 sampler channel. So if the sampler channel is stereo, the effect send does
6051 have two audio channels as well. Also keep in mind that the amount of audio
6052 channels on a sampler channel might be dependant not only to the deployed
6053 sampler engine on the sampler channel, but also dependant to the instrument
6054 currently loaded. However you can (effectively) turn an i.e. stereo effect
6055 send into a mono one by simply altering its audio routing appropriately.
6056 </p>
6057 <p>Possible Answers:
6058 </p>
6059 <p>
6060 </p>
6061 <blockquote class="text">
6062 <p>"OK" -
6063 </p>
6064 <blockquote class="text">
6065 <p>on success
6066 </p>
6067 </blockquote>
6068
6069
6070 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6071 </p>
6072 <blockquote class="text">
6073 <p>if audio output channel was set, but there are noteworthy
6074 issue(s) related, providing an appropriate warning code and
6075 warning message
6076 </p>
6077 </blockquote>
6078
6079
6080 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6081 </p>
6082 <blockquote class="text">
6083 <p>in case it failed, providing an appropriate error code and error message
6084 </p>
6085 </blockquote>
6086
6087
6088 </blockquote><p>
6089
6090 </p>
6091 <p>Example:
6092 </p>
6093 <p>
6094 </p>
6095 <blockquote class="text">
6096 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
6097 </p>
6098 <p>S: "OK"
6099 </p>
6100 </blockquote><p>
6101
6102 </p>
6103 <a name="SET FX_SEND EFFECT"></a><br /><hr />
6104 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6105 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
6106 Assigning destination effect to an effect send</h3>
6107
6108 <p>The front-end can (re-)assign a destination effect to an
6109 effect send by sending the following command:
6110 </p>
6111 <p>
6112 </p>
6113 <blockquote class="text">
6114 <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
6115 </p>
6116 </blockquote><p>
6117
6118 </p>
6119 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6120 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>
6121 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,
6122 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6123 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>
6124 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,
6125 &lt;effect-chain&gt; by the numerical ID of the destination
6126 effect chain as returned by the
6127 <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>
6128 or
6129 <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>
6130 command and &lt;chain-pos&gt; reflects the exact effect
6131 chain position in the effect chain which hosts the actual
6132 destination effect.
6133 </p>
6134 <p>Possible Answers:
6135 </p>
6136 <p>
6137 </p>
6138 <blockquote class="text">
6139 <p>"OK" -
6140 </p>
6141 <blockquote class="text">
6142 <p>on success
6143 </p>
6144 </blockquote>
6145
6146
6147 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6148 </p>
6149 <blockquote class="text">
6150 <p>in case it failed, providing an appropriate error code and error message
6151 </p>
6152 </blockquote>
6153
6154
6155 </blockquote><p>
6156
6157 </p>
6158 <p>Example:
6159 </p>
6160 <p>
6161 </p>
6162 <blockquote class="text">
6163 <p>C: "SET FX_SEND EFFECT 0 0 2 5"
6164 </p>
6165 <p>S: "OK"
6166 </p>
6167 </blockquote><p>
6168
6169 </p>
6170 <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
6171 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6172 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
6173 Removing destination effect from an effect send</h3>
6174
6175 <p>The front-end can (re-)assign a destination effect to an
6176 effect send by sending the following command:
6177 </p>
6178 <p>
6179 </p>
6180 <blockquote class="text">
6181 <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
6182 </p>
6183 </blockquote><p>
6184
6185 </p>
6186 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6187 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>
6188 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,
6189 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6190 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>
6191 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.
6192 </p>
6193 <p>After the destination effect has been removed from the
6194 effect send, the audio signal of the effect send will be
6195 routed directly to the audio output device, according to the
6196 audio channel routing setting of the effect send.
6197
6198 </p>
6199 <p>Possible Answers:
6200 </p>
6201 <p>
6202 </p>
6203 <blockquote class="text">
6204 <p>"OK" -
6205 </p>
6206 <blockquote class="text">
6207 <p>on success
6208 </p>
6209 </blockquote>
6210
6211
6212 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6213 </p>
6214 <blockquote class="text">
6215 <p>in case it failed, providing an appropriate error code and error message
6216 </p>
6217 </blockquote>
6218
6219
6220 </blockquote><p>
6221
6222 </p>
6223 <p>Example:
6224 </p>
6225 <p>
6226 </p>
6227 <blockquote class="text">
6228 <p>C: "REMOVE FX_SEND EFFECT 0 0"
6229 </p>
6230 <p>S: "OK"
6231 </p>
6232 </blockquote><p>
6233
6234 </p>
6235 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
6236 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6237 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6238 Altering effect send's MIDI controller</h3>
6239
6240 <p>The front-end can alter the MIDI controller of an effect
6241 send entity by sending the following command:
6242 </p>
6243 <p>
6244 </p>
6245 <blockquote class="text">
6246 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
6247 </p>
6248 </blockquote><p>
6249
6250 </p>
6251 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6252 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>
6253 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,
6254 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6255 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>
6256 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
6257 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
6258 able to modify the effect send's send level.
6259 </p>
6260 <p>Possible Answers:
6261 </p>
6262 <p>
6263 </p>
6264 <blockquote class="text">
6265 <p>"OK" -
6266 </p>
6267 <blockquote class="text">
6268 <p>on success
6269 </p>
6270 </blockquote>
6271
6272
6273 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6274 </p>
6275 <blockquote class="text">
6276 <p>if MIDI controller was set, but there are noteworthy
6277 issue(s) related, providing an appropriate warning code and
6278 warning message
6279 </p>
6280 </blockquote>
6281
6282
6283 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6284 </p>
6285 <blockquote class="text">
6286 <p>in case it failed, providing an appropriate error code and error message
6287 </p>
6288 </blockquote>
6289
6290
6291 </blockquote><p>
6292
6293 </p>
6294 <p>Example:
6295 </p>
6296 <p>
6297 </p>
6298 <blockquote class="text">
6299 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
6300 </p>
6301 <p>S: "OK"
6302 </p>
6303 </blockquote><p>
6304
6305 </p>
6306 <a name="SET FX_SEND LEVEL"></a><br /><hr />
6307 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6308 <a name="rfc.section.6.4.38"></a><h3>6.4.38.&nbsp;
6309 Altering effect send's send level</h3>
6310
6311 <p>The front-end can alter the current send level of an effect
6312 send entity by sending the following command:
6313 </p>
6314 <p>
6315 </p>
6316 <blockquote class="text">
6317 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
6318 </p>
6319 </blockquote><p>
6320
6321 </p>
6322 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6323 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>
6324 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,
6325 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6326 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>
6327 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
6328 &lt;volume&gt; is an optionally dotted positive number (a value
6329 smaller than 1.0 means attenuation, whereas a value greater than
6330 1.0 means amplification) reflecting the new send level.
6331 </p>
6332 <p>Possible Answers:
6333 </p>
6334 <p>
6335 </p>
6336 <blockquote class="text">
6337 <p>"OK" -
6338 </p>
6339 <blockquote class="text">
6340 <p>on success
6341 </p>
6342 </blockquote>
6343
6344
6345 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6346 </p>
6347 <blockquote class="text">
6348 <p>if new send level was set, but there are noteworthy
6349 issue(s) related, providing an appropriate warning code and
6350 warning message
6351 </p>
6352 </blockquote>
6353
6354
6355 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6356 </p>
6357 <blockquote class="text">
6358 <p>in case it failed, providing an appropriate error code and error message
6359 </p>
6360 </blockquote>
6361
6362
6363 </blockquote><p>
6364
6365 </p>
6366 <p>Example:
6367 </p>
6368 <p>
6369 </p>
6370 <blockquote class="text">
6371 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
6372 </p>
6373 <p>S: "OK"
6374 </p>
6375 </blockquote><p>
6376
6377 </p>
6378 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
6379 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6380 <a name="rfc.section.6.4.39"></a><h3>6.4.39.&nbsp;
6381 Sending MIDI messages to sampler channel</h3>
6382
6383 <p>The front-end can send MIDI events to a specific sampler channel
6384 by sending the following command:
6385 </p>
6386 <p>
6387 </p>
6388 <blockquote class="text">
6389 <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
6390 </p>
6391 </blockquote><p>
6392
6393 </p>
6394 <p>Where &lt;sampler-chan&gt; is the sampler channel number
6395 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>
6396 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,
6397 &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6398 specifies the MIDI message type. Currently, the following MIDI messages are supported:
6399 </p>
6400 <p>
6401 </p>
6402 <blockquote class="text">
6403 <p>"NOTE_ON" -
6404 </p>
6405 <blockquote class="text">
6406 <p>For turning on MIDI notes, where &lt;arg1&gt;
6407 specifies the key number and &lt;arg2&gt; the velocity
6408 as described in the MIDI specification.
6409 </p>
6410 </blockquote>
6411
6412
6413 <p>"NOTE_OFF" -
6414 </p>
6415 <blockquote class="text">
6416 <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6417 specifies the key number and &lt;arg2&gt; the velocity
6418 as described in the MIDI specification.
6419 </p>
6420 </blockquote>
6421
6422
6423 <p>"CC" -
6424 </p>
6425 <blockquote class="text">
6426 <p>For changing a MIDI controller, where &lt;arg1&gt;
6427 specifies the controller number and &lt;arg2&gt; the
6428 new value of the controller as described in the Control
6429 Change section of the MIDI specification.
6430 </p>
6431 </blockquote>
6432
6433
6434 </blockquote><p>
6435
6436 </p>
6437 <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6438 and no realtime guarantee whatsoever will be made!
6439 </p>
6440 <p>Possible Answers:
6441 </p>
6442 <p>
6443 </p>
6444 <blockquote class="text">
6445 <p>"OK" -
6446 </p>
6447 <blockquote class="text">
6448 <p>on success
6449 </p>
6450 </blockquote>
6451
6452
6453 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6454 </p>
6455 <blockquote class="text">
6456 <p>in case it failed, providing an appropriate error code and error message
6457 </p>
6458 </blockquote>
6459
6460
6461 </blockquote><p>
6462
6463 </p>
6464 <p>Example:
6465 </p>
6466 <p>
6467 </p>
6468 <blockquote class="text">
6469 <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6470 </p>
6471 <p>S: "OK"
6472 </p>
6473 </blockquote><p>
6474
6475 </p>
6476 <a name="RESET CHANNEL"></a><br /><hr />
6477 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6478 <a name="rfc.section.6.4.40"></a><h3>6.4.40.&nbsp;
6479 Resetting a sampler channel</h3>
6480
6481 <p>The front-end can reset a particular sampler channel by sending the following command:
6482 </p>
6483 <p>
6484 </p>
6485 <blockquote class="text">
6486 <p>RESET CHANNEL &lt;sampler-channel&gt;
6487 </p>
6488 </blockquote><p>
6489
6490 </p>
6491 <p>
6492 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6493 This will cause the engine on that sampler channel, its voices and
6494 eventually disk streams and all control and status variables to be
6495 reset.
6496 </p>
6497 <p>Possible Answers:
6498 </p>
6499 <p>
6500 </p>
6501 <blockquote class="text">
6502 <p>"OK" -
6503 </p>
6504 <blockquote class="text">
6505 <p>on success
6506 </p>
6507 </blockquote>
6508
6509
6510 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6511 </p>
6512 <blockquote class="text">
6513 <p>if channel was reset, but there are noteworthy issue(s)
6514 related, providing an appropriate warning code and warning
6515 message
6516 </p>
6517 </blockquote>
6518
6519
6520 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6521 </p>
6522 <blockquote class="text">
6523 <p>in case it failed, providing an appropriate error code and
6524 error message
6525 </p>
6526 </blockquote>
6527
6528
6529 </blockquote><p>
6530
6531 </p>
6532 <p>Examples:
6533 </p>
6534 <p>
6535 </p>
6536 <blockquote class="text">
6537 <p>
6538 </p>
6539 </blockquote><p>
6540
6541 </p>
6542 <a name="anchor12"></a><br /><hr />
6543 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6544 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6545 Controlling connection</h3>
6546
6547 <p>The following commands are used to control the connection to LinuxSampler.
6548 </p>
6549 <a name="SUBSCRIBE"></a><br /><hr />
6550 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6551 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6552 Register front-end for receiving event messages</h3>
6553
6554 <p>The front-end can register itself to the LinuxSampler application to
6555 be informed about noteworthy events by sending this command:
6556 </p>
6557 <p>
6558 </p>
6559 <blockquote class="text">
6560 <p>SUBSCRIBE &lt;event-id&gt;
6561 </p>
6562 </blockquote><p>
6563
6564 </p>
6565 <p>where &lt;event-id&gt; will be replaced by the respective event that
6566 client wants to subscribe to.
6567 </p>
6568 <p>Possible Answers:
6569 </p>
6570 <p>
6571 </p>
6572 <blockquote class="text">
6573 <p>"OK" -
6574 </p>
6575 <blockquote class="text">
6576 <p>on success
6577 </p>
6578 </blockquote>
6579
6580
6581 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6582 </p>
6583 <blockquote class="text">
6584 <p>if registration succeeded, but there are noteworthy
6585 issue(s) related, providing an appropriate warning code and
6586 warning message
6587 </p>
6588 </blockquote>
6589
6590
6591 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6592 </p>
6593 <blockquote class="text">
6594 <p>in case it failed, providing an appropriate error code and
6595 error message
6596 </p>
6597 </blockquote>
6598
6599
6600 </blockquote><p>
6601
6602 </p>
6603 <p>Examples:
6604 </p>
6605 <p>
6606 </p>
6607 <blockquote class="text">
6608 <p>
6609 </p>
6610 </blockquote><p>
6611
6612 </p>
6613 <a name="UNSUBSCRIBE"></a><br /><hr />
6614 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6615 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6616 Unregister front-end for not receiving event messages</h3>
6617
6618 <p>The front-end can unregister itself if it doesn't want to receive event
6619 messages anymore by sending the following command:
6620 </p>
6621 <p>
6622 </p>
6623 <blockquote class="text">
6624 <p>UNSUBSCRIBE &lt;event-id&gt;
6625 </p>
6626 </blockquote><p>
6627
6628 </p>
6629 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6630 client doesn't want to receive anymore.
6631 </p>
6632 <p>Possible Answers:
6633 </p>
6634 <p>
6635 </p>
6636 <blockquote class="text">
6637 <p>"OK" -
6638 </p>
6639 <blockquote class="text">
6640 <p>on success
6641 </p>
6642 </blockquote>
6643
6644
6645 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6646 </p>
6647 <blockquote class="text">
6648 <p>if unregistration succeeded, but there are noteworthy
6649 issue(s) related, providing an appropriate warning code and
6650 warning message
6651 </p>
6652 </blockquote>
6653
6654
6655 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6656 </p>
6657 <blockquote class="text">
6658 <p>in case it failed, providing an appropriate error code and
6659 error message
6660 </p>
6661 </blockquote>
6662
6663
6664 </blockquote><p>
6665
6666 </p>
6667 <p>Examples:
6668 </p>
6669 <p>
6670 </p>
6671 <blockquote class="text">
6672 <p>
6673 </p>
6674 </blockquote><p>
6675
6676 </p>
6677 <a name="SET ECHO"></a><br /><hr />
6678 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6679 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6680 Enable or disable echo of commands</h3>
6681
6682 <p>To enable or disable back sending of commands to the client the following command can be used:
6683 </p>
6684 <p>
6685 </p>
6686 <blockquote class="text">
6687 <p>SET ECHO &lt;value&gt;
6688 </p>
6689 </blockquote><p>
6690
6691 </p>
6692 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6693 or "0" to disable echo mode. When echo mode is enabled, all
6694 commands send to LinuxSampler will be immediately send back and
6695 after this echo the actual response to the command will be
6696 returned. Echo mode will only be altered for the client connection
6697 that issued the "SET ECHO" command, not globally for all client
6698 connections.
6699 </p>
6700 <p>Possible Answers:
6701 </p>
6702 <p>
6703 </p>
6704 <blockquote class="text">
6705 <p>"OK" -
6706 </p>
6707 <blockquote class="text">
6708 <p>usually
6709 </p>
6710 </blockquote>
6711
6712
6713 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6714 </p>
6715 <blockquote class="text">
6716 <p>on syntax error, e.g. non boolean value
6717 </p>
6718 </blockquote>
6719
6720
6721 </blockquote><p>
6722
6723 </p>
6724 <p>Examples:
6725 </p>
6726 <p>
6727 </p>
6728 <blockquote class="text">
6729 <p>
6730 </p>
6731 </blockquote><p>
6732
6733 </p>
6734 <a name="QUIT"></a><br /><hr />
6735 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6736 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6737 Close client connection</h3>
6738
6739 <p>The client can close its network connection to LinuxSampler by sending the following command:
6740 </p>
6741 <p>
6742 </p>
6743 <blockquote class="text">
6744 <p>QUIT
6745 </p>
6746 </blockquote><p>
6747
6748 </p>
6749 <p>This is probably more interesting for manual telnet connections to
6750 LinuxSampler than really useful for a front-end implementation.
6751 </p>
6752 <a name="anchor13"></a><br /><hr />
6753 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6754 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6755 Global commands</h3>
6756
6757 <p>The following commands have global impact on the sampler.
6758 </p>
6759 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6760 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6761 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6762 Current number of active voices</h3>
6763
6764 <p>The front-end can ask for the current number of active voices on
6765 the sampler by sending the following command:
6766 </p>
6767 <p>
6768 </p>
6769 <blockquote class="text">
6770 <p>GET TOTAL_VOICE_COUNT
6771 </p>
6772 </blockquote><p>
6773
6774 </p>
6775 <p>Possible Answers:
6776 </p>
6777 <p>
6778 </p>
6779 <blockquote class="text">
6780 <p>LinuxSampler will answer by returning the number of all active
6781 voices on the sampler.
6782 </p>
6783 </blockquote><p>
6784
6785 </p>
6786 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6787 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6788 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6789 Maximum amount of active voices</h3>
6790
6791 <p>The front-end can ask for the maximum number of active voices
6792 by sending the following command:
6793 </p>
6794 <p>
6795 </p>
6796 <blockquote class="text">
6797 <p>GET TOTAL_VOICE_COUNT_MAX
6798 </p>
6799 </blockquote><p>
6800
6801 </p>
6802 <p>Possible Answers:
6803 </p>
6804 <p>
6805 </p>
6806 <blockquote class="text">
6807 <p>LinuxSampler will answer by returning the maximum number
6808 of active voices.
6809 </p>
6810 </blockquote><p>
6811
6812 </p>
6813 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6814 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6815 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6816 Current number of active disk streams</h3>
6817
6818 <p>The front-end can ask for the current number of active disk streams on
6819 the sampler by sending the following command:
6820 </p>
6821 <p>
6822 </p>
6823 <blockquote class="text">
6824 <p>GET TOTAL_STREAM_COUNT
6825 </p>
6826 </blockquote><p>
6827
6828 </p>
6829 <p>Possible Answers:
6830 </p>
6831 <p>
6832 </p>
6833 <blockquote class="text">
6834 <p>LinuxSampler will answer by returning the number of all active
6835 disk streams on the sampler.
6836 </p>
6837 </blockquote><p>
6838
6839 </p>
6840 <a name="RESET"></a><br /><hr />
6841 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6842 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6843 Reset sampler</h3>
6844
6845 <p>The front-end can reset the whole sampler by sending the following command:
6846 </p>
6847 <p>
6848 </p>
6849 <blockquote class="text">
6850 <p>RESET
6851 </p>
6852 </blockquote><p>
6853
6854 </p>
6855 <p>Possible Answers:
6856 </p>
6857 <p>
6858 </p>
6859 <blockquote class="text">
6860 <p>"OK" -
6861 </p>
6862 <blockquote class="text">
6863 <p>always
6864 </p>
6865 </blockquote>
6866
6867
6868 </blockquote><p>
6869
6870 </p>
6871 <p>Examples:
6872 </p>
6873 <p>
6874 </p>
6875 <blockquote class="text">
6876 <p>
6877 </p>
6878 </blockquote><p>
6879
6880 </p>
6881 <a name="GET SERVER INFO"></a><br /><hr />
6882 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6883 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6884 General sampler informations</h3>
6885
6886 <p>The client can ask for general informations about the LinuxSampler
6887 instance by sending the following command:
6888 </p>
6889 <p>
6890 </p>
6891 <blockquote class="text">
6892 <p>GET SERVER INFO
6893 </p>
6894 </blockquote><p>
6895
6896 </p>
6897 <p>Possible Answers:
6898 </p>
6899 <p>
6900 </p>
6901 <blockquote class="text">
6902 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6903 Each answer line begins with the information category name
6904 followed by a colon and then a space character &lt;SP&gt; and finally
6905 the info character string to that information category. At the
6906 moment the following categories are defined:
6907
6908 </p>
6909 <p>
6910 </p>
6911 <blockquote class="text">
6912 <p>DESCRIPTION -
6913 </p>
6914 <blockquote class="text">
6915 <p>arbitrary textual description about the sampler
6916 (note that the character string may contain
6917 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6918 </p>
6919 </blockquote>
6920
6921
6922 <p>VERSION -
6923 </p>
6924 <blockquote class="text">
6925 <p>version of the sampler
6926 </p>
6927 </blockquote>
6928
6929
6930 <p>PROTOCOL_VERSION -
6931 </p>
6932 <blockquote class="text">
6933 <p>version of the LSCP specification the sampler
6934 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)
6935 </p>
6936 </blockquote>
6937
6938
6939 <p>INSTRUMENTS_DB_SUPPORT -
6940 </p>
6941 <blockquote class="text">
6942 <p>either yes or no, specifies whether the
6943 sampler is build with instruments database support.
6944 </p>
6945 </blockquote>
6946
6947
6948 </blockquote>
6949
6950
6951 </blockquote><p>
6952
6953 </p>
6954 <p>The mentioned fields above don't have to be in particular order.
6955 Other fields might be added in future.
6956 </p>
6957 <p>Example:
6958 </p>
6959 <p>
6960 </p>
6961 <blockquote class="text">
6962 <p>C: "GET SERVER INFO"
6963 </p>
6964 <p>S: "DESCRIPTION: LinuxSampler - modular, streaming capable sampler"
6965 </p>
6966 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0.0.svn23"
6967 </p>
6968 <p>&nbsp;&nbsp;&nbsp;"PROTOCOL_VERSION: 1.5"
6969 </p>
6970 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENTS_DB_SUPPORT: no"
6971 </p>
6972 <p>&nbsp;&nbsp;&nbsp;"."
6973 </p>
6974 </blockquote><p>
6975
6976 </p>
6977 <a name="GET VOLUME"></a><br /><hr />
6978 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6979 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6980 Getting global volume attenuation</h3>
6981
6982 <p>The client can ask for the current global sampler-wide volume
6983 attenuation by sending the following command:
6984 </p>
6985 <p>
6986 </p>
6987 <blockquote class="text">
6988 <p>GET VOLUME
6989 </p>
6990 </blockquote><p>
6991
6992 </p>
6993 <p>Possible Answers:
6994 </p>
6995 <p>
6996 </p>
6997 <blockquote class="text">
6998 <p>The sampler will always answer by returning the optional
6999 dotted floating point coefficient, reflecting the current
7000 global volume attenuation.
7001
7002 </p>
7003 </blockquote><p>
7004
7005 </p>
7006 <p>Note: it is up to the respective sampler engine whether to obey
7007 that global volume parameter or not, but in general all engines SHOULD
7008 use this parameter.
7009 </p>
7010 <a name="SET VOLUME"></a><br /><hr />
7011 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7012 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
7013 Setting global volume attenuation</h3>
7014
7015 <p>The client can alter the current global sampler-wide volume
7016 attenuation by sending the following command:
7017 </p>
7018 <p>
7019 </p>
7020 <blockquote class="text">
7021 <p>SET VOLUME &lt;volume&gt;
7022 </p>
7023 </blockquote><p>
7024
7025 </p>
7026 <p>Where &lt;volume&gt; should be replaced by the optional dotted
7027 floating point value, reflecting the new global volume parameter.
7028 This value might usually be in the range between 0.0 and 1.0, that
7029 is for attenuating the overall volume.
7030 </p>
7031 <p>Possible Answers:
7032 </p>
7033 <p>
7034 </p>
7035 <blockquote class="text">
7036 <p>"OK" -
7037 </p>
7038 <blockquote class="text">
7039 <p>on success
7040 </p>
7041 </blockquote>
7042
7043
7044 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7045 </p>
7046 <blockquote class="text">
7047 <p>if the global volume was set, but there are noteworthy
7048 issue(s) related, providing an appropriate warning code and
7049 warning message
7050 </p>
7051 </blockquote>
7052
7053
7054 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7055 </p>
7056 <blockquote class="text">
7057 <p>in case it failed, providing an appropriate error code and error message
7058 </p>
7059 </blockquote>
7060
7061
7062 </blockquote><p>
7063
7064 </p>
7065 <a name="GET VOICES"></a><br /><hr />
7066 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7067 <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
7068 Getting global voice limit</h3>
7069
7070 <p>The client can ask for the current global sampler-wide limit
7071 for maximum voices by sending the following command:
7072 </p>
7073 <p>
7074 </p>
7075 <blockquote class="text">
7076 <p>GET VOICES
7077 </p>
7078 </blockquote><p>
7079
7080 </p>
7081 <p>Possible Answers:
7082 </p>
7083 <p>
7084 </p>
7085 <blockquote class="text">
7086 <p>LinuxSampler will answer by returning the number for
7087 the current limit of maximum voices.
7088 </p>
7089 </blockquote><p>
7090
7091 </p>
7092 <p>The voice limit setting defines how many voices should maximum
7093 be processed by the sampler at the same time. If the user
7094 triggers new notes which would exceed that voice limit, the
7095 sampler engine will react by stealing old voices for those
7096 newly triggered notes. Note that the amount of voices triggered
7097 by a new note can be larger than one and is dependent to the
7098 respective instrument and probably further criterias.
7099 </p>
7100 <a name="SET VOICES"></a><br /><hr />
7101 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7102 <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
7103 Setting global voice limit</h3>
7104
7105 <p>The client can alter the current global sampler-wide limit
7106 for maximum voices by sending the following command:
7107 </p>
7108 <p>
7109 </p>
7110 <blockquote class="text">
7111 <p>SET VOICES &lt;max-voices&gt;
7112 </p>
7113 </blockquote><p>
7114
7115 </p>
7116 <p>Where &lt;max-voices&gt; should be replaced by the integer
7117 value, reflecting the new global amount limit of maximum voices.
7118 This value has to be larger than 0.
7119 </p>
7120 <p>Possible Answers:
7121 </p>
7122 <p>
7123 </p>
7124 <blockquote class="text">
7125 <p>"OK" -
7126 </p>
7127 <blockquote class="text">
7128 <p>on success
7129 </p>
7130 </blockquote>
7131
7132
7133 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7134 </p>
7135 <blockquote class="text">
7136 <p>if the voice limit was set, but there are noteworthy
7137 issue(s) related, providing an appropriate warning code and
7138 warning message
7139 </p>
7140 </blockquote>
7141
7142
7143 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7144 </p>
7145 <blockquote class="text">
7146 <p>in case it failed, providing an appropriate error code and error message
7147 </p>
7148 </blockquote>
7149
7150
7151 </blockquote><p>
7152
7153 </p>
7154 <p>Note: the given value will be passed to all sampler engine instances.
7155 The total amount of maximum voices on the running system might thus
7156 be as big as the given value multiplied by the current amount of engine
7157 instances.
7158 </p>
7159 <p>Caution: when adjusting the voice limit, you SHOULD also
7160 adjust the disk stream limit respectively and vice versa.
7161 </p>
7162 <a name="GET STREAMS"></a><br /><hr />
7163 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7164 <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
7165 Getting global disk stream limit</h3>
7166
7167 <p>The client can ask for the current global sampler-wide limit
7168 for maximum disk streams by sending the following command:
7169 </p>
7170 <p>
7171 </p>
7172 <blockquote class="text">
7173 <p>GET STREAMS
7174 </p>
7175 </blockquote><p>
7176
7177 </p>
7178 <p>Possible Answers:
7179 </p>
7180 <p>
7181 </p>
7182 <blockquote class="text">
7183 <p>LinuxSampler will answer by returning the number for
7184 the current limit of maximum disk streams.
7185 </p>
7186 </blockquote><p>
7187
7188 </p>
7189 <p>The disk stream limit setting defines how many disk streams should
7190 maximum be processed by a sampler engine at the same time. The
7191 higher this value, the more memory (RAM) will be occupied, since
7192 every disk streams allocates a certain buffer size for being able
7193 to perform its streaming operations.
7194 </p>
7195 <a name="SET STREAMS"></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.6.11"></a><h3>6.6.11.&nbsp;
7198 Setting global disk stream limit</h3>
7199
7200 <p>The client can alter the current global sampler-wide limit
7201 for maximum disk streams by sending the following command:
7202 </p>
7203 <p>
7204 </p>
7205 <blockquote class="text">
7206 <p>SET STREAMS &lt;max-streams&gt;
7207 </p>
7208 </blockquote><p>
7209
7210 </p>
7211 <p>Where &lt;max-streams&gt; should be replaced by the integer
7212 value, reflecting the new global amount limit of maximum disk streams.
7213 This value has to be positive.
7214 </p>
7215 <p>Possible Answers:
7216 </p>
7217 <p>
7218 </p>
7219 <blockquote class="text">
7220 <p>"OK" -
7221 </p>
7222 <blockquote class="text">
7223 <p>on success
7224 </p>
7225 </blockquote>
7226
7227
7228 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7229 </p>
7230 <blockquote class="text">
7231 <p>if the disk stream limit was set, but there are noteworthy
7232 issue(s) related, providing an appropriate warning code and
7233 warning message
7234 </p>
7235 </blockquote>
7236
7237
7238 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7239 </p>
7240 <blockquote class="text">
7241 <p>in case it failed, providing an appropriate error code and error message
7242 </p>
7243 </blockquote>
7244
7245
7246 </blockquote><p>
7247
7248 </p>
7249 <p>Note: the given value will be passed to all sampler engine instances.
7250 The total amount of maximum disk streams on the running system might
7251 thus be as big as the given value multiplied by the current amount of
7252 engine instances.
7253 </p>
7254 <p>Caution: when adjusting the disk stream limit, you SHOULD also
7255 adjust the voice limit respectively and vice versa.
7256 </p>
7257 <a name="MIDI Instrument Mapping"></a><br /><hr />
7258 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7259 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
7260 MIDI Instrument Mapping</h3>
7261
7262 <p>The MIDI protocol provides a way to switch between instruments
7263 by sending so called MIDI bank select and MIDI program change
7264 messages which are essentially just numbers. The following commands
7265 allow to actually map arbitrary MIDI bank select / program change
7266 numbers with real instruments.
7267 </p>
7268 <p>The sampler allows to manage an arbitrary amount of MIDI
7269 instrument maps which define which instrument to load on
7270 which MIDI program change message.
7271 </p>
7272 <p>By default, that is when the sampler is launched, there is no
7273 map, thus the sampler will simply ignore all program change
7274 messages. The front-end has to explicitly create at least one
7275 map, add entries to the map and tell the respective sampler
7276 channel(s) which MIDI instrument map to use, so the sampler
7277 knows how to react on a given program change message on the
7278 respective sampler channel, that is by switching to the
7279 respectively defined engine type and loading the respective
7280 instrument. See command
7281 <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>
7282 for how to assign a MIDI instrument map to a sampler channel.
7283 </p>
7284 <p>Also note per MIDI specification a bank select message does not
7285 cause to switch to another instrument. Instead when receiving a
7286 bank select message the bank value will be stored and a subsequent
7287 program change message (which may occur at any time) will finally
7288 cause the sampler to switch to the respective instrument as
7289 reflected by the current MIDI instrument map.
7290 </p>
7291 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
7292 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7293 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
7294 Create a new MIDI instrument map</h3>
7295
7296 <p>The front-end can add a new MIDI instrument map by sending
7297 the following command:
7298 </p>
7299 <p>
7300 </p>
7301 <blockquote class="text">
7302 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
7303 </p>
7304 </blockquote><p>
7305
7306 </p>
7307 <p>Where &lt;name&gt; is an optional argument allowing to
7308 assign a custom name to the new map. MIDI instrument Map
7309 names do not have to be unique, but MUST be encapsulated
7310 into apostrophes and support escape sequences as described
7311 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>".
7312
7313 </p>
7314 <p>Possible Answers:
7315 </p>
7316 <p>
7317 </p>
7318 <blockquote class="text">
7319 <p>"OK[&lt;map&gt;]" -
7320 </p>
7321 <blockquote class="text">
7322 <p>in case a new MIDI instrument map could
7323 be added, where &lt;map&gt; reflects the
7324 unique ID of the newly created MIDI
7325 instrument map
7326 </p>
7327 </blockquote>
7328
7329
7330 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7331 </p>
7332 <blockquote class="text">
7333 <p>when a new map could not be created, which
7334 might never occur in practice
7335 </p>
7336 </blockquote>
7337
7338
7339 </blockquote><p>
7340
7341 </p>
7342 <p>Examples:
7343 </p>
7344 <p>
7345 </p>
7346 <blockquote class="text">
7347 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
7348 </p>
7349 <p>S: "OK[0]"
7350 </p>
7351 </blockquote><p>
7352
7353 </p>
7354 <p>
7355 </p>
7356 <blockquote class="text">
7357 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
7358 </p>
7359 <p>S: "OK[1]"
7360 </p>
7361 </blockquote><p>
7362
7363 </p>
7364 <p>
7365 </p>
7366 <blockquote class="text">
7367 <p>C: "ADD MIDI_INSTRUMENT_MAP"
7368 </p>
7369 <p>S: "OK[5]"
7370 </p>
7371 </blockquote><p>
7372
7373 </p>
7374 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
7375 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7376 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
7377 Delete one particular or all MIDI instrument maps</h3>
7378
7379 <p>The front-end can delete a particular MIDI instrument map
7380 by sending the following command:
7381 </p>
7382 <p>
7383 </p>
7384 <blockquote class="text">
7385 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
7386 </p>
7387 </blockquote><p>
7388
7389 </p>
7390 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
7391 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>
7392 command.
7393 </p>
7394 <p>The front-end can delete all MIDI instrument maps by
7395 sending the following command:
7396 </p>
7397 <p>
7398 </p>
7399 <blockquote class="text">
7400 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
7401 </p>
7402 </blockquote><p>
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>in case the map(s) could be deleted
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 does not exist
7422 </p>
7423 </blockquote>
7424
7425
7426 </blockquote><p>
7427
7428 </p>
7429 <p>Examples:
7430 </p>
7431 <p>
7432 </p>
7433 <blockquote class="text">
7434 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7435 </p>
7436 <p>S: "OK"
7437 </p>
7438 </blockquote><p>
7439
7440 </p>
7441 <p>
7442 </p>
7443 <blockquote class="text">
7444 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7445 </p>
7446 <p>S: "OK"
7447 </p>
7448 </blockquote><p>
7449
7450 </p>
7451 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7452 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7453 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7454 Get amount of existing MIDI instrument maps</h3>
7455
7456 <p>The front-end can retrieve the current amount of MIDI
7457 instrument maps by sending the following command:
7458 </p>
7459 <p>
7460 </p>
7461 <blockquote class="text">
7462 <p>GET MIDI_INSTRUMENT_MAPS
7463 </p>
7464 </blockquote><p>
7465
7466 </p>
7467 <p>Possible Answers:
7468 </p>
7469 <p>
7470 </p>
7471 <blockquote class="text">
7472 <p>The sampler will answer by returning the current
7473 number of MIDI instrument maps.
7474 </p>
7475 </blockquote><p>
7476
7477 </p>
7478 <p>Example:
7479 </p>
7480 <p>
7481 </p>
7482 <blockquote class="text">
7483 <p>C: "GET MIDI_INSTRUMENT_MAPS"
7484 </p>
7485 <p>S: "2"
7486 </p>
7487 </blockquote><p>
7488
7489 </p>
7490 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7491 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7492 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7493 Getting all created MIDI instrument maps</h3>
7494
7495 <p>The number of MIDI instrument maps can change on runtime. To get the
7496 current list of MIDI instrument maps, the front-end can send the
7497 following command:
7498 </p>
7499 <p>
7500 </p>
7501 <blockquote class="text">
7502 <p>LIST MIDI_INSTRUMENT_MAPS
7503 </p>
7504 </blockquote><p>
7505
7506 </p>
7507 <p>Possible Answers:
7508 </p>
7509 <p>
7510 </p>
7511 <blockquote class="text">
7512 <p>The sampler will answer by returning a comma separated list
7513 with all MIDI instrument maps' numerical IDs.
7514 </p>
7515 </blockquote><p>
7516
7517 </p>
7518 <p>Example:
7519 </p>
7520 <p>
7521 </p>
7522 <blockquote class="text">
7523 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7524 </p>
7525 <p>S: "0,1,5,12"
7526 </p>
7527 </blockquote><p>
7528
7529 </p>
7530 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7531 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7532 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7533 Getting MIDI instrument map information</h3>
7534
7535 <p>The front-end can ask for the current settings of a MIDI
7536 instrument map by sending the following command:
7537 </p>
7538 <p>
7539 </p>
7540 <blockquote class="text">
7541 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7542 </p>
7543 </blockquote><p>
7544
7545 </p>
7546 <p>Where &lt;map&gt; is the numerical ID of the map the
7547 front-end is interested in as returned by the
7548 <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>
7549 command.
7550 </p>
7551 <p>Possible Answers:
7552 </p>
7553 <p>
7554 </p>
7555 <blockquote class="text">
7556 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7557 Each answer line begins with the settings category name
7558 followed by a colon and then a space character &lt;SP&gt; and finally
7559 the info character string to that setting category. At the
7560 moment the following categories are defined:
7561 </p>
7562 <p>
7563 </p>
7564 <blockquote class="text">
7565 <p>NAME -
7566 </p>
7567 <blockquote class="text">
7568 <p>custom name of the given map,
7569 which does not have to be unique
7570 (note that this character string may contain
7571 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7572 </p>
7573 </blockquote>
7574
7575
7576 <p>DEFAULT -
7577 </p>
7578 <blockquote class="text">
7579 <p>either true or false,
7580 defines whether this map is the default map
7581 </p>
7582 </blockquote>
7583
7584
7585 </blockquote>
7586
7587
7588 </blockquote><p>
7589
7590 </p>
7591 <p>The mentioned fields above don't have to be in particular order.
7592 </p>
7593 <p>Example:
7594 </p>
7595 <p>
7596 </p>
7597 <blockquote class="text">
7598 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7599 </p>
7600 <p>S: "NAME: Standard Map"
7601 </p>
7602 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7603 </p>
7604 <p>&nbsp;&nbsp;&nbsp;"."
7605 </p>
7606 </blockquote><p>
7607
7608 </p>
7609 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7610 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7611 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7612 Renaming a MIDI instrument map</h3>
7613
7614 <p>The front-end can alter the custom name of a MIDI
7615 instrument map by sending the following command:
7616 </p>
7617 <p>
7618 </p>
7619 <blockquote class="text">
7620 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7621 </p>
7622 </blockquote><p>
7623
7624 </p>
7625 <p>Where &lt;map&gt; is the numerical ID of the map and
7626 &lt;name&gt; the new custom name of the map, which does not
7627 have to be unique (name MUST be encapsulated into apostrophes
7628 and supports escape sequences as described in chapter
7629 "<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>").
7630
7631 </p>
7632 <p>Possible Answers:
7633 </p>
7634 <p>
7635 </p>
7636 <blockquote class="text">
7637 <p>"OK" -
7638 </p>
7639 <blockquote class="text">
7640 <p>on success
7641 </p>
7642 </blockquote>
7643
7644
7645 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7646 </p>
7647 <blockquote class="text">
7648 <p>in case the given map does not exist
7649 </p>
7650 </blockquote>
7651
7652
7653 </blockquote><p>
7654
7655 </p>
7656 <p>Example:
7657 </p>
7658 <p>
7659 </p>
7660 <blockquote class="text">
7661 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7662 </p>
7663 <p>S: "OK"
7664 </p>
7665 </blockquote><p>
7666
7667 </p>
7668 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7669 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7670 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7671 Create or replace a MIDI instrument map entry</h3>
7672
7673 <p>The front-end can create a new or replace an existing entry
7674 in a sampler's MIDI instrument map by sending the following
7675 command:
7676 </p>
7677 <p>
7678 </p>
7679 <blockquote class="text">
7680 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7681 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7682 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7683 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7684 </p>
7685 </blockquote><p>
7686
7687 </p>
7688 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7689 &lt;midi_bank&gt; is an integer value between
7690 0..16383 reflecting the MIDI bank select index,
7691 &lt;midi_prog&gt; an
7692 integer value between 0..127 reflecting the MIDI program change
7693 index, &lt;engine_name&gt; a sampler engine name as returned by
7694 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
7695 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7696 of the instrument's file to be deployed (encapsulated into apostrophes,
7697 supporting escape sequences as described in chapter
7698 "<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>"),
7699 &lt;instrument_index&gt; the index (integer value) of the instrument
7700 within the given file, &lt;volume_value&gt; reflects the master
7701 volume of the instrument as optionally dotted number (where a
7702 value &lt; 1.0 means attenuation and a value > 1.0 means
7703 amplification). This parameter easily allows to adjust the
7704 volume of all intruments within a custom instrument map
7705 without having to adjust their instrument files. The
7706 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7707 time of the instrument, that is when the instrument should
7708 be loaded, when freed and has exactly the following
7709 possibilities:
7710 </p>
7711 <p>
7712 </p>
7713 <blockquote class="text">
7714 <p>"ON_DEMAND" -
7715 </p>
7716 <blockquote class="text">
7717 <p>The instrument will be loaded when needed,
7718 that is when demanded by at least one sampler
7719 channel. It will immediately be freed from memory
7720 when not needed by any sampler channel anymore.
7721 </p>
7722 </blockquote>
7723
7724
7725 <p>"ON_DEMAND_HOLD" -
7726 </p>
7727 <blockquote class="text">
7728 <p>The instrument will be loaded when needed,
7729 that is when demanded by at least one sampler
7730 channel. It will be kept in memory even when
7731 not needed by any sampler channel anymore.
7732 Instruments with this mode are only freed
7733 when the sampler is reset or all mapping
7734 entries with this mode (and respective
7735 instrument) are explicitly changed to
7736 "ON_DEMAND" and no sampler channel is using
7737 the instrument anymore.
7738 </p>
7739 </blockquote>
7740
7741
7742 <p>"PERSISTENT" -
7743 </p>
7744 <blockquote class="text">
7745 <p>The instrument will immediately be loaded
7746 into memory when this mapping
7747 command is sent and the instrument is kept all
7748 the time. Instruments with this mode are
7749 only freed when the sampler is reset or all
7750 mapping entries with this mode (and
7751 respective instrument) are explicitly
7752 changed to "ON_DEMAND" and no sampler
7753 channel is using the instrument anymore.
7754 </p>
7755 </blockquote>
7756
7757
7758 <p>not supplied -
7759 </p>
7760 <blockquote class="text">
7761 <p>In case there is no &lt;instr_load_mode&gt;
7762 argument given, it will be up to the
7763 InstrumentManager to decide which mode to use.
7764 Usually it will use "ON_DEMAND" if an entry
7765 for the given instrument does not exist in
7766 the InstrumentManager's list yet, otherwise
7767 if an entry already exists, it will simply
7768 stick with the mode currently reflected by
7769 the already existing entry, that is it will
7770 not change the mode.
7771 </p>
7772 </blockquote>
7773
7774
7775 </blockquote><p>
7776
7777 </p>
7778 <p>
7779 The &lt;instr_load_mode&gt; argument thus allows to define an
7780 appropriate strategy (low memory consumption vs. fast
7781 instrument switching) for each instrument individually. Note, the
7782 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7783 "PERSISTENT" have to be supported by the respective sampler engine
7784 (which is technically the case when the engine provides an
7785 InstrumentManager for its format). If this is not the case the
7786 argument will automatically fall back to the default value
7787 "ON_DEMAND". Also the load mode of one instrument may
7788 automatically change the laod mode of other instrument(s), i.e.
7789 because the instruments are part of the same file and the
7790 engine does not allow a way to manage load modes for them
7791 individually. Due to this, in case the frontend shows the
7792 load modes of entries, the frontend should retrieve the actual
7793 mode by i.e. sending
7794 <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>
7795 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7796 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7797 "<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
7798 mapping entry, useful for frontends for displaying an appropriate name for
7799 mapped instruments (using
7800 <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>).
7801
7802 </p>
7803 <p>
7804 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7805 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7806 however causes the respective "MAP MIDI_INSTRUMENT" command to return
7807 immediately, that is to let the sampler establish the mapping in the
7808 background. So this argument might be especially useful for mappings with
7809 a "PERSISTENT" type, because these have to load the respective instruments
7810 immediately and might thus block for a very long time. It is recommended
7811 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7812 because it has the following drawbacks: as "NON_MODAL" instructions return
7813 immediately, they may not necessarily return an error i.e. when the given
7814 instrument file turns out to be corrupt, beside that subsequent commands
7815 in a LSCP instruction sequence might fail, because mandatory mappings are
7816 not yet completed.
7817
7818 </p>
7819 <p>Possible Answers:
7820 </p>
7821 <p>
7822 </p>
7823 <blockquote class="text">
7824 <p>"OK" -
7825 </p>
7826 <blockquote class="text">
7827 <p>usually
7828 </p>
7829 </blockquote>
7830
7831
7832 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7833 </p>
7834 <blockquote class="text">
7835 <p>when the given map or engine does not exist or a value
7836 is out of range
7837 </p>
7838 </blockquote>
7839
7840
7841 </blockquote><p>
7842
7843 </p>
7844 <p>Examples:
7845 </p>
7846 <p>
7847 </p>
7848 <blockquote class="text">
7849 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7850 </p>
7851 <p>S: "OK"
7852 </p>
7853 </blockquote><p>
7854
7855 </p>
7856 <p>
7857 </p>
7858 <blockquote class="text">
7859 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7860 </p>
7861 <p>S: "OK"
7862 </p>
7863 </blockquote><p>
7864
7865 </p>
7866 <p>
7867 </p>
7868 <blockquote class="text">
7869 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7870 </p>
7871 <p>S: "OK"
7872 </p>
7873 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7874 </p>
7875 <p>S: "OK"
7876 </p>
7877 </blockquote><p>
7878
7879 </p>
7880 <p>
7881 </p>
7882 <blockquote class="text">
7883 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7884 </p>
7885 <p>S: "OK"
7886 </p>
7887 </blockquote><p>
7888
7889 </p>
7890 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7891 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7892 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7893 Getting amount of MIDI instrument map entries</h3>
7894
7895 <p>The front-end can query the amount of currently existing
7896 entries in a MIDI instrument map by sending the following
7897 command:
7898 </p>
7899 <p>
7900 </p>
7901 <blockquote class="text">
7902 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7903 </p>
7904 </blockquote><p>
7905
7906 </p>
7907 <p>The front-end can query the amount of currently existing
7908 entries in all MIDI instrument maps by sending the following
7909 command:
7910 </p>
7911 <p>
7912 </p>
7913 <blockquote class="text">
7914 <p>GET MIDI_INSTRUMENTS ALL
7915 </p>
7916 </blockquote><p>
7917
7918 </p>
7919 <p>Possible Answers:
7920 </p>
7921 <p>
7922 </p>
7923 <blockquote class="text">
7924 <p>The sampler will answer by sending the current number of
7925 entries in the MIDI instrument map(s).
7926 </p>
7927 </blockquote><p>
7928
7929 </p>
7930 <p>Example:
7931 </p>
7932 <p>
7933 </p>
7934 <blockquote class="text">
7935 <p>C: "GET MIDI_INSTRUMENTS 0"
7936 </p>
7937 <p>S: "234"
7938 </p>
7939 </blockquote><p>
7940
7941 </p>
7942 <p>
7943 </p>
7944 <blockquote class="text">
7945 <p>C: "GET MIDI_INSTRUMENTS ALL"
7946 </p>
7947 <p>S: "954"
7948 </p>
7949 </blockquote><p>
7950
7951 </p>
7952 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7953 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7954 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7955 Getting indeces of all entries of a MIDI instrument map</h3>
7956
7957 <p>The front-end can query a list of all currently existing
7958 entries in a certain MIDI instrument map by sending the following
7959 command:
7960 </p>
7961 <p>
7962 </p>
7963 <blockquote class="text">
7964 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7965 </p>
7966 </blockquote><p>
7967
7968 </p>
7969 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7970 </p>
7971 <p>The front-end can query a list of all currently existing
7972 entries of all MIDI instrument maps by sending the following
7973 command:
7974 </p>
7975 <p>
7976 </p>
7977 <blockquote class="text">
7978 <p>LIST MIDI_INSTRUMENTS ALL
7979 </p>
7980 </blockquote><p>
7981
7982 </p>
7983 <p>Possible Answers:
7984 </p>
7985 <p>
7986 </p>
7987 <blockquote class="text">
7988 <p>The sampler will answer by sending a comma separated
7989 list of map ID - MIDI bank - MIDI program triples, where
7990 each triple is encapsulated into curly braces. The
7991 list is returned in one single line. Each triple
7992 just reflects the key of the respective map entry,
7993 thus subsequent
7994 <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>
7995 command(s) are necessary to retrieve detailed informations
7996 about each entry.
7997 </p>
7998 </blockquote><p>
7999
8000 </p>
8001 <p>Example:
8002 </p>
8003 <p>
8004 </p>
8005 <blockquote class="text">
8006 <p>C: "LIST MIDI_INSTRUMENTS 0"
8007 </p>
8008 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
8009 </p>
8010 </blockquote><p>
8011
8012 </p>
8013 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
8014 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8015 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
8016 Remove an entry from the MIDI instrument map</h3>
8017
8018 <p>The front-end can delete an entry from a MIDI instrument
8019 map by sending the following command:
8020 </p>
8021 <p>
8022 </p>
8023 <blockquote class="text">
8024 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
8025 </p>
8026 </blockquote><p>
8027
8028 </p>
8029 <p>
8030 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
8031 &lt;midi_bank&gt; is an integer value between 0..16383
8032 reflecting the MIDI bank value and
8033 &lt;midi_prog&gt; an integer value between
8034 0..127 reflecting the MIDI program value of the map's entrie's key
8035 index triple.
8036
8037 </p>
8038 <p>Possible Answers:
8039 </p>
8040 <p>
8041 </p>
8042 <blockquote class="text">
8043 <p>"OK" -
8044 </p>
8045 <blockquote class="text">
8046 <p>usually
8047 </p>
8048 </blockquote>
8049
8050
8051 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8052 </p>
8053 <blockquote class="text">
8054 <p>when index out of bounds
8055 </p>
8056 </blockquote>
8057
8058
8059 </blockquote><p>
8060
8061 </p>
8062 <p>Example:
8063 </p>
8064 <p>
8065 </p>
8066 <blockquote class="text">
8067 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
8068 </p>
8069 <p>S: "OK"
8070 </p>
8071 </blockquote><p>
8072
8073 </p>
8074 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
8075 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8076 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
8077 Get current settings of MIDI instrument map entry</h3>
8078
8079 <p>The front-end can retrieve the current settings of a certain
8080 instrument map entry by sending the following command:
8081 </p>
8082 <p>
8083 </p>
8084 <blockquote class="text">
8085 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
8086 </p>
8087 </blockquote><p>
8088
8089 </p>
8090 <p>
8091 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
8092 &lt;midi_bank&gt; is an integer value between 0..16383
8093 reflecting the MIDI bank value, &lt;midi_bank&gt;
8094 and &lt;midi_prog&gt; an integer value between
8095 0..127 reflecting the MIDI program value of the map's entrie's key
8096 index triple.
8097
8098 </p>
8099 <p>Possible Answers:
8100 </p>
8101 <p>
8102 </p>
8103 <blockquote class="text">
8104 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
8105 separated list. Each answer line begins with the
8106 information category name followed by a colon and then
8107 a space character &lt;SP&gt; and finally the info
8108 character string to that info category. At the moment
8109 the following categories are defined:
8110 </p>
8111 <p>"NAME" -
8112 </p>
8113 <blockquote class="text">
8114 <p>Name for this MIDI instrument map entry (if defined).
8115 This name shall be used by frontends for displaying a
8116 name for this mapped instrument. It can be set and
8117 changed with the
8118 <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>
8119 command and does not have to be unique.
8120 (note that this character string may contain
8121 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
8122 </p>
8123 </blockquote>
8124
8125
8126 <p>"ENGINE_NAME" -
8127 </p>
8128 <blockquote class="text">
8129 <p>Name of the engine to be deployed for this
8130 instrument.
8131 </p>
8132 </blockquote>
8133
8134
8135 <p>"INSTRUMENT_FILE" -
8136 </p>
8137 <blockquote class="text">
8138 <p>File name of the instrument
8139 (note that this path may contain
8140 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
8141 </p>
8142 </blockquote>
8143
8144
8145 <p>"INSTRUMENT_NR" -
8146 </p>
8147 <blockquote class="text">
8148 <p>Index of the instrument within the file.
8149 </p>
8150 </blockquote>
8151
8152
8153 <p>"INSTRUMENT_NAME" -
8154 </p>
8155 <blockquote class="text">
8156 <p>Name of the loaded instrument as reflected by its file.
8157 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
8158 cannot be changed (note that this character string may contain
8159 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
8160 </p>
8161 </blockquote>
8162
8163
8164 <p>"LOAD_MODE" -
8165 </p>
8166 <blockquote class="text">
8167 <p>Life time of instrument
8168 (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).
8169 </p>
8170 </blockquote>
8171
8172
8173 <p>"VOLUME" -
8174 </p>
8175 <blockquote class="text">
8176 <p>master volume of the instrument as optionally
8177 dotted number (where a value &lt; 1.0 means attenuation
8178 and a value > 1.0 means amplification)
8179 </p>
8180 </blockquote>
8181
8182
8183 <p>The mentioned fields above don't have to be in particular order.
8184 </p>
8185 </blockquote><p>
8186
8187 </p>
8188 <p>Example:
8189 </p>
8190 <p>
8191 </p>
8192 <blockquote class="text">
8193 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
8194 </p>
8195 <p>S: "NAME: Drums for Foo Song"
8196 </p>
8197 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
8198 </p>
8199 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
8200 </p>
8201 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8202 </p>
8203 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
8204 </p>
8205 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
8206 </p>
8207 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
8208 </p>
8209 <p>&nbsp;&nbsp;&nbsp;"."
8210 </p>
8211 </blockquote><p>
8212
8213 </p>
8214 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
8215 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8216 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
8217 Clear MIDI instrument map</h3>
8218
8219 <p>The front-end can clear a whole MIDI instrument map, that
8220 is delete all its entries by sending the following command:
8221 </p>
8222 <p>
8223 </p>
8224 <blockquote class="text">
8225 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
8226 </p>
8227 </blockquote><p>
8228
8229 </p>
8230 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
8231 </p>
8232 <p>The front-end can clear all MIDI instrument maps, that
8233 is delete all entries of all maps by sending the following
8234 command:
8235 </p>
8236 <p>
8237 </p>
8238 <blockquote class="text">
8239 <p>CLEAR MIDI_INSTRUMENTS ALL
8240 </p>
8241 </blockquote><p>
8242
8243 </p>
8244 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
8245 maps, only their entries, thus the map's settings like
8246 custom name will be preservevd.
8247 </p>
8248 <p>Possible Answers:
8249 </p>
8250 <p>
8251 </p>
8252 <blockquote class="text">
8253 <p>"OK" -
8254 </p>
8255 <blockquote class="text">
8256 <p>always
8257 </p>
8258 </blockquote>
8259
8260
8261 </blockquote><p>
8262
8263 </p>
8264 <p>Examples:
8265 </p>
8266 <p>
8267 </p>
8268 <blockquote class="text">
8269 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
8270 </p>
8271 <p>S: "OK"
8272 </p>
8273 </blockquote><p>
8274
8275 </p>
8276 <p>
8277 </p>
8278 <blockquote class="text">
8279 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
8280 </p>
8281 <p>S: "OK"
8282 </p>
8283 </blockquote><p>
8284
8285 </p>
8286 <a name="Managing Instruments Database"></a><br /><hr />
8287 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8288 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
8289 Managing Instruments Database</h3>
8290
8291 <p>The following commands describe how to use and manage
8292 the instruments database.
8293 </p>
8294 <p>Notice:
8295 </p>
8296 <p>
8297 </p>
8298 <blockquote class="text">
8299 <p>All command arguments representing a path or
8300 instrument/directory name support escape sequences as described in chapter
8301 "<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>".
8302
8303 </p>
8304 <p>All occurrences of a forward slash in instrument and directory
8305 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
8306
8307 </p>
8308 </blockquote><p>
8309
8310 </p>
8311 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8312 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8313 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
8314 Creating a new instrument directory</h3>
8315
8316 <p>The front-end can add a new instrument directory to the
8317 instruments database by sending the following command:
8318 </p>
8319 <p>
8320 </p>
8321 <blockquote class="text">
8322 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
8323 </p>
8324 </blockquote><p>
8325
8326 </p>
8327 <p>Where &lt;dir&gt; is the absolute path name of the directory
8328 to be created (encapsulated into apostrophes).
8329 </p>
8330 <p>Possible Answers:
8331 </p>
8332 <p>
8333 </p>
8334 <blockquote class="text">
8335 <p>"OK" -
8336 </p>
8337 <blockquote class="text">
8338 <p>on success
8339 </p>
8340 </blockquote>
8341
8342
8343 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8344 </p>
8345 <blockquote class="text">
8346 <p>when the directory could not be created, which
8347 can happen if the directory already exists or the
8348 name contains not allowed symbols
8349 </p>
8350 </blockquote>
8351
8352
8353 </blockquote><p>
8354
8355 </p>
8356 <p>Examples:
8357 </p>
8358 <p>
8359 </p>
8360 <blockquote class="text">
8361 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
8362 </p>
8363 <p>S: "OK"
8364 </p>
8365 </blockquote><p>
8366
8367 </p>
8368 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8369 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8370 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
8371 Deleting an instrument directory</h3>
8372
8373 <p>The front-end can delete a particular instrument directory
8374 from the instruments database by sending the following command:
8375 </p>
8376 <p>
8377 </p>
8378 <blockquote class="text">
8379 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
8380 </p>
8381 </blockquote><p>
8382
8383 </p>
8384 <p>Where &lt;dir&gt; is the absolute path name of the directory
8385 to delete. The optional FORCE argument can be used to
8386 force the deletion of a non-empty directory and all its content.
8387 </p>
8388 <p>Possible Answers:
8389 </p>
8390 <p>
8391 </p>
8392 <blockquote class="text">
8393 <p>"OK" -
8394 </p>
8395 <blockquote class="text">
8396 <p>if the directory is deleted successfully
8397 </p>
8398 </blockquote>
8399
8400
8401 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8402 </p>
8403 <blockquote class="text">
8404 <p>if the given directory does not exist, or
8405 if trying to delete a non-empty directory,
8406 without using the FORCE argument.
8407 </p>
8408 </blockquote>
8409
8410
8411 </blockquote><p>
8412
8413 </p>
8414 <p>Examples:
8415 </p>
8416 <p>
8417 </p>
8418 <blockquote class="text">
8419 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8420 </p>
8421 <p>S: "OK"
8422 </p>
8423 </blockquote><p>
8424
8425 </p>
8426 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8427 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8428 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8429 Getting amount of instrument directories</h3>
8430
8431 <p>The front-end can retrieve the current amount of
8432 directories in a specific directory by sending the following command:
8433 </p>
8434 <p>
8435 </p>
8436 <blockquote class="text">
8437 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8438 </p>
8439 </blockquote><p>
8440
8441 </p>
8442 <p>Where &lt;dir&gt; should be replaced by the absolute path
8443 name of the directory. If RECURSIVE is specified, the number of
8444 all directories, including those located in subdirectories of the
8445 specified directory, will be returned.
8446 </p>
8447 <p>Possible Answers:
8448 </p>
8449 <p>
8450 </p>
8451 <blockquote class="text">
8452 <p>The current number of instrument directories
8453 in the specified directory.
8454 </p>
8455 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8456 </p>
8457 <blockquote class="text">
8458 <p>if the given directory does not exist.
8459 </p>
8460 </blockquote>
8461
8462
8463 </blockquote><p>
8464
8465 </p>
8466 <p>Example:
8467 </p>
8468 <p>
8469 </p>
8470 <blockquote class="text">
8471 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8472 </p>
8473 <p>S: "2"
8474 </p>
8475 </blockquote><p>
8476
8477 </p>
8478 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8479 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8480 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8481 Listing all directories in specific directory</h3>
8482
8483 <p>The front-end can retrieve the current list of directories
8484 in specific directory by sending the following command:
8485 </p>
8486 <p>
8487 </p>
8488 <blockquote class="text">
8489 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8490 </p>
8491 </blockquote><p>
8492
8493 </p>
8494 <p>Where &lt;dir&gt; should be replaced by the absolute path
8495 name of the directory. If RECURSIVE is specified, the absolute path names
8496 of all directories, including those located in subdirectories of the
8497 specified directory, will be returned.
8498 </p>
8499 <p>Possible Answers:
8500 </p>
8501 <p>
8502 </p>
8503 <blockquote class="text">
8504 <p>A comma separated list of all instrument directories
8505 (encapsulated into apostrophes) in the specified directory.
8506 </p>
8507 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8508 </p>
8509 <blockquote class="text">
8510 <p>if the given directory does not exist.
8511 </p>
8512 </blockquote>
8513
8514
8515 </blockquote><p>
8516
8517 </p>
8518 <p>Example:
8519 </p>
8520 <p>
8521 </p>
8522 <blockquote class="text">
8523 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8524 </p>
8525 <p>S: "'Piano Collection','Percussion Collection'"
8526 </p>
8527 </blockquote><p>
8528
8529 </p>
8530 <p>
8531 </p>
8532 <blockquote class="text">
8533 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8534 </p>
8535 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8536 </p>
8537 </blockquote><p>
8538
8539 </p>
8540 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8541 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8542 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8543 Getting instrument directory information</h3>
8544
8545 <p>The front-end can ask for the current settings of an
8546 instrument directory by sending the following command:
8547 </p>
8548 <p>
8549 </p>
8550 <blockquote class="text">
8551 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8552 </p>
8553 </blockquote><p>
8554
8555 </p>
8556 <p>Where &lt;dir&gt; should be replaced by the absolute path
8557 name of the directory the front-end is interested in.
8558 </p>
8559 <p>Possible Answers:
8560 </p>
8561 <p>
8562 </p>
8563 <blockquote class="text">
8564 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8565 Each answer line begins with the settings category name
8566 followed by a colon and then a space character &lt;SP&gt; and finally
8567 the info character string to that setting category. At the
8568 moment the following categories are defined:
8569 </p>
8570 <p>
8571 </p>
8572 <blockquote class="text">
8573 <p>DESCRIPTION -
8574 </p>
8575 <blockquote class="text">
8576 <p>A brief description of the directory content.
8577 Note that the character string may contain
8578 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8579 </p>
8580 </blockquote>
8581
8582
8583 <p>CREATED -
8584 </p>
8585 <blockquote class="text">
8586 <p>The creation date and time of the directory,
8587 represented in "YYYY-MM-DD HH:MM:SS" format
8588 </p>
8589 </blockquote>
8590
8591
8592 <p>MODIFIED -
8593 </p>
8594 <blockquote class="text">
8595 <p>The date and time of the last modification of the
8596 directory, represented in "YYYY-MM-DD HH:MM:SS" format
8597 </p>
8598 </blockquote>
8599
8600
8601 </blockquote>
8602
8603
8604 </blockquote><p>
8605
8606 </p>
8607 <p>The mentioned fields above don't have to be in particular order.
8608 </p>
8609 <p>Example:
8610 </p>
8611 <p>
8612 </p>
8613 <blockquote class="text">
8614 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8615 </p>
8616 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8617 </p>
8618 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8619 </p>
8620 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8621 </p>
8622 <p>&nbsp;&nbsp;&nbsp;"."
8623 </p>
8624 </blockquote><p>
8625
8626 </p>
8627 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8628 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8629 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8630 Renaming an instrument directory</h3>
8631
8632 <p>The front-end can alter the name of a specific
8633 instrument directory by sending the following command:
8634 </p>
8635 <p>
8636 </p>
8637 <blockquote class="text">
8638 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8639 </p>
8640 </blockquote><p>
8641
8642 </p>
8643 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8644 &lt;name&gt; is the new name for that directory.
8645 </p>
8646 <p>Possible Answers:
8647 </p>
8648 <p>
8649 </p>
8650 <blockquote class="text">
8651 <p>"OK" -
8652 </p>
8653 <blockquote class="text">
8654 <p>on success
8655 </p>
8656 </blockquote>
8657
8658
8659 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8660 </p>
8661 <blockquote class="text">
8662 <p>in case the given directory does not exists,
8663 or if a directory with name equal to the new
8664 name already exists.
8665 </p>
8666 </blockquote>
8667
8668
8669 </blockquote><p>
8670
8671 </p>
8672 <p>Example:
8673 </p>
8674 <p>
8675 </p>
8676 <blockquote class="text">
8677 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8678 </p>
8679 <p>S: "OK"
8680 </p>
8681 </blockquote><p>
8682
8683 </p>
8684 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8685 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8686 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8687 Moving an instrument directory</h3>
8688
8689 <p>The front-end can move a specific
8690 instrument directory by sending the following command:
8691 </p>
8692 <p>
8693 </p>
8694 <blockquote class="text">
8695 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8696 </p>
8697 </blockquote><p>
8698
8699 </p>
8700 <p>Where &lt;dir&gt; is the absolute path name of the directory
8701 to move and &lt;dst&gt; is the location where the directory will
8702 be moved to.
8703 </p>
8704 <p>Possible Answers:
8705 </p>
8706 <p>
8707 </p>
8708 <blockquote class="text">
8709 <p>"OK" -
8710 </p>
8711 <blockquote class="text">
8712 <p>on success
8713 </p>
8714 </blockquote>
8715
8716
8717 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8718 </p>
8719 <blockquote class="text">
8720 <p>in case a given directory does not exists,
8721 or if a directory with name equal to the name
8722 of the specified directory already exists in
8723 the destination directory. Error is also thrown
8724 when trying to move a directory to a subdirectory
8725 of itself.
8726 </p>
8727 </blockquote>
8728
8729
8730 </blockquote><p>
8731
8732 </p>
8733 <p>Example:
8734 </p>
8735 <p>
8736 </p>
8737 <blockquote class="text">
8738 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8739 </p>
8740 <p>S: "OK"
8741 </p>
8742 </blockquote><p>
8743
8744 </p>
8745 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8746 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8747 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8748 Copying instrument directories</h3>
8749
8750 <p>The front-end can copy a specific
8751 instrument directory by sending the following command:
8752 </p>
8753 <p>
8754 </p>
8755 <blockquote class="text">
8756 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8757 </p>
8758 </blockquote><p>
8759
8760 </p>
8761 <p>Where &lt;dir&gt; is the absolute path name of the directory
8762 to copy and &lt;dst&gt; is the location where the directory will
8763 be copied to.
8764 </p>
8765 <p>Possible Answers:
8766 </p>
8767 <p>
8768 </p>
8769 <blockquote class="text">
8770 <p>"OK" -
8771 </p>
8772 <blockquote class="text">
8773 <p>on success
8774 </p>
8775 </blockquote>
8776
8777
8778 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8779 </p>
8780 <blockquote class="text">
8781 <p>in case a given directory does not exists,
8782 or if a directory with name equal to the name
8783 of the specified directory already exists in
8784 the destination directory. Error is also thrown
8785 when trying to copy a directory to a subdirectory
8786 of itself.
8787 </p>
8788 </blockquote>
8789
8790
8791 </blockquote><p>
8792
8793 </p>
8794 <p>Example:
8795 </p>
8796 <p>
8797 </p>
8798 <blockquote class="text">
8799 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8800 </p>
8801 <p>S: "OK"
8802 </p>
8803 </blockquote><p>
8804
8805 </p>
8806 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8807 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8808 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8809 Changing the description of directory</h3>
8810
8811 <p>The front-end can alter the description of a specific
8812 instrument directory by sending the following command:
8813 </p>
8814 <p>
8815 </p>
8816 <blockquote class="text">
8817 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8818 </p>
8819 </blockquote><p>
8820
8821 </p>
8822 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8823 &lt;desc&gt; is the new description for the directory
8824 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8825 "<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>").
8826 </p>
8827 <p>Possible Answers:
8828 </p>
8829 <p>
8830 </p>
8831 <blockquote class="text">
8832 <p>"OK" -
8833 </p>
8834 <blockquote class="text">
8835 <p>on success
8836 </p>
8837 </blockquote>
8838
8839
8840 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8841 </p>
8842 <blockquote class="text">
8843 <p>in case the given directory does not exists.
8844 </p>
8845 </blockquote>
8846
8847
8848 </blockquote><p>
8849
8850 </p>
8851 <p>Example:
8852 </p>
8853 <p>
8854 </p>
8855 <blockquote class="text">
8856 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8857 </p>
8858 <p>S: "OK"
8859 </p>
8860 </blockquote><p>
8861
8862 </p>
8863 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8864 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8865 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8866 Finding directories</h3>
8867
8868 <p>The front-end can search for directories
8869 in specific directory by sending the following command:
8870 </p>
8871 <p>
8872 </p>
8873 <blockquote class="text">
8874 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8875 </p>
8876 </blockquote><p>
8877
8878 </p>
8879 <p>Where &lt;dir&gt; should be replaced by the absolute path
8880 name of the directory to search in. If NON_RECURSIVE is specified, the
8881 directories located in subdirectories of the specified directory will not
8882 be searched. &lt;criteria-list&gt; is a list of search criterias
8883 in form of "key1=val1 key2=val2 ...". The following criterias are
8884 allowed:
8885 </p>
8886 <p>
8887
8888 <p>NAME='&lt;search-string&gt;'
8889 </p>
8890 <blockquote class="text">
8891 <p>Restricts the search to directories, which names
8892 satisfy the supplied search string (encapsulated into apostrophes,
8893 supporting escape sequences as described in chapter
8894 "<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>").
8895 </p>
8896 </blockquote><p>
8897
8898 </p>
8899
8900
8901 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8902 </p>
8903 <blockquote class="text">
8904 <p>Restricts the search to directories, which creation
8905 date satisfies the specified period, where &lt;date-after&gt;
8906 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8907 If &lt;date-after&gt; is omitted the search is restricted to
8908 directories created before &lt;date-before&gt;. If
8909 &lt;date-before&gt; is omitted, the search is restricted
8910 to directories created after &lt;date-after&gt;.
8911 </p>
8912 </blockquote><p>
8913
8914 </p>
8915
8916
8917 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8918 </p>
8919 <blockquote class="text">
8920 <p>Restricts the search to directories, which
8921 date of last modification satisfies the specified period, where
8922 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8923 format. If &lt;date-after&gt; is omitted the search is restricted to
8924 directories, which are last modified before &lt;date-before&gt;. If
8925 &lt;date-before&gt; is omitted, the search is restricted to directories,
8926 which are last modified after &lt;date-after&gt;.
8927 </p>
8928 </blockquote><p>
8929
8930 </p>
8931
8932
8933 <p>DESCRIPTION='&lt;search-string&gt;'
8934 </p>
8935 <blockquote class="text">
8936 <p>Restricts the search to directories with description
8937 that satisfies the supplied search string
8938 (encapsulated into apostrophes, supporting escape
8939 sequences as described in chapter
8940 "<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>").
8941 </p>
8942 </blockquote><p>
8943
8944 </p>
8945
8946
8947 <p>Where &lt;search-string&gt; is either a regular expression, or a
8948 word list separated with spaces for OR search and with '+' for AND search.
8949 </p>
8950 <p>Possible Answers:
8951 </p>
8952 <p>
8953 </p>
8954 <blockquote class="text">
8955 <p>A comma separated list with the absolute path names (encapsulated into
8956 apostrophes) of all directories in the specified directory that satisfy
8957 the supplied search criterias.
8958 </p>
8959 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8960 </p>
8961 <blockquote class="text">
8962 <p>if the given directory does not exist.
8963 </p>
8964 </blockquote>
8965
8966
8967 </blockquote><p>
8968
8969 </p>
8970 <p>Example:
8971 </p>
8972 <p>
8973 </p>
8974 <blockquote class="text">
8975 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8976 </p>
8977 <p>S: "'/Piano Collection'"
8978 </p>
8979 </blockquote><p>
8980
8981 </p>
8982 <p>
8983 </p>
8984 <blockquote class="text">
8985 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8986 </p>
8987 <p>S: "'/Piano Collection','/Percussions'"
8988 </p>
8989 </blockquote><p>
8990
8991 </p>
8992 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8993 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8994 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8995 Adding instruments to the instruments database</h3>
8996
8997 <p>The front-end can add one or more instruments
8998 to the instruments database by sending the following command:
8999 </p>
9000 <p>
9001 </p>
9002 <blockquote class="text">
9003 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
9004 </p>
9005 </blockquote><p>
9006
9007 </p>
9008 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
9009 (encapsulated into apostrophes) in the instruments database in which
9010 only the new instruments (that are not already in the database) will
9011 be added, &lt;file_path&gt; is the absolute path name of a file or
9012 directory in the file system (encapsulated into apostrophes). In case
9013 an instrument file is supplied, only the instruments in the specified
9014 file will be added to the instruments database. If the optional
9015 &lt;instr_index&gt; (the index of the instrument within the given file)
9016 is supplied too, then only the specified instrument will be added.
9017 In case a directory is supplied, the instruments in that directory
9018 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
9019 when a directory is provided as &lt;file_path&gt; and specifies how the
9020 scanning will be done and has exactly the following possibilities:
9021 </p>
9022 <p>
9023 </p>
9024 <blockquote class="text">
9025 <p>"RECURSIVE" -
9026 </p>
9027 <blockquote class="text">
9028 <p>All instruments will be processed, including those
9029 in the subdirectories, and the respective subdirectory
9030 tree structure will be recreated in the instruments
9031 database
9032 </p>
9033 </blockquote>
9034
9035
9036 <p>"NON_RECURSIVE" -
9037 </p>
9038 <blockquote class="text">
9039 <p>Only the instruments in the specified directory
9040 will be added, the instruments in the subdirectories
9041 will not be processed.
9042 </p>
9043 </blockquote>
9044
9045
9046 <p>"FLAT" -
9047 </p>
9048 <blockquote class="text">
9049 <p>All instruments will be processed, including those
9050 in the subdirectories, but the respective subdirectory
9051 structure will not be recreated in the instruments
9052 database. All instruments will be added directly in
9053 the specified database directory.
9054 </p>
9055 </blockquote>
9056
9057
9058 </blockquote><p>
9059
9060 </p>
9061 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
9062 file will be added to a separate directory in the instruments database, which
9063 name will be the name of the instrument file with the file extension stripped off.
9064
9065 </p>
9066 <p>The difference between regular and NON_MODAL versions of the command
9067 is that the regular command returns when the scanning is finished
9068 while NON_MODAL version returns immediately and a background process is launched.
9069 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>
9070 command can be used to monitor the scanning progress.
9071 </p>
9072 <p>Possible Answers:
9073 </p>
9074 <p>
9075 </p>
9076 <blockquote class="text">
9077 <p>"OK" -
9078 </p>
9079 <blockquote class="text">
9080 <p>on success when NON_MODAL is not supplied
9081 </p>
9082 </blockquote>
9083
9084
9085 <p>"OK[&lt;job-id&gt;]" -
9086 </p>
9087 <blockquote class="text">
9088 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
9089 is a numerical ID used to obtain status information about the job progress.
9090 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>
9091
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>if an invalid path is specified.
9100 </p>
9101 </blockquote>
9102
9103
9104 </blockquote><p>
9105
9106 </p>
9107 <p>Examples:
9108 </p>
9109 <p>
9110 </p>
9111 <blockquote class="text">
9112 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
9113 </p>
9114 <p>S: "OK"
9115 </p>
9116 </blockquote><p>
9117
9118 </p>
9119 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
9120 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9121 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
9122 Removing an instrument</h3>
9123
9124 <p>The front-end can remove a particular instrument
9125 from the instruments database by sending the following command:
9126 </p>
9127 <p>
9128 </p>
9129 <blockquote class="text">
9130 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
9131 </p>
9132 </blockquote><p>
9133
9134 </p>
9135 <p>Where &lt;instr_path&gt; is the absolute path name
9136 (in the instruments database) of the instrument to remove.
9137 </p>
9138 <p>Possible Answers:
9139 </p>
9140 <p>
9141 </p>
9142 <blockquote class="text">
9143 <p>"OK" -
9144 </p>
9145 <blockquote class="text">
9146 <p>if the instrument is removed successfully
9147 </p>
9148 </blockquote>
9149
9150
9151 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9152 </p>
9153 <blockquote class="text">
9154 <p>if the given path does not exist or
9155 is a directory.
9156 </p>
9157 </blockquote>
9158
9159
9160 </blockquote><p>
9161
9162 </p>
9163 <p>Examples:
9164 </p>
9165 <p>
9166 </p>
9167 <blockquote class="text">
9168 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
9169 </p>
9170 <p>S: "OK"
9171 </p>
9172 </blockquote><p>
9173
9174 </p>
9175 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
9176 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9177 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
9178 Getting amount of instruments</h3>
9179
9180 <p>The front-end can retrieve the current amount of
9181 instruments in a specific directory by sending the following command:
9182 </p>
9183 <p>
9184 </p>
9185 <blockquote class="text">
9186 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
9187 </p>
9188 </blockquote><p>
9189
9190 </p>
9191 <p>Where &lt;dir&gt; should be replaced by the absolute path name
9192 of the directory. If RECURSIVE is specified, the number of all
9193 instruments, including those located in subdirectories of the
9194 specified directory, will be returned.
9195 </p>
9196 <p>Possible Answers:
9197 </p>
9198 <p>
9199 </p>
9200 <blockquote class="text">
9201 <p>The current number of instruments
9202 in the specified directory.
9203 </p>
9204 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9205 </p>
9206 <blockquote class="text">
9207 <p>if the given directory does not exist.
9208 </p>
9209 </blockquote>
9210
9211
9212 </blockquote><p>
9213
9214 </p>
9215 <p>Example:
9216 </p>
9217 <p>
9218 </p>
9219 <blockquote class="text">
9220 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
9221 </p>
9222 <p>S: "2"
9223 </p>
9224 </blockquote><p>
9225
9226 </p>
9227 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
9228 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9229 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
9230 Listing all instruments in specific directory</h3>
9231
9232 <p>The front-end can retrieve the current list of instruments
9233 in specific directory by sending the following command:
9234 </p>
9235 <p>
9236 </p>
9237 <blockquote class="text">
9238 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
9239 </p>
9240 </blockquote><p>
9241
9242 </p>
9243 <p>Where &lt;dir&gt; should be replaced by the absolute path
9244 name of the directory. If RECURSIVE is specified, the absolute path
9245 names of all instruments, including those located in subdirectories
9246 of the specified directory, will be returned.
9247 </p>
9248 <p>Possible Answers:
9249 </p>
9250 <p>
9251 </p>
9252 <blockquote class="text">
9253 <p>A comma separated list of all instruments
9254 (encapsulated into apostrophes) in the specified directory.
9255 </p>
9256 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9257 </p>
9258 <blockquote class="text">
9259 <p>if the given directory does not exist.
9260 </p>
9261 </blockquote>
9262
9263
9264 </blockquote><p>
9265
9266 </p>
9267 <p>Example:
9268 </p>
9269 <p>
9270 </p>
9271 <blockquote class="text">
9272 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
9273 </p>
9274 <p>S: "'Bosendorfer 290','Steinway D'"
9275 </p>
9276 </blockquote><p>
9277
9278 </p>
9279 <p>
9280 </p>
9281 <blockquote class="text">
9282 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
9283 </p>
9284 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
9285 </p>
9286 </blockquote><p>
9287
9288 </p>
9289 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
9290 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9291 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
9292 Getting instrument information</h3>
9293
9294 <p>The front-end can ask for the current settings of an
9295 instrument by sending the following command:
9296 </p>
9297 <p>
9298 </p>
9299 <blockquote class="text">
9300 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
9301 </p>
9302 </blockquote><p>
9303
9304 </p>
9305 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
9306 name of the instrument the front-end is interested in.
9307 </p>
9308 <p>Possible Answers:
9309 </p>
9310 <p>
9311 </p>
9312 <blockquote class="text">
9313 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9314 Each answer line begins with the settings category name
9315 followed by a colon and then a space character &lt;SP&gt; and finally
9316 the info character string to that setting category. At the
9317 moment the following categories are defined:
9318 </p>
9319 <p>
9320 </p>
9321 <blockquote class="text">
9322 <p>INSTRUMENT_FILE -
9323 </p>
9324 <blockquote class="text">
9325 <p>File name of the instrument.
9326 Note that the character string may contain
9327 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9328 </p>
9329 </blockquote>
9330
9331
9332 <p>INSTRUMENT_NR -
9333 </p>
9334 <blockquote class="text">
9335 <p>Index of the instrument within the file.
9336 </p>
9337 </blockquote>
9338
9339
9340 <p>FORMAT_FAMILY -
9341 </p>
9342 <blockquote class="text">
9343 <p>The format family of the instrument.
9344 </p>
9345 </blockquote>
9346
9347
9348 <p>FORMAT_VERSION -
9349 </p>
9350 <blockquote class="text">
9351 <p>The format version of the instrument.
9352 </p>
9353 </blockquote>
9354
9355
9356 <p>SIZE -
9357 </p>
9358 <blockquote class="text">
9359 <p>The size of the instrument in bytes.
9360 </p>
9361 </blockquote>
9362
9363
9364 <p>CREATED -
9365 </p>
9366 <blockquote class="text">
9367 <p>The date and time when the instrument is added
9368 in the instruments database, represented in
9369 "YYYY-MM-DD HH:MM:SS" format
9370 </p>
9371 </blockquote>
9372
9373
9374 <p>MODIFIED -
9375 </p>
9376 <blockquote class="text">
9377 <p>The date and time of the last modification of the
9378 instrument's database settings, represented in
9379 "YYYY-MM-DD HH:MM:SS" format
9380 </p>
9381 </blockquote>
9382
9383
9384 <p>DESCRIPTION -
9385 </p>
9386 <blockquote class="text">
9387 <p>A brief description of the instrument.
9388 Note that the character string may contain
9389 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9390 </p>
9391 </blockquote>
9392
9393
9394 <p>IS_DRUM -
9395 </p>
9396 <blockquote class="text">
9397 <p>either true or false, determines whether the
9398 instrument is a drumkit or a chromatic instrument
9399 </p>
9400 </blockquote>
9401
9402
9403 <p>PRODUCT -
9404 </p>
9405 <blockquote class="text">
9406 <p>The product title of the instrument.
9407 Note that the character string may contain
9408 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9409 </p>
9410 </blockquote>
9411
9412
9413 <p>ARTISTS -
9414 </p>
9415 <blockquote class="text">
9416 <p>Lists the artist names.
9417 Note that the character string may contain
9418 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9419 </p>
9420 </blockquote>
9421
9422
9423 <p>KEYWORDS -
9424 </p>
9425 <blockquote class="text">
9426 <p>Provides a list of keywords that refer to the instrument.
9427 Keywords are separated with semicolon and blank.
9428 Note that the character string may contain
9429 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9430 </p>
9431 </blockquote>
9432
9433
9434 </blockquote>
9435
9436
9437 </blockquote><p>
9438
9439 </p>
9440 <p>The mentioned fields above don't have to be in particular order.
9441 </p>
9442 <p>Example:
9443 </p>
9444 <p>
9445 </p>
9446 <blockquote class="text">
9447 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9448 </p>
9449 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9450 </p>
9451 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9452 </p>
9453 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9454 </p>
9455 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9456 </p>
9457 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9458 </p>
9459 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9460 </p>
9461 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9462 </p>
9463 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9464 </p>
9465 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9466 </p>
9467 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9468 </p>
9469 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9470 </p>
9471 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9472 </p>
9473 <p>&nbsp;&nbsp;&nbsp;"."
9474 </p>
9475 </blockquote><p>
9476
9477 </p>
9478 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9479 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9480 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9481 Renaming an instrument</h3>
9482
9483 <p>The front-end can alter the name of a specific
9484 instrument by sending the following command:
9485 </p>
9486 <p>
9487 </p>
9488 <blockquote class="text">
9489 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9490 </p>
9491 </blockquote><p>
9492
9493 </p>
9494 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9495 &lt;name&gt; is the new name for that instrument.
9496 </p>
9497 <p>Possible Answers:
9498 </p>
9499 <p>
9500 </p>
9501 <blockquote class="text">
9502 <p>"OK" -
9503 </p>
9504 <blockquote class="text">
9505 <p>on success
9506 </p>
9507 </blockquote>
9508
9509
9510 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9511 </p>
9512 <blockquote class="text">
9513 <p>in case the given instrument does not exists,
9514 or if an instrument with name equal to the new
9515 name already exists.
9516 </p>
9517 </blockquote>
9518
9519
9520 </blockquote><p>
9521
9522 </p>
9523 <p>Example:
9524 </p>
9525 <p>
9526 </p>
9527 <blockquote class="text">
9528 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9529 </p>
9530 <p>S: "OK"
9531 </p>
9532 </blockquote><p>
9533
9534 </p>
9535 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9536 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9537 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9538 Moving an instrument</h3>
9539
9540 <p>The front-end can move a specific instrument to another directory by
9541 sending the following command:
9542 </p>
9543 <p>
9544 </p>
9545 <blockquote class="text">
9546 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9547 </p>
9548 </blockquote><p>
9549
9550 </p>
9551 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9552 to move and &lt;dst&gt; is the directory where the instrument will
9553 be moved to.
9554 </p>
9555 <p>Possible Answers:
9556 </p>
9557 <p>
9558 </p>
9559 <blockquote class="text">
9560 <p>"OK" -
9561 </p>
9562 <blockquote class="text">
9563 <p>on success
9564 </p>
9565 </blockquote>
9566
9567
9568 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9569 </p>
9570 <blockquote class="text">
9571 <p>in case the given instrument does not exists,
9572 or if an instrument with name equal to the name of the
9573 specified instrument already exists in the destination
9574 directory.
9575 </p>
9576 </blockquote>
9577
9578
9579 </blockquote><p>
9580
9581 </p>
9582 <p>Example:
9583 </p>
9584 <p>
9585 </p>
9586 <blockquote class="text">
9587 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9588 </p>
9589 <p>S: "OK"
9590 </p>
9591 </blockquote><p>
9592
9593 </p>
9594 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9595 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9596 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9597 Copying instruments</h3>
9598
9599 <p>The front-end can copy a specific instrument to another directory by
9600 sending the following command:
9601 </p>
9602 <p>
9603 </p>
9604 <blockquote class="text">
9605 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9606 </p>
9607 </blockquote><p>
9608
9609 </p>
9610 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9611 to copy and &lt;dst&gt; is the directory where the instrument will
9612 be copied to.
9613 </p>
9614 <p>Possible Answers:
9615 </p>
9616 <p>
9617 </p>
9618 <blockquote class="text">
9619 <p>"OK" -
9620 </p>
9621 <blockquote class="text">
9622 <p>on success
9623 </p>
9624 </blockquote>
9625
9626
9627 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9628 </p>
9629 <blockquote class="text">
9630 <p>in case the given instrument does not exists,
9631 or if an instrument with name equal to the name of the
9632 specified instrument already exists in the destination
9633 directory.
9634 </p>
9635 </blockquote>
9636
9637
9638 </blockquote><p>
9639
9640 </p>
9641 <p>Example:
9642 </p>
9643 <p>
9644 </p>
9645 <blockquote class="text">
9646 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9647 </p>
9648 <p>S: "OK"
9649 </p>
9650 </blockquote><p>
9651
9652 </p>
9653 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9654 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9655 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9656 Changing the description of instrument</h3>
9657
9658 <p>The front-end can alter the description of a specific
9659 instrument by sending the following command:
9660 </p>
9661 <p>
9662 </p>
9663 <blockquote class="text">
9664 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9665 </p>
9666 </blockquote><p>
9667
9668 </p>
9669 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9670 &lt;desc&gt; is the new description for the instrument
9671 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9672 "<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>").
9673 </p>
9674 <p>Possible Answers:
9675 </p>
9676 <p>
9677 </p>
9678 <blockquote class="text">
9679 <p>"OK" -
9680 </p>
9681 <blockquote class="text">
9682 <p>on success
9683 </p>
9684 </blockquote>
9685
9686
9687 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9688 </p>
9689 <blockquote class="text">
9690 <p>in case the given instrument does not exists.
9691 </p>
9692 </blockquote>
9693
9694
9695 </blockquote><p>
9696
9697 </p>
9698 <p>Example:
9699 </p>
9700 <p>
9701 </p>
9702 <blockquote class="text">
9703 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9704 </p>
9705 <p>S: "OK"
9706 </p>
9707 </blockquote><p>
9708
9709 </p>
9710 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9711 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9712 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9713 Finding instruments</h3>
9714
9715 <p>The front-end can search for instruments
9716 in specific directory by sending the following command:
9717 </p>
9718 <p>
9719 </p>
9720 <blockquote class="text">
9721 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9722 </p>
9723 </blockquote><p>
9724
9725 </p>
9726 <p>Where &lt;dir&gt; should be replaced by the absolute path
9727 name of the directory to search in. If NON_RECURSIVE is specified, the
9728 directories located in subdirectories of the specified directory will not
9729 be searched. &lt;criteria-list&gt; is a list of search criterias
9730 in form of "key1=val1 key2=val2 ...". The following criterias are
9731 allowed:
9732 </p>
9733 <p>
9734
9735 <p>NAME='&lt;search-string&gt;'
9736 </p>
9737 <blockquote class="text">
9738 <p>Restricts the search to instruments, which names
9739 satisfy the supplied search string (encapsulated into apostrophes,
9740 supporting escape sequences as described in chapter
9741 "<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>").
9742 </p>
9743 </blockquote><p>
9744
9745 </p>
9746
9747
9748 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9749 </p>
9750 <blockquote class="text">
9751 <p>Restricts the search to instruments, which
9752 size is in the specified range. If &lt;min&gt; is omitted,
9753 the search results are restricted to instruments with size less then
9754 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9755 search is restricted to instruments with size greater then
9756 or equal to &lt;min&gt;.
9757 </p>
9758 </blockquote><p>
9759
9760 </p>
9761
9762
9763 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9764 </p>
9765 <blockquote class="text">
9766 <p>Restricts the search to instruments, which creation
9767 date satisfies the specified period, where &lt;date-after&gt;
9768 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9769 If &lt;date-after&gt; is omitted the search is restricted to
9770 instruments created before &lt;date-before&gt;. If
9771 &lt;date-before&gt; is omitted, the search is restricted
9772 to instruments created after &lt;date-after&gt;.
9773 </p>
9774 </blockquote><p>
9775
9776 </p>
9777
9778
9779 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9780 </p>
9781 <blockquote class="text">
9782 <p>Restricts the search to instruments, which
9783 date of last modification satisfies the specified period, where
9784 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9785 format. If &lt;date-after&gt; is omitted the search is restricted to
9786 instruments, which are last modified before &lt;date-before&gt;. If
9787 &lt;date-before&gt; is omitted, the search is restricted to instruments,
9788 which are last modified after &lt;date-after&gt;.
9789 </p>
9790 </blockquote><p>
9791
9792 </p>
9793
9794
9795 <p>DESCRIPTION='&lt;search-string&gt;'
9796 </p>
9797 <blockquote class="text">
9798 <p>Restricts the search to instruments with description
9799 that satisfies the supplied search string (encapsulated into apostrophes,
9800 supporting escape sequences as described in chapter
9801 "<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>").
9802 </p>
9803 </blockquote><p>
9804
9805 </p>
9806
9807
9808 <p>PRODUCT='&lt;search-string&gt;'
9809 </p>
9810 <blockquote class="text">
9811 <p>Restricts the search to instruments with product info
9812 that satisfies the supplied search string (encapsulated into apostrophes,
9813 supporting escape sequences as described in chapter
9814 "<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>").
9815 </p>
9816 </blockquote><p>
9817
9818 </p>
9819
9820
9821 <p>ARTISTS='&lt;search-string&gt;'
9822 </p>
9823 <blockquote class="text">
9824 <p>Restricts the search to instruments with artists info
9825 that satisfies the supplied search string (encapsulated into apostrophes,
9826 supporting escape sequences as described in chapter
9827 "<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>").
9828 </p>
9829 </blockquote><p>
9830
9831 </p>
9832
9833
9834 <p>KEYWORDS='&lt;search-string&gt;'
9835 </p>
9836 <blockquote class="text">
9837 <p>Restricts the search to instruments with keyword list
9838 that satisfies the supplied search string (encapsulated into apostrophes,
9839 supporting escape sequences as described in chapter
9840 "<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>").
9841 </p>
9842 </blockquote><p>
9843
9844 </p>
9845
9846
9847 <p>IS_DRUM=true | false
9848 </p>
9849 <blockquote class="text">
9850 <p>Either true or false. Restricts the search to
9851 drum kits or chromatic instruments.
9852 </p>
9853 </blockquote><p>
9854
9855 </p>
9856
9857
9858 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9859 </p>
9860 <blockquote class="text">
9861 <p>Restricts the search to instruments of the supplied format families,
9862 where &lt;format-list&gt; is a comma separated list of format families.
9863 </p>
9864 </blockquote><p>
9865
9866 </p>
9867
9868
9869 <p>Where &lt;search-string&gt; is either a regular expression, or a
9870 word list separated with spaces for OR search and with '+' for AND search.
9871 </p>
9872 <p>Possible Answers:
9873 </p>
9874 <p>
9875 </p>
9876 <blockquote class="text">
9877 <p>A comma separated list with the absolute path names (encapsulated into
9878 apostrophes) of all instruments in the specified directory that satisfy
9879 the supplied search criterias.
9880 </p>
9881 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9882 </p>
9883 <blockquote class="text">
9884 <p>if the given directory does not exist.
9885 </p>
9886 </blockquote>
9887
9888
9889 </blockquote><p>
9890
9891 </p>
9892 <p>Example:
9893 </p>
9894 <p>
9895 </p>
9896 <blockquote class="text">
9897 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9898 </p>
9899 <p>S: "'/Piano Collection/Bosendorfer 290'"
9900 </p>
9901 </blockquote><p>
9902
9903 </p>
9904 <p>
9905 </p>
9906 <blockquote class="text">
9907 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9908 </p>
9909 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9910 </p>
9911 </blockquote><p>
9912
9913 </p>
9914 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9915 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9916 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9917 Getting job status information</h3>
9918
9919 <p>The front-end can ask for the current status of a
9920 particular database instruments job by sending the following command:
9921 </p>
9922 <p>
9923 </p>
9924 <blockquote class="text">
9925 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9926 </p>
9927 </blockquote><p>
9928
9929 </p>
9930 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9931 of the job the front-end is interested in.
9932 </p>
9933 <p>Possible Answers:
9934 </p>
9935 <p>
9936 </p>
9937 <blockquote class="text">
9938 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9939 Each answer line begins with the settings category name
9940 followed by a colon and then a space character &lt;SP&gt; and finally
9941 the info character string to that setting category. At the
9942 moment the following categories are defined:
9943 </p>
9944 <p>
9945 </p>
9946 <blockquote class="text">
9947 <p>FILES_TOTAL -
9948 </p>
9949 <blockquote class="text">
9950 <p>The total number of files scheduled for scanning
9951 </p>
9952 </blockquote>
9953
9954
9955 <p>FILES_SCANNED -
9956 </p>
9957 <blockquote class="text">
9958 <p>The current number of scanned files
9959 </p>
9960 </blockquote>
9961
9962
9963 <p>SCANNING -
9964 </p>
9965 <blockquote class="text">
9966 <p>The absolute path name of the file which is currently
9967 being scanned
9968 </p>
9969 </blockquote>
9970
9971
9972 <p>STATUS -
9973 </p>
9974 <blockquote class="text">
9975 <p>An integer value between 0 and 100 indicating the
9976 scanning progress percentage of the file which is
9977 currently being scanned
9978 </p>
9979 </blockquote>
9980
9981
9982 </blockquote>
9983
9984
9985 </blockquote><p>
9986
9987 </p>
9988 <p>The mentioned fields above don't have to be in particular order.
9989 </p>
9990 <p>Example:
9991 </p>
9992 <p>
9993 </p>
9994 <blockquote class="text">
9995 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9996 </p>
9997 <p>S: "FILES_TOTAL: 12"
9998 </p>
9999 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
10000 </p>
10001 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
10002 </p>
10003 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
10004 </p>
10005 <p>&nbsp;&nbsp;&nbsp;"."
10006 </p>
10007 </blockquote><p>
10008
10009 </p>
10010 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
10011 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10012 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
10013 Formatting the instruments database</h3>
10014
10015 <p>The front-end can remove all instruments and directories and re-create
10016 the instruments database structure (e.g., in case of a database corruption)
10017 by sending the following command:
10018 </p>
10019 <p>
10020 </p>
10021 <blockquote class="text">
10022 <p>FORMAT INSTRUMENTS_DB
10023 </p>
10024 </blockquote><p>
10025
10026 </p>
10027 <p>Possible Answers:
10028 </p>
10029 <p>
10030 </p>
10031 <blockquote class="text">
10032 <p>"OK" -
10033 </p>
10034 <blockquote class="text">
10035 <p>on success
10036 </p>
10037 </blockquote>
10038
10039
10040 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10041 </p>
10042 <blockquote class="text">
10043 <p>If the formatting of the instruments database
10044 failed.
10045 </p>
10046 </blockquote>
10047
10048
10049 </blockquote><p>
10050
10051 </p>
10052 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
10053 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10054 <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
10055 Checking for lost instrument files</h3>
10056
10057 <p>The front-end can retrieve the list of all instrument files in the instruments database
10058 that don't exist in the filesystem by sending the following command:
10059 </p>
10060 <p>
10061 </p>
10062 <blockquote class="text">
10063 <p>FIND LOST DB_INSTRUMENT_FILES
10064 </p>
10065 </blockquote><p>
10066
10067 </p>
10068 <p>Possible Answers:
10069 </p>
10070 <p>
10071 </p>
10072 <blockquote class="text">
10073 <p>A comma separated list with the absolute path names
10074 (encapsulated into apostrophes) of all lost instrument files.
10075 </p>
10076 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10077 </p>
10078 <blockquote class="text">
10079 <p>in case it failed, providing an appropriate error code and error message.
10080 </p>
10081 </blockquote>
10082
10083
10084 </blockquote><p>
10085
10086 </p>
10087 <p>Example:
10088 </p>
10089 <p>
10090 </p>
10091 <blockquote class="text">
10092 <p>C: "FIND LOST DB_INSTRUMENT_FILES"
10093 </p>
10094 <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
10095 </p>
10096 </blockquote><p>
10097
10098 </p>
10099 <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
10100 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10101 <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
10102 Replacing an instrument file</h3>
10103
10104 <p>The front-end can substitute all occurrences of an instrument file
10105 in the instruments database with a new one by sending the following command:
10106 </p>
10107 <p>
10108 </p>
10109 <blockquote class="text">
10110 <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
10111 </p>
10112 </blockquote><p>
10113
10114 </p>
10115 <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
10116 to substitute with &lt;new_path&gt;.
10117 </p>
10118 <p>Possible Answers:
10119 </p>
10120 <p>
10121 </p>
10122 <blockquote class="text">
10123 <p>"OK" -
10124 </p>
10125 <blockquote class="text">
10126 <p>on success
10127 </p>
10128 </blockquote>
10129
10130
10131 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10132 </p>
10133 <blockquote class="text">
10134 <p>in case it failed, providing an appropriate error code and error message.
10135 </p>
10136 </blockquote>
10137
10138
10139 </blockquote><p>
10140
10141 </p>
10142 <p>Example:
10143 </p>
10144 <p>
10145 </p>
10146 <blockquote class="text">
10147 <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
10148 </p>
10149 <p>S: "OK"
10150 </p>
10151 </blockquote><p>
10152
10153 </p>
10154 <a name="editing_instruments"></a><br /><hr />
10155 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10156 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
10157 Editing Instruments</h3>
10158
10159 <p>The sampler allows to edit instruments while playing with the
10160 sampler by spawning an external (3rd party) instrument editor
10161 application for a given instrument. The 3rd party instrument
10162 editor applications have to place a respective plugin DLL file
10163 into the sampler's plugins directory. The sampler will
10164 automatically try to load all plugin DLLs in that directory on
10165 startup and only on startup!
10166 </p>
10167 <p>At the moment there is only one command for this feature set,
10168 but this will most probably change in future.
10169 </p>
10170 <a name="EDIT INSTRUMENT"></a><br /><hr />
10171 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10172 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
10173 Opening an appropriate instrument editor application</h3>
10174
10175 <p>The front-end can request to open an appropriate instrument
10176 editor application by sending the following command:
10177 </p>
10178 <p>
10179 </p>
10180 <blockquote class="text">
10181 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
10182 </p>
10183 </blockquote><p>
10184
10185 </p>
10186 <p>Where &lt;sampler-channel&gt; should be replaced by the
10187 number of the sampler channel as given by the
10188 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
10189 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
10190 command.
10191 </p>
10192 <p>The sampler will try to ask all registered instrument
10193 editors (or to be more specific: their sampler plugins)
10194 whether they are capable to handle the instrument on the
10195 given sampler channel. The sampler will simply use the first
10196 instrument editor application which replied with a positive
10197 answer and spawn that instrument editor application within
10198 the sampler's process and provide that application access
10199 to the instrument's data structures, so both applications
10200 can share and access the same instruments data at the same
10201 time, thus allowing to immediately hear changes with the
10202 sampler made by the instrument editor.
10203 </p>
10204 <p>Note: consequently instrument editors are always spawned
10205 locally on the same machine where the sampler is running
10206 on!
10207 </p>
10208 <p>Possible Answers:
10209 </p>
10210 <p>
10211 </p>
10212 <blockquote class="text">
10213 <p>"OK" -
10214 </p>
10215 <blockquote class="text">
10216 <p>when an appropriate instrument editor was
10217 launched
10218 </p>
10219 </blockquote>
10220
10221
10222 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10223 </p>
10224 <blockquote class="text">
10225 <p>when an appropriate instrument editor was
10226 launched, but there are noteworthy issues
10227 </p>
10228 </blockquote>
10229
10230
10231 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10232 </p>
10233 <blockquote class="text">
10234 <p>when an appropriate instrument editor
10235 could not be launched
10236 </p>
10237 </blockquote>
10238
10239
10240 </blockquote><p>
10241
10242 </p>
10243 <p>Examples:
10244 </p>
10245 <p>
10246 </p>
10247 <blockquote class="text">
10248 <p>C: "EDIT CHANNEL INSTRUMENT 0"
10249 </p>
10250 <p>S: "OK"
10251 </p>
10252 </blockquote><p>
10253
10254 </p>
10255 <a name="file_management"></a><br /><hr />
10256 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10257 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
10258 Managing Files</h3>
10259
10260 <p>You can query detailed informations about files located
10261 at the same system where the sampler instance is running on.
10262 Using this command set allows to retrieve file informations
10263 even remotely from another machine.
10264 </p>
10265 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
10266 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10267 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
10268 Retrieving amount of instruments of a file</h3>
10269
10270 <p>The front-end can retrieve the amount of instruments
10271 within a given instrument file by sending the
10272 following command:
10273 </p>
10274 <p>
10275 </p>
10276 <blockquote class="text">
10277 <p>GET FILE INSTRUMENTS &lt;filename&gt;
10278 </p>
10279 </blockquote><p>
10280
10281 </p>
10282 <p>Where &lt;filename&gt; is the name of the instrument
10283 file (encapsulated into apostrophes, supporting escape
10284 sequences as described in chapter
10285 "<a class='info' href='#character_set'>Character Set and Escape
10286 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
10287 </p>
10288 <p>The sampler will try to ask all sampler engines,
10289 whether they support the given file and ask the first
10290 engine with a positive answer for the amount of
10291 instruments.
10292 </p>
10293 <p>Possible Answers:
10294 </p>
10295 <p>
10296 </p>
10297 <blockquote class="text">
10298 <p>On success, the sampler will answer by
10299 returning the amount of instruments.
10300
10301 </p>
10302 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10303 </p>
10304 <blockquote class="text">
10305 <p>if the file could not be handled
10306 </p>
10307 </blockquote>
10308
10309
10310 </blockquote><p>
10311
10312 </p>
10313 <p>Examples:
10314 </p>
10315 <p>
10316 </p>
10317 <blockquote class="text">
10318 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
10319 </p>
10320 <p>S: "10"
10321 </p>
10322 </blockquote><p>
10323
10324 </p>
10325 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
10326 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10327 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
10328 Retrieving all instruments of a file</h3>
10329
10330 <p>The front-end can retrieve a list of all instruments
10331 within a given instrument file by sending the
10332 following command:
10333 </p>
10334 <p>
10335 </p>
10336 <blockquote class="text">
10337 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
10338 </p>
10339 </blockquote><p>
10340
10341 </p>
10342 <p>Where &lt;filename&gt; is the name of the instrument
10343 file (encapsulated into apostrophes, supporting escape
10344 sequences as described in chapter
10345 "<a class='info' href='#character_set'>Character Set and Escape
10346 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
10347 </p>
10348 <p>The sampler will try to ask all sampler engines,
10349 whether they support the given file and ask the first
10350 engine with a positive answer for a list of IDs for the
10351 instruments in the given file.
10352 </p>
10353 <p>Possible Answers:
10354 </p>
10355 <p>
10356 </p>
10357 <blockquote class="text">
10358 <p>On success, the sampler will answer by
10359 returning a comma separated list of
10360 instrument IDs.
10361
10362 </p>
10363 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10364 </p>
10365 <blockquote class="text">
10366 <p>if the file could not be handled
10367 </p>
10368 </blockquote>
10369
10370
10371 </blockquote><p>
10372
10373 </p>
10374 <p>Examples:
10375 </p>
10376 <p>
10377 </p>
10378 <blockquote class="text">
10379 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
10380 </p>
10381 <p>S: "0,1,2,3,4,5,6,7,8,9"
10382 </p>
10383 </blockquote><p>
10384
10385 </p>
10386 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
10387 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10388 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
10389 Retrieving informations about one instrument in a file</h3>
10390
10391 <p>The front-end can retrieve detailed informations
10392 about a specific instrument within a given instrument
10393 file by sending the following command:
10394 </p>
10395 <p>
10396 </p>
10397 <blockquote class="text">
10398 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
10399 &lt;instr-id&gt;
10400 </p>
10401 </blockquote><p>
10402
10403 </p>
10404 <p>Where &lt;filename&gt; is the name of the instrument
10405 file (encapsulated into apostrophes, supporting escape
10406 sequences as described in chapter
10407 "<a class='info' href='#character_set'>Character Set and Escape
10408 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
10409 instrument ID as returned by the
10410 <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.
10411 </p>
10412 <p>The sampler will try to ask all sampler engines,
10413 whether they support the given file and ask the first
10414 engine with a positive answer for informations about the
10415 specific instrument in the given file.
10416 </p>
10417 <p>Possible Answers:
10418 </p>
10419 <p>
10420 </p>
10421 <blockquote class="text">
10422 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10423 Each answer line begins with the settings category name
10424 followed by a colon and then a space character &lt;SP&gt; and finally
10425 the info character string to that setting category. At the
10426 moment the following categories are defined:
10427 </p>
10428 <p>
10429 </p>
10430 <blockquote class="text">
10431 <p>NAME -
10432 </p>
10433 <blockquote class="text">
10434 <p>name of the instrument as
10435 stored in the instrument file
10436 </p>
10437 </blockquote>
10438
10439
10440 <p>FORMAT_FAMILY -
10441 </p>
10442 <blockquote class="text">
10443 <p>name of the sampler format
10444 of the given instrument
10445 </p>
10446 </blockquote>
10447
10448
10449 <p>FORMAT_VERSION -
10450 </p>
10451 <blockquote class="text">
10452 <p>version of the sampler format
10453 the instrumen is stored as
10454 </p>
10455 </blockquote>
10456
10457
10458 <p>PRODUCT -
10459 </p>
10460 <blockquote class="text">
10461 <p>official product name of the
10462 instrument as stored in the file
10463
10464 </p>
10465 </blockquote>
10466
10467
10468 <p>ARTISTS -
10469 </p>
10470 <blockquote class="text">
10471 <p>artists / sample library
10472 vendor of the instrument
10473 </p>
10474 </blockquote>
10475
10476
10477 <p>KEY_BINDINGS -
10478 </p>
10479 <blockquote class="text">
10480 <p>comma separated list of integer values representing
10481 the instrument's key mapping in the range between 0 .. 127,
10482 reflecting the analog meaning of the MIDI specification.
10483 </p>
10484 </blockquote>
10485
10486
10487 <p>KEYSWITCH_BINDINGS -
10488 </p>
10489 <blockquote class="text">
10490 <p>comma separated list of integer values representing
10491 the instrument's keyswitch mapping in the range between 0 .. 127,
10492 reflecting the analog meaning of the MIDI specification.
10493 </p>
10494 </blockquote>
10495
10496
10497 </blockquote>
10498
10499
10500 </blockquote><p>
10501
10502 </p>
10503 <p>The mentioned fields above don't have to be in particular order.
10504 </p>
10505 <p>Example:
10506 </p>
10507 <p>
10508 </p>
10509 <blockquote class="text">
10510 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10511 </p>
10512 <p>S: "NAME: Lunatic Loops"
10513 </p>
10514 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10515 </p>
10516 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10517 </p>
10518 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10519 </p>
10520 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10521 </p>
10522 <p>&nbsp;&nbsp;&nbsp;"."
10523 </p>
10524 </blockquote><p>
10525
10526 </p>
10527 <a name="effects"></a><br /><hr />
10528 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10529 <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10530 Managing Effects</h3>
10531
10532 <p>Audio effects (e.g. reverb, delay, compression) can be
10533 applied to the audio signals generated by the sampler. The
10534 sampler usually provides a set of internal audio effects for
10535 this task. The exact set of effects depends on the availability
10536 of third party effect plugins installed on the system where the
10537 sampler runs on.
10538 </p>
10539 <p>At the moment only "send effects" are supported. Support for
10540 "insert effects" and "master effects" is planned to be added at
10541 a later point.
10542 </p>
10543 <p>The following commands allow to retrieve the set of internal
10544 effects available to the sampler, detailed informations about
10545 those effects and to create and destroy instances of such
10546 effects. After an instance of an effect is created, the effect
10547 instance can be inserted into the audio signal path of the
10548 sampler, e.g. as send effect.
10549 </p>
10550 <p>The sampler allows to create an arbitrary amount of so called
10551 send effect chains. Each effect chain can host an arbitrary
10552 amount of effect instances. The output of the first effect
10553 instance in an effect chain is fed to the input of the second
10554 effect instance of the chain and so on. So effects in one chain
10555 are processed sequentially. Send effect chains however are
10556 processed in parallel to other send effect chains. Audio signals
10557 of sampler channels are fed to send effects by creating FX sends
10558 to the respective sampler channel and assigning a destination
10559 send effect to that FX by using the
10560 <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>
10561 command. The latter allows to route the FX send to the beginning
10562 of a send effect chain, as well as directly to any other
10563 position of the send effect chain.
10564 </p>
10565 <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10566 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10567 <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10568 Retrieve amount of available effects</h3>
10569
10570 <p>The front-end can retrieve the amount of internal
10571 effects, available to the sampler by sending
10572 the following command:
10573 </p>
10574 <p>
10575 </p>
10576 <blockquote class="text">
10577 <p>GET AVAILABLE_EFFECTS
10578 </p>
10579 </blockquote><p>
10580
10581 </p>
10582 <p>Possible Answers:
10583 </p>
10584 <p>
10585 </p>
10586 <blockquote class="text">
10587 <p>The sampler will answer by returning the current
10588 number of effects available to the sampler.
10589 </p>
10590 </blockquote><p>
10591
10592 </p>
10593 <p>Examples:
10594 </p>
10595 <p>
10596 </p>
10597 <blockquote class="text">
10598 <p>C: "GET AVAILABLE_EFFECTS"
10599 </p>
10600 <p>S: "129"
10601 </p>
10602 </blockquote><p>
10603
10604 </p>
10605 <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10606 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10607 <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10608 Get list of available effects</h3>
10609
10610 <p>The set of available internal effects can change at
10611 runtime. The front-end can retrieve the list of internal
10612 effects, available to the sampler by sending the following
10613 command:
10614 </p>
10615 <p>
10616 </p>
10617 <blockquote class="text">
10618 <p>LIST AVAILABLE_EFFECTS
10619 </p>
10620 </blockquote><p>
10621
10622 </p>
10623 <p>Possible Answers:
10624 </p>
10625 <p>
10626 </p>
10627 <blockquote class="text">
10628 <p>The sampler will answer by returning a comma
10629 separated list with numerical IDs of effects. Note:
10630 the numercial ID of an effect is generated by the
10631 sampler for the current moment. The numerical ID of
10632 the same effect can change at runtime, e.g. when the
10633 user requests a rescan of available effect plugins.
10634
10635 </p>
10636 </blockquote><p>
10637
10638 </p>
10639 <p>Example:
10640 </p>
10641 <p>
10642 </p>
10643 <blockquote class="text">
10644 <p>C: "LIST AVAILABLE_EFFECTS"
10645 </p>
10646 <p>S: "5,6,7,120,121,122,123,124"
10647 </p>
10648 </blockquote><p>
10649
10650 </p>
10651 <a name="GET EFFECT INFO"></a><br /><hr />
10652 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10653 <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10654 Retrieving general information about an effect</h3>
10655
10656 <p>The front-end can ask for general informations about an
10657 effect by sending the following command:
10658 </p>
10659 <p>
10660 </p>
10661 <blockquote class="text">
10662 <p>GET EFFECT INFO &lt;effect-index&gt;
10663 </p>
10664 </blockquote><p>
10665
10666 </p>
10667 <p>Where &lt;effect-index&gt; is the numerical ID of an
10668 effect as returned by the
10669 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10670 command.
10671 </p>
10672 <p>Possible Answers:
10673 </p>
10674 <p>
10675 </p>
10676 <blockquote class="text">
10677 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10678 Each answer line begins with the effect information
10679 category name, followed by a colon and then a space
10680 character &lt;SP&gt; and finally the info character
10681 string to that effect information category. At the
10682 moment the following categories are defined:
10683 </p>
10684 <p>
10685 </p>
10686 <blockquote class="text">
10687 <p>SYSTEM -
10688 </p>
10689 <blockquote class="text">
10690 <p>name of the effect plugin system
10691 the effect is based on
10692 (e.g. "LADSPA")
10693 </p>
10694 </blockquote>
10695
10696
10697 <p>MODULE -
10698 </p>
10699 <blockquote class="text">
10700 <p>module of the effect plugin
10701 system that contains this effect,
10702 the module is usually the
10703 dynamic-linked library (DLL)
10704 filename of the effect plugin,
10705 including full path (note that this
10706 filename may contain
10707 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10708 </p>
10709 </blockquote>
10710
10711
10712 <p>NAME -
10713 </p>
10714 <blockquote class="text">
10715 <p>character string defining the
10716 unique name of the effect within its
10717 module (note that the character
10718 string may contain
10719 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10720 </p>
10721 </blockquote>
10722
10723
10724 <p>DESCRIPTION -
10725 </p>
10726 <blockquote class="text">
10727 <p>human readable name of the
10728 effect, intended to be displayed in
10729 user interfaces (note that the
10730 character string may contain
10731 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10732 </p>
10733 </blockquote>
10734
10735
10736 </blockquote>
10737
10738
10739 </blockquote><p>
10740
10741 </p>
10742 <p>The mentioned fields above don't have to be in particular order.
10743 </p>
10744 <p>Example:
10745 </p>
10746 <p>
10747 </p>
10748 <blockquote class="text">
10749 <p>C: "GET EFFECT INFO 121"
10750 </p>
10751 <p>S: "SYSTEM: LADSPA"
10752 </p>
10753 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10754 </p>
10755 <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10756 </p>
10757 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10758 </p>
10759 <p>&nbsp;&nbsp;&nbsp;"."
10760 </p>
10761 </blockquote><p>
10762
10763 </p>
10764 <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10765 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10766 <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10767 Creating an instance of an effect by its portable ID</h3>
10768
10769 <p>The front-end can spawn an instance of the desired
10770 effect by sending the following command:
10771 </p>
10772 <p>
10773 </p>
10774 <blockquote class="text">
10775 <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10776 </p>
10777 </blockquote><p>
10778
10779 </p>
10780 <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10781 &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10782 the "NAME" field as returned by the
10783 <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>
10784 command. The filename of argument &lt;module&gt; and the
10785 character string of argument &lt;effect-name&gt; may contain
10786 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10787 </p>
10788 <p>The sampler will try to load the requested effect and to
10789 create an instance of it. To allow loading the same effect
10790 on a different machine, probably even running a completely
10791 different operating system (e.g. Linux vs. Windows), the
10792 sampler tries to match &lt;module&gt; "softly". That means
10793 it first tries to find an effect that exactly matches the
10794 given &lt;module&gt; argument. If there is no exact match,
10795 the sampler will try to lower the restrictions on matching
10796 the &lt;module&gt; argument more and more, e.g. by ignoring
10797 upper / lower case differences and by ignoring the path of
10798 the DLL filename and file extension. If there is still no
10799 match at the end, the sampler will try to ignore the
10800 &lt;module&gt; argument completely and as a last resort
10801 search for an effect that only matches the given
10802 &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10803 </p>
10804 <p>Possible Answers:
10805 </p>
10806 <p>
10807 </p>
10808 <blockquote class="text">
10809 <p>"OK[&lt;effect-instance&gt;]" -
10810 </p>
10811 <blockquote class="text">
10812 <p>in case the effect instance was
10813 successfully created, where
10814 &lt;effect-instance&gt; is the numerical ID
10815 of the new effect instance
10816 </p>
10817 </blockquote>
10818
10819
10820 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10821 </p>
10822 <blockquote class="text">
10823 <p>in case the effect instance was spawned
10824 successfully, but there are noteworthy
10825 issue(s) related, providing an appropriate
10826 warning code and warning message
10827 </p>
10828 </blockquote>
10829
10830
10831 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10832 </p>
10833 <blockquote class="text">
10834 <p>if the effect could not be instantiated
10835 </p>
10836 </blockquote>
10837
10838
10839 </blockquote><p>
10840
10841 </p>
10842 <p>Examples:
10843 </p>
10844 <p>
10845 </p>
10846 <blockquote class="text">
10847 <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10848 </p>
10849 <p>S: "OK[0]"
10850 </p>
10851 </blockquote><p>
10852
10853 </p>
10854 <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10855 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10856 <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10857 Creating an instance of an effect by its numerical ID</h3>
10858
10859 <p>The front-end can spawn an instance of the desired
10860 effect by sending the following command:
10861 </p>
10862 <p>
10863 </p>
10864 <blockquote class="text">
10865 <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10866 </p>
10867 </blockquote><p>
10868
10869 </p>
10870 <p>Where &lt;effect-index&gt; is the numerical ID of the
10871 effect as returned by the
10872 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10873 command.
10874 </p>
10875 <p>The sampler will try to load the requested effect and to
10876 create an instance of it.
10877 </p>
10878 <p>Note: Since the numerical ID of a certain effect can
10879 change at any time, you should not use this command in
10880 LSCP files to restore a certain effect at a later time! To
10881 store a sampler session including all its effects, use the
10882 <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10883 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
10884 allows to restore a sampler session with all its effects
10885 also on other machines, possibly even running a completely
10886 different operating system (e.g. Linux vs. Windows), with
10887 different plugin directories or plugin DLL names.
10888 </p>
10889 <p>Possible Answers:
10890 </p>
10891 <p>
10892 </p>
10893 <blockquote class="text">
10894 <p>"OK[&lt;effect-instance&gt;]" -
10895 </p>
10896 <blockquote class="text">
10897 <p>in case the effect instance was
10898 successfully created, where
10899 &lt;effect-instance&gt; is the numerical ID
10900 of the new effect instance
10901 </p>
10902 </blockquote>
10903
10904
10905 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10906 </p>
10907 <blockquote class="text">
10908 <p>in case the effect instance was spawned
10909 successfully, but there are noteworthy
10910 issue(s) related, providing an appropriate
10911 warning code and warning message
10912 </p>
10913 </blockquote>
10914
10915
10916 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10917 </p>
10918 <blockquote class="text">
10919 <p>if the effect could not be instantiated
10920 </p>
10921 </blockquote>
10922
10923
10924 </blockquote><p>
10925
10926 </p>
10927 <p>Examples:
10928 </p>
10929 <p>
10930 </p>
10931 <blockquote class="text">
10932 <p>C: "CREATE EFFECT_INSTANCE 72"
10933 </p>
10934 <p>S: "OK[5]"
10935 </p>
10936 </blockquote><p>
10937
10938 </p>
10939 <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10940 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10941 <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10942 Destroy an effect instance</h3>
10943
10944 <p>The front-end can destroy an unusued effect instance and
10945 thus freeing it from memory by sending the following command:
10946 </p>
10947 <p>
10948 </p>
10949 <blockquote class="text">
10950 <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10951 </p>
10952 </blockquote><p>
10953
10954 </p>
10955 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10956 effect instance as returned by the
10957 <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
10958 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10959 command.
10960 </p>
10961 <p>The effect instance can only be destroyed if it's not
10962 used in any part of the sampler's audio signal path anymore.
10963 If the effect instance is still in use somewhere, trying to
10964 destroy the effect instance will result in an error
10965 message.
10966 </p>
10967 <p>Possible Answers:
10968 </p>
10969 <p>
10970 </p>
10971 <blockquote class="text">
10972 <p>"OK" -
10973 </p>
10974 <blockquote class="text">
10975 <p>in case the effect instance was successfully destroyed
10976 </p>
10977 </blockquote>
10978
10979
10980 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10981 </p>
10982 <blockquote class="text">
10983 <p>in case it failed, providing an appropriate error code and
10984 error message
10985 </p>
10986 </blockquote>
10987
10988
10989 </blockquote><p>
10990
10991 </p>
10992 <p>Examples:
10993 </p>
10994 <p>
10995 </p>
10996 <blockquote class="text">
10997 <p>C: "DESTROY EFFECT_INSTANCE 5"
10998 </p>
10999 <p>S: "OK"
11000 </p>
11001 </blockquote><p>
11002
11003 </p>
11004 <a name="GET EFFECT_INSTANCES"></a><br /><hr />
11005 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11006 <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
11007 Retrieve amount of effect instances</h3>
11008
11009 <p>The front-end can retrieve the current amount of effect
11010 instances by sending the following command:
11011 </p>
11012 <p>
11013 </p>
11014 <blockquote class="text">
11015 <p>GET EFFECT_INSTANCES
11016 </p>
11017 </blockquote><p>
11018
11019 </p>
11020 <p>Possible Answers:
11021 </p>
11022 <p>
11023 </p>
11024 <blockquote class="text">
11025 <p>The sampler will answer by returning the current
11026 number of effect instances created and not yet
11027 destroyed in the current sampler session.
11028 </p>
11029 </blockquote><p>
11030
11031 </p>
11032 <p>Examples:
11033 </p>
11034 <p>
11035 </p>
11036 <blockquote class="text">
11037 <p>C: "GET EFFECT_INSTANCES"
11038 </p>
11039 <p>S: "14"
11040 </p>
11041 </blockquote><p>
11042
11043 </p>
11044 <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
11045 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11046 <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
11047 Get list of effect instances</h3>
11048
11049 <p>The front-end can retrieve the current list of effect
11050 instances by sending the following command:
11051 </p>
11052 <p>
11053 </p>
11054 <blockquote class="text">
11055 <p>LIST EFFECT_INSTANCES
11056 </p>
11057 </blockquote><p>
11058
11059 </p>
11060 <p>Possible Answers:
11061 </p>
11062 <p>
11063 </p>
11064 <blockquote class="text">
11065 <p>The sampler will answer by returning a comma
11066 separated list with numerical IDs of effects
11067 instances.
11068
11069 </p>
11070 </blockquote><p>
11071
11072 </p>
11073 <p>Example:
11074 </p>
11075 <p>
11076 </p>
11077 <blockquote class="text">
11078 <p>C: "LIST EFFECT_INSTANCES"
11079 </p>
11080 <p>S: "9,11,14,15,16,17,25"
11081 </p>
11082 </blockquote><p>
11083
11084 </p>
11085 <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
11086 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11087 <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
11088 Retrieving current information about an effect instance</h3>
11089
11090 <p>The front-end can ask for the current informations about
11091 a particular effect instance by sending the following command:
11092 </p>
11093 <p>
11094 </p>
11095 <blockquote class="text">
11096 <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
11097 </p>
11098 </blockquote><p>
11099
11100 </p>
11101 <p>Where &lt;effect-instance&gt; is the numerical ID of an
11102 effect instance as returned by the
11103 <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>
11104 or
11105 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11106 command.
11107 </p>
11108 <p>Possible Answers:
11109 </p>
11110 <p>
11111 </p>
11112 <blockquote class="text">
11113 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11114 Each answer line begins with the information
11115 category name, followed by a colon and then a space
11116 character &lt;SP&gt; and finally the info character
11117 string to that information category. At the
11118 moment the following categories are defined:
11119 </p>
11120 <p>
11121 </p>
11122 <blockquote class="text">
11123 <p>SYSTEM -
11124 </p>
11125 <blockquote class="text">
11126 <p>name of the effect plugin system
11127 the effect is based on
11128 (e.g. "LADSPA")
11129 </p>
11130 </blockquote>
11131
11132
11133 <p>MODULE -
11134 </p>
11135 <blockquote class="text">
11136 <p>module of the effect plugin
11137 system that contains this effect,
11138 the module is usually the
11139 dynamic-linked library (DLL)
11140 filename of the effect plugin,
11141 including full path (note that this
11142 filename may contain
11143 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11144 </p>
11145 </blockquote>
11146
11147
11148 <p>NAME -
11149 </p>
11150 <blockquote class="text">
11151 <p>character string defining the
11152 unique name of the effect within its
11153 module (note that the character
11154 string may contain
11155 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11156 </p>
11157 </blockquote>
11158
11159
11160 <p>DESCRIPTION -
11161 </p>
11162 <blockquote class="text">
11163 <p>human readable name of the
11164 effect, intended to be displayed in
11165 user interfaces (note that the
11166 character string may contain
11167 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11168 </p>
11169 </blockquote>
11170
11171
11172 <p>INPUT_CONTROLS -
11173 </p>
11174 <blockquote class="text">
11175 <p>amount of input controls the
11176 effect instance provides, to allow
11177 controlling the effect parameters in
11178 realtime
11179 </p>
11180 </blockquote>
11181
11182
11183 </blockquote>
11184
11185
11186 </blockquote><p>
11187
11188 </p>
11189 <p>The mentioned fields above don't have to be in particular order.
11190 </p>
11191 <p>Example:
11192 </p>
11193 <p>
11194 </p>
11195 <blockquote class="text">
11196 <p>C: "GET EFFECT_INSTANCE INFO 3"
11197 </p>
11198 <p>S: "SYSTEM: LADSPA"
11199 </p>
11200 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
11201 </p>
11202 <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
11203 </p>
11204 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
11205 </p>
11206 <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
11207 </p>
11208 <p>&nbsp;&nbsp;&nbsp;"."
11209 </p>
11210 </blockquote><p>
11211
11212 </p>
11213 <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
11214 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11215 <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
11216 Retrieving information about an effect parameter</h3>
11217
11218 <p>Effects typically provide a certain set of effect
11219 parameters which can be altered by the user in realtime
11220 (e.g. depth of a reverb effect, duration of a delay effect,
11221 dry / wet signal ratio). Those controllable effect parameters
11222 are called "input controls". The front-end can ask for the
11223 current informations of an effect instance's input control
11224 by sending the following command:
11225 </p>
11226 <p>
11227 </p>
11228 <blockquote class="text">
11229 <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
11230 </p>
11231 </blockquote><p>
11232
11233 </p>
11234 <p>Where &lt;effect-instance&gt; is the numerical ID of an
11235 effect instance as returned by the
11236 <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>
11237 or
11238 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11239 command and &lt;input-control&gt; is the index of the input
11240 control within the numerical bounds as returned by the
11241 "INPUT_CONTROLS" field of the
11242 <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>
11243 command.
11244 </p>
11245 <p>Possible Answers:
11246 </p>
11247 <p>
11248 </p>
11249 <blockquote class="text">
11250 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11251 Each answer line begins with the information
11252 category name, followed by a colon and then a space
11253 character &lt;SP&gt; and finally the info character
11254 string to that information category. There are
11255 information categories which are always returned,
11256 independent of the respective effect parameter and
11257 there are optional information categories
11258 which are only shown for certain effect parameters.
11259 At the moment the following categories are defined:
11260 </p>
11261 <p>
11262 </p>
11263 <blockquote class="text">
11264 <p>DESCRIPTION -
11265 </p>
11266 <blockquote class="text">
11267 <p>(always returned)
11268 human readable name of the
11269 effect parameter, intended to be
11270 displayed in user interfaces (note
11271 that the character string may
11272 contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11273 </p>
11274 </blockquote>
11275
11276
11277 <p>VALUE -
11278 </p>
11279 <blockquote class="text">
11280 <p>
11281 (always returned)
11282 current (optional dotted)
11283 floating point value of this effect
11284 parameter
11285 </p>
11286 </blockquote>
11287
11288
11289 <p>RANGE_MIN -
11290 </p>
11291 <blockquote class="text">
11292 <p>
11293 (optionally returned)
11294 minimum allowed value for this
11295 effect parameter
11296 </p>
11297 </blockquote>
11298
11299
11300 <p>RANGE_MAX -
11301 </p>
11302 <blockquote class="text">
11303 <p>
11304 (optionally returned)
11305 maximum allowed value for this
11306 effect parameter
11307 </p>
11308 </blockquote>
11309
11310
11311 <p>POSSIBILITIES -
11312 </p>
11313 <blockquote class="text">
11314 <p>
11315 (optionally returned)
11316 comma separated list of
11317 (optional dotted) floating point
11318 numbers, reflecting the exact set of
11319 possible values for this effect
11320 parameter
11321 </p>
11322 </blockquote>
11323
11324
11325 <p>DEFAULT -
11326 </p>
11327 <blockquote class="text">
11328 <p>
11329 (optionally returned)
11330 default value of this effect
11331 parameter
11332 </p>
11333 </blockquote>
11334
11335
11336 </blockquote>
11337
11338
11339 </blockquote><p>
11340
11341 </p>
11342 <p>The mentioned fields above don't have to be in particular order.
11343 </p>
11344 <p>Example:
11345 </p>
11346 <p>
11347 </p>
11348 <blockquote class="text">
11349 <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
11350 </p>
11351 <p>S: "DESCRIPTION: Base delay (s)"
11352 </p>
11353 <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
11354 </p>
11355 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
11356 </p>
11357 <p>&nbsp;&nbsp;&nbsp;"."
11358 </p>
11359 </blockquote><p>
11360
11361 </p>
11362 <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
11363 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11364 <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
11365 Altering an effect parameter</h3>
11366
11367 <p>The front-end can alter the current value of an effect
11368 parameter by sending the following command:
11369 </p>
11370 <p>
11371 </p>
11372 <blockquote class="text">
11373 <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
11374 </p>
11375 </blockquote><p>
11376
11377 </p>
11378 <p>Where &lt;effect-instance&gt; is the numerical ID of the
11379 effect instance as returned by the
11380 <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
11381 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11382 command, &lt;input-control&gt; is the index of the input
11383 control within the numerical bounds as returned by the
11384 "INPUT_CONTROLS" field of the
11385 <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>
11386 command and &lt;value&gt; is the new (optional dotted)
11387 floating point value for this effect parameter.
11388 </p>
11389 <p>Possible Answers:
11390 </p>
11391 <p>
11392 </p>
11393 <blockquote class="text">
11394 <p>"OK" -
11395 </p>
11396 <blockquote class="text">
11397 <p>in case the effect was altered successfully
11398 </p>
11399 </blockquote>
11400
11401
11402 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11403 </p>
11404 <blockquote class="text">
11405 <p>in case it failed, providing an appropriate error code and
11406 error message
11407 </p>
11408 </blockquote>
11409
11410
11411 </blockquote><p>
11412
11413 </p>
11414 <p>Examples:
11415 </p>
11416 <p>
11417 </p>
11418 <blockquote class="text">
11419 <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11420 </p>
11421 <p>S: "OK"
11422 </p>
11423 </blockquote><p>
11424
11425 </p>
11426 <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11427 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11428 <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11429 Retrieve amount of send effect chains</h3>
11430
11431 <p>The front-end can retrieve the current amount of send
11432 effect chains of an audio output device by sending the
11433 following command:
11434 </p>
11435 <p>
11436 </p>
11437 <blockquote class="text">
11438 <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11439 </p>
11440 </blockquote><p>
11441
11442 </p>
11443 <p>Where &lt;audio-device&gt; should be replaced by the
11444 numerical ID of the audio output device as given by the
11445 <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>
11446 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>
11447 command.
11448 </p>
11449 <p>Possible Answers:
11450 </p>
11451 <p>
11452 </p>
11453 <blockquote class="text">
11454 <p>The sampler will answer by returning the current
11455 number of send effect chains of the supplied audio
11456 output device.
11457 </p>
11458 </blockquote><p>
11459
11460 </p>
11461 <p>Examples:
11462 </p>
11463 <p>
11464 </p>
11465 <blockquote class="text">
11466 <p>C: "GET SEND_EFFECT_CHAINS 0"
11467 </p>
11468 <p>S: "4"
11469 </p>
11470 </blockquote><p>
11471
11472 </p>
11473 <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11474 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11475 <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11476 Retrieve list of send effect chains</h3>
11477
11478 <p>The front-end can retrieve the current list of send
11479 effect chains of an audio output device by sending the
11480 following command:
11481 </p>
11482 <p>
11483 </p>
11484 <blockquote class="text">
11485 <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11486 </p>
11487 </blockquote><p>
11488
11489 </p>
11490 <p>Where &lt;audio-device&gt; should be replaced by the
11491 numerical ID of the audio output device as given by the
11492 <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>
11493 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>
11494 command.
11495 </p>
11496 <p>Possible Answers:
11497 </p>
11498 <p>
11499 </p>
11500 <blockquote class="text">
11501 <p>The sampler will answer by returning a comma
11502 separated list with numerical IDs of send effect
11503 chains of the supplied audio output device.
11504
11505 </p>
11506 </blockquote><p>
11507
11508 </p>
11509 <p>Examples:
11510 </p>
11511 <p>
11512 </p>
11513 <blockquote class="text">
11514 <p>C: "LIST SEND_EFFECT_CHAINS 0"
11515 </p>
11516 <p>S: "3,4,7"
11517 </p>
11518 </blockquote><p>
11519
11520 </p>
11521 <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11522 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11523 <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11524 Add send effect chain</h3>
11525
11526 <p>The front-end can add a send effect chain by sending the
11527 following command:
11528 </p>
11529 <p>
11530 </p>
11531 <blockquote class="text">
11532 <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11533 </p>
11534 </blockquote><p>
11535
11536 </p>
11537 <p>Where &lt;audio-device&gt; should be replaced by the
11538 numerical ID of the audio output device as given by the
11539 <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>
11540 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>
11541 command.
11542 </p>
11543 <p>Possible Answers:
11544 </p>
11545 <p>
11546 </p>
11547 <blockquote class="text">
11548 <p>"OK[&lt;effect-chain&gt;]" -
11549 </p>
11550 <blockquote class="text">
11551 <p>in case the send effect chain was
11552 added successfully, where
11553 &lt;effect-chain&gt; is the numerical ID
11554 of the new send effect chain
11555 </p>
11556 </blockquote>
11557
11558
11559 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11560 </p>
11561 <blockquote class="text">
11562 <p>if the send effect chain could not be added
11563 </p>
11564 </blockquote>
11565
11566
11567 </blockquote><p>
11568
11569 </p>
11570 <p>Examples:
11571 </p>
11572 <p>
11573 </p>
11574 <blockquote class="text">
11575 <p>C: "ADD SEND_EFFECT_CHAIN 0"
11576 </p>
11577 <p>S: "OK[2]"
11578 </p>
11579 </blockquote><p>
11580
11581 </p>
11582 <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11583 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11584 <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11585 Remove send effect chain</h3>
11586
11587 <p>The front-end can remove a send effect chain by sending
11588 the following command:
11589 </p>
11590 <p>
11591 </p>
11592 <blockquote class="text">
11593 <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11594 </p>
11595 </blockquote><p>
11596
11597 </p>
11598 <p>Where &lt;audio-device&gt; should be replaced by the
11599 numerical ID of the audio output device as given by the
11600 <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>
11601 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>
11602 command and &lt;effect-chain&gt; by the numerical ID as
11603 returned by the
11604 <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>
11605 or
11606 <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>
11607 command.
11608 </p>
11609 <p>Possible Answers:
11610 </p>
11611 <p>
11612 </p>
11613 <blockquote class="text">
11614 <p>"OK" -
11615 </p>
11616 <blockquote class="text">
11617 <p>in case the send effect chain was
11618 removed successfully
11619 </p>
11620 </blockquote>
11621
11622
11623 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11624 </p>
11625 <blockquote class="text">
11626 <p>if the send effect chain could not be removed
11627 </p>
11628 </blockquote>
11629
11630
11631 </blockquote><p>
11632
11633 </p>
11634 <p>Examples:
11635 </p>
11636 <p>
11637 </p>
11638 <blockquote class="text">
11639 <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11640 </p>
11641 <p>S: "OK"
11642 </p>
11643 </blockquote><p>
11644
11645 </p>
11646 <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11647 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11648 <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11649 Retrieving information about a send effect chain</h3>
11650
11651 <p>The front-end can ask for informations of a send effect
11652 chain by sending the following command:
11653 </p>
11654 <p>
11655 </p>
11656 <blockquote class="text">
11657 <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11658 </p>
11659 </blockquote><p>
11660
11661 </p>
11662 <p>Where &lt;audio-device&gt; should be replaced by the
11663 numerical ID of the audio output device as given by the
11664 <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>
11665 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>
11666 command and &lt;effect-chain&gt; by the numerical ID as
11667 returned by the
11668 <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>
11669 or
11670 <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>
11671 command.
11672 </p>
11673 <p>Possible Answers:
11674 </p>
11675 <p>
11676 </p>
11677 <blockquote class="text">
11678 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11679 Each answer line begins with the information
11680 category name, followed by a colon and then a space
11681 character &lt;SP&gt; and finally the info character
11682 string to that information category.
11683 At the moment the following categories are defined:
11684 </p>
11685 <p>
11686 </p>
11687 <blockquote class="text">
11688 <p>EFFECT_COUNT -
11689 </p>
11690 <blockquote class="text">
11691 <p>amount of effects in this send
11692 effect chain
11693 </p>
11694 </blockquote>
11695
11696
11697 <p>EFFECT_SEQUENCE -
11698 </p>
11699 <blockquote class="text">
11700 <p>comma separated list of the
11701 numerical IDs of the effect
11702 instances in this send effect chain,
11703 in the order as they are procssed in
11704 the effect chain
11705 </p>
11706 </blockquote>
11707
11708
11709 </blockquote>
11710
11711
11712 </blockquote><p>
11713
11714 </p>
11715 <p>The mentioned fields above don't have to be in particular order.
11716 </p>
11717 <p>Example:
11718 </p>
11719 <p>
11720 </p>
11721 <blockquote class="text">
11722 <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11723 </p>
11724 <p>S: "EFFECT_COUNT: 3"
11725 </p>
11726 <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11727 </p>
11728 <p>&nbsp;&nbsp;&nbsp;"."
11729 </p>
11730 </blockquote><p>
11731
11732 </p>
11733 <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11734 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11735 <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11736 Append effect instance to a send effect chain</h3>
11737
11738 <p>The front-end can add an unused effect instance to the
11739 end of a send effect chain by sending the following command:
11740 </p>
11741 <p>
11742 </p>
11743 <blockquote class="text">
11744 <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11745 </p>
11746 </blockquote><p>
11747
11748 </p>
11749 <p>Where &lt;audio-device&gt; should be replaced by the
11750 numerical ID of the audio output device as given by the
11751 <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>
11752 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>
11753 command and &lt;effect-chain&gt; by the numerical ID as
11754 returned by the
11755 <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>
11756 or
11757 <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>
11758 command and &lt;effect-instance&gt; as returned by the
11759 <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
11760 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11761 command.
11762 </p>
11763 <p>Only unused effect instances can be added to the effect
11764 chain. Trying to add an effect instance which is already in
11765 use somewhere in the audio signal path of the sampler will
11766 result in an error.
11767 </p>
11768 <p>Possible Answers:
11769 </p>
11770 <p>
11771 </p>
11772 <blockquote class="text">
11773 <p>"OK" -
11774 </p>
11775 <blockquote class="text">
11776 <p>in case the effect instance was
11777 added successfully to the chain
11778 </p>
11779 </blockquote>
11780
11781
11782 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11783 </p>
11784 <blockquote class="text">
11785 <p>if the effect instance could not be added
11786 </p>
11787 </blockquote>
11788
11789
11790 </blockquote><p>
11791
11792 </p>
11793 <p>Examples:
11794 </p>
11795 <p>
11796 </p>
11797 <blockquote class="text">
11798 <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11799 </p>
11800 <p>S: "OK"
11801 </p>
11802 </blockquote><p>
11803
11804 </p>
11805 <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11806 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11807 <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11808 Insert effect instance to a send effect chain</h3>
11809
11810 <p>The front-end can add an unused effect instance to a
11811 certain position of a send effect chain by sending the
11812 following command:
11813 </p>
11814 <p>
11815 </p>
11816 <blockquote class="text">
11817 <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11818 </p>
11819 </blockquote><p>
11820
11821 </p>
11822 <p>Where &lt;audio-device&gt; should be replaced by the
11823 numerical ID of the audio output device as given by the
11824 <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>
11825 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>
11826 command, &lt;effect-chain&gt; by the numerical ID as
11827 returned by the
11828 <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>
11829 or
11830 <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>
11831 command, &lt;effect-instance&gt; as returned by the
11832 <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
11833 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11834 command and &lt;chain-pos&gt; the exact position of the
11835 effect chain where the supplied effect shall be inserted
11836 to.
11837 </p>
11838 <p>Only unused effect instances can be added to the effect
11839 chain. Trying to add an effect instance which is already in
11840 use somewhere in the audio signal path of the sampler will
11841 result in an error.
11842 </p>
11843 <p>Possible Answers:
11844 </p>
11845 <p>
11846 </p>
11847 <blockquote class="text">
11848 <p>"OK" -
11849 </p>
11850 <blockquote class="text">
11851 <p>in case the effect instance was
11852 added successfully to the chain
11853 </p>
11854 </blockquote>
11855
11856
11857 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11858 </p>
11859 <blockquote class="text">
11860 <p>if the effect instance could not be added
11861 </p>
11862 </blockquote>
11863
11864
11865 </blockquote><p>
11866
11867 </p>
11868 <p>Examples:
11869 </p>
11870 <p>
11871 </p>
11872 <blockquote class="text">
11873 <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11874 </p>
11875 <p>S: "OK"
11876 </p>
11877 </blockquote><p>
11878
11879 </p>
11880 <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11881 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11882 <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11883 Remove effect instance from send effect chain</h3>
11884
11885 <p>The front-end can remove an effect instance from a
11886 certain position of a send effect chain by sending the
11887 following command:
11888 </p>
11889 <p>
11890 </p>
11891 <blockquote class="text">
11892 <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11893 </p>
11894 </blockquote><p>
11895
11896 </p>
11897 <p>Where &lt;audio-device&gt; should be replaced by the
11898 numerical ID of the audio output device as given by the
11899 <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>
11900 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>
11901 command, &lt;effect-chain&gt; by the numerical ID as
11902 returned by the
11903 <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>
11904 or
11905 <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>
11906 command and &lt;chain-pos&gt; the exact position of the
11907 effect instance to be removed from the effect chain.
11908 </p>
11909 <p>Possible Answers:
11910 </p>
11911 <p>
11912 </p>
11913 <blockquote class="text">
11914 <p>"OK" -
11915 </p>
11916 <blockquote class="text">
11917 <p>in case the effect instance was
11918 removed successfully
11919 </p>
11920 </blockquote>
11921
11922
11923 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11924 </p>
11925 <blockquote class="text">
11926 <p>if the effect instance could not be removed
11927 </p>
11928 </blockquote>
11929
11930
11931 </blockquote><p>
11932
11933 </p>
11934 <p>Examples:
11935 </p>
11936 <p>
11937 </p>
11938 <blockquote class="text">
11939 <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11940 </p>
11941 <p>S: "OK"
11942 </p>
11943 </blockquote><p>
11944
11945 </p>
11946 <a name="command_syntax"></a><br /><hr />
11947 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11948 <a name="rfc.section.7"></a><h3>7.&nbsp;
11949 Command Syntax</h3>
11950
11951 <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>
11952 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>)
11953 where applicable.
11954
11955 </p>
11956 <p>input =
11957 </p>
11958 <blockquote class="text">
11959 <p>line
11960
11961 </p>
11962 <p>/ error
11963
11964 </p>
11965 </blockquote><p>
11966
11967 </p>
11968 <p>line =
11969 </p>
11970 <blockquote class="text">
11971 <p>statement LF
11972
11973 </p>
11974 <p>/ statement CR LF
11975
11976 </p>
11977 </blockquote><p>
11978
11979 </p>
11980 <p>statement =
11981 </p>
11982 <blockquote class="text">
11983 <p>/* epsilon (empty statement/line ignored) */
11984
11985 </p>
11986 <p>/ comment
11987
11988 </p>
11989 <p>/ command
11990
11991 </p>
11992 </blockquote><p>
11993
11994 </p>
11995 <p>comment =
11996 </p>
11997 <blockquote class="text">
11998 <p>'#'
11999
12000 </p>
12001 <p>/ comment '#'
12002
12003 </p>
12004 <p>/ comment SP
12005
12006 </p>
12007 <p>/ comment number
12008
12009 </p>
12010 <p>/ comment string
12011
12012 </p>
12013 </blockquote><p>
12014
12015 </p>
12016 <p>command =
12017 </p>
12018 <blockquote class="text">
12019 <p>ADD SP add_instruction
12020
12021 </p>
12022 <p>/ MAP SP map_instruction
12023
12024 </p>
12025 <p>/ UNMAP SP unmap_instruction
12026
12027 </p>
12028 <p>/ GET SP get_instruction
12029
12030 </p>
12031 <p>/ CREATE SP create_instruction
12032
12033 </p>
12034 <p>/ DESTROY SP destroy_instruction
12035
12036 </p>
12037 <p>/ LIST SP list_instruction
12038
12039 </p>
12040 <p>/ LOAD SP load_instruction
12041
12042 </p>
12043 <p>/ REMOVE SP remove_instruction
12044
12045 </p>
12046 <p>/ SET SP set_instruction
12047
12048 </p>
12049 <p>/ SUBSCRIBE SP subscribe_event
12050
12051 </p>
12052 <p>/ UNSUBSCRIBE SP unsubscribe_event
12053
12054 </p>
12055 <p>/ RESET SP reset_instruction
12056
12057 </p>
12058 <p>/ CLEAR SP clear_instruction
12059
12060 </p>
12061 <p>/ FIND SP find_instruction
12062
12063 </p>
12064 <p>/ MOVE SP move_instruction
12065
12066 </p>
12067 <p>/ COPY SP copy_instruction
12068
12069 </p>
12070 <p>/ EDIT SP edit_instruction
12071
12072 </p>
12073 <p>/ FORMAT SP format_instruction
12074
12075 </p>
12076 <p>/ SEND SP send_instruction
12077
12078 </p>
12079 <p>/ APPEND SP append_instruction
12080
12081 </p>
12082 <p>/ INSERT SP insert_instruction
12083
12084 </p>
12085 <p>/ RESET
12086
12087 </p>
12088 <p>/ QUIT
12089
12090 </p>
12091 </blockquote><p>
12092
12093 </p>
12094 <p>add_instruction =
12095 </p>
12096 <blockquote class="text">
12097 <p>CHANNEL
12098
12099 </p>
12100 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index
12101
12102 </p>
12103 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index
12104
12105 </p>
12106 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
12107
12108 </p>
12109 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
12110
12111 </p>
12112 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
12113
12114 </p>
12115 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
12116
12117 </p>
12118 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
12119
12120 </p>
12121 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
12122
12123 </p>
12124 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
12125
12126 </p>
12127 <p>/ DB_INSTRUMENTS SP db_path SP filename
12128
12129 </p>
12130 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
12131
12132 </p>
12133 <p>/ MIDI_INSTRUMENT_MAP
12134
12135 </p>
12136 <p>/ MIDI_INSTRUMENT_MAP SP map_name
12137
12138 </p>
12139 <p>/ SEND_EFFECT_CHAIN SP device_index
12140
12141 </p>
12142 </blockquote><p>
12143
12144 </p>
12145 <p>subscribe_event =
12146 </p>
12147 <blockquote class="text">
12148 <p>AUDIO_OUTPUT_DEVICE_COUNT
12149
12150 </p>
12151 <p>/ AUDIO_OUTPUT_DEVICE_INFO
12152
12153 </p>
12154 <p>/ MIDI_INPUT_DEVICE_COUNT
12155
12156 </p>
12157 <p>/ MIDI_INPUT_DEVICE_INFO
12158
12159 </p>
12160 <p>/ CHANNEL_COUNT
12161
12162 </p>
12163 <p>/ CHANNEL_MIDI
12164
12165 </p>
12166 <p>/ DEVICE_MIDI
12167
12168 </p>
12169 <p>/ VOICE_COUNT
12170
12171 </p>
12172 <p>/ STREAM_COUNT
12173
12174 </p>
12175 <p>/ BUFFER_FILL
12176
12177 </p>
12178 <p>/ CHANNEL_INFO
12179
12180 </p>
12181 <p>/ FX_SEND_COUNT
12182
12183 </p>
12184 <p>/ FX_SEND_INFO
12185
12186 </p>
12187 <p>/ MIDI_INSTRUMENT_MAP_COUNT
12188
12189 </p>
12190 <p>/ MIDI_INSTRUMENT_MAP_INFO
12191
12192 </p>
12193 <p>/ MIDI_INSTRUMENT_COUNT
12194
12195 </p>
12196 <p>/ MIDI_INSTRUMENT_INFO
12197
12198 </p>
12199 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
12200
12201 </p>
12202 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
12203
12204 </p>
12205 <p>/ DB_INSTRUMENT_COUNT
12206
12207 </p>
12208 <p>/ DB_INSTRUMENT_INFO
12209
12210 </p>
12211 <p>/ DB_INSTRUMENTS_JOB_INFO
12212
12213 </p>
12214 <p>/ MISCELLANEOUS
12215
12216 </p>
12217 <p>/ TOTAL_STREAM_COUNT
12218
12219 </p>
12220 <p>/ TOTAL_VOICE_COUNT
12221
12222 </p>
12223 <p>/ GLOBAL_INFO
12224
12225 </p>
12226 <p>/ EFFECT_INSTANCE_COUNT
12227
12228 </p>
12229 <p>/ EFFECT_INSTANCE_INFO
12230
12231 </p>
12232 <p>/ SEND_EFFECT_CHAIN_COUNT
12233
12234 </p>
12235 <p>/ SEND_EFFECT_CHAIN_INFO
12236
12237 </p>
12238 </blockquote><p>
12239
12240 </p>
12241 <p>unsubscribe_event =
12242 </p>
12243 <blockquote class="text">
12244 <p>AUDIO_OUTPUT_DEVICE_COUNT
12245
12246 </p>
12247 <p>/ AUDIO_OUTPUT_DEVICE_INFO
12248
12249 </p>
12250 <p>/ MIDI_INPUT_DEVICE_COUNT
12251
12252 </p>
12253 <p>/ MIDI_INPUT_DEVICE_INFO
12254
12255 </p>
12256 <p>/ CHANNEL_COUNT
12257
12258 </p>
12259 <p>/ CHANNEL_MIDI
12260
12261 </p>
12262 <p>/ DEVICE_MIDI
12263
12264 </p>
12265 <p>/ VOICE_COUNT
12266
12267 </p>
12268 <p>/ STREAM_COUNT
12269
12270 </p>
12271 <p>/ BUFFER_FILL
12272
12273 </p>
12274 <p>/ CHANNEL_INFO
12275
12276 </p>
12277 <p>/ FX_SEND_COUNT
12278
12279 </p>
12280 <p>/ FX_SEND_INFO
12281
12282 </p>
12283 <p>/ MIDI_INSTRUMENT_MAP_COUNT
12284
12285 </p>
12286 <p>/ MIDI_INSTRUMENT_MAP_INFO
12287
12288 </p>
12289 <p>/ MIDI_INSTRUMENT_COUNT
12290
12291 </p>
12292 <p>/ MIDI_INSTRUMENT_INFO
12293
12294 </p>
12295 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
12296
12297 </p>
12298 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
12299
12300 </p>
12301 <p>/ DB_INSTRUMENT_COUNT
12302
12303 </p>
12304 <p>/ DB_INSTRUMENT_INFO
12305
12306 </p>
12307 <p>/ DB_INSTRUMENTS_JOB_INFO
12308
12309 </p>
12310 <p>/ MISCELLANEOUS
12311
12312 </p>
12313 <p>/ TOTAL_STREAM_COUNT
12314
12315 </p>
12316 <p>/ TOTAL_VOICE_COUNT
12317
12318 </p>
12319 <p>/ GLOBAL_INFO
12320
12321 </p>
12322 <p>/ EFFECT_INSTANCE_COUNT
12323
12324 </p>
12325 <p>/ EFFECT_INSTANCE_INFO
12326
12327 </p>
12328 <p>/ SEND_EFFECT_CHAIN_COUNT
12329
12330 </p>
12331 <p>/ SEND_EFFECT_CHAIN_INFO
12332
12333 </p>
12334 </blockquote><p>
12335
12336 </p>
12337 <p>map_instruction =
12338 </p>
12339 <blockquote class="text">
12340 <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
12341
12342 </p>
12343 <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
12344
12345 </p>
12346 <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
12347
12348 </p>
12349 <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
12350
12351 </p>
12352 </blockquote><p>
12353
12354 </p>
12355 <p>unmap_instruction =
12356 </p>
12357 <blockquote class="text">
12358 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
12359
12360 </p>
12361 </blockquote><p>
12362
12363 </p>
12364 <p>remove_instruction =
12365 </p>
12366 <blockquote class="text">
12367 <p>CHANNEL SP sampler_channel
12368
12369 </p>
12370 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel
12371
12372 </p>
12373 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index
12374
12375 </p>
12376 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index
12377
12378 </p>
12379 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
12380
12381 </p>
12382 <p>/ MIDI_INSTRUMENT_MAP SP ALL
12383
12384 </p>
12385 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
12386
12387 </p>
12388 <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
12389
12390 </p>
12391 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
12392
12393 </p>
12394 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
12395
12396 </p>
12397 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
12398
12399 </p>
12400 <p>/ DB_INSTRUMENT SP db_path
12401
12402 </p>
12403 </blockquote><p>
12404
12405 </p>
12406 <p>get_instruction =
12407 </p>
12408 <blockquote class="text">
12409 <p>AVAILABLE_ENGINES
12410
12411 </p>
12412 <p>/ AVAILABLE_EFFECTS
12413
12414 </p>
12415 <p>/ EFFECT_INSTANCES
12416
12417 </p>
12418 <p>/ EFFECT SP INFO SP effect_index
12419
12420 </p>
12421 <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
12422
12423 </p>
12424 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
12425
12426 </p>
12427 <p>/ SEND_EFFECT_CHAINS SP device_index
12428
12429 </p>
12430 <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
12431
12432 </p>
12433 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12434
12435 </p>
12436 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
12437
12438 </p>
12439 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12440
12441 </p>
12442 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12443
12444 </p>
12445 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12446
12447 </p>
12448 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12449
12450 </p>
12451 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12452
12453 </p>
12454 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12455
12456 </p>
12457 <p>/ AUDIO_OUTPUT_DEVICES
12458
12459 </p>
12460 <p>/ MIDI_INPUT_DEVICES
12461
12462 </p>
12463 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12464
12465 </p>
12466 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12467
12468 </p>
12469 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12470
12471 </p>
12472 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12473
12474 </p>
12475 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12476
12477 </p>
12478 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12479
12480 </p>
12481 <p>/ CHANNELS
12482
12483 </p>
12484 <p>/ CHANNEL SP INFO SP sampler_channel
12485
12486 </p>
12487 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12488
12489 </p>
12490 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12491
12492 </p>
12493 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12494
12495 </p>
12496 <p>/ ENGINE SP INFO SP engine_name
12497
12498 </p>
12499 <p>/ SERVER SP INFO
12500
12501 </p>
12502 <p>/ TOTAL_STREAM_COUNT
12503
12504 </p>
12505 <p>/ TOTAL_VOICE_COUNT
12506
12507 </p>
12508 <p>/ TOTAL_VOICE_COUNT_MAX
12509
12510 </p>
12511 <p>/ MIDI_INSTRUMENTS SP midi_map
12512
12513 </p>
12514 <p>/ MIDI_INSTRUMENTS SP ALL
12515
12516 </p>
12517 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12518
12519 </p>
12520 <p>/ MIDI_INSTRUMENT_MAPS
12521
12522 </p>
12523 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12524
12525 </p>
12526 <p>/ FX_SENDS SP sampler_channel
12527
12528 </p>
12529 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12530
12531 </p>
12532 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12533
12534 </p>
12535 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12536
12537 </p>
12538 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12539
12540 </p>
12541 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12542
12543 </p>
12544 <p>/ DB_INSTRUMENTS SP db_path
12545
12546 </p>
12547 <p>/ DB_INSTRUMENT SP INFO SP db_path
12548
12549 </p>
12550 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12551
12552 </p>
12553 <p>/ VOLUME
12554
12555 </p>
12556 <p>/ VOICES
12557
12558 </p>
12559 <p>/ STREAMS
12560
12561 </p>
12562 <p>/ FILE SP INSTRUMENTS SP filename
12563
12564 </p>
12565 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12566
12567 </p>
12568 </blockquote><p>
12569
12570 </p>
12571 <p>set_instruction =
12572 </p>
12573 <blockquote class="text">
12574 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12575
12576 </p>
12577 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12578
12579 </p>
12580 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12581
12582 </p>
12583 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12584
12585 </p>
12586 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12587
12588 </p>
12589 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12590
12591 </p>
12592 <p>/ CHANNEL SP set_chan_instruction
12593
12594 </p>
12595 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12596
12597 </p>
12598 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12599
12600 </p>
12601 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12602
12603 </p>
12604 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12605
12606 </p>
12607 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12608
12609 </p>
12610 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12611
12612 </p>
12613 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12614
12615 </p>
12616 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12617
12618 </p>
12619 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12620
12621 </p>
12622 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12623
12624 </p>
12625 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12626
12627 </p>
12628 <p>/ ECHO SP boolean
12629
12630 </p>
12631 <p>/ SHELL SP INTERACT SP boolean
12632
12633 </p>
12634 <p>/ SHELL SP AUTO_CORRECT SP boolean
12635
12636 </p>
12637 <p>/ SHELL SP DOC SP boolean
12638
12639 </p>
12640 <p>/ VOLUME SP volume_value
12641
12642 </p>
12643 <p>/ VOICES SP number
12644
12645 </p>
12646 <p>/ STREAMS SP number
12647
12648 </p>
12649 </blockquote><p>
12650
12651 </p>
12652 <p>create_instruction =
12653 </p>
12654 <blockquote class="text">
12655 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12656
12657 </p>
12658 <p>/ AUDIO_OUTPUT_DEVICE SP string
12659
12660 </p>
12661 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12662
12663 </p>
12664 <p>/ MIDI_INPUT_DEVICE SP string
12665
12666 </p>
12667 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12668
12669 </p>
12670 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12671
12672 </p>
12673 <p>/ EFFECT_INSTANCE SP effect_index
12674
12675 </p>
12676 <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12677
12678 </p>
12679 </blockquote><p>
12680
12681 </p>
12682 <p>reset_instruction =
12683 </p>
12684 <blockquote class="text">
12685 <p>CHANNEL SP sampler_channel
12686
12687 </p>
12688 </blockquote><p>
12689
12690 </p>
12691 <p>clear_instruction =
12692 </p>
12693 <blockquote class="text">
12694 <p>MIDI_INSTRUMENTS SP midi_map
12695
12696 </p>
12697 <p>/ MIDI_INSTRUMENTS SP ALL
12698
12699 </p>
12700 </blockquote><p>
12701
12702 </p>
12703 <p>find_instruction =
12704 </p>
12705 <blockquote class="text">
12706 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12707
12708 </p>
12709 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12710
12711 </p>
12712 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12713
12714 </p>
12715 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12716
12717 </p>
12718 <p>/ LOST SP DB_INSTRUMENT_FILES
12719
12720 </p>
12721 </blockquote><p>
12722
12723 </p>
12724 <p>move_instruction =
12725 </p>
12726 <blockquote class="text">
12727 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12728
12729 </p>
12730 <p>/ DB_INSTRUMENT SP db_path SP db_path
12731
12732 </p>
12733 </blockquote><p>
12734
12735 </p>
12736 <p>copy_instruction =
12737 </p>
12738 <blockquote class="text">
12739 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12740
12741 </p>
12742 <p>/ DB_INSTRUMENT SP db_path SP db_path
12743
12744 </p>
12745 </blockquote><p>
12746
12747 </p>
12748 <p>destroy_instruction =
12749 </p>
12750 <blockquote class="text">
12751 <p>AUDIO_OUTPUT_DEVICE SP number
12752
12753 </p>
12754 <p>/ MIDI_INPUT_DEVICE SP number
12755
12756 </p>
12757 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12758
12759 </p>
12760 <p>/ EFFECT_INSTANCE SP number
12761
12762 </p>
12763 </blockquote><p>
12764
12765 </p>
12766 <p>load_instruction =
12767 </p>
12768 <blockquote class="text">
12769 <p>INSTRUMENT SP load_instr_args
12770
12771 </p>
12772 <p>/ ENGINE SP load_engine_args
12773
12774 </p>
12775 </blockquote><p>
12776
12777 </p>
12778 <p>append_instruction =
12779 </p>
12780 <blockquote class="text">
12781 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12782
12783 </p>
12784 </blockquote><p>
12785
12786 </p>
12787 <p>insert_instruction =
12788 </p>
12789 <blockquote class="text">
12790 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12791
12792 </p>
12793 </blockquote><p>
12794
12795 </p>
12796 <p>set_chan_instruction =
12797 </p>
12798 <blockquote class="text">
12799 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12800
12801 </p>
12802 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12803
12804 </p>
12805 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12806
12807 </p>
12808 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12809
12810 </p>
12811 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12812
12813 </p>
12814 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12815
12816 </p>
12817 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12818
12819 </p>
12820 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12821
12822 </p>
12823 <p>/ VOLUME SP sampler_channel SP volume_value
12824
12825 </p>
12826 <p>/ MUTE SP sampler_channel SP boolean
12827
12828 </p>
12829 <p>/ SOLO SP sampler_channel SP boolean
12830
12831 </p>
12832 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12833
12834 </p>
12835 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12836
12837 </p>
12838 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12839
12840 </p>
12841 </blockquote><p>
12842
12843 </p>
12844 <p>edit_instruction =
12845 </p>
12846 <blockquote class="text">
12847 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12848
12849 </p>
12850 </blockquote><p>
12851
12852 </p>
12853 <p>format_instruction =
12854 </p>
12855 <blockquote class="text">
12856 <p>INSTRUMENTS_DB
12857
12858 </p>
12859 </blockquote><p>
12860
12861 </p>
12862 <p>modal_arg =
12863 </p>
12864 <blockquote class="text">
12865 <p>/* epsilon (empty argument) */
12866
12867 </p>
12868 <p>/ NON_MODAL SP
12869
12870 </p>
12871 </blockquote><p>
12872
12873 </p>
12874 <p>key_val_list =
12875 </p>
12876 <blockquote class="text">
12877 <p>string '=' param_val_list
12878
12879 </p>
12880 <p>/ key_val_list SP string '=' param_val_list
12881
12882 </p>
12883 </blockquote><p>
12884
12885 </p>
12886 <p>buffer_size_type =
12887 </p>
12888 <blockquote class="text">
12889 <p>BYTES
12890
12891 </p>
12892 <p>/ PERCENTAGE
12893
12894 </p>
12895 </blockquote><p>
12896
12897 </p>
12898 <p>list_instruction =
12899 </p>
12900 <blockquote class="text">
12901 <p>AUDIO_OUTPUT_DEVICES
12902
12903 </p>
12904 <p>/ MIDI_INPUT_DEVICES
12905
12906 </p>
12907 <p>/ CHANNELS
12908
12909 </p>
12910 <p>/ CHANNEL SP MIDI_INPUTS SP sampler_channel
12911
12912 </p>
12913 <p>/ AVAILABLE_ENGINES
12914
12915 </p>
12916 <p>/ AVAILABLE_EFFECTS
12917
12918 </p>
12919 <p>/ EFFECT_INSTANCES
12920
12921 </p>
12922 <p>/ SEND_EFFECT_CHAINS SP number
12923
12924 </p>
12925 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12926
12927 </p>
12928 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12929
12930 </p>
12931 <p>/ MIDI_INSTRUMENTS SP midi_map
12932
12933 </p>
12934 <p>/ MIDI_INSTRUMENTS SP ALL
12935
12936 </p>
12937 <p>/ MIDI_INSTRUMENT_MAPS
12938
12939 </p>
12940 <p>/ FX_SENDS SP sampler_channel
12941
12942 </p>
12943 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12944
12945 </p>
12946 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12947
12948 </p>
12949 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12950
12951 </p>
12952 <p>/ DB_INSTRUMENTS SP db_path
12953
12954 </p>
12955 <p>/ FILE SP INSTRUMENTS SP filename
12956
12957 </p>
12958 </blockquote><p>
12959
12960 </p>
12961 <p>send_instruction =
12962 </p>
12963 <blockquote class="text">
12964 <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12965
12966 </p>
12967 </blockquote><p>
12968
12969 </p>
12970 <p>load_instr_args =
12971 </p>
12972 <blockquote class="text">
12973 <p>filename SP instrument_index SP sampler_channel
12974
12975 </p>
12976 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12977
12978 </p>
12979 </blockquote><p>
12980
12981 </p>
12982 <p>load_engine_args =
12983 </p>
12984 <blockquote class="text">
12985 <p>engine_name SP sampler_channel
12986
12987 </p>
12988 </blockquote><p>
12989
12990 </p>
12991 <p>instr_load_mode =
12992 </p>
12993 <blockquote class="text">
12994 <p>ON_DEMAND
12995
12996 </p>
12997 <p>/ ON_DEMAND_HOLD
12998
12999 </p>
13000 <p>/ PERSISTENT
13001
13002 </p>
13003 </blockquote><p>
13004
13005 </p>
13006 <p>effect_instance =
13007 </p>
13008 <blockquote class="text">
13009 <p>number
13010
13011 </p>
13012 </blockquote><p>
13013
13014 </p>
13015 <p>device_index =
13016 </p>
13017 <blockquote class="text">
13018 <p>number
13019
13020 </p>
13021 </blockquote><p>
13022
13023 </p>
13024 <p>audio_channel_index =
13025 </p>
13026 <blockquote class="text">
13027 <p>number
13028
13029 </p>
13030 </blockquote><p>
13031
13032 </p>
13033 <p>audio_output_type_name =
13034 </p>
13035 <blockquote class="text">
13036 <p>string
13037
13038 </p>
13039 </blockquote><p>
13040
13041 </p>
13042 <p>midi_input_port_index =
13043 </p>
13044 <blockquote class="text">
13045 <p>number
13046
13047 </p>
13048 </blockquote><p>
13049
13050 </p>
13051 <p>midi_input_channel_index =
13052 </p>
13053 <blockquote class="text">
13054 <p>number
13055
13056 </p>
13057 <p>/ ALL
13058
13059 </p>
13060 </blockquote><p>
13061
13062 </p>
13063 <p>midi_input_type_name =
13064 </p>
13065 <blockquote class="text">
13066 <p>string
13067
13068 </p>
13069 </blockquote><p>
13070
13071 </p>
13072 <p>midi_map =
13073 </p>
13074 <blockquote class="text">
13075 <p>number
13076
13077 </p>
13078 </blockquote><p>
13079
13080 </p>
13081 <p>midi_bank =
13082 </p>
13083 <blockquote class="text">
13084 <p>number
13085
13086 </p>
13087 </blockquote><p>
13088
13089 </p>
13090 <p>midi_prog =
13091 </p>
13092 <blockquote class="text">
13093 <p>number
13094
13095 </p>
13096 </blockquote><p>
13097
13098 </p>
13099 <p>midi_ctrl =
13100 </p>
13101 <blockquote class="text">
13102 <p>number
13103
13104 </p>
13105 </blockquote><p>
13106
13107 </p>
13108 <p>volume_value =
13109 </p>
13110 <blockquote class="text">
13111 <p>dotnum
13112
13113 </p>
13114 <p>/ number
13115
13116 </p>
13117 </blockquote><p>
13118
13119 </p>
13120 <p>control_value =
13121 </p>
13122 <blockquote class="text">
13123 <p>real
13124
13125 </p>
13126 </blockquote><p>
13127
13128 </p>
13129 <p>sampler_channel =
13130 </p>
13131 <blockquote class="text">
13132 <p>number
13133
13134 </p>
13135 </blockquote><p>
13136
13137 </p>
13138 <p>instrument_index =
13139 </p>
13140 <blockquote class="text">
13141 <p>number
13142
13143 </p>
13144 </blockquote><p>
13145
13146 </p>
13147 <p>fx_send_id =
13148 </p>
13149 <blockquote class="text">
13150 <p>number
13151
13152 </p>
13153 </blockquote><p>
13154
13155 </p>
13156 <p>engine_name =
13157 </p>
13158 <blockquote class="text">
13159 <p>string
13160
13161 </p>
13162 </blockquote><p>
13163
13164 </p>
13165 <p>filename =
13166 </p>
13167 <blockquote class="text">
13168 <p>path
13169
13170 </p>
13171 </blockquote><p>
13172
13173 </p>
13174 <p>db_path =
13175 </p>
13176 <blockquote class="text">
13177 <p>path
13178
13179 </p>
13180 </blockquote><p>
13181
13182 </p>
13183 <p>map_name =
13184 </p>
13185 <blockquote class="text">
13186 <p>stringval_escaped
13187
13188 </p>
13189 </blockquote><p>
13190
13191 </p>
13192 <p>entry_name =
13193 </p>
13194 <blockquote class="text">
13195 <p>stringval_escaped
13196
13197 </p>
13198 </blockquote><p>
13199
13200 </p>
13201 <p>fx_send_name =
13202 </p>
13203 <blockquote class="text">
13204 <p>stringval_escaped
13205
13206 </p>
13207 </blockquote><p>
13208
13209 </p>
13210 <p>effect_name =
13211 </p>
13212 <blockquote class="text">
13213 <p>stringval_escaped
13214
13215 </p>
13216 </blockquote><p>
13217
13218 </p>
13219 <p>effect_index =
13220 </p>
13221 <blockquote class="text">
13222 <p>number
13223
13224 </p>
13225 </blockquote><p>
13226
13227 </p>
13228 <p>effect_chain =
13229 </p>
13230 <blockquote class="text">
13231 <p>number
13232
13233 </p>
13234 </blockquote><p>
13235
13236 </p>
13237 <p>chain_pos =
13238 </p>
13239 <blockquote class="text">
13240 <p>number
13241
13242 </p>
13243 </blockquote><p>
13244
13245 </p>
13246 <p>input_control =
13247 </p>
13248 <blockquote class="text">
13249 <p>number
13250
13251 </p>
13252 </blockquote><p>
13253
13254 </p>
13255 <p>param_val_list =
13256 </p>
13257 <blockquote class="text">
13258 <p>param_val
13259
13260 </p>
13261 <p>/ param_val_list','param_val
13262
13263 </p>
13264 </blockquote><p>
13265
13266 </p>
13267 <p>param_val =
13268 </p>
13269 <blockquote class="text">
13270 <p>string
13271
13272 </p>
13273 <p>/ stringval
13274
13275 </p>
13276 <p>/ number
13277
13278 </p>
13279 <p>/ dotnum
13280
13281 </p>
13282 </blockquote><p>
13283
13284 </p>
13285 <p>query_val_list =
13286 </p>
13287 <blockquote class="text">
13288 <p>string '=' query_val
13289
13290 </p>
13291 <p>/ query_val_list SP string '=' query_val
13292
13293 </p>
13294 </blockquote><p>
13295
13296 </p>
13297 <p>query_val =
13298 </p>
13299 <blockquote class="text">
13300 <p>text_escaped
13301
13302 </p>
13303 <p>/ stringval_escaped
13304
13305 </p>
13306 </blockquote><p>
13307
13308 </p>
13309 <p>scan_mode =
13310 </p>
13311 <blockquote class="text">
13312 <p>RECURSIVE
13313
13314 </p>
13315 <p>/ NON_RECURSIVE
13316
13317 </p>
13318 <p>/ FLAT
13319
13320 </p>
13321 </blockquote><p>
13322
13323 </p>
13324 <p>effect_system =
13325 </p>
13326 <blockquote class="text">
13327 <p>string
13328
13329 </p>
13330 </blockquote><p>
13331
13332 </p>
13333 <p>module =
13334 </p>
13335 <blockquote class="text">
13336 <p>filename
13337
13338 </p>
13339 </blockquote><p>
13340
13341 </p>
13342 <a name="character_set"></a><br /><hr />
13343 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13344 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
13345 Character Set and Escape Sequences</h3>
13346
13347 <p>Older versions of this protocol up to and including v1.1 only
13348 supported the standard ASCII character set (ASCII code 0 - 127)
13349 <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
13350 however support the Extended ASCII character set (ASCII code
13351 0 - 255). The same group of younger protocols also support
13352 escape sequences, but only for certain, explicitly declared
13353 parts of the protocol. The supported escape sequences are
13354 defined as follows:
13355 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
13356 <col align="left"><col align="left">
13357 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
13358 <tr>
13359 <td align="left">\n</td>
13360 <td align="left">new line</td>
13361 </tr>
13362 <tr>
13363 <td align="left">\r</td>
13364 <td align="left">carriage return</td>
13365 </tr>
13366 <tr>
13367 <td align="left">\f</td>
13368 <td align="left">form feed</td>
13369 </tr>
13370 <tr>
13371 <td align="left">\t</td>
13372 <td align="left">horizontal tab</td>
13373 </tr>
13374 <tr>
13375 <td align="left">\v</td>
13376 <td align="left">vertical tab</td>
13377 </tr>
13378 <tr>
13379 <td align="left">\'</td>
13380 <td align="left">apostrophe</td>
13381 </tr>
13382 <tr>
13383 <td align="left">\"</td>
13384 <td align="left">quotation mark</td>
13385 </tr>
13386 <tr>
13387 <td align="left">\\</td>
13388 <td align="left">backslash</td>
13389 </tr>
13390 <tr>
13391 <td align="left">\OOO</td>
13392 <td align="left">three digit octal ASCII code of the character</td>
13393 </tr>
13394 <tr>
13395 <td align="left">\xHH</td>
13396 <td align="left">two digit hex ASCII code of the character</td>
13397 </tr>
13398 </table>
13399 <br clear="all" />
13400
13401 <p>Notice: due to the transition of certain parts of the
13402 protocol which now support escape sequences, a slight backward
13403 incompatibility to protocols version v1.1 and younger has been
13404 introduced. The only difference is that in parts of the protocol
13405 where escape characters are now supported, a backslash characters
13406 MUST be escaped as well (that is as double backslash), whereas
13407 in the old versions a single backslash was sufficient.
13408 </p>
13409 <p>The following LSCP commands support escape sequences as part
13410 of their filename / path based arguments and / or may contain
13411 a filename / path with escape sequences in their response:
13412 </p>
13413 <blockquote class="text">
13414 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
13415 </p>
13416 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13417 </p>
13418 <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>
13419 </p>
13420 <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>
13421 </p>
13422 <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>
13423 </p>
13424 <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>
13425 </p>
13426 <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>
13427 </p>
13428 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
13429 </p>
13430 <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>
13431 </p>
13432 <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>
13433 </p>
13434 <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>
13435 </p>
13436 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
13437 </p>
13438 <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>
13439 </p>
13440 <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>
13441 </p>
13442 <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>
13443 </p>
13444 <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>
13445 </p>
13446 <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>
13447 </p>
13448 <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>
13449 </p>
13450 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13451 </p>
13452 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13453 </p>
13454 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13455 </p>
13456 <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>
13457 </p>
13458 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13459 </p>
13460 <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>
13461 </p>
13462 <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>
13463 </p>
13464 <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>
13465 </p>
13466 <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>
13467 </p>
13468 <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>
13469 </p>
13470 <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>
13471 </p>
13472 <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>
13473 </p>
13474 <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>
13475 </p>
13476 <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>
13477 </p>
13478 </blockquote><p>
13479 Note that the forward slash character ('/') has a special meaning in
13480 filename / path based arguments: it acts as separator of the nodes in
13481 the path, thus if a directory- or filename includes a forward slash
13482 (not intended as path node separator), you MUST escape that slash
13483 either with the respective hex escape sequence ("\x2f") or with the
13484 respective octal escape sequence ("\057").
13485
13486 </p>
13487 <p>
13488 Note for Windows: file path arguments in LSCP are expected
13489 to use forward slashes as directory node separator similar
13490 to Unix based operating systems. In contrast to Unix however
13491 a Windows typical drive character is expected to be
13492 prefixed to the path. That is an original Windows file path
13493 like "D:\Sounds\My.gig" would become in LSCP:
13494 "D:/Sounds/My.gig".
13495
13496 </p>
13497 <p>
13498 The following LSCP commands even support escape sequences as
13499 part of at least one of their text-based arguments (i.e. entity name,
13500 description) and / or may contain escape sequences in at least one of
13501 their text-based fields in their response:
13502 </p>
13503 <blockquote class="text">
13504 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
13505 </p>
13506 <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>
13507 </p>
13508 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13509 </p>
13510 <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>
13511 </p>
13512 <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>
13513 </p>
13514 <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>
13515 </p>
13516 <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>
13517 </p>
13518 <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>
13519 </p>
13520 <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>
13521 </p>
13522 <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>
13523 </p>
13524 <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>
13525 </p>
13526 <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>
13527 </p>
13528 <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>
13529 </p>
13530 <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>
13531 </p>
13532 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13533 </p>
13534 <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>
13535 </p>
13536 <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>
13537 </p>
13538 <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>
13539 </p>
13540 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13541 </p>
13542 <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>
13543 </p>
13544 <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>
13545 </p>
13546 <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>
13547 </p>
13548 </blockquote><p>
13549 Please note that these lists are manually maintained. If you
13550 find a command that also supports escape sequences we forgot to
13551 mention here, please report it!
13552
13553 </p>
13554 <a name="events"></a><br /><hr />
13555 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13556 <a name="rfc.section.8"></a><h3>8.&nbsp;
13557 Events</h3>
13558
13559 <p>This chapter will describe all currently defined events supported by LinuxSampler.
13560 </p>
13561 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13562 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13563 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13564 Number of audio output devices changed</h3>
13565
13566 <p>Client may want to be notified when the total number of audio output devices on the
13567 back-end changes by issuing the following command:
13568 </p>
13569 <p>
13570 </p>
13571 <blockquote class="text">
13572 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13573 </p>
13574 </blockquote><p>
13575
13576 </p>
13577 <p>Server will start sending the following notification messages:
13578 </p>
13579 <p>
13580 </p>
13581 <blockquote class="text">
13582 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13583 </p>
13584 </blockquote><p>
13585
13586 </p>
13587 <p>where &lt;devices&gt; will be replaced by the new number
13588 of audio output devices.
13589 </p>
13590 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13591 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13592 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13593 Audio output device's settings changed</h3>
13594
13595 <p>Client may want to be notified when changes were made to audio output devices on the
13596 back-end by issuing the following command:
13597 </p>
13598 <p>
13599 </p>
13600 <blockquote class="text">
13601 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13602 </p>
13603 </blockquote><p>
13604
13605 </p>
13606 <p>Server will start sending the following notification messages:
13607 </p>
13608 <p>
13609 </p>
13610 <blockquote class="text">
13611 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13612 </p>
13613 </blockquote><p>
13614
13615 </p>
13616 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13617 which settings has been changed. The front-end will have to send
13618 the respective command to actually get the audio output device info. Because these messages
13619 will be triggered by LSCP commands issued by other clients rather than real
13620 time events happening on the server, it is believed that an empty notification
13621 message is sufficient here.
13622 </p>
13623 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13624 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13625 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13626 Number of MIDI input devices changed</h3>
13627
13628 <p>Client may want to be notified when the total number of MIDI input devices on the
13629 back-end changes by issuing the following command:
13630 </p>
13631 <p>
13632 </p>
13633 <blockquote class="text">
13634 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13635 </p>
13636 </blockquote><p>
13637
13638 </p>
13639 <p>Server will start sending the following notification messages:
13640 </p>
13641 <p>
13642 </p>
13643 <blockquote class="text">
13644 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13645 </p>
13646 </blockquote><p>
13647
13648 </p>
13649 <p>where &lt;devices&gt; will be replaced by the new number
13650 of MIDI input devices.
13651 </p>
13652 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13653 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13654 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13655 MIDI input device's settings changed</h3>
13656
13657 <p>Client may want to be notified when changes were made to MIDI input devices on the
13658 back-end by issuing the following command:
13659 </p>
13660 <p>
13661 </p>
13662 <blockquote class="text">
13663 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13664 </p>
13665 </blockquote><p>
13666
13667 </p>
13668 <p>Server will start sending the following notification messages:
13669 </p>
13670 <p>
13671 </p>
13672 <blockquote class="text">
13673 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13674 </p>
13675 </blockquote><p>
13676
13677 </p>
13678 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13679 which settings has been changed. The front-end will have to send
13680 the respective command to actually get the MIDI input device info. Because these messages
13681 will be triggered by LSCP commands issued by other clients rather than real
13682 time events happening on the server, it is believed that an empty notification
13683 message is sufficient here.
13684 </p>
13685 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13686 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13687 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13688 Number of sampler channels changed</h3>
13689
13690 <p>Client may want to be notified when the total number of channels on the
13691 back-end changes by issuing the following command:
13692 </p>
13693 <p>
13694 </p>
13695 <blockquote class="text">
13696 <p>SUBSCRIBE CHANNEL_COUNT
13697 </p>
13698 </blockquote><p>
13699
13700 </p>
13701 <p>Server will start sending the following notification messages:
13702 </p>
13703 <p>
13704 </p>
13705 <blockquote class="text">
13706 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13707 </p>
13708 </blockquote><p>
13709
13710 </p>
13711 <p>where &lt;channels&gt; will be replaced by the new number
13712 of sampler channels.
13713 </p>
13714 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13715 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13716 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13717 MIDI data on a sampler channel arrived</h3>
13718
13719 <p>Client may want to be notified when MIDI data arrive on sampler channels on
13720 back-end side, by issuing the following command:
13721 </p>
13722 <p>
13723 </p>
13724 <blockquote class="text">
13725 <p>SUBSCRIBE CHANNEL_MIDI
13726 </p>
13727 </blockquote><p>
13728
13729 </p>
13730 <p>Server will start sending one of the the following notification messages:
13731 </p>
13732 <p>
13733 </p>
13734 <blockquote class="text">
13735 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13736 </p>
13737 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13738 </p>
13739 </blockquote><p>
13740
13741 </p>
13742 <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13743 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13744 0 .. 127, reflecting the analog meaning of the MIDI specification.
13745
13746 </p>
13747 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13748 delivered by this mechanism! With other words: events could be lost at any time!
13749 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13750 thread unaffected by this feature.
13751 </p>
13752 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13753 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13754 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13755 MIDI data on a MIDI input device arrived</h3>
13756
13757 <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13758 </p>
13759 <p>
13760 </p>
13761 <blockquote class="text">
13762 <p>SUBSCRIBE DEVICE_MIDI
13763 </p>
13764 </blockquote><p>
13765
13766 </p>
13767 <p>Server will start sending one of the the following notification messages:
13768 </p>
13769 <p>
13770 </p>
13771 <blockquote class="text">
13772 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13773 </p>
13774 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13775 </p>
13776 </blockquote><p>
13777
13778 </p>
13779 <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13780 by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13781 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13782 0 .. 127, reflecting the analog meaning of the MIDI specification.
13783
13784 </p>
13785 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13786 delivered by this mechanism! With other words: events could be lost at any time!
13787 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13788 thread unaffected by this feature.
13789 </p>
13790 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13791 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13792 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13793 Number of active voices changed</h3>
13794
13795 <p>Client may want to be notified when the number of voices on the
13796 back-end changes by issuing the following command:
13797 </p>
13798 <p>
13799 </p>
13800 <blockquote class="text">
13801 <p>SUBSCRIBE VOICE_COUNT
13802 </p>
13803 </blockquote><p>
13804
13805 </p>
13806 <p>Server will start sending the following notification messages:
13807 </p>
13808 <p>
13809 </p>
13810 <blockquote class="text">
13811 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13812 </p>
13813 </blockquote><p>
13814
13815 </p>
13816 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13817 voice count change occurred and &lt;voices&gt; by the new number of
13818 active voices on that channel.
13819 </p>
13820 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13821 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13822 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13823 Number of active disk streams changed</h3>
13824
13825 <p>Client may want to be notified when the number of streams on the back-end
13826 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13827 </p>
13828 <p>
13829 </p>
13830 <blockquote class="text">
13831 <p>SUBSCRIBE STREAM_COUNT
13832 </p>
13833 </blockquote><p>
13834
13835 </p>
13836 <p>Server will start sending the following notification messages:
13837 </p>
13838 <p>
13839 </p>
13840 <blockquote class="text">
13841 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13842 </p>
13843 </blockquote><p>
13844
13845 </p>
13846 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13847 stream count change occurred and &lt;streams&gt; by the new number of
13848 active disk streams on that channel.
13849 </p>
13850 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13851 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13852 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13853 Disk stream buffer fill state changed</h3>
13854
13855 <p>Client may want to be notified when the buffer fill state of a disk stream
13856 on the back-end changes by issuing the following command:
13857 </p>
13858 <p>
13859 </p>
13860 <blockquote class="text">
13861 <p>SUBSCRIBE BUFFER_FILL
13862 </p>
13863 </blockquote><p>
13864
13865 </p>
13866 <p>Server will start sending the following notification messages:
13867 </p>
13868 <p>
13869 </p>
13870 <blockquote class="text">
13871 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13872 </p>
13873 </blockquote><p>
13874
13875 </p>
13876 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13877 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13878 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>
13879 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.
13880 </p>
13881 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13882 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13883 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13884 Channel information changed</h3>
13885
13886 <p>Client may want to be notified when changes were made to sampler channels on the
13887 back-end by issuing the following command:
13888 </p>
13889 <p>
13890 </p>
13891 <blockquote class="text">
13892 <p>SUBSCRIBE CHANNEL_INFO
13893 </p>
13894 </blockquote><p>
13895
13896 </p>
13897 <p>Server will start sending the following notification messages:
13898 </p>
13899 <p>
13900 </p>
13901 <blockquote class="text">
13902 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13903 </p>
13904 </blockquote><p>
13905
13906 </p>
13907 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13908 channel info change occurred. The front-end will have to send
13909 the respective command to actually get the channel info. Because these messages
13910 will be triggered by LSCP commands issued by other clients rather than real
13911 time events happening on the server, it is believed that an empty notification
13912 message is sufficient here.
13913 </p>
13914 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13915 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13916 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13917 Number of effect sends changed</h3>
13918
13919 <p>Client may want to be notified when the number of effect sends on
13920 a particular sampler channel is changed by issuing the following command:
13921 </p>
13922 <p>
13923 </p>
13924 <blockquote class="text">
13925 <p>SUBSCRIBE FX_SEND_COUNT
13926 </p>
13927 </blockquote><p>
13928
13929 </p>
13930 <p>Server will start sending the following notification messages:
13931 </p>
13932 <p>
13933 </p>
13934 <blockquote class="text">
13935 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13936 </p>
13937 </blockquote><p>
13938
13939 </p>
13940 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13941 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13942 be replaced by the new number of effect sends on that channel.
13943 </p>
13944 <a name="SUBSCRIBE FX_SEND_INFO"></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.13"></a><h3>8.13.&nbsp;
13947 Effect send information changed</h3>
13948
13949 <p>Client may want to be notified when changes were made to effect sends on a
13950 a particular sampler channel by issuing the following command:
13951 </p>
13952 <p>
13953 </p>
13954 <blockquote class="text">
13955 <p>SUBSCRIBE FX_SEND_INFO
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>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13966 </p>
13967 </blockquote><p>
13968
13969 </p>
13970 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13971 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13972 be replaced by the numerical ID of the changed effect send.
13973 </p>
13974 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13975 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13976 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13977 Total number of active voices changed</h3>
13978
13979 <p>Client may want to be notified when the total number of voices on the
13980 back-end changes by issuing the following command:
13981 </p>
13982 <p>
13983 </p>
13984 <blockquote class="text">
13985 <p>SUBSCRIBE TOTAL_VOICE_COUNT
13986 </p>
13987 </blockquote><p>
13988
13989 </p>
13990 <p>Server will start sending the following notification messages:
13991 </p>
13992 <p>
13993 </p>
13994 <blockquote class="text">
13995 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13996 </p>
13997 </blockquote><p>
13998
13999 </p>
14000 <p>where &lt;voices&gt; will be replaced by the new number of
14001 all currently active voices.
14002 </p>
14003 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
14004 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14005 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
14006 Total number of active disk streams changed</h3>
14007
14008 <p>Client may want to be notified when the total number of disk streams on the
14009 back-end changes by issuing the following command:
14010 </p>
14011 <p>
14012 </p>
14013 <blockquote class="text">
14014 <p>SUBSCRIBE TOTAL_STREAM_COUNT
14015 </p>
14016 </blockquote><p>
14017
14018 </p>
14019 <p>Server will start sending the following notification messages:
14020 </p>
14021 <p>
14022 </p>
14023 <blockquote class="text">
14024 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
14025 </p>
14026 </blockquote><p>
14027
14028 </p>
14029 <p>where &lt;streams&gt; will be replaced by the new number of
14030 all currently active disk streams.
14031 </p>
14032 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></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.16"></a><h3>8.16.&nbsp;
14035 Number of MIDI instrument maps changed</h3>
14036
14037 <p>Client may want to be notified when the number of MIDI instrument maps on the
14038 back-end changes by issuing the following command:
14039 </p>
14040 <p>
14041 </p>
14042 <blockquote class="text">
14043 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
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>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
14054 </p>
14055 </blockquote><p>
14056
14057 </p>
14058 <p>where &lt;maps&gt; will be replaced by the new number
14059 of MIDI instrument maps.
14060 </p>
14061 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
14062 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14063 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
14064 MIDI instrument map information changed</h3>
14065
14066 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
14067 back-end by issuing the following command:
14068 </p>
14069 <p>
14070 </p>
14071 <blockquote class="text">
14072 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
14073 </p>
14074 </blockquote><p>
14075
14076 </p>
14077 <p>Server will start sending the following notification messages:
14078 </p>
14079 <p>
14080 </p>
14081 <blockquote class="text">
14082 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
14083 </p>
14084 </blockquote><p>
14085
14086 </p>
14087 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
14088 for which information changes occurred. The front-end will have to send
14089 the respective command to actually get the MIDI instrument map info. Because these messages
14090 will be triggered by LSCP commands issued by other clients rather than real
14091 time events happening on the server, it is believed that an empty notification
14092 message is sufficient here.
14093 </p>
14094 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></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.8.18"></a><h3>8.18.&nbsp;
14097 Number of MIDI instruments changed</h3>
14098
14099 <p>Client may want to be notified when the number of MIDI instrument maps on the
14100 back-end changes by issuing the following command:
14101 </p>
14102 <p>
14103 </p>
14104 <blockquote class="text">
14105 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
14106 </p>
14107 </blockquote><p>
14108
14109 </p>
14110 <p>Server will start sending the following notification messages:
14111 </p>
14112 <p>
14113 </p>
14114 <blockquote class="text">
14115 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
14116 </p>
14117 </blockquote><p>
14118
14119 </p>
14120 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
14121 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
14122 the new number of MIDI instruments in the specified map.
14123 </p>
14124 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
14125 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14126 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
14127 MIDI instrument information changed</h3>
14128
14129 <p>Client may want to be notified when changes were made to MIDI instruments on the
14130 back-end by issuing the following command:
14131 </p>
14132 <p>
14133 </p>
14134 <blockquote class="text">
14135 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
14136 </p>
14137 </blockquote><p>
14138
14139 </p>
14140 <p>Server will start sending the following notification messages:
14141 </p>
14142 <p>
14143 </p>
14144 <blockquote class="text">
14145 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
14146 </p>
14147 </blockquote><p>
14148
14149 </p>
14150 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
14151 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
14152 the location of the changed MIDI instrument in the map. The front-end will have to send
14153 the respective command to actually get the MIDI instrument info. Because these messages
14154 will be triggered by LSCP commands issued by other clients rather than real
14155 time events happening on the server, it is believed that an empty notification
14156 message is sufficient here.
14157 </p>
14158 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
14159 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14160 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
14161 Global settings changed</h3>
14162
14163 <p>Client may want to be notified when changes to the global settings
14164 of the sampler were made by issuing the following command:
14165 </p>
14166 <p>
14167 </p>
14168 <blockquote class="text">
14169 <p>SUBSCRIBE GLOBAL_INFO
14170 </p>
14171 </blockquote><p>
14172
14173 </p>
14174 <p>Server will start sending the following types of notification messages:
14175 </p>
14176 <p>
14177 </p>
14178 <blockquote class="text">
14179 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
14180 golbal volume of the sampler is changed, where &lt;volume&gt; will be
14181 replaced by the optional dotted floating point value, reflecting the
14182 new global volume parameter.
14183 </p>
14184 </blockquote><p>
14185 </p>
14186 <blockquote class="text">
14187 <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
14188 golbal limit of the sampler for maximum voices is changed, where
14189 &lt;max-voices&gt; will be an integer value, reflecting the
14190 new global voice limit parameter.
14191 </p>
14192 </blockquote><p>
14193 </p>
14194 <blockquote class="text">
14195 <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
14196 golbal limit of the sampler for maximum disk streams is changed, where
14197 &lt;max-streams&gt; will be an integer value, reflecting the
14198 new global disk streams limit parameter.
14199 </p>
14200 </blockquote><p>
14201
14202 </p>
14203 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
14204 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14205 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
14206 Number of database instrument directories changed</h3>
14207
14208 <p>Client may want to be notified when the number of instrument
14209 directories in a particular directory in the instruments database
14210 is changed by issuing the following command:
14211 </p>
14212 <p>
14213 </p>
14214 <blockquote class="text">
14215 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
14216 </p>
14217 </blockquote><p>
14218
14219 </p>
14220 <p>Server will start sending the following notification messages:
14221 </p>
14222 <p>
14223 </p>
14224 <blockquote class="text">
14225 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
14226 </p>
14227 </blockquote><p>
14228
14229 </p>
14230 <p>where &lt;dir-path&gt; will be replaced by the absolute path
14231 name of the directory in the instruments database,
14232 in which the number of directories is changed.
14233 </p>
14234 <p>Note that when a non-empty directory is removed, this event
14235 is not sent for the subdirectories in that directory.
14236 </p>
14237 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
14238 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14239 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
14240 Database instrument directory information changed</h3>
14241
14242 <p>Client may want to be notified when changes were made to directories
14243 in the instruments database by issuing the following command:
14244 </p>
14245 <p>
14246 </p>
14247 <blockquote class="text">
14248 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
14249 </p>
14250 </blockquote><p>
14251
14252 </p>
14253 <p>Server will start sending the following notification messages:
14254 </p>
14255 <p>
14256 </p>
14257 <blockquote class="text">
14258 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
14259 </p>
14260 </blockquote><p>
14261
14262 </p>
14263 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
14264 of the directory, for which information changes occurred. The front-end will have to send
14265 the respective command to actually get the updated directory info. Because these messages
14266 will be triggered by LSCP commands issued by other clients rather than real
14267 time events happening on the server, it is believed that an empty notification
14268 message is sufficient here.
14269 </p>
14270 <p>
14271 </p>
14272 <blockquote class="text">
14273 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
14274 </p>
14275 </blockquote><p>
14276
14277 </p>
14278 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
14279 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
14280 the new name of the directory, encapsulated into apostrophes.
14281 </p>
14282 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
14283 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14284 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
14285 Number of database instruments changed</h3>
14286
14287 <p>Client may want to be notified when the number of instruments
14288 in a particular directory in the instruments database
14289 is changed by issuing the following command:
14290 </p>
14291 <p>
14292 </p>
14293 <blockquote class="text">
14294 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
14295 </p>
14296 </blockquote><p>
14297
14298 </p>
14299 <p>Server will start sending the following notification messages:
14300 </p>
14301 <p>
14302 </p>
14303 <blockquote class="text">
14304 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
14305 </p>
14306 </blockquote><p>
14307
14308 </p>
14309 <p>where &lt;dir-path&gt; will be replaced by the absolute path
14310 name of the directory in the instruments database,
14311 in which the number of instruments is changed.
14312 </p>
14313 <p>Note that when a non-empty directory is removed, this event
14314 is not sent for the instruments in that directory.
14315 </p>
14316 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
14317 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14318 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
14319 Database instrument information changed</h3>
14320
14321 <p>Client may want to be notified when changes were made to instruments
14322 in the instruments database by issuing the following command:
14323 </p>
14324 <p>
14325 </p>
14326 <blockquote class="text">
14327 <p>SUBSCRIBE DB_INSTRUMENT_INFO
14328 </p>
14329 </blockquote><p>
14330
14331 </p>
14332 <p>Server will start sending the following notification messages:
14333 </p>
14334 <p>
14335 </p>
14336 <blockquote class="text">
14337 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
14338 </p>
14339 </blockquote><p>
14340
14341 </p>
14342 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
14343 of the instrument, which settings are changed. The front-end will have to send
14344 the respective command to actually get the updated directory info. Because these messages
14345 will be triggered by LSCP commands issued by other clients rather than real
14346 time events happening on the server, it is believed that an empty notification
14347 message is sufficient here.
14348 </p>
14349 <p>
14350 </p>
14351 <blockquote class="text">
14352 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
14353 </p>
14354 </blockquote><p>
14355
14356 </p>
14357 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
14358 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
14359 the new name of the instrument, encapsulated into apostrophes.
14360 </p>
14361 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
14362 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14363 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
14364 Database job status information changed</h3>
14365
14366 <p>Client may want to be notified when the status of particular database
14367 instruments job is changed by issuing the following command:
14368 </p>
14369 <p>
14370 </p>
14371 <blockquote class="text">
14372 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
14373 </p>
14374 </blockquote><p>
14375
14376 </p>
14377 <p>Server will start sending the following notification messages:
14378 </p>
14379 <p>
14380 </p>
14381 <blockquote class="text">
14382 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
14383 </p>
14384 </blockquote><p>
14385
14386 </p>
14387 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
14388 which status is changed. The front-end will have to send the respective
14389 command to actually get the status info. Because these messages
14390 will be triggered by LSCP commands issued by other clients rather than real
14391 time events happening on the server, it is believed that an empty notification
14392 message is sufficient here.
14393 </p>
14394 <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
14395 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14396 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
14397 Number of effect instances changed</h3>
14398
14399 <p>Client may want to be notified when the number of effect instances
14400 is changed by issuing the following command:
14401 </p>
14402 <p>
14403 </p>
14404 <blockquote class="text">
14405 <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
14406 </p>
14407 </blockquote><p>
14408
14409 </p>
14410 <p>Server will start sending the following notification messages:
14411 </p>
14412 <p>
14413 </p>
14414 <blockquote class="text">
14415 <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
14416 </p>
14417 </blockquote><p>
14418
14419 </p>
14420 <p>where &lt;instances&gt; will be replaced by the new number
14421 of effect instances.
14422 </p>
14423 <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
14424 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14425 <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
14426 Effect instance information changed</h3>
14427
14428 <p>Client may want to be notified when changes were made to effect instances
14429 on the back-end by issuing the following command:
14430 </p>
14431 <p>
14432 </p>
14433 <blockquote class="text">
14434 <p>SUBSCRIBE EFFECT_INSTANCE_INFO
14435 </p>
14436 </blockquote><p>
14437
14438 </p>
14439 <p>Server will start sending the following notification messages:
14440 </p>
14441 <p>
14442 </p>
14443 <blockquote class="text">
14444 <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
14445 </p>
14446 </blockquote><p>
14447
14448 </p>
14449 <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14450 of the effect instance.
14451 </p>
14452 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14453 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14454 <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14455 Number of send effect chains changed</h3>
14456
14457 <p>Client may want to be notified when the number of send effect chains
14458 is changed by issuing the following command:
14459 </p>
14460 <p>
14461 </p>
14462 <blockquote class="text">
14463 <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14464 </p>
14465 </blockquote><p>
14466
14467 </p>
14468 <p>Server will start sending the following notification messages:
14469 </p>
14470 <p>
14471 </p>
14472 <blockquote class="text">
14473 <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14474 </p>
14475 </blockquote><p>
14476
14477 </p>
14478 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14479 output device, in which the number of send effect chains is changed and
14480 &lt;chains&gt; will be replaced by the new number of send effect chains.
14481 </p>
14482 <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14483 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14484 <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14485 Send effect chain information changed</h3>
14486
14487 <p>Client may want to be notified when changes were made to send effect chains
14488 on the back-end by issuing the following command:
14489 </p>
14490 <p>
14491 </p>
14492 <blockquote class="text">
14493 <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14494 </p>
14495 </blockquote><p>
14496
14497 </p>
14498 <p>Server will start sending the following notification messages:
14499 </p>
14500 <p>
14501 </p>
14502 <blockquote class="text">
14503 <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14504 Notifies that the number of effect instances in a particular send effect chain
14505 is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14506 output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14507 by the numerical ID of the send effect chain in which the number of effect instances
14508 has changed and &lt;instances&gt; will be replaced by the new number
14509 of effect instances in the specified send effect chain.
14510 </p>
14511 </blockquote><p>
14512
14513 </p>
14514 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14515 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14516 <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14517 Miscellaneous and debugging events</h3>
14518
14519 <p>Client may want to be notified of miscellaneous and debugging events occurring at
14520 the server by issuing the following command:
14521 </p>
14522 <p>
14523 </p>
14524 <blockquote class="text">
14525 <p>SUBSCRIBE MISCELLANEOUS
14526 </p>
14527 </blockquote><p>
14528
14529 </p>
14530 <p>Server will start sending the following notification messages:
14531 </p>
14532 <p>
14533 </p>
14534 <blockquote class="text">
14535 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14536 </p>
14537 </blockquote><p>
14538
14539 </p>
14540 <p>where &lt;string&gt; will be replaced by whatever data server
14541 wants to send to the client. Client MAY display this data to the
14542 user AS IS to facilitate debugging.
14543 </p>
14544 <a name="anchor14"></a><br /><hr />
14545 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14546 <a name="rfc.section.9"></a><h3>9.&nbsp;
14547 Security Considerations</h3>
14548
14549 <p>As there is so far no method of authentication and authorization
14550 defined and so not required for a client applications to succeed to
14551 connect, running LinuxSampler might be a security risk for the host
14552 system the LinuxSampler instance is running on.
14553 </p>
14554 <a name="anchor15"></a><br /><hr />
14555 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14556 <a name="rfc.section.10"></a><h3>10.&nbsp;
14557 Acknowledgments</h3>
14558
14559 <p>This document has benefited greatly from the comments of the
14560 following people, discussed on the LinuxSampler developer's mailing
14561 list:
14562 </p>
14563 <p>
14564 </p>
14565 <blockquote class="text">
14566 <p>Rui Nuno Capela
14567 </p>
14568 <p>Vladimir Senkov
14569 </p>
14570 <p>Mark Knecht
14571 </p>
14572 <p>Grigor Iliev
14573 </p>
14574 </blockquote><p>
14575
14576 </p>
14577 <a name="rfc.references1"></a><br /><hr />
14578 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14579 <h3>11.&nbsp;References</h3>
14580 <table width="99%" border="0">
14581 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14582 <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>
14583 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14584 <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>
14585 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14586 <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>
14587 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14588 <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>
14589 </table>
14590
14591 <a name="rfc.authors"></a><br /><hr />
14592 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14593 <h3>Author's Address</h3>
14594 <table width="99%" border="0" cellpadding="0" cellspacing="0">
14595 <tr><td class="author-text">&nbsp;</td>
14596 <td class="author-text">C.
14597 Schoenebeck</td></tr>
14598 <tr><td class="author-text">&nbsp;</td>
14599 <td class="author-text">LinuxSampler.org</td></tr>
14600 <tr><td class="author-text">&nbsp;</td>
14601 <td class="author-text">Crudebyte Engineering</td></tr>
14602 <tr><td class="author-text">&nbsp;</td>
14603 <td class="author-text">Hofgartenstr. 3</td></tr>
14604 <tr><td class="author-text">&nbsp;</td>
14605 <td class="author-text">74189 Weinsberg</td></tr>
14606 <tr><td class="author-text">&nbsp;</td>
14607 <td class="author-text">Germany</td></tr>
14608 <tr><td class="author" align="right">Phone:&nbsp;</td>
14609 <td class="author-text">+49 7134 911614</td></tr>
14610 <tr><td class="author" align="right">Email:&nbsp;</td>
14611 <td class="author-text"><a href="mailto:cuse@users.sf.net">cuse@users.sf.net</a></td></tr>
14612 </table>
14613 <a name="rfc.copyright"></a><br /><hr />
14614 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14615 <h3>Full Copyright Statement</h3>
14616 <p class='copyright'>
14617 Copyright &copy; The IETF Trust (2015).</p>
14618 <p class='copyright'>
14619 This document is subject to the rights,
14620 licenses and restrictions contained in BCP&nbsp;78,
14621 and except as set forth therein,
14622 the authors retain all their rights.</p>
14623 <p class='copyright'>
14624 This document and the information contained herein are provided
14625 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14626 THE ORGANIZATION HE/SHE REPRESENTS
14627 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14628 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14629 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14630 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14631 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14632 PURPOSE.</p>
14633 <h3>Intellectual Property</h3>
14634 <p class='copyright'>
14635 The IETF takes no position regarding the validity or scope of any
14636 Intellectual Property Rights or other rights that might be claimed
14637 to pertain to the implementation or use of the technology
14638 described in this document or the extent to which any license
14639 under such rights might or might not be available; nor does it
14640 represent that it has made any independent effort to identify any
14641 such rights.
14642 Information on the procedures with respect to
14643 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14644 <p class='copyright'>
14645 Copies of IPR disclosures made to the IETF Secretariat and any
14646 assurances of licenses to be made available,
14647 or the result of an attempt made to obtain a general license or
14648 permission for the use of such proprietary rights by implementers or
14649 users of this specification can be obtained from the IETF on-line IPR
14650 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14651 <p class='copyright'>
14652 The IETF invites any interested party to bring to its attention
14653 any copyrights,
14654 patents or patent applications,
14655 or other
14656 proprietary rights that may cover technology that may be required
14657 to implement this standard.
14658 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14659 </body></html>

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC