/[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 2139 - (show annotations) (download) (as text)
Mon Oct 4 22:17:58 2010 UTC (13 years, 6 months ago) by schoenebeck
File MIME type: text/html
File size: 499409 byte(s)
* updated LSCP specs

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 <meta name="description" content="LinuxSampler Control Protocol">
5 <meta name="keywords" content="LSCP">
6 <meta name="generator" content="xml2rfc v1.35 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15 font-weight: bold; font-style: normal;
16 }
17 h1 { color: #900; background-color: transparent; text-align: right; }
18 h3 { color: #333; background-color: transparent; }
19
20 td.RFCbug {
21 font-size: x-small; text-decoration: none;
22 width: 30px; height: 30px; padding-top: 2px;
23 text-align: justify; vertical-align: middle;
24 background-color: #000;
25 }
26 td.RFCbug span.RFC {
27 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28 font-weight: bold; color: #666;
29 }
30 td.RFCbug span.hotText {
31 font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32 font-weight: normal; text-align: center; color: #FFF;
33 }
34
35 table.TOCbug { width: 30px; height: 15px; }
36 td.TOCbug {
37 text-align: center; width: 30px; height: 15px;
38 color: #FFF; background-color: #900;
39 }
40 td.TOCbug a {
41 font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42 font-weight: bold; font-size: x-small; text-decoration: none;
43 color: #FFF; background-color: transparent;
44 }
45
46 td.header {
47 font-family: arial, helvetica, sans-serif; font-size: x-small;
48 vertical-align: top; width: 33%;
49 color: #FFF; background-color: #666;
50 }
51 td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52 td.author-text { font-size: x-small; }
53
54 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55 a.info {
56 /* This is the key. */
57 position: relative;
58 z-index: 24;
59 text-decoration: none;
60 }
61 a.info:hover {
62 z-index: 25;
63 color: #FFF; background-color: #900;
64 }
65 a.info span { display: none; }
66 a.info:hover span.info {
67 /* The span will display just on :hover state. */
68 display: block;
69 position: absolute;
70 font-size: smaller;
71 top: 2em; left: -5em; width: 15em;
72 padding: 2px; border: 1px solid #333;
73 color: #900; background-color: #EEE;
74 text-align: left;
75 }
76
77 a { font-weight: bold; }
78 a:link { color: #900; background-color: transparent; }
79 a:visited { color: #633; background-color: transparent; }
80 a:active { color: #633; background-color: transparent; }
81
82 p { margin-left: 2em; margin-right: 2em; }
83 p.copyright { font-size: x-small; }
84 p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85 table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86 td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* RFC-2629 <spanx>s and <artwork>s. */
93 em { font-style: italic; }
94 strong { font-weight: bold; }
95 dfn { font-weight: bold; font-style: normal; }
96 cite { font-weight: normal; font-style: normal; }
97 tt { color: #036; }
98 tt, pre, pre dfn, pre em, pre cite, pre span {
99 font-family: "Courier New", Courier, monospace; font-size: small;
100 }
101 pre {
102 text-align: left; padding: 4px;
103 color: #000; background-color: #CCC;
104 }
105 pre dfn { color: #900; }
106 pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107 pre .key { color: #33C; font-weight: bold; }
108 pre .id { color: #900; }
109 pre .str { color: #000; background-color: #CFF; }
110 pre .val { color: #066; }
111 pre .rep { color: #909; }
112 pre .oth { color: #000; background-color: #FCF; }
113 pre .err { background-color: #FCC; }
114
115 /* RFC-2629 <texttable>s. */
116 table.all, table.full, table.headers, table.none {
117 font-size: small; text-align: center; border-width: 2px;
118 vertical-align: top; border-collapse: collapse;
119 }
120 table.all, table.full { border-style: solid; border-color: black; }
121 table.headers, table.none { border-style: none; }
122 th {
123 font-weight: bold; border-color: black;
124 border-width: 2px 2px 3px 2px;
125 }
126 table.all th, table.full th { border-style: solid; }
127 table.headers th { border-style: none none solid none; }
128 table.none th { border-style: none; }
129 table.all td {
130 border-style: solid; border-color: #333;
131 border-width: 1px 2px;
132 }
133 table.full td, table.headers td, table.none td { border-style: none; }
134
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145 <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146 <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 <tr><td class="header">Expires: April 8, 2011</td><td class="header">October 5, 2010</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.5</h1>
151
152 <h3>Abstract</h3>
153
154 <p>The LinuxSampler Control Protocol (LSCP) is an
155 application-level protocol primarily intended for local and
156 remote controlling the LinuxSampler backend application, which is a
157 sophisticated server-like console application essentially playing
158 back audio samples and manipulating the samples in real time to
159 certain extent.
160 </p>
161 <h3>Status of this Memo</h3>
162 <p>
163 By submitting this Internet-Draft,
164 each author represents that any applicable patent or other IPR claims of which
165 he or she is aware have been or will be disclosed,
166 and any of which he or she becomes aware will be disclosed,
167 in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
168 <p>
169 Internet-Drafts are working documents of the Internet Engineering
170 Task Force (IETF). Note that other groups may also distribute
171 working documents as Internet-Drafts. The list of current
172 Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.</p>
173 <p>
174 Internet-Drafts are draft documents valid for a maximum of six months
175 and may be updated, replaced, or obsoleted by other documents at any time.
176 It is inappropriate to use Internet-Drafts as reference material or to cite
177 them other than as &ldquo;work in progress.&rdquo;</p>
178 <p>
179 This Internet-Draft will expire on April 8, 2011.</p>
180 <a name="toc"></a><br /><hr />
181 <h3>Table of Contents</h3>
182 <p class="toc">
183 <a href="#anchor1">1.</a>&nbsp;
184 Requirements notation<br />
185 <a href="#LSCP versioning">2.</a>&nbsp;
186 Versioning of this specification<br />
187 <a href="#anchor2">3.</a>&nbsp;
188 Introduction<br />
189 <a href="#anchor3">4.</a>&nbsp;
190 Focus of this protocol<br />
191 <a href="#anchor4">5.</a>&nbsp;
192 Communication Overview<br />
193 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194 Request/response communication method<br />
195 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196 Result format<br />
197 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198 Subscribe/notify communication method<br />
199 <a href="#control_commands">6.</a>&nbsp;
200 Description for control commands<br />
201 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202 Ignored lines and comments<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204 Configuring audio drivers<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206 Getting amount of available audio output drivers<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208 Getting all available audio output drivers<br />
209 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210 Getting information about a specific audio
211 output driver<br />
212 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213 Getting information about specific audio
214 output driver parameter<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216 Creating an audio output device<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218 Destroying an audio output device<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220 Getting all created audio output device count<br />
221 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222 Getting all created audio output device list<br />
223 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224 Getting current settings of an audio output device<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226 Changing settings of audio output devices<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228 Getting information about an audio channel<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230 Getting information about specific audio channel parameter<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232 Changing settings of audio output channels<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234 Configuring MIDI input drivers<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236 Getting amount of available MIDI input drivers<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238 Getting all available MIDI input drivers<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240 Getting information about a specific MIDI input driver<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242 Getting information about specific MIDI input driver parameter<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244 Creating a MIDI input device<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246 Destroying a MIDI input device<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248 Getting all created MIDI input device count<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250 Getting all created MIDI input device list<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252 Getting current settings of a MIDI input device<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254 Changing settings of MIDI input devices<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256 Getting information about a MIDI port<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258 Getting information about specific MIDI port parameter<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260 Changing settings of MIDI input ports<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262 Configuring sampler channels<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264 Loading an instrument<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266 Loading a sampler engine<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268 Getting all created sampler channel count<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270 Getting all created sampler channel list<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272 Adding a new sampler channel<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274 Removing a sampler channel<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276 Getting amount of available engines<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278 Getting all available engines<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280 Getting information about an engine<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282 Getting sampler channel information<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284 Current number of active voices<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286 Current number of active disk streams<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288 Current fill state of disk stream buffers<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290 Setting audio output device<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292 Setting audio output type<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294 Setting audio output channel<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
296 Setting MIDI input device<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
298 Setting MIDI input type<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
300 Setting MIDI input port<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
302 Setting MIDI input channel<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
304 Setting channel volume<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
306 Muting a sampler channel<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
308 Soloing a sampler channel<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
310 Assigning a MIDI instrument map to a sampler channel<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
312 Adding an effect send to a sampler channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
314 Removing an effect send from a sampler channel<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
316 Getting amount of effect sends on a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
318 Listing all effect sends on a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
320 Getting effect send information<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
322 Changing effect send's name<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
324 Altering effect send's audio routing<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND SEND_EFFECT">6.4.32.</a>&nbsp;
326 Assigning destination effect to an effect send<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND SEND_EFFECT">6.4.33.</a>&nbsp;
328 Removing destination effect from an effect send<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.34.</a>&nbsp;
330 Altering effect send's MIDI controller<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.35.</a>&nbsp;
332 Altering effect send's send level<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.36.</a>&nbsp;
334 Sending MIDI messages to sampler channel<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.37.</a>&nbsp;
336 Resetting a sampler channel<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
338 Controlling connection<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
340 Register front-end for receiving event messages<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
342 Unregister front-end for not receiving event messages<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
344 Enable or disable echo of commands<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
346 Close client connection<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
348 Global commands<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
350 Current number of active voices<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
352 Maximum amount of active voices<br />
353 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
354 Current number of active disk streams<br />
355 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
356 Reset sampler<br />
357 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
358 General sampler informations<br />
359 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
360 Getting global volume attenuation<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
362 Setting global volume attenuation<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
364 Getting global voice limit<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
366 Setting global voice limit<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
368 Getting global disk stream limit<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
370 Setting global disk stream limit<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
372 MIDI Instrument Mapping<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
374 Create a new MIDI instrument map<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
376 Delete one particular or all MIDI instrument maps<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
378 Get amount of existing MIDI instrument maps<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
380 Getting all created MIDI instrument maps<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
382 Getting MIDI instrument map information<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
384 Renaming a MIDI instrument map<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
386 Create or replace a MIDI instrument map entry<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
388 Getting ammount of MIDI instrument map entries<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
390 Getting indeces of all entries of a MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
392 Remove an entry from the MIDI instrument map<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
394 Get current settings of MIDI instrument map entry<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
396 Clear MIDI instrument map<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
398 Managing Instruments Database<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
400 Creating a new instrument directory<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
402 Deleting an instrument directory<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
404 Getting amount of instrument directories<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
406 Listing all directories in specific directory<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
408 Getting instrument directory information<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
410 Renaming an instrument directory<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
412 Moving an instrument directory<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
414 Copying instrument directories<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
416 Changing the description of directory<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
418 Finding directories<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
420 Adding instruments to the instruments database<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
422 Removing an instrument<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
424 Getting amount of instruments<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
426 Listing all instruments in specific directory<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
428 Getting instrument information<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
430 Renaming an instrument<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
432 Moving an instrument<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
434 Copying instruments<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
436 Changing the description of instrument<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
438 Finding instruments<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
440 Getting job status information<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
442 Formatting the instruments database<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
444 Checking for lost instrument files<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
446 Replacing an instrument file<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
448 Editing Instruments<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
450 Opening an appropriate instrument editor application<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
452 Managing Files<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
454 Retrieving amount of instruments of a file<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
456 Retrieving all instruments of a file<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
458 Retrieving informations about one instrument in a file<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
460 Managing Effects<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
462 Retrieve amount of available effects<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
464 Get list of available effects<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
466 Retrieving general information about an effect<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
468 Creating an instance of an effect by its portable ID<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
470 Creating an instance of an effect by its numerical ID<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
472 Destroy an effect instance<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
474 Retrieve amount of effect instances<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
476 Get list of effect instances<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
478 Retrieving current information about an effect instance<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
480 Retrieving information about an effect parameter<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
482 Altering an effect parameter<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
484 Retrieve amount of send effect chains<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
486 Retrieve list of send effect chains<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
488 Add send effect chain<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
490 Remove send effect chain<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
492 Retrieving information about a send effect chain<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
494 Append effect instance to a send effect chain<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
496 Insert effect instance to a send effect chain<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
498 Remove effect instance from send effect chain<br />
499 <a href="#command_syntax">7.</a>&nbsp;
500 Command Syntax<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
502 Character Set and Escape Sequences<br />
503 <a href="#events">8.</a>&nbsp;
504 Events<br />
505 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
506 Number of audio output devices changed<br />
507 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
508 Audio output device's settings changed<br />
509 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
510 Number of MIDI input devices changed<br />
511 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
512 MIDI input device's settings changed<br />
513 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
514 Number of sampler channels changed<br />
515 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
516 MIDI data on a sampler channel arrived<br />
517 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
518 MIDI data on a MIDI input device arrived<br />
519 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
520 Number of active voices changed<br />
521 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
522 Number of active disk streams changed<br />
523 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
524 Disk stream buffer fill state changed<br />
525 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
526 Channel information changed<br />
527 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
528 Number of effect sends changed<br />
529 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
530 Effect send information changed<br />
531 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
532 Total number of active voices changed<br />
533 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
534 Total number of active disk streams changed<br />
535 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
536 Number of MIDI instrument maps changed<br />
537 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
538 MIDI instrument map information changed<br />
539 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
540 Number of MIDI instruments changed<br />
541 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
542 MIDI instrument information changed<br />
543 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
544 Global settings changed<br />
545 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
546 Number of database instrument directories changed<br />
547 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
548 Database instrument directory information changed<br />
549 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
550 Number of database instruments changed<br />
551 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
552 Database instrument information changed<br />
553 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
554 Database job status information changed<br />
555 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.26.</a>&nbsp;
556 Miscellaneous and debugging events<br />
557 <a href="#anchor14">9.</a>&nbsp;
558 Security Considerations<br />
559 <a href="#anchor15">10.</a>&nbsp;
560 Acknowledgments<br />
561 <a href="#rfc.references1">11.</a>&nbsp;
562 References<br />
563 <a href="#rfc.authors">&#167;</a>&nbsp;
564 Author's Address<br />
565 <a href="#rfc.copyright">&#167;</a>&nbsp;
566 Intellectual Property and Copyright Statements<br />
567 </p>
568 <br clear="all" />
569
570 <a name="anchor1"></a><br /><hr />
571 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
572 <a name="rfc.section.1"></a><h3>1.&nbsp;
573 Requirements notation</h3>
574
575 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
576 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
577 and "OPTIONAL" in this document are to be interpreted as
578 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>.
579 </p>
580 <p>This protocol is always case-sensitive if not explicitly
581 claimed the opposite.
582 </p>
583 <p>In examples, "C:" and "S:" indicate lines sent by the client
584 (front-end) and server (LinuxSampler) respectively. Lines in
585 examples must be interpreted as every line being CRLF
586 terminated (carriage return character followed by line feed
587 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>),
588 thus the following example:
589 </p>
590 <p>
591 </p>
592 <blockquote class="text">
593 <p>C: "some line"
594 </p>
595 <p>&nbsp;&nbsp;&nbsp;"another line"
596 </p>
597 </blockquote><p>
598
599 </p>
600 <p>must actually be interpreted as client sending the following
601 message:
602 </p>
603 <p>
604 </p>
605 <blockquote class="text">
606 <p>"some line&lt;CR&gt;&lt;LF&gt;another
607 line&lt;CR&gt;&lt;LF&gt;"
608 </p>
609 </blockquote><p>
610
611 </p>
612 <p>where &lt;CR&gt; symbolizes the carriage return character and
613 &lt;LF&gt; the line feed character as defined in the ASCII
614 standard.
615 </p>
616 <p>Due to technical reasons, messages can arbitrary be
617 fragmented, means the following example:
618 </p>
619 <p>
620 </p>
621 <blockquote class="text">
622 <p>S: "abcd"
623 </p>
624 </blockquote><p>
625
626 </p>
627 <p>could also happen to be sent in three messages like in the
628 following sequence scenario:
629 </p>
630 <p>
631 </p>
632 <ul class="text">
633 <li>server sending message "a"
634 </li>
635 <li>followed by a delay (pause) with
636 arbitrary duration
637 </li>
638 <li>followed by server sending message
639 "bcd&lt;CR&gt;"
640 </li>
641 <li>again followed by a delay (pause) with arbitrary
642 duration
643 </li>
644 <li>followed by server sending the message
645 "&lt;LF&gt;"
646 </li>
647 </ul><p>
648
649 </p>
650 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
651 return and line feed characters respectively.
652 </p>
653 <a name="LSCP versioning"></a><br /><hr />
654 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
655 <a name="rfc.section.2"></a><h3>2.&nbsp;
656 Versioning of this specification</h3>
657
658 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
659 release of the LSCP specification will be tagged with a unique version
660 tuple. The version tuple consists at least of a major and minor version
661 number like:
662
663 </p>
664 <p>
665 </p>
666 <blockquote class="text">
667 <p>"1.2"
668 </p>
669 </blockquote><p>
670
671 </p>
672 <p>
673 In this example the major version number would be "1" and the minor
674 version number would be "2". Note that the version tuple might also
675 have more than two elements. The major version number defines a
676 group of backward compatible versions. That means a frontend is
677 compatible to the connected sampler if and only if the LSCP versions
678 to which each of the two parties complies to, match both of the
679 following rules:
680
681 </p>
682 <p>Compatibility:
683 </p>
684 <p>
685 </p>
686 <ol class="text">
687 <li>The frontend's LSCP major version and the sampler's LSCP
688 major version are exactly equal.
689 </li>
690 <li>The frontend's LSCP minor version is less or equal than
691 the sampler's LSCP minor version.
692 </li>
693 </ol><p>
694
695 </p>
696 <p>
697 Compatibility can only be claimed if both rules are true.
698 The frontend can use the
699 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
700 get the version of the LSCP specification the sampler complies with.
701
702 </p>
703 <a name="anchor2"></a><br /><hr />
704 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
705 <a name="rfc.section.3"></a><h3>3.&nbsp;
706 Introduction</h3>
707
708 <p>LinuxSampler is a so called software sampler application
709 capable to playback audio samples from a computer's Random
710 Access Memory (RAM) as well as directly streaming it from disk.
711 LinuxSampler is designed to be modular. It provides several so
712 called "sampler engines" where each engine is specialized for a
713 certain purpose. LinuxSampler has virtual channels which will be
714 referred in this document as "sampler channels". The channels
715 are in such way virtual as they can be connected to an
716 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
717 sampler channel 17 could be connected to an ALSA sequencer
718 device 64:0 and listening to MIDI channel 1 there). Each sampler
719 channel will be associated with an instance of one of the available
720 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
721 each sampler channel can be routed to an arbitrary audio output
722 method (ALSA / JACK) and an arbitrary audio output channel
723 there.
724 </p>
725 <a name="anchor3"></a><br /><hr />
726 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
727 <a name="rfc.section.4"></a><h3>4.&nbsp;
728 Focus of this protocol</h3>
729
730 <p>Main focus of this protocol is to provide a way to configure
731 a running LinuxSampler instance and to retrieve information
732 about it. The focus of this protocol is not to provide a way to
733 control synthesis parameters or even to trigger or release
734 notes. Or in other words; the focus are those functionalities
735 which are not covered by MIDI or which may at most be handled
736 via MIDI System Exclusive Messages.
737 </p>
738 <a name="anchor4"></a><br /><hr />
739 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
740 <a name="rfc.section.5"></a><h3>5.&nbsp;
741 Communication Overview</h3>
742
743 <p>There are two distinct methods of communication between a
744 running instance of LinuxSampler and one or more control
745 applications, so called "front-ends": a simple request/response
746 communication method used by the clients to give commands to the
747 server as well as to inquire about server's status and a
748 subscribe/notify communication method used by the client to
749 subscribe to and receive notifications of certain events as they
750 happen on the server. The latter needs more effort to be
751 implemented in the front-end application. The two communication
752 methods will be described next.
753 </p>
754 <a name="anchor5"></a><br /><hr />
755 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
756 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
757 Request/response communication method</h3>
758
759 <p>This simple communication method is based on
760 <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
761 front-end application establishes a TCP connection to the
762 LinuxSampler instance on a certain host system. Then the
763 front-end application will send certain ASCII based commands
764 as defined in this document (every command line must be CRLF
765 terminated - see "Conventions used in this document" at the
766 beginning of this document) and the LinuxSampler application
767 will response after a certain process time with an
768 appropriate ASCII based answer, also as defined in this
769 document. So this TCP communication is simply based on query
770 and answer paradigm. That way LinuxSampler is only able to
771 answer on queries from front-ends, but not able to
772 automatically send messages to the client if it's not asked
773 to. The fronted should not reconnect to LinuxSampler for
774 every single command, instead it should keep the connection
775 established and simply resend message(s) for subsequent
776 commands. To keep information in the front-end up-to-date
777 the front-end has to periodically send new requests to get
778 the current information from the LinuxSampler instance. This
779 is often referred to as "polling". While polling is simple
780 to implement and may be OK to use in some cases, there may
781 be disadvantages to polling such as network traffic overhead
782 and information being out of date.
783 It is possible for a client or several clients to open more
784 than one connection to the server at the same time. It is
785 also possible to send more than one request to the server
786 at the same time but if those requests are sent over the
787 same connection server MUST execute them sequentially. Upon
788 executing a request server will produce a result set and
789 send it to the client. Each and every request made by the
790 client MUST result in a result set being sent back to the
791 client. No other data other than a result set may be sent by
792 a server to a client. No result set may be sent to a client
793 without the client sending request to the server first. On
794 any particular connection, result sets MUST be sent in their
795 entirety without being interrupted by other result sets. If
796 several requests got queued up at the server they MUST be
797 processed in the order they were received and result sets
798 MUST be sent back in the same order.
799 </p>
800 <a name="anchor6"></a><br /><hr />
801 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
802 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
803 Result format</h3>
804
805 <p>Result set could be one of the following types:
806 </p>
807 <p>
808 </p>
809 <ol class="text">
810 <li>Normal
811 </li>
812 <li>Warning
813 </li>
814 <li>Error
815 </li>
816 </ol><p>
817
818 </p>
819 <p>Warning and Error result sets MUST be single line and
820 have the following format:
821 </p>
822 <p>
823 </p>
824 <ul class="text">
825 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
826 </li>
827 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
828 </li>
829 </ul><p>
830
831 </p>
832 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
833 numeric unique identifiers of the warning or error and
834 &lt;warning-message&gt; and &lt;error-message&gt; are
835 human readable descriptions of the warning or error
836 respectively.
837 </p>
838 <p>Examples:
839 </p>
840 <p>
841 </p>
842 <blockquote class="text">
843 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
844 </p>
845 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
846 </p>
847 </blockquote><p>
848
849 </p>
850 <p>
851 </p>
852 <blockquote class="text">
853 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
854 </p>
855 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
856 </p>
857 </blockquote><p>
858
859 </p>
860 <p>
861 </p>
862 <blockquote class="text">
863 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
864 </p>
865 <p>S: "ERR:9:There is no audio output device with index 123456."
866 </p>
867 </blockquote><p>
868
869 </p>
870 <p>Normal result sets could be:
871 </p>
872 <p>
873 </p>
874 <ol class="text">
875 <li>Empty
876 </li>
877 <li>Single line
878 </li>
879 <li>Multi-line
880 </li>
881 </ol><p>
882
883 </p>
884 <p> Empty result set is issued when the server only
885 needed to acknowledge the fact that the request was
886 received and it was processed successfully and no
887 additional information is available. This result set has
888 the following format:
889 </p>
890 <p>
891 </p>
892 <blockquote class="text">
893 <p>"OK"
894 </p>
895 </blockquote><p>
896
897 </p>
898 <p>Example:
899 </p>
900 <p>
901 </p>
902 <blockquote class="text">
903 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
904 </p>
905 <p>S: "OK"
906 </p>
907 </blockquote><p>
908
909 </p>
910 <p>Single line result sets are command specific. One
911 example of a single line result set is an empty line.
912 Multi-line result sets are command specific and may
913 include one or more lines of information. They MUST
914 always end with the following line:
915 </p>
916 <p>
917 </p>
918 <blockquote class="text">
919 <p>"."
920 </p>
921 </blockquote><p>
922
923 </p>
924 <p>Example:
925 </p>
926 <p>
927 </p>
928 <blockquote class="text">
929 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
930 </p>
931 <p>S: "DRIVER: ALSA"
932 </p>
933 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
934 </p>
935 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
936 </p>
937 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
938 </p>
939 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
940 </p>
941 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
942 </p>
943 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
944 </p>
945 <p>&nbsp;&nbsp;&nbsp;"."
946 </p>
947 </blockquote><p>
948
949 </p>
950 <p>In addition to above mentioned formats, warnings and
951 empty result sets MAY be indexed. In this case, they
952 have the following formats respectively:
953 </p>
954 <p>
955 </p>
956 <ul class="text">
957 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
958 </li>
959 <li>"OK[&lt;index&gt;]"
960 </li>
961 </ul><p>
962
963 </p>
964 <p>where &lt;index&gt; is command specific and is used
965 to indicate channel number that the result set was
966 related to or other integer value.
967 </p>
968 <p>Each line of the result set MUST end with
969 &lt;CRLF&gt;.
970 </p>
971 <p>Examples:
972 </p>
973 <p>
974 </p>
975 <blockquote class="text">
976 <p>C: "ADD CHANNEL"
977 </p>
978 <p>S: "OK[12]"
979 </p>
980 </blockquote><p>
981
982 </p>
983 <p>
984 </p>
985 <blockquote class="text">
986 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
987 </p>
988 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
989 </p>
990 </blockquote><p>
991
992 </p>
993 <a name="anchor7"></a><br /><hr />
994 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
995 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
996 Subscribe/notify communication method</h3>
997
998 <p>This more sophisticated communication method is actually
999 only an extension of the simple request/response
1000 communication method. The front-end still uses a TCP
1001 connection and sends the same commands on the TCP
1002 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1003 commands that allow a client to tell the server that it is
1004 interested in receiving notifications about certain events
1005 as they happen on the server. The SUBSCRIBE command has the
1006 following syntax:
1007 </p>
1008 <p>
1009 </p>
1010 <blockquote class="text">
1011 <p>SUBSCRIBE &lt;event-id&gt;
1012 </p>
1013 </blockquote><p>
1014
1015 </p>
1016 <p>where &lt;event-id&gt; will be replaced by the respective
1017 event that client wants to subscribe to. Upon receiving such
1018 request, server SHOULD respond with OK and start sending
1019 EVENT notifications when a given even has occurred to the
1020 front-end when an event has occurred. It MAY be possible
1021 certain events may be sent before OK response during real
1022 time nature of their generation. Event messages have the
1023 following format:
1024 </p>
1025 <p>
1026 </p>
1027 <blockquote class="text">
1028 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1029 </p>
1030 </blockquote><p>
1031
1032 </p>
1033 <p>where &lt;event-id&gt; uniquely identifies the event that
1034 has occurred and &lt;custom-event-data&gt; is event
1035 specific.
1036 </p>
1037 <p>Several rules must be followed by the server when
1038 generating events:
1039 </p>
1040 <p>
1041 </p>
1042 <ol class="text">
1043 <li>Events MUST NOT be sent to any client who has not
1044 issued an appropriate SUBSCRIBE command.
1045 </li>
1046 <li>Events MUST only be sent using the same
1047 connection that was used to subscribe to them.
1048 </li>
1049 <li>When response is being sent to the client, event
1050 MUST be inserted in the stream before or after the
1051 response, but NOT in the middle. Same is true about
1052 the response. It should never be inserted in the
1053 middle of the event message as well as any other
1054 response.
1055 </li>
1056 </ol><p>
1057
1058 </p>
1059 <p>If the client is not interested in a particular event
1060 anymore it MAY issue UNSUBSCRIBE command using the following
1061 syntax:
1062 </p>
1063 <p>
1064 </p>
1065 <blockquote class="text">
1066 <p>UNSUBSCRIBE &lt;event-id&gt;
1067 </p>
1068 </blockquote><p>
1069
1070 </p>
1071 <p>where &lt;event-id&gt; will be replace by the respective
1072 event that client is no longer interested in receiving. For
1073 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1074 </p>
1075 <p>Example: the fill states of disk stream buffers have
1076 changed on sampler channel 4 and the LinuxSampler instance
1077 will react by sending the following message to all clients
1078 who subscribed to this event:
1079 </p>
1080 <p>
1081 </p>
1082 <blockquote class="text">
1083 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1084 </p>
1085 </blockquote><p>
1086
1087 </p>
1088 <p>Which means there are currently three active streams on
1089 sampler channel 4, where the stream with ID "35" is filled
1090 by 62%, stream with ID 33 is filled by 80% and stream with
1091 ID 37 is filled by 98%.
1092 </p>
1093 <p>Clients may choose to open more than one connection to
1094 the server and use some connections to receive notifications
1095 while using other connections to issue commands to the
1096 back-end. This is entirely legal and up to the
1097 implementation. This does not change the protocol in any way
1098 and no special restrictions exist on the server to allow or
1099 disallow this or to track what connections belong to what
1100 front-ends. Server will listen on a single port, accept
1101 multiple connections and support protocol described in this
1102 specification in it's entirety on this single port on each
1103 connection that it accepted.
1104 </p>
1105 <p>Due to the fact that TCP is used for this communication,
1106 dead peers will be detected automatically by the OS TCP
1107 stack. While it may take a while to detect dead peers if no
1108 traffic is being sent from server to client (TCP keep-alive
1109 timer is set to 2 hours on many OSes) it will not be an
1110 issue here as when notifications are sent by the server,
1111 dead client will be detected quickly.
1112 </p>
1113 <p>When connection is closed for any reason server MUST
1114 forget all subscriptions that were made on this connection.
1115 If client reconnects it MUST resubscribe to all events that
1116 it wants to receive.
1117 </p>
1118 <a name="control_commands"></a><br /><hr />
1119 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1120 <a name="rfc.section.6"></a><h3>6.&nbsp;
1121 Description for control commands</h3>
1122
1123 <p>This chapter will describe the available control commands
1124 that can be sent on the TCP connection in detail. Some certain
1125 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>
1126 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
1127 multiple-line responses. In this case LinuxSampler signals the
1128 end of the response by a "." (single dot) line.
1129 </p>
1130 <a name="anchor8"></a><br /><hr />
1131 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1132 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1133 Ignored lines and comments</h3>
1134
1135 <p>White lines, that is lines which only contain space and
1136 tabulator characters, and lines that start with a "#"
1137 character are ignored, thus it's possible for example to
1138 group commands and to place comments in a LSCP script
1139 file.
1140 </p>
1141 <a name="anchor9"></a><br /><hr />
1142 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1143 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1144 Configuring audio drivers</h3>
1145
1146 <p>Instances of drivers in LinuxSampler are called devices.
1147 You can use multiple audio devices simultaneously, e.g. to
1148 output the sound of one sampler channel using the ALSA audio
1149 output driver, and on another sampler channel you might want
1150 to use the JACK audio output driver. For particular audio
1151 output systems it's also possible to create several devices
1152 of the same audio output driver, e.g. two separate ALSA
1153 audio output devices for using two different sound cards at
1154 the same time. This chapter describes all commands to
1155 configure LinuxSampler's audio output devices and their
1156 parameters.
1157 </p>
1158 <p>Instead of defining commands and parameters for each
1159 driver individually, all possible parameters, their meanings
1160 and possible values have to be obtained at runtime. This
1161 makes the protocol a bit abstract, but has the advantage,
1162 that front-ends can be written independently of what drivers
1163 are currently implemented and what parameters these drivers
1164 are actually offering. This means front-ends can even handle
1165 drivers which are implemented somewhere in future without
1166 modifying the front-end at all.
1167 </p>
1168 <p>Note: examples in this chapter showing particular
1169 parameters of drivers are not meant as specification of the
1170 drivers' parameters. Driver implementations in LinuxSampler
1171 might have complete different parameter names and meanings
1172 than shown in these examples or might change in future, so
1173 these examples are only meant for showing how to retrieve
1174 what parameters drivers are offering, how to retrieve their
1175 possible values, etc.
1176 </p>
1177 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1178 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1179 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1180 Getting amount of available audio output drivers</h3>
1181
1182 <p>Use the following command to get the number of
1183 audio output drivers currently available for the
1184 LinuxSampler instance:
1185 </p>
1186 <p>
1187 </p>
1188 <blockquote class="text">
1189 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1190 </p>
1191 </blockquote><p>
1192
1193 </p>
1194 <p>Possible Answers:
1195 </p>
1196 <p>
1197 </p>
1198 <blockquote class="text">
1199 <p>LinuxSampler will answer by sending the
1200 number of audio output drivers.
1201 </p>
1202 </blockquote><p>
1203
1204 </p>
1205 <p>Example:
1206 </p>
1207 <p>
1208 </p>
1209 <blockquote class="text">
1210 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1211 </p>
1212 <p>S: "2"
1213 </p>
1214 </blockquote><p>
1215
1216 </p>
1217 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1218 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1219 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1220 Getting all available audio output drivers</h3>
1221
1222 <p>Use the following command to list all audio output
1223 drivers currently available for the LinuxSampler
1224 instance:
1225 </p>
1226 <p>
1227 </p>
1228 <blockquote class="text">
1229 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1230 </p>
1231 </blockquote><p>
1232
1233 </p>
1234 <p>Possible Answers:
1235 </p>
1236 <p>
1237 </p>
1238 <blockquote class="text">
1239 <p>LinuxSampler will answer by sending comma
1240 separated character strings, each symbolizing an
1241 audio output driver.
1242 </p>
1243 </blockquote><p>
1244
1245 </p>
1246 <p>Example:
1247 </p>
1248 <p>
1249 </p>
1250 <blockquote class="text">
1251 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1252 </p>
1253 <p>S: "ALSA,JACK"
1254 </p>
1255 </blockquote><p>
1256
1257 </p>
1258 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1259 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1260 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1261 Getting information about a specific audio
1262 output driver</h3>
1263
1264 <p>Use the following command to get detailed information
1265 about a specific audio output driver:
1266 </p>
1267 <p>
1268 </p>
1269 <blockquote class="text">
1270 <p>GET AUDIO_OUTPUT_DRIVER INFO
1271 &lt;audio-output-driver&gt;
1272 </p>
1273 </blockquote><p>
1274
1275 </p>
1276 <p>Where &lt;audio-output-driver&gt; is the name of the
1277 audio output driver, returned by the
1278 <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.
1279 </p>
1280 <p>Possible Answers:
1281 </p>
1282 <p>
1283 </p>
1284 <blockquote class="text">
1285 <p>LinuxSampler will answer by sending a
1286 &lt;CRLF&gt; separated list. Each answer line
1287 begins with the information category name
1288 followed by a colon and then a space character
1289 &lt;SP&gt; and finally the info character string
1290 to that info category. At the moment the
1291 following information categories are
1292 defined:
1293 </p>
1294 <p>
1295 </p>
1296 <blockquote class="text">
1297 <p>DESCRIPTION -
1298 </p>
1299 <blockquote class="text">
1300 <p> character string describing the
1301 audio output driver
1302 </p>
1303 </blockquote>
1304
1305
1306 <p>VERSION -
1307 </p>
1308 <blockquote class="text">
1309 <p>character string reflecting the
1310 driver's version
1311 </p>
1312 </blockquote>
1313
1314
1315 <p>PARAMETERS -
1316 </p>
1317 <blockquote class="text">
1318 <p>comma separated list of all
1319 parameters available for the given
1320 audio output driver, at least
1321 parameters 'channels', 'samplerate'
1322 and 'active' are offered by all audio
1323 output drivers
1324 </p>
1325 </blockquote>
1326
1327
1328 </blockquote>
1329
1330
1331 <p>The mentioned fields above don't have to be
1332 in particular order.
1333 </p>
1334 </blockquote><p>
1335
1336 </p>
1337 <p>Example:
1338 </p>
1339 <p>
1340 </p>
1341 <blockquote class="text">
1342 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1343 </p>
1344 <p>S: "DESCRIPTION: Advanced Linux Sound
1345 Architecture"
1346 </p>
1347 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1348 </p>
1349 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1350 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1351 FRAGMENTSIZE,CARD"
1352 </p>
1353 <p>&nbsp;&nbsp;&nbsp;"."
1354 </p>
1355 </blockquote><p>
1356
1357 </p>
1358 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1359 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1360 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1361 Getting information about specific audio
1362 output driver parameter</h3>
1363
1364 <p>Use the following command to get detailed information
1365 about a specific audio output driver parameter:
1366 </p>
1367 <p>
1368 </p>
1369 <blockquote class="text">
1370 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1371 </p>
1372 </blockquote><p>
1373
1374 </p>
1375 <p>Where &lt;audio&gt; is the name of the audio output
1376 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,
1377 &lt;prm&gt; a specific parameter name for which information should be
1378 obtained (as returned by the
1379 <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
1380 &lt;deplist&gt; is an optional list of parameters on which the sought
1381 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1382 pairs in form of "key1=val1 key2=val2 ...", where character string values
1383 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1384 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1385 the front-end application can simply put all parameters into &lt;deplist&gt;
1386 with the values already selected by the user.
1387 </p>
1388 <p>Possible Answers:
1389 </p>
1390 <p>
1391 </p>
1392 <blockquote class="text">
1393 <p>LinuxSampler will answer by sending a
1394 &lt;CRLF&gt; separated list.
1395 Each answer line begins with the information category name
1396 followed by a colon and then a space character &lt;SP&gt; and
1397 finally
1398 the info character string to that info category. There are
1399 information which is always returned, independently of the
1400 given driver parameter and there are optional information
1401 which is only shown dependently to given driver parameter. At
1402 the moment the following information categories are defined:
1403 </p>
1404 </blockquote><p>
1405
1406 </p>
1407 <p>
1408 </p>
1409 <blockquote class="text">
1410 <p>TYPE -
1411 </p>
1412 <blockquote class="text">
1413 <p>either "BOOL" for boolean value(s) or
1414 "INT" for integer
1415 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1416 character string(s)
1417 (always returned, no matter which driver parameter)
1418 </p>
1419 </blockquote>
1420
1421
1422 <p>DESCRIPTION -
1423 </p>
1424 <blockquote class="text">
1425 <p>arbitrary text describing the purpose of the parameter
1426 (always returned, no matter which driver parameter)
1427 </p>
1428 </blockquote>
1429
1430
1431 <p>MANDATORY -
1432 </p>
1433 <blockquote class="text">
1434 <p>either true or false, defines if this parameter must be
1435 given when the device is to be created with the
1436 <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>
1437 command (always returned, no matter which driver parameter)
1438 </p>
1439 </blockquote>
1440
1441
1442 <p>FIX -
1443 </p>
1444 <blockquote class="text">
1445 <p>either true or false, if false then this parameter can
1446 be changed at any time, once the device is created by
1447 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>
1448 command (always returned, no matter which driver parameter)
1449 </p>
1450 </blockquote>
1451
1452
1453 <p>MULTIPLICITY -
1454 </p>
1455 <blockquote class="text">
1456 <p>either true or false, defines if this parameter allows
1457 only one value or a list of values, where true means
1458 multiple values and false only a single value allowed
1459 (always returned, no matter which driver parameter)
1460 </p>
1461 </blockquote>
1462
1463
1464 <p>DEPENDS -
1465 </p>
1466 <blockquote class="text">
1467 <p>comma separated list of parameters this parameter depends
1468 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1469 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1470 listed parameters, for example assuming that an audio
1471 driver (like the ALSA driver) offers parameters 'card'
1472 and 'samplerate' then parameter 'samplerate' would
1473 depend on 'card' because the possible values for
1474 'samplerate' depends on the sound card which can be
1475 chosen by the 'card' parameter
1476 (optionally returned, dependent to driver parameter)
1477 </p>
1478 </blockquote>
1479
1480
1481 <p>DEFAULT -
1482 </p>
1483 <blockquote class="text">
1484 <p>reflects the default value for this parameter which is
1485 used when the device is created and not explicitly
1486 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,
1487 in case of MULTIPLCITY=true, this is a comma separated
1488 list, that's why character strings are encapsulated into
1489 apostrophes (')
1490 (optionally returned, dependent to driver parameter)
1491 </p>
1492 </blockquote>
1493
1494
1495 <p>RANGE_MIN -
1496 </p>
1497 <blockquote class="text">
1498 <p>defines lower limit of the allowed value range for this
1499 parameter, can be an integer value as well as a dotted
1500 number, this parameter is often used in conjunction
1501 with RANGE_MAX, but may also appear without
1502 (optionally returned, dependent to driver parameter)
1503 </p>
1504 </blockquote>
1505
1506
1507 <p>RANGE_MAX -
1508 </p>
1509 <blockquote class="text">
1510 <p>defines upper limit of the allowed value range for this
1511 parameter, can be an integer value as well as a dotted
1512 number, this parameter is often used in conjunction with
1513 RANGE_MIN, but may also appear without
1514 (optionally returned, dependent to driver parameter)
1515 </p>
1516 </blockquote>
1517
1518
1519 <p>POSSIBILITIES -
1520 </p>
1521 <blockquote class="text">
1522 <p>comma separated list of possible values for this
1523 parameter, character strings are encapsulated into
1524 apostrophes
1525 (optionally returned, dependent to driver parameter)
1526 </p>
1527 </blockquote>
1528
1529
1530 </blockquote><p>
1531
1532 </p>
1533 <p>The mentioned fields above don't have to be in particular order.
1534 </p>
1535 <p>Examples:
1536 </p>
1537 <p>
1538 </p>
1539 <blockquote class="text">
1540 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1541 </p>
1542 <p>S: "DESCRIPTION: sound card to be used"
1543 </p>
1544 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1545 </p>
1546 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1547 </p>
1548 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1549 </p>
1550 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1551 </p>
1552 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1553 </p>
1554 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1555 </p>
1556 <p>&nbsp;&nbsp;&nbsp;"."
1557 </p>
1558 </blockquote><p>
1559
1560 </p>
1561 <p>
1562 </p>
1563 <blockquote class="text">
1564 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1565 </p>
1566 <p>S: "DESCRIPTION: output sample rate in Hz"
1567 </p>
1568 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1569 </p>
1570 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1571 </p>
1572 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1573 </p>
1574 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1575 </p>
1576 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1577 </p>
1578 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1579 </p>
1580 <p>&nbsp;&nbsp;&nbsp;"."
1581 </p>
1582 </blockquote><p>
1583
1584 </p>
1585 <p>
1586 </p>
1587 <blockquote class="text">
1588 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1589 </p>
1590 <p>S: "DESCRIPTION: output sample rate in Hz"
1591 </p>
1592 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1593 </p>
1594 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1595 </p>
1596 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1597 </p>
1598 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1599 </p>
1600 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1601 </p>
1602 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1603 </p>
1604 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1605 </p>
1606 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1607 </p>
1608 <p>&nbsp;&nbsp;&nbsp;"."
1609 </p>
1610 </blockquote><p>
1611
1612 </p>
1613 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1614 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1615 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1616 Creating an audio output device</h3>
1617
1618 <p>Use the following command to create a new audio output device for the desired audio output system:
1619 </p>
1620 <p>
1621 </p>
1622 <blockquote class="text">
1623 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1624 </p>
1625 </blockquote><p>
1626
1627 </p>
1628 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1629 output system as returned by the
1630 <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>
1631 command and &lt;param-list&gt; by an optional list of driver
1632 specific parameters in form of "key1=val1 key2=val2 ...", where
1633 character string values should be encapsulated into apostrophes (').
1634 Note that there might be drivers which require parameter(s) to be
1635 given with this command. Use the previously described commands in
1636 this chapter to get this information.
1637 </p>
1638 <p>Possible Answers:
1639 </p>
1640 <p>
1641 </p>
1642 <blockquote class="text">
1643 <p>"OK[&lt;device-id&gt;]" -
1644 </p>
1645 <blockquote class="text">
1646 <p>in case the device was successfully created, where
1647 &lt;device-id&gt; is the numerical ID of the new device
1648 </p>
1649 </blockquote>
1650
1651
1652 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1653 </p>
1654 <blockquote class="text">
1655 <p>in case the device was created successfully, where
1656 &lt;device-id&gt; is the numerical ID of the new device, but there
1657 are noteworthy issue(s) related (e.g. sound card doesn't
1658 support given hardware parameters and the driver is using
1659 fall-back values), providing an appropriate warning code and
1660 warning message
1661 </p>
1662 </blockquote>
1663
1664
1665 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1666 </p>
1667 <blockquote class="text">
1668 <p>in case it failed, providing an appropriate error code and error message
1669 </p>
1670 </blockquote>
1671
1672
1673 </blockquote><p>
1674
1675 </p>
1676 <p>Examples:
1677 </p>
1678 <p>
1679 </p>
1680 <blockquote class="text">
1681 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1682 </p>
1683 <p>S: "OK[0]"
1684 </p>
1685 </blockquote><p>
1686
1687 </p>
1688 <p>
1689 </p>
1690 <blockquote class="text">
1691 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1692 </p>
1693 <p>S: "OK[1]"
1694 </p>
1695 </blockquote><p>
1696
1697 </p>
1698 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1699 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1700 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1701 Destroying an audio output device</h3>
1702
1703 <p>Use the following command to destroy a created output device:
1704 </p>
1705 <p>
1706 </p>
1707 <blockquote class="text">
1708 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1709 </p>
1710 </blockquote><p>
1711
1712 </p>
1713 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1714 audio output device as given by the
1715 <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>
1716 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>
1717 command.
1718 </p>
1719 <p>Possible Answers:
1720 </p>
1721 <p>
1722 </p>
1723 <blockquote class="text">
1724 <p>"OK" -
1725 </p>
1726 <blockquote class="text">
1727 <p>in case the device was successfully destroyed
1728 </p>
1729 </blockquote>
1730
1731
1732 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1733 </p>
1734 <blockquote class="text">
1735 <p>in case the device was destroyed successfully, but there are
1736 noteworthy issue(s) related (e.g. an audio over ethernet
1737 driver was unloaded but the other host might not be
1738 informed about this situation), providing an appropriate
1739 warning code and warning message
1740 </p>
1741 </blockquote>
1742
1743
1744 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1745 </p>
1746 <blockquote class="text">
1747 <p>in case it failed, providing an appropriate error code and
1748 error message
1749 </p>
1750 </blockquote>
1751
1752
1753 </blockquote><p>
1754
1755 </p>
1756 <p>Example:
1757 </p>
1758 <p>
1759 </p>
1760 <blockquote class="text">
1761 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1762 </p>
1763 <p>S: "OK"
1764 </p>
1765 </blockquote><p>
1766
1767 </p>
1768 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1769 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1770 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1771 Getting all created audio output device count</h3>
1772
1773 <p>Use the following command to count all created audio output devices:
1774 </p>
1775 <p>
1776 </p>
1777 <blockquote class="text">
1778 <p>GET AUDIO_OUTPUT_DEVICES
1779 </p>
1780 </blockquote><p>
1781
1782 </p>
1783 <p>Possible Answers:
1784 </p>
1785 <p>
1786 </p>
1787 <blockquote class="text">
1788 <p>LinuxSampler will answer by sending the current number of all
1789 audio output devices.
1790 </p>
1791 </blockquote><p>
1792
1793 </p>
1794 <p>Example:
1795 </p>
1796 <p>
1797 </p>
1798 <blockquote class="text">
1799 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1800 </p>
1801 <p>S: "4"
1802 </p>
1803 </blockquote><p>
1804
1805 </p>
1806 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1807 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1808 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1809 Getting all created audio output device list</h3>
1810
1811 <p>Use the following command to list all created audio output devices:
1812 </p>
1813 <p>
1814 </p>
1815 <blockquote class="text">
1816 <p>LIST AUDIO_OUTPUT_DEVICES
1817 </p>
1818 </blockquote><p>
1819
1820 </p>
1821 <p>Possible Answers:
1822 </p>
1823 <p>
1824 </p>
1825 <blockquote class="text">
1826 <p>LinuxSampler will answer by sending a comma separated list with
1827 the numerical IDs of all audio output devices.
1828 </p>
1829 </blockquote><p>
1830
1831 </p>
1832 <p>Example:
1833 </p>
1834 <p>
1835 </p>
1836 <blockquote class="text">
1837 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1838 </p>
1839 <p>S: "0,1,4,5"
1840 </p>
1841 </blockquote><p>
1842
1843 </p>
1844 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1845 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1846 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1847 Getting current settings of an audio output device</h3>
1848
1849 <p>Use the following command to get current settings of a specific, created audio output device:
1850 </p>
1851 <p>
1852 </p>
1853 <blockquote class="text">
1854 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1855 </p>
1856 </blockquote><p>
1857
1858 </p>
1859 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1860 of the audio output device as e.g. returned by the
1861 <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.
1862 </p>
1863 <p>Possible Answers:
1864 </p>
1865 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1866 Each answer line begins with the information category name
1867 followed by a colon and then a space character &lt;SP&gt; and finally
1868 the info character string to that info category. As some
1869 parameters might allow multiple values, character strings are
1870 encapsulated into apostrophes ('). At the moment the following
1871 information categories are defined (independently of device):
1872 </p>
1873 <p>
1874 </p>
1875 <blockquote class="text">
1876 <p>DRIVER -
1877 </p>
1878 <blockquote class="text">
1879 <p>identifier of the used audio output driver, as also
1880 returned by the
1881 <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>
1882 command
1883 </p>
1884 </blockquote>
1885
1886
1887 <p>CHANNELS -
1888 </p>
1889 <blockquote class="text">
1890 <p>amount of audio output channels this device currently
1891 offers
1892 </p>
1893 </blockquote>
1894
1895
1896 <p>SAMPLERATE -
1897 </p>
1898 <blockquote class="text">
1899 <p>playback sample rate the device uses
1900 </p>
1901 </blockquote>
1902
1903
1904 <p>ACTIVE -
1905 </p>
1906 <blockquote class="text">
1907 <p>either true or false, if false then the audio device is
1908 inactive and doesn't output any sound, nor do the
1909 sampler channels connected to this audio device render
1910 any audio
1911 </p>
1912 </blockquote>
1913
1914
1915 </blockquote><p>
1916
1917 </p>
1918 <p>The mentioned fields above don't have to be in particular
1919 order. The fields above are only those fields which are
1920 returned by all audio output devices. Every audio output driver
1921 might have its own, additional driver specific parameters (see
1922 <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>)
1923 which are also returned by this command.
1924 </p>
1925 <p>Example:
1926 </p>
1927 <p>
1928 </p>
1929 <blockquote class="text">
1930 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1931 </p>
1932 <p>S: "DRIVER: ALSA"
1933 </p>
1934 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1935 </p>
1936 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1937 </p>
1938 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1939 </p>
1940 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1941 </p>
1942 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1943 </p>
1944 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1945 </p>
1946 <p>&nbsp;&nbsp;&nbsp;"."
1947 </p>
1948 </blockquote><p>
1949
1950 </p>
1951 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1952 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1953 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1954 Changing settings of audio output devices</h3>
1955
1956 <p>Use the following command to alter a specific setting of a created audio output device:
1957 </p>
1958 <p>
1959 </p>
1960 <blockquote class="text">
1961 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1962 </p>
1963 </blockquote><p>
1964
1965 </p>
1966 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1967 audio output device as given by the
1968 <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>
1969 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>
1970 command, &lt;key&gt; by the name of the parameter to change
1971 and &lt;value&gt; by the new value for this parameter.
1972 </p>
1973 <p>Possible Answers:
1974 </p>
1975 <p>
1976 </p>
1977 <blockquote class="text">
1978 <p>"OK" -
1979 </p>
1980 <blockquote class="text">
1981 <p>in case setting was successfully changed
1982 </p>
1983 </blockquote>
1984
1985
1986 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1987 </p>
1988 <blockquote class="text">
1989 <p>in case setting was changed successfully, but there are
1990 noteworthy issue(s) related, providing an appropriate
1991 warning code and warning message
1992 </p>
1993 </blockquote>
1994
1995
1996 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1997 </p>
1998 <blockquote class="text">
1999 <p>in case it failed, providing an appropriate error code and
2000 error message
2001 </p>
2002 </blockquote>
2003
2004
2005 </blockquote><p>
2006
2007 </p>
2008 <p>Example:
2009 </p>
2010 <p>
2011 </p>
2012 <blockquote class="text">
2013 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2014 </p>
2015 <p>S: "OK"
2016 </p>
2017 </blockquote><p>
2018
2019 </p>
2020 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2021 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2022 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2023 Getting information about an audio channel</h3>
2024
2025 <p>Use the following command to get information about an audio channel:
2026 </p>
2027 <p>
2028 </p>
2029 <blockquote class="text">
2030 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2031 </p>
2032 </blockquote><p>
2033
2034 </p>
2035 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2036 <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>
2037 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>
2038 command and &lt;audio-chan&gt; the audio channel number.
2039 </p>
2040 <p>Possible Answers:
2041 </p>
2042 <p>
2043 </p>
2044 <blockquote class="text">
2045 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2046 Each answer line begins with the information category name
2047 followed by a colon and then a space character &lt;SP&gt; and finally
2048 the info character string to that info category. At the moment
2049 the following information categories are defined:
2050 </p>
2051 <p>
2052 </p>
2053 <blockquote class="text">
2054 <p>NAME -
2055 </p>
2056 <blockquote class="text">
2057 <p>arbitrary character string naming the channel, which
2058 doesn't have to be unique (always returned by all audio channels)
2059 </p>
2060 </blockquote>
2061
2062
2063 <p>IS_MIX_CHANNEL -
2064 </p>
2065 <blockquote class="text">
2066 <p>either true or false, a mix-channel is not a real,
2067 independent audio channel, but a virtual channel which
2068 is mixed to another real channel, this mechanism is
2069 needed for sampler engines which need more audio
2070 channels than the used audio system might be able to offer
2071 (always returned by all audio channels)
2072 </p>
2073 </blockquote>
2074
2075
2076 <p>MIX_CHANNEL_DESTINATION -
2077 </p>
2078 <blockquote class="text">
2079 <p>numerical ID (positive integer including 0)
2080 which reflects the real audio channel (of the same audio
2081 output device) this mix channel refers to, means where
2082 the audio signal actually will be routed / added to
2083 (only returned in case the audio channel is mix channel)
2084 </p>
2085 </blockquote>
2086
2087
2088 </blockquote>
2089
2090
2091 </blockquote><p>
2092
2093 </p>
2094 <p>The mentioned fields above don't have to be in particular
2095 order. The fields above are only those fields which are
2096 generally returned for the described cases by all audio
2097 channels regardless of the audio driver. Every audio channel
2098 might have its own, additional driver and channel specific
2099 parameters.
2100 </p>
2101 <p>Examples:
2102 </p>
2103 <p>
2104 </p>
2105 <blockquote class="text">
2106 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2107 </p>
2108 <p>S: "NAME: studio monitor left"
2109 </p>
2110 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2111 </p>
2112 <p>&nbsp;&nbsp;&nbsp;"."
2113 </p>
2114 </blockquote><p>
2115
2116 </p>
2117 <p>
2118 </p>
2119 <blockquote class="text">
2120 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2121 </p>
2122 <p>S: "NAME: studio monitor right"
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 2"
2135 </p>
2136 <p>S: "NAME: studio monitor left"
2137 </p>
2138 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2139 </p>
2140 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2141 </p>
2142 <p>&nbsp;&nbsp;&nbsp;"."
2143 </p>
2144 </blockquote><p>
2145
2146 </p>
2147 <p>
2148 </p>
2149 <blockquote class="text">
2150 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2151 </p>
2152 <p>S: "NAME: 'ardour (left)'"
2153 </p>
2154 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2155 </p>
2156 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2157 </p>
2158 <p>&nbsp;&nbsp;&nbsp;"."
2159 </p>
2160 </blockquote><p>
2161
2162 </p>
2163 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2164 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2165 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2166 Getting information about specific audio channel parameter</h3>
2167
2168 <p>Use the following command to get detailed information about specific audio channel parameter:
2169 </p>
2170 <p>
2171 </p>
2172 <blockquote class="text">
2173 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2174 </p>
2175 </blockquote><p>
2176
2177 </p>
2178 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2179 <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>
2180 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>
2181 command, &lt;chan&gt; the audio channel number
2182 and &lt;param&gt; a specific channel parameter name for which information should
2183 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).
2184 </p>
2185 <p>Possible Answers:
2186 </p>
2187 <p>
2188 </p>
2189 <blockquote class="text">
2190 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2191 Each answer line begins with the information category name
2192 followed by a colon and then a space character &lt;SP&gt; and finally
2193 the info character string to that info category. There are
2194 information which is always returned, independently of the
2195 given channel parameter and there is optional information
2196 which is only shown dependently to the given audio channel. At
2197 the moment the following information categories are defined:
2198 </p>
2199 <p>
2200 </p>
2201 <blockquote class="text">
2202 <p>TYPE -
2203 </p>
2204 <blockquote class="text">
2205 <p>either "BOOL" for boolean value(s) or "INT" for integer
2206 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2207 character string(s)
2208 (always returned)
2209 </p>
2210 </blockquote>
2211
2212
2213 <p>DESCRIPTION -
2214 </p>
2215 <blockquote class="text">
2216 <p>arbitrary text describing the purpose of the parameter (always returned)
2217 </p>
2218 </blockquote>
2219
2220
2221 <p>FIX -
2222 </p>
2223 <blockquote class="text">
2224 <p>either true or false, if true then this parameter is
2225 read only, thus cannot be altered
2226 (always returned)
2227 </p>
2228 </blockquote>
2229
2230
2231 <p>MULTIPLICITY -
2232 </p>
2233 <blockquote class="text">
2234 <p>either true or false, defines if this parameter allows
2235 only one value or a list of values, where true means
2236 multiple values and false only a single value allowed
2237 (always returned)
2238 </p>
2239 </blockquote>
2240
2241
2242 <p>RANGE_MIN -
2243 </p>
2244 <blockquote class="text">
2245 <p>defines lower limit of the allowed value range for this
2246 parameter, can be an integer value as well as a dotted
2247 number, usually used in conjunction with 'RANGE_MAX',
2248 but may also appear without
2249 (optionally returned, dependent to driver and channel
2250 parameter)
2251 </p>
2252 </blockquote>
2253
2254
2255 <p>RANGE_MAX -
2256 </p>
2257 <blockquote class="text">
2258 <p>defines upper limit of the allowed value range for this
2259 parameter, can be an integer value as well as a dotted
2260 number, usually used in conjunction with 'RANGE_MIN',
2261 but may also appear without
2262 (optionally returned, dependent to driver and channel
2263 parameter)
2264 </p>
2265 </blockquote>
2266
2267
2268 <p>POSSIBILITIES -
2269 </p>
2270 <blockquote class="text">
2271 <p>comma separated list of possible values for this
2272 parameter, character strings are encapsulated into
2273 apostrophes
2274 (optionally returned, dependent to driver and channel
2275 parameter)
2276 </p>
2277 </blockquote>
2278
2279
2280 </blockquote>
2281
2282
2283 <p>The mentioned fields above don't have to be in particular order.
2284 </p>
2285 </blockquote><p>
2286
2287 </p>
2288 <p>Example:
2289 </p>
2290 <p>
2291 </p>
2292 <blockquote class="text">
2293 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2294 </p>
2295 <p>S: "DESCRIPTION: bindings to other JACK clients"
2296 </p>
2297 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2298 </p>
2299 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2300 </p>
2301 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2302 </p>
2303 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2304 </p>
2305 <p>&nbsp;&nbsp;&nbsp;"."
2306 </p>
2307 </blockquote><p>
2308
2309 </p>
2310 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2311 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2312 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2313 Changing settings of audio output channels</h3>
2314
2315 <p>Use the following command to alter a specific setting of an audio output channel:
2316 </p>
2317 <p>
2318 </p>
2319 <blockquote class="text">
2320 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2321 </p>
2322 </blockquote><p>
2323
2324 </p>
2325 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2326 <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>
2327 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>
2328 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2329 parameter to change and &lt;value&gt; by the new value for this parameter.
2330 </p>
2331 <p>Possible Answers:
2332 </p>
2333 <p>
2334 </p>
2335 <blockquote class="text">
2336 <p>"OK" -
2337 </p>
2338 <blockquote class="text">
2339 <p>in case setting was successfully changed
2340 </p>
2341 </blockquote>
2342
2343
2344 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2345 </p>
2346 <blockquote class="text">
2347 <p>in case setting was changed successfully, but there are
2348 noteworthy issue(s) related, providing an appropriate
2349 warning code and warning message
2350 </p>
2351 </blockquote>
2352
2353
2354 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2355 </p>
2356 <blockquote class="text">
2357 <p>in case it failed, providing an appropriate error code and
2358 error message
2359 </p>
2360 </blockquote>
2361
2362
2363 </blockquote><p>
2364
2365 </p>
2366 <p>Example:
2367 </p>
2368 <p>
2369 </p>
2370 <blockquote class="text">
2371 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2372 </p>
2373 <p>S: "OK"
2374 </p>
2375 </blockquote><p>
2376
2377 </p>
2378 <p>
2379 </p>
2380 <blockquote class="text">
2381 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2382 </p>
2383 <p>S: "OK"
2384 </p>
2385 </blockquote><p>
2386
2387 </p>
2388 <a name="anchor10"></a><br /><hr />
2389 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2390 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2391 Configuring MIDI input drivers</h3>
2392
2393 <p>Instances of drivers in LinuxSampler are called devices. You can use
2394 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2395 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2396 channel. For particular MIDI input systems it's also possible to create
2397 several devices of the same MIDI input type. This chapter describes all
2398 commands to configure LinuxSampler's MIDI input devices and their parameters.
2399 </p>
2400 <p>Instead of defining commands and parameters for each driver individually,
2401 all possible parameters, their meanings and possible values have to be obtained
2402 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2403 front-ends can be written independently of what drivers are currently implemented
2404 and what parameters these drivers are actually offering. This means front-ends can
2405 even handle drivers which are implemented somewhere in future without modifying
2406 the front-end at all.
2407 </p>
2408 <p>Commands for configuring MIDI input devices are pretty much the same as the
2409 commands for configuring audio output drivers, already described in the last
2410 chapter.
2411 </p>
2412 <p>Note: examples in this chapter showing particular parameters of drivers are
2413 not meant as specification of the drivers' parameters. Driver implementations in
2414 LinuxSampler might have complete different parameter names and meanings than shown
2415 in these examples or might change in future, so these examples are only meant for
2416 showing how to retrieve what parameters drivers are offering, how to retrieve their
2417 possible values, etc.
2418 </p>
2419 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2420 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2421 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2422 Getting amount of available MIDI input drivers</h3>
2423
2424 <p>Use the following command to get the number of
2425 MIDI input drivers currently available for the
2426 LinuxSampler instance:
2427 </p>
2428 <p>
2429 </p>
2430 <blockquote class="text">
2431 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2432 </p>
2433 </blockquote><p>
2434
2435 </p>
2436 <p>Possible Answers:
2437 </p>
2438 <p>
2439 </p>
2440 <blockquote class="text">
2441 <p>LinuxSampler will answer by sending the
2442 number of available MIDI input drivers.
2443 </p>
2444 </blockquote><p>
2445
2446 </p>
2447 <p>Example:
2448 </p>
2449 <p>
2450 </p>
2451 <blockquote class="text">
2452 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2453 </p>
2454 <p>S: "2"
2455 </p>
2456 </blockquote><p>
2457
2458 </p>
2459 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2460 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2461 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2462 Getting all available MIDI input drivers</h3>
2463
2464 <p>Use the following command to list all MIDI input drivers currently available
2465 for the LinuxSampler instance:
2466 </p>
2467 <p>
2468 </p>
2469 <blockquote class="text">
2470 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2471 </p>
2472 </blockquote><p>
2473
2474 </p>
2475 <p>Possible Answers:
2476 </p>
2477 <p>
2478 </p>
2479 <blockquote class="text">
2480 <p>LinuxSampler will answer by sending comma separated character
2481 strings, each symbolizing a MIDI input driver.
2482 </p>
2483 </blockquote><p>
2484
2485 </p>
2486 <p>Example:
2487 </p>
2488 <p>
2489 </p>
2490 <blockquote class="text">
2491 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2492 </p>
2493 <p>S: "ALSA,JACK"
2494 </p>
2495 </blockquote><p>
2496
2497 </p>
2498 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2499 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2500 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2501 Getting information about a specific MIDI input driver</h3>
2502
2503 <p>Use the following command to get detailed information about a specific MIDI input driver:
2504 </p>
2505 <p>
2506 </p>
2507 <blockquote class="text">
2508 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2509 </p>
2510 </blockquote><p>
2511
2512 </p>
2513 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2514 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.
2515 </p>
2516 <p>Possible Answers:
2517 </p>
2518 <p>
2519 </p>
2520 <blockquote class="text">
2521 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2522 Each answer line begins with the information category name
2523 followed by a colon and then a space character &lt;SP&gt; and finally
2524 the info character string to that info category. At the moment
2525 the following information categories are defined:
2526 </p>
2527 <p>
2528 </p>
2529 <blockquote class="text">
2530 <p>DESCRIPTION -
2531 </p>
2532 <blockquote class="text">
2533 <p>arbitrary description text about the MIDI input driver
2534 </p>
2535 </blockquote>
2536
2537
2538 <p>VERSION -
2539 </p>
2540 <blockquote class="text">
2541 <p>arbitrary character string regarding the driver's version
2542 </p>
2543 </blockquote>
2544
2545
2546 <p>PARAMETERS -
2547 </p>
2548 <blockquote class="text">
2549 <p>comma separated list of all parameters available for the given MIDI input driver
2550 </p>
2551 </blockquote>
2552
2553
2554 </blockquote>
2555
2556
2557 <p>The mentioned fields above don't have to be in particular order.
2558 </p>
2559 </blockquote><p>
2560
2561 </p>
2562 <p>Example:
2563 </p>
2564 <p>
2565 </p>
2566 <blockquote class="text">
2567 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2568 </p>
2569 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2570 </p>
2571 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2572 </p>
2573 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2574 </p>
2575 <p>&nbsp;&nbsp;&nbsp;"."
2576 </p>
2577 </blockquote><p>
2578
2579 </p>
2580 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2581 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2582 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2583 Getting information about specific MIDI input driver parameter</h3>
2584
2585 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2586 </p>
2587 <p>
2588 </p>
2589 <blockquote class="text">
2590 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2591 </p>
2592 </blockquote><p>
2593
2594 </p>
2595 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2596 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
2597 parameter name for which information should be obtained (as returned by the
2598 <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
2599 of parameters on which the sought parameter &lt;param&gt; depends on,
2600 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2601 where character string values are encapsulated into apostrophes ('). Arguments
2602 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2603 will be ignored, means the front-end application can simply put all parameters
2604 in &lt;deplist&gt; with the values selected by the user.
2605 </p>
2606 <p>Possible Answers:
2607 </p>
2608 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2609 Each answer line begins with the information category name
2610 followed by a colon and then a space character &lt;SP> and finally
2611 the info character string to that info category. There is
2612 information which is always returned, independent of the
2613 given driver parameter and there is optional information
2614 which is only shown dependent to given driver parameter. At
2615 the moment the following information categories are defined:
2616 </p>
2617 <p>
2618 </p>
2619 <blockquote class="text">
2620 <p>TYPE -
2621 </p>
2622 <blockquote class="text">
2623 <p>either "BOOL" for boolean value(s) or "INT" for integer
2624 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2625 character string(s)
2626 (always returned, no matter which driver parameter)
2627 </p>
2628 </blockquote>
2629
2630
2631 <p>DESCRIPTION -
2632 </p>
2633 <blockquote class="text">
2634 <p>arbitrary text describing the purpose of the parameter
2635 (always returned, no matter which driver parameter)
2636 </p>
2637 </blockquote>
2638
2639
2640 <p>MANDATORY -
2641 </p>
2642 <blockquote class="text">
2643 <p>either true or false, defines if this parameter must be
2644 given when the device is to be created with the
2645 <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
2646 (always returned, no matter which driver parameter)
2647 </p>
2648 </blockquote>
2649
2650
2651 <p>FIX -
2652 </p>
2653 <blockquote class="text">
2654 <p>either true or false, if false then this parameter can
2655 be changed at any time, once the device is created by
2656 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
2657 (always returned, no matter which driver parameter)
2658 </p>
2659 </blockquote>
2660
2661
2662 <p>MULTIPLICITY -
2663 </p>
2664 <blockquote class="text">
2665 <p>either true or false, defines if this parameter allows
2666 only one value or a list of values, where true means
2667 multiple values and false only a single value allowed
2668 (always returned, no matter which driver parameter)
2669 </p>
2670 </blockquote>
2671
2672
2673 <p>DEPENDS -
2674 </p>
2675 <blockquote class="text">
2676 <p>comma separated list of parameters this parameter depends
2677 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2678 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2679 listed parameters, for example assuming that an audio
2680 driver (like the ALSA driver) offers parameters 'card'
2681 and 'samplerate' then parameter 'samplerate' would
2682 depend on 'card' because the possible values for
2683 'samplerate' depends on the sound card which can be
2684 chosen by the 'card' parameter
2685 (optionally returned, dependent to driver parameter)
2686 </p>
2687 </blockquote>
2688
2689
2690 <p>DEFAULT -
2691 </p>
2692 <blockquote class="text">
2693 <p>reflects the default value for this parameter which is
2694 used when the device is created and not explicitly
2695 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,
2696 in case of MULTIPLCITY=true, this is a comma separated
2697 list, that's why character strings are encapsulated into
2698 apostrophes (')
2699 (optionally returned, dependent to driver parameter)
2700 </p>
2701 </blockquote>
2702
2703
2704 <p>RANGE_MIN -
2705 </p>
2706 <blockquote class="text">
2707 <p>defines lower limit of the allowed value range for this
2708 parameter, can be an integer value as well as a dotted
2709 number, this parameter is often used in conjunction
2710 with RANGE_MAX, but may also appear without
2711 (optionally returned, dependent to driver parameter)
2712 </p>
2713 </blockquote>
2714
2715
2716 <p>RANGE_MAX -
2717 </p>
2718 <blockquote class="text">
2719 <p>defines upper limit of the allowed value range for this
2720 parameter, can be an integer value as well as a dotted
2721 number, this parameter is often used in conjunction with
2722 RANGE_MIN, but may also appear without
2723 (optionally returned, dependent to driver parameter)
2724 </p>
2725 </blockquote>
2726
2727
2728 <p>POSSIBILITIES -
2729 </p>
2730 <blockquote class="text">
2731 <p>comma separated list of possible values for this
2732 parameter, character strings are encapsulated into
2733 apostrophes
2734 (optionally returned, dependent to driver parameter)
2735 </p>
2736 </blockquote>
2737
2738
2739 </blockquote><p>
2740
2741 </p>
2742 <p>The mentioned fields above don't have to be in particular order.
2743 </p>
2744 <p>Example:
2745 </p>
2746 <p>
2747 </p>
2748 <blockquote class="text">
2749 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2750 </p>
2751 <p>S: "DESCRIPTION: Whether device is enabled"
2752 </p>
2753 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2754 </p>
2755 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2756 </p>
2757 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2758 </p>
2759 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2760 </p>
2761 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2762 </p>
2763 <p>&nbsp;&nbsp;&nbsp;"."
2764 </p>
2765 </blockquote><p>
2766
2767 </p>
2768 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2769 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2770 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2771 Creating a MIDI input device</h3>
2772
2773 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2774 </p>
2775 <p>
2776 </p>
2777 <blockquote class="text">
2778 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2779 </p>
2780 </blockquote><p>
2781
2782 </p>
2783 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2784 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
2785 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2786 character string values should be encapsulated into apostrophes (').
2787 Note that there might be drivers which require parameter(s) to be
2788 given with this command. Use the previously described commands in
2789 this chapter to get that information.
2790 </p>
2791 <p>Possible Answers:
2792 </p>
2793 <p>
2794 </p>
2795 <blockquote class="text">
2796 <p>"OK[&lt;device-id&gt;]" -
2797 </p>
2798 <blockquote class="text">
2799 <p>in case the device was successfully created, where
2800 &lt;device-id&gt; is the numerical ID of the new device
2801 </p>
2802 </blockquote>
2803
2804
2805 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2806 </p>
2807 <blockquote class="text">
2808 <p>in case the driver was loaded successfully, where
2809 &lt;device-id&gt; is the numerical ID of the new device, but
2810 there are noteworthy issue(s) related, providing an
2811 appropriate warning code and warning message
2812 </p>
2813 </blockquote>
2814
2815
2816 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2817 </p>
2818 <blockquote class="text">
2819 <p>in case it failed, providing an appropriate error code and error message
2820 </p>
2821 </blockquote>
2822
2823
2824 </blockquote><p>
2825
2826 </p>
2827 <p>Example:
2828 </p>
2829 <p>
2830 </p>
2831 <blockquote class="text">
2832 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2833 </p>
2834 <p>S: "OK[0]"
2835 </p>
2836 </blockquote><p>
2837
2838 </p>
2839 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2840 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2841 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2842 Destroying a MIDI input device</h3>
2843
2844 <p>Use the following command to destroy a created MIDI input device:
2845 </p>
2846 <p>
2847 </p>
2848 <blockquote class="text">
2849 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2850 </p>
2851 </blockquote><p>
2852
2853 </p>
2854 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2855 <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>
2856 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>
2857 command.
2858 </p>
2859 <p>Possible Answers:
2860 </p>
2861 <p>
2862 </p>
2863 <blockquote class="text">
2864 <p>"OK" -
2865 </p>
2866 <blockquote class="text">
2867 <p>in case the device was successfully destroyed
2868 </p>
2869 </blockquote>
2870
2871
2872 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2873 </p>
2874 <blockquote class="text">
2875 <p>in case the device was destroyed, but there are noteworthy
2876 issue(s) related, providing an appropriate warning code and
2877 warning message
2878 </p>
2879 </blockquote>
2880
2881
2882 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2883 </p>
2884 <blockquote class="text">
2885 <p>in case it failed, providing an appropriate error code and error message
2886 </p>
2887 </blockquote>
2888
2889
2890 </blockquote><p>
2891
2892 </p>
2893 <p>Example:
2894 </p>
2895 <p>
2896 </p>
2897 <blockquote class="text">
2898 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2899 </p>
2900 <p>S: "OK"
2901 </p>
2902 </blockquote><p>
2903
2904 </p>
2905 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2906 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2907 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2908 Getting all created MIDI input device count</h3>
2909
2910 <p>Use the following command to count all created MIDI input devices:
2911 </p>
2912 <p>
2913 </p>
2914 <blockquote class="text">
2915 <p>GET MIDI_INPUT_DEVICES
2916 </p>
2917 </blockquote><p>
2918
2919 </p>
2920 <p>Possible Answers:
2921 </p>
2922 <p>
2923 </p>
2924 <blockquote class="text">
2925 <p>LinuxSampler will answer by sending the current number of all
2926 MIDI input devices.
2927 </p>
2928 </blockquote><p>
2929
2930 </p>
2931 <p>Example:
2932 </p>
2933 <p>
2934 </p>
2935 <blockquote class="text">
2936 <p>C: "GET MIDI_INPUT_DEVICES"
2937 </p>
2938 <p>S: "3"
2939 </p>
2940 </blockquote><p>
2941
2942 </p>
2943 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2944 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2945 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2946 Getting all created MIDI input device list</h3>
2947
2948 <p>Use the following command to list all created MIDI input devices:
2949 </p>
2950 <p>
2951 </p>
2952 <blockquote class="text">
2953 <p>LIST MIDI_INPUT_DEVICES
2954 </p>
2955 </blockquote><p>
2956
2957 </p>
2958 <p>Possible Answers:
2959 </p>
2960 <p>
2961 </p>
2962 <blockquote class="text">
2963 <p>LinuxSampler will answer by sending a comma separated list
2964 with the numerical Ids of all created MIDI input devices.
2965 </p>
2966 </blockquote><p>
2967
2968 </p>
2969 <p>Examples:
2970 </p>
2971 <p>
2972 </p>
2973 <blockquote class="text">
2974 <p>C: "LIST MIDI_INPUT_DEVICES"
2975 </p>
2976 <p>S: "0,1,2"
2977 </p>
2978 </blockquote><p>
2979
2980 </p>
2981 <p>
2982 </p>
2983 <blockquote class="text">
2984 <p>C: "LIST MIDI_INPUT_DEVICES"
2985 </p>
2986 <p>S: "1,3"
2987 </p>
2988 </blockquote><p>
2989
2990 </p>
2991 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2992 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2993 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2994 Getting current settings of a MIDI input device</h3>
2995
2996 <p>Use the following command to get current settings of a specific, created MIDI input device:
2997 </p>
2998 <p>
2999 </p>
3000 <blockquote class="text">
3001 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3002 </p>
3003 </blockquote><p>
3004
3005 </p>
3006 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3007 <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>
3008 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>
3009 command.
3010 </p>
3011 <p>Possible Answers:
3012 </p>
3013 <p>
3014 </p>
3015 <blockquote class="text">
3016 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3017 Each answer line begins with the information category name
3018 followed by a colon and then a space character &lt;SP&gt; and finally
3019 the info character string to that info category. As some
3020 parameters might allow multiple values, character strings are
3021 encapsulated into apostrophes ('). At the moment the following
3022 information categories are defined (independent of driver):
3023 </p>
3024 <p>
3025 </p>
3026 <blockquote class="text">
3027 <p>DRIVER -
3028 </p>
3029 <blockquote class="text">
3030 <p>identifier of the used MIDI input driver, as e.g.
3031 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>
3032 command
3033 </p>
3034 </blockquote>
3035
3036
3037 </blockquote>
3038
3039 <blockquote class="text">
3040 <p>ACTIVE -
3041 </p>
3042 <blockquote class="text">
3043 <p>either true or false, if false then the MIDI device is
3044 inactive and doesn't listen to any incoming MIDI events
3045 and thus doesn't forward them to connected sampler
3046 channels
3047 </p>
3048 </blockquote>
3049
3050
3051 </blockquote>
3052
3053
3054 </blockquote><p>
3055
3056 </p>
3057 <p>The mentioned fields above don't have to be in particular
3058 order. The fields above are only those fields which are
3059 returned by all MIDI input devices. Every MIDI input driver
3060 might have its own, additional driver specific parameters (see
3061 <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
3062 by this command.
3063 </p>
3064 <p>Example:
3065 </p>
3066 <p>
3067 </p>
3068 <blockquote class="text">
3069 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3070 </p>
3071 <p>S: "DRIVER: ALSA"
3072 </p>
3073 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3074 </p>
3075 <p>&nbsp;&nbsp;&nbsp;"."
3076 </p>
3077 </blockquote><p>
3078
3079 </p>
3080 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3081 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3082 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3083 Changing settings of MIDI input devices</h3>
3084
3085 <p>Use the following command to alter a specific setting of a created MIDI input device:
3086 </p>
3087 <p>
3088 </p>
3089 <blockquote class="text">
3090 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3091 </p>
3092 </blockquote><p>
3093
3094 </p>
3095 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3096 MIDI input device as returned by the
3097 <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>
3098 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>
3099 command, &lt;key&gt; by the name of the parameter to change and
3100 &lt;value&gt; by the new value for this parameter.
3101 </p>
3102 <p>Possible Answers:
3103 </p>
3104 <p>
3105 </p>
3106 <blockquote class="text">
3107 <p>"OK" -
3108 </p>
3109 <blockquote class="text">
3110 <p>in case setting was successfully changed
3111 </p>
3112 </blockquote>
3113
3114
3115 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3116 </p>
3117 <blockquote class="text">
3118 <p>in case setting was changed successfully, but there are
3119 noteworthy issue(s) related, providing an appropriate
3120 warning code and warning message
3121 </p>
3122 </blockquote>
3123
3124
3125 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3126 </p>
3127 <blockquote class="text">
3128 <p>in case it failed, providing an appropriate error code and error message
3129 </p>
3130 </blockquote>
3131
3132
3133 </blockquote><p>
3134
3135 </p>
3136 <p>Example:
3137 </p>
3138 <p>
3139 </p>
3140 <blockquote class="text">
3141 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3142 </p>
3143 <p>S: "OK"
3144 </p>
3145 </blockquote><p>
3146
3147 </p>
3148 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3149 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3150 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3151 Getting information about a MIDI port</h3>
3152
3153 <p>Use the following command to get information about a MIDI port:
3154 </p>
3155 <p>
3156 </p>
3157 <blockquote class="text">
3158 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3159 </p>
3160 </blockquote><p>
3161
3162 </p>
3163 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3164 <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>
3165 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>
3166 command and &lt;midi-port&gt; the MIDI input port number.
3167 </p>
3168 <p>Possible Answers:
3169 </p>
3170 <p>
3171 </p>
3172 <blockquote class="text">
3173 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3174 Each answer line begins with the information category name
3175 followed by a colon and then a space character &lt;SP&gt; and finally
3176 the info character string to that info category. At the moment
3177 the following information categories are defined:
3178 </p>
3179 <p>NAME -
3180 </p>
3181 <blockquote class="text">
3182 <p>arbitrary character string naming the port
3183 </p>
3184 </blockquote>
3185
3186
3187 </blockquote><p>
3188
3189 </p>
3190 <p>The field above is only the one which is returned by all MIDI
3191 ports regardless of the MIDI driver and port. Every MIDI port
3192 might have its own, additional driver and port specific
3193 parameters.
3194 </p>
3195 <p>Example:
3196 </p>
3197 <p>
3198 </p>
3199 <blockquote class="text">
3200 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3201 </p>
3202 <p>S: "NAME: 'Masterkeyboard'"
3203 </p>
3204 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3205 </p>
3206 <p>&nbsp;&nbsp;&nbsp;"."
3207 </p>
3208 </blockquote><p>
3209
3210 </p>
3211 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3212 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3213 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3214 Getting information about specific MIDI port parameter</h3>
3215
3216 <p>Use the following command to get detailed information about specific MIDI port parameter:
3217 </p>
3218 <p>
3219 </p>
3220 <blockquote class="text">
3221 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3222 </p>
3223 </blockquote><p>
3224
3225 </p>
3226 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3227 <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>
3228 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>
3229 command, &lt;port&gt; the MIDI port number and
3230 &lt;param&gt; a specific port parameter name for which information should be
3231 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).
3232 </p>
3233 <p>Possible Answers:
3234 </p>
3235 <p>
3236 </p>
3237 <blockquote class="text">
3238 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3239 Each answer line begins with the information category name
3240 followed by a colon and then a space character &lt;SP&gt; and finally
3241 the info character string to that info category. There is
3242 information which is always returned, independently of the
3243 given channel parameter and there is optional information
3244 which are only shown dependently to the given MIDI port. At the
3245 moment the following information categories are defined:
3246 </p>
3247 <p>TYPE -
3248 </p>
3249 <blockquote class="text">
3250 <p>either "BOOL" for boolean value(s) or "INT" for integer
3251 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3252 character string(s)
3253 (always returned)
3254 </p>
3255 </blockquote>
3256
3257
3258 <p>DESCRIPTION -
3259 </p>
3260 <blockquote class="text">
3261 <p>arbitrary text describing the purpose of the parameter
3262 (always returned)
3263 </p>
3264 </blockquote>
3265
3266
3267 <p>FIX -
3268 </p>
3269 <blockquote class="text">
3270 <p>either true or false, if true then this parameter is
3271 read only, thus cannot be altered
3272 (always returned)
3273 </p>
3274 </blockquote>
3275
3276
3277 <p>MULTIPLICITY -
3278 </p>
3279 <blockquote class="text">
3280 <p>either true or false, defines if this parameter allows
3281 only one value or a list of values, where true means
3282 multiple values and false only a single value allowed
3283 (always returned)
3284 </p>
3285 </blockquote>
3286
3287
3288 <p>RANGE_MIN -
3289 </p>
3290 <blockquote class="text">
3291 <p>defines lower limit of the allowed value range for this
3292 parameter, can be an integer value as well as a dotted
3293 number, this parameter is usually used in conjunction
3294 with 'RANGE_MAX' but may also appear without
3295 (optionally returned, dependent to driver and port
3296 parameter)
3297 </p>
3298 </blockquote>
3299
3300
3301 <p>RANGE_MAX -
3302 </p>
3303 <blockquote class="text">
3304 <p>defines upper limit of the allowed value range for this
3305 parameter, can be an integer value as well as a dotted
3306 number, this parameter is usually used in conjunction
3307 with 'RANGE_MIN' but may also appear without
3308 (optionally returned, dependent to driver and port
3309 parameter)
3310 </p>
3311 </blockquote>
3312
3313
3314 <p>POSSIBILITIES -
3315 </p>
3316 <blockquote class="text">
3317 <p>comma separated list of possible values for this
3318 parameter, character strings are encapsulated into
3319 apostrophes
3320 (optionally returned, dependent to device and port
3321 parameter)
3322 </p>
3323 </blockquote>
3324
3325
3326 </blockquote><p>
3327
3328 </p>
3329 <p>The mentioned fields above don't have to be in particular order.
3330 </p>
3331 <p>Example:
3332 </p>
3333 <p>
3334 </p>
3335 <blockquote class="text">
3336 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3337 </p>
3338 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3339 </p>
3340 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3341 </p>
3342 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3343 </p>
3344 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3345 </p>
3346 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3347 </p>
3348 <p>&nbsp;&nbsp;&nbsp;"."
3349 </p>
3350 </blockquote><p>
3351
3352 </p>
3353 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3354 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3355 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3356 Changing settings of MIDI input ports</h3>
3357
3358 <p>Use the following command to alter a specific setting of a MIDI input port:
3359 </p>
3360 <p>
3361 </p>
3362 <blockquote class="text">
3363 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3364 </p>
3365 </blockquote><p>
3366
3367 </p>
3368 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3369 MIDI device as returned by the
3370 <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>
3371 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>
3372 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3373 the parameter to change and &lt;value&gt; by the new value for this
3374 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3375 for specifying no value for parameters allowing a list of values.
3376 </p>
3377 <p>Possible Answers:
3378 </p>
3379 <p>
3380 </p>
3381 <blockquote class="text">
3382 <p>"OK" -
3383 </p>
3384 <blockquote class="text">
3385 <p>in case setting was successfully changed
3386 </p>
3387 </blockquote>
3388
3389
3390 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3391 </p>
3392 <blockquote class="text">
3393 <p>in case setting was changed successfully, but there are
3394 noteworthy issue(s) related, providing an appropriate
3395 warning code and warning message
3396 </p>
3397 </blockquote>
3398
3399
3400 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3401 </p>
3402 <blockquote class="text">
3403 <p>in case it failed, providing an appropriate error code and error message
3404 </p>
3405 </blockquote>
3406
3407
3408 </blockquote><p>
3409
3410 </p>
3411 <p>Example:
3412 </p>
3413 <p>
3414 </p>
3415 <blockquote class="text">
3416 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3417 </p>
3418 <p>S: "OK"
3419 </p>
3420 </blockquote><p>
3421
3422 </p>
3423 <p>
3424 </p>
3425 <blockquote class="text">
3426 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3427 </p>
3428 <p>S: "OK"
3429 </p>
3430 </blockquote><p>
3431
3432 </p>
3433 <a name="anchor11"></a><br /><hr />
3434 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3435 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3436 Configuring sampler channels</h3>
3437
3438 <p>The following commands describe how to add and remove sampler channels, associate a
3439 sampler channel with a sampler engine, load instruments and connect sampler channels to
3440 MIDI and audio devices.
3441 </p>
3442 <a name="LOAD INSTRUMENT"></a><br /><hr />
3443 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3444 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3445 Loading an instrument</h3>
3446
3447 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3448 </p>
3449 <p>
3450 </p>
3451 <blockquote class="text">
3452 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3453 </p>
3454 </blockquote><p>
3455
3456 </p>
3457 <p>Where &lt;filename&gt; is the name of the instrument file on the
3458 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3459 instrument in the instrument file and &lt;sampler-channel> is the
3460 number of the sampler channel the instrument should be assigned to.
3461 Each sampler channel can only have one instrument.
3462 </p>
3463 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3464 escape characters for special characters (see chapter
3465 "<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>"
3466 for details) and accordingly backslash characters in the filename
3467 MUST now be escaped as well!
3468 </p>
3469 <p>The difference between regular and NON_MODAL versions of the command
3470 is that the regular command returns OK only after the instrument has been
3471 fully loaded and the channel is ready to be used while NON_MODAL version
3472 returns immediately and a background process is launched to load the instrument
3473 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>
3474 command can be used to obtain loading
3475 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3476 such as making sure that the file could be read and it is of a proper format
3477 and SHOULD return ERR and SHOULD not launch the background process should any
3478 errors be detected at that point.
3479 </p>
3480 <p>Possible Answers:
3481 </p>
3482 <p>
3483 </p>
3484 <blockquote class="text">
3485 <p>"OK" -
3486 </p>
3487 <blockquote class="text">
3488 <p>in case the instrument was successfully loaded
3489 </p>
3490 </blockquote>
3491
3492
3493 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3494 </p>
3495 <blockquote class="text">
3496 <p>in case the instrument was loaded successfully, but there
3497 are noteworthy issue(s) related (e.g. Engine doesn't support
3498 one or more patch parameters provided by the loaded
3499 instrument file), providing an appropriate warning code and
3500 warning message
3501 </p>
3502 </blockquote>
3503
3504
3505 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3506 </p>
3507 <blockquote class="text">
3508 <p>in case it failed, providing an appropriate error code and error message
3509 </p>
3510 </blockquote>
3511
3512
3513 </blockquote><p>
3514
3515 </p>
3516 <p>Example (Unix):
3517 </p>
3518 <p>
3519 </p>
3520 <blockquote class="text">
3521 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3522 </p>
3523 <p>S: OK
3524 </p>
3525 </blockquote><p>
3526
3527 </p>
3528 <p>Example (Windows):
3529 </p>
3530 <p>
3531 </p>
3532 <blockquote class="text">
3533 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3534 </p>
3535 <p>S: OK
3536 </p>
3537 </blockquote><p>
3538
3539 </p>
3540 <a name="LOAD ENGINE"></a><br /><hr />
3541 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3542 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3543 Loading a sampler engine</h3>
3544
3545 <p>A sampler engine type can be associated to a specific sampler
3546 channel by the following command:
3547 </p>
3548 <p>
3549 </p>
3550 <blockquote class="text">
3551 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3552 </p>
3553 </blockquote><p>
3554
3555 </p>
3556 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3557 <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;
3558 the sampler channel as returned by the
3559 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3560 <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
3561 the engine type should be assigned to. This command should be issued
3562 after adding a new sampler channel and before any other control
3563 commands on the new sampler channel. It can also be used to change
3564 the engine type of a sampler channel. This command has (currently) no
3565 way to define or force if a new engine instance should be created and
3566 assigned to the given sampler channel or if an already existing
3567 instance of that engine type, shared with other sampler channels,
3568 should be used.
3569 </p>
3570 <p>Possible Answers:
3571 </p>
3572 <p>
3573 </p>
3574 <blockquote class="text">
3575 <p>"OK" -
3576 </p>
3577 <blockquote class="text">
3578 <p>in case the engine was successfully deployed
3579 </p>
3580 </blockquote>
3581
3582
3583 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3584 </p>
3585 <blockquote class="text">
3586 <p>in case the engine was deployed successfully, but there
3587 are noteworthy issue(s) related, providing an appropriate
3588 warning code and warning message
3589 </p>
3590 </blockquote>
3591
3592
3593 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3594 </p>
3595 <blockquote class="text">
3596 <p>in case it failed, providing an appropriate error code and
3597 error message
3598 </p>
3599 </blockquote>
3600
3601
3602 </blockquote><p>
3603
3604 </p>
3605 <p>Example:
3606 </p>
3607 <p>
3608 </p>
3609 <blockquote class="text">
3610 <p>
3611 </p>
3612 </blockquote><p>
3613
3614 </p>
3615 <a name="GET CHANNELS"></a><br /><hr />
3616 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3617 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3618 Getting all created sampler channel count</h3>
3619
3620 <p>The number of sampler channels can change on runtime. To get the
3621 current amount of sampler channels, the front-end can send the
3622 following command:
3623 </p>
3624 <p>
3625 </p>
3626 <blockquote class="text">
3627 <p>GET CHANNELS
3628 </p>
3629 </blockquote><p>
3630
3631 </p>
3632 <p>Possible Answers:
3633 </p>
3634 <p>
3635 </p>
3636 <blockquote class="text">
3637 <p>LinuxSampler will answer by returning the current number of sampler channels.
3638 </p>
3639 </blockquote><p>
3640
3641 </p>
3642 <p>Example:
3643 </p>
3644 <p>
3645 </p>
3646 <blockquote class="text">
3647 <p>C: "GET CHANNELS"
3648 </p>
3649 <p>S: "12"
3650 </p>
3651 </blockquote><p>
3652
3653 </p>
3654 <a name="LIST CHANNELS"></a><br /><hr />
3655 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3656 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3657 Getting all created sampler channel list</h3>
3658
3659 <p>The number of sampler channels can change on runtime. To get the
3660 current list of sampler channels, the front-end can send the
3661 following command:
3662 </p>
3663 <p>
3664 </p>
3665 <blockquote class="text">
3666 <p>LIST CHANNELS
3667 </p>
3668 </blockquote><p>
3669
3670 </p>
3671 <p>Possible Answers:
3672 </p>
3673 <p>
3674 </p>
3675 <blockquote class="text">
3676 <p>LinuxSampler will answer by returning a comma separated list
3677 with all sampler channels numerical IDs.
3678 </p>
3679 </blockquote><p>
3680
3681 </p>
3682 <p>Example:
3683 </p>
3684 <p>
3685 </p>
3686 <blockquote class="text">
3687 <p>C: "LIST CHANNELS"
3688 </p>
3689 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3690 </p>
3691 </blockquote><p>
3692
3693 </p>
3694 <a name="ADD CHANNEL"></a><br /><hr />
3695 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3696 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3697 Adding a new sampler channel</h3>
3698
3699 <p>A new sampler channel can be added to the end of the sampler
3700 channel list by sending the following command:
3701 </p>
3702 <p>
3703 </p>
3704 <blockquote class="text">
3705 <p>ADD CHANNEL
3706 </p>
3707 </blockquote><p>
3708
3709 </p>
3710 <p>This will increment the sampler channel count by one and the new
3711 sampler channel will be appended to the end of the sampler channel
3712 list. The front-end should send the respective, related commands
3713 right after to e.g. load an engine, load an instrument and setting
3714 input, output method and eventually other commands to initialize
3715 the new channel. The front-end should use the sampler channel
3716 returned by the answer of this command to perform the previously
3717 recommended commands, to avoid race conditions e.g. with other
3718 front-ends that might also have sent an "ADD CHANNEL" command.
3719 </p>
3720 <p>Possible Answers:
3721 </p>
3722 <p>
3723 </p>
3724 <blockquote class="text">
3725 <p>"OK[&lt;sampler-channel&gt;]" -
3726 </p>
3727 <blockquote class="text">
3728 <p>in case a new sampler channel could be added, where
3729 &lt;sampler-channel&gt; reflects the channel number of the new
3730 created sampler channel which should be used to set up
3731 the sampler channel by sending subsequent initialization
3732 commands
3733 </p>
3734 </blockquote>
3735
3736
3737 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3738 </p>
3739 <blockquote class="text">
3740 <p>in case a new channel was added successfully, but there are
3741 noteworthy issue(s) related, providing an appropriate
3742 warning code and warning message
3743 </p>
3744 </blockquote>
3745
3746
3747 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3748 </p>
3749 <blockquote class="text">
3750 <p>in case it failed, providing an appropriate error code and
3751 error message
3752 </p>
3753 </blockquote>
3754
3755
3756 </blockquote><p>
3757
3758 </p>
3759 <p>Example:
3760 </p>
3761 <p>
3762 </p>
3763 <blockquote class="text">
3764 <p>
3765 </p>
3766 </blockquote><p>
3767
3768 </p>
3769 <a name="REMOVE CHANNEL"></a><br /><hr />
3770 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3771 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3772 Removing a sampler channel</h3>
3773
3774 <p>A sampler channel can be removed by sending the following command:
3775 </p>
3776 <p>
3777 </p>
3778 <blockquote class="text">
3779 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3780 </p>
3781 </blockquote><p>
3782
3783 </p>
3784 <p>Where &lt;sampler-channel&gt; should be replaced by the
3785 number of the sampler channel as given by the
3786 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3787 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3788 command. The channel numbers of all subsequent sampler channels
3789 remain the same.
3790 </p>
3791 <p>Possible Answers:
3792 </p>
3793 <p>
3794 </p>
3795 <blockquote class="text">
3796 <p>"OK" -
3797 </p>
3798 <blockquote class="text">
3799 <p>in case the given sampler channel could be removed
3800 </p>
3801 </blockquote>
3802
3803
3804 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3805 </p>
3806 <blockquote class="text">
3807 <p>in case the given channel was removed, but there are
3808 noteworthy issue(s) related, providing an appropriate
3809 warning code and warning message
3810 </p>
3811 </blockquote>
3812
3813
3814 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3815 </p>
3816 <blockquote class="text">
3817 <p>in case it failed, providing an appropriate error code and
3818 error message
3819 </p>
3820 </blockquote>
3821
3822
3823 </blockquote><p>
3824
3825 </p>
3826 <p>Example:
3827 </p>
3828 <p>
3829 </p>
3830 <blockquote class="text">
3831 <p>
3832 </p>
3833 </blockquote><p>
3834
3835 </p>
3836 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3837 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3838 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3839 Getting amount of available engines</h3>
3840
3841 <p>The front-end can ask for the number of available engines by sending the following command:
3842 </p>
3843 <p>
3844 </p>
3845 <blockquote class="text">
3846 <p>GET AVAILABLE_ENGINES
3847 </p>
3848 </blockquote><p>
3849
3850 </p>
3851 <p>Possible Answers:
3852 </p>
3853 <p>
3854 </p>
3855 <blockquote class="text">
3856 <p>LinuxSampler will answer by sending the number of available engines.
3857 </p>
3858 </blockquote><p>
3859
3860 </p>
3861 <p>Example:
3862 </p>
3863 <p>
3864 </p>
3865 <blockquote class="text">
3866 <p>C: "GET AVAILABLE_ENGINES"
3867 </p>
3868 <p>S: "4"
3869 </p>
3870 </blockquote><p>
3871
3872 </p>
3873 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3874 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3875 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3876 Getting all available engines</h3>
3877
3878 <p>The front-end can ask for a list of all available engines by sending the following command:
3879 </p>
3880 <p>
3881 </p>
3882 <blockquote class="text">
3883 <p>LIST AVAILABLE_ENGINES
3884 </p>
3885 </blockquote><p>
3886
3887 </p>
3888 <p>Possible Answers:
3889 </p>
3890 <p>
3891 </p>
3892 <blockquote class="text">
3893 <p>LinuxSampler will answer by sending a comma separated list
3894 of the engines' names encapsulated into apostrophes (').
3895 Engine names can consist of lower and upper cases,
3896 digits and underlines ("_" character).
3897 </p>
3898 </blockquote><p>
3899
3900 </p>
3901 <p>Example:
3902 </p>
3903 <p>
3904 </p>
3905 <blockquote class="text">
3906 <p>C: "LIST AVAILABLE_ENGINES"
3907 </p>
3908 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3909 </p>
3910 </blockquote><p>
3911
3912 </p>
3913 <a name="GET ENGINE INFO"></a><br /><hr />
3914 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3915 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3916 Getting information about an engine</h3>
3917
3918 <p>The front-end can ask for information about a specific engine by
3919 sending the following command:
3920 </p>
3921 <p>
3922 </p>
3923 <blockquote class="text">
3924 <p>GET ENGINE INFO &lt;engine-name&gt;
3925 </p>
3926 </blockquote><p>
3927
3928 </p>
3929 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3930 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3931 </p>
3932 <p>Possible Answers:
3933 </p>
3934 <p>
3935 </p>
3936 <blockquote class="text">
3937 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3938 Each answer line begins with the information category name
3939 followed by a colon and then a space character &lt;SP&gt; and finally
3940 the info character string to that info category. At the moment
3941 the following categories are defined:
3942 </p>
3943 <p>
3944 </p>
3945 <blockquote class="text">
3946 <p>DESCRIPTION -
3947 </p>
3948 <blockquote class="text">
3949 <p>arbitrary description text about the engine
3950 (note that the character string may contain
3951 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3952 </p>
3953 </blockquote>
3954
3955
3956 <p>VERSION -
3957 </p>
3958 <blockquote class="text">
3959 <p>arbitrary character string regarding the engine's version
3960 </p>
3961 </blockquote>
3962
3963
3964 </blockquote>
3965
3966
3967 </blockquote><p>
3968
3969 </p>
3970 <p>The mentioned fields above don't have to be in particular order.
3971 </p>
3972 <p>Example:
3973 </p>
3974 <p>
3975 </p>
3976 <blockquote class="text">
3977 <p>C: "GET ENGINE INFO JoesCustomEngine"
3978 </p>
3979 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3980 </p>
3981 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3982 </p>
3983 <p>&nbsp;&nbsp;&nbsp;"."
3984 </p>
3985 </blockquote><p>
3986
3987 </p>
3988 <a name="GET CHANNEL INFO"></a><br /><hr />
3989 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3990 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3991 Getting sampler channel information</h3>
3992
3993 <p>The front-end can ask for the current settings of a sampler channel
3994 by sending the following command:
3995 </p>
3996 <p>
3997 </p>
3998 <blockquote class="text">
3999 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4000 </p>
4001 </blockquote><p>
4002
4003 </p>
4004 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4005 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>
4006 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.
4007 </p>
4008 <p>Possible Answers:
4009 </p>
4010 <p>
4011 </p>
4012 <blockquote class="text">
4013 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4014 Each answer line begins with the settings category name
4015 followed by a colon and then a space character &lt;SP&gt; and finally
4016 the info character string to that setting category. At the
4017 moment the following categories are defined:
4018 </p>
4019 <p>
4020 </p>
4021 <blockquote class="text">
4022 <p>ENGINE_NAME -
4023 </p>
4024 <blockquote class="text">
4025 <p>name of the engine that is associated with the sampler
4026 channel, "NONE" if there's no engine associated yet for
4027 this sampler channel
4028 </p>
4029 </blockquote>
4030
4031
4032 <p>AUDIO_OUTPUT_DEVICE -
4033 </p>
4034 <blockquote class="text">
4035 <p>numerical ID of the audio output device which is
4036 currently connected to this sampler channel to output
4037 the audio signal, "-1" if there's no device
4038 connected to this sampler channel
4039 </p>
4040 </blockquote>
4041
4042
4043 <p>AUDIO_OUTPUT_CHANNELS -
4044 </p>
4045 <blockquote class="text">
4046 <p>number of output channels the sampler channel offers
4047 (dependent to used sampler engine and loaded instrument)
4048 </p>
4049 </blockquote>
4050
4051
4052 <p>AUDIO_OUTPUT_ROUTING -
4053 </p>
4054 <blockquote class="text">
4055 <p>comma separated list which reflects to which audio
4056 channel of the selected audio output device each
4057 sampler output channel is routed to, e.g. "0,3" would
4058 mean the engine's output channel 0 is routed to channel
4059 0 of the audio output device and the engine's output
4060 channel 1 is routed to the channel 3 of the audio
4061 output device
4062 </p>
4063 </blockquote>
4064
4065
4066 <p>INSTRUMENT_FILE -
4067 </p>
4068 <blockquote class="text">
4069 <p>the file name of the loaded instrument, "NONE" if
4070 there's no instrument yet loaded for this sampler
4071 channel (note: since LSCP 1.2 this path may contain
4072 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4073 </p>
4074 </blockquote>
4075
4076
4077 <p>INSTRUMENT_NR -
4078 </p>
4079 <blockquote class="text">
4080 <p>the instrument index number of the loaded instrument,
4081 "-1" if there's no instrument loaded for this sampler
4082 channel
4083 </p>
4084 </blockquote>
4085
4086
4087 <p>INSTRUMENT_NAME -
4088 </p>
4089 <blockquote class="text">
4090 <p>the instrument name of the loaded instrument
4091 (note: since LSCP 1.2 this character string may contain
4092 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4093 </p>
4094 </blockquote>
4095
4096
4097 <p>INSTRUMENT_STATUS -
4098 </p>
4099 <blockquote class="text">
4100 <p>Integer values 0 to 100 indicating loading progress
4101 percentage for the instrument. Negative
4102 value indicates a loading exception (also returns "-1" in case no
4103 instrument was yet to be loaded on the sampler channel).
4104 Value of 100 indicates that the instrument is fully
4105 loaded.
4106 </p>
4107 </blockquote>
4108
4109
4110 <p>MIDI_INPUT_DEVICE -
4111 </p>
4112 <blockquote class="text">
4113 <p>numerical ID of the MIDI input device which is
4114 currently connected to this sampler channel to deliver
4115 MIDI input commands, "-1" if there's no device
4116 connected to this sampler channel
4117 </p>
4118 </blockquote>
4119
4120
4121 <p>MIDI_INPUT_PORT -
4122 </p>
4123 <blockquote class="text">
4124 <p>port number of the MIDI input device (in case a
4125 MIDI device was already assigned to the sampler
4126 channel)
4127 </p>
4128 </blockquote>
4129
4130
4131 <p>MIDI_INPUT_CHANNEL -
4132 </p>
4133 <blockquote class="text">
4134 <p>the MIDI input channel number this sampler channel
4135 should listen to or "ALL" to listen on all MIDI channels
4136 </p>
4137 </blockquote>
4138
4139
4140 <p>VOLUME -
4141 </p>
4142 <blockquote class="text">
4143 <p>optionally dotted number for the channel volume factor
4144 (where a value &lt; 1.0 means attenuation and a value >
4145 1.0 means amplification)
4146 </p>
4147 </blockquote>
4148
4149
4150 <p>MUTE -
4151 </p>
4152 <blockquote class="text">
4153 <p>Determines whether the channel is muted, "true" if the
4154 channel is muted, "false" if the channel is not muted, and
4155 "MUTED_BY_SOLO" if the channel is muted because of the
4156 presence of a solo channel and will be unmuted when
4157 there are no solo channels left
4158 </p>
4159 </blockquote>
4160
4161
4162 <p>SOLO -
4163 </p>
4164 <blockquote class="text">
4165 <p>Determines whether this is a solo channel, "true" if
4166 the channel is a solo channel; "false" otherwise
4167 </p>
4168 </blockquote>
4169
4170
4171 <p>MIDI_INSTRUMENT_MAP -
4172 </p>
4173 <blockquote class="text">
4174 <p>Determines to which MIDI instrument map this sampler
4175 channel is assigned to. Read chapter
4176 <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>
4177 for a list of possible values.
4178 </p>
4179 </blockquote>
4180
4181
4182 </blockquote>
4183
4184
4185 </blockquote><p>
4186
4187 </p>
4188 <p>The mentioned fields above don't have to be in particular order.
4189 </p>
4190 <p>Example:
4191 </p>
4192 <p>
4193 </p>
4194 <blockquote class="text">
4195 <p>C: "GET CHANNEL INFO 34"
4196 </p>
4197 <p>S: "ENGINE_NAME: GigEngine"
4198 </p>
4199 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4200 </p>
4201 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4202 </p>
4203 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4204 </p>
4205 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4206 </p>
4207 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4208 </p>
4209 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4210 </p>
4211 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4212 </p>
4213 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4214 </p>
4215 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4216 </p>
4217 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4218 </p>
4219 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4220 </p>
4221 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4222 </p>
4223 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4224 </p>
4225 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4226 </p>
4227 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4228 </p>
4229 <p>&nbsp;&nbsp;&nbsp;"."
4230 </p>
4231 </blockquote><p>
4232
4233 </p>
4234 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4235 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4236 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4237 Current number of active voices</h3>
4238
4239 <p>The front-end can ask for the current number of active voices on a
4240 sampler channel by sending the following command:
4241 </p>
4242 <p>
4243 </p>
4244 <blockquote class="text">
4245 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4246 </p>
4247 </blockquote><p>
4248
4249 </p>
4250 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4251 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>
4252 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.
4253 </p>
4254 <p>Possible Answers:
4255 </p>
4256 <p>
4257 </p>
4258 <blockquote class="text">
4259 <p>LinuxSampler will answer by returning the number of active
4260 voices on that channel.
4261 </p>
4262 </blockquote><p>
4263
4264 </p>
4265 <p>Example:
4266 </p>
4267 <p>
4268 </p>
4269 <blockquote class="text">
4270 <p>
4271 </p>
4272 </blockquote><p>
4273
4274 </p>
4275 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4276 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4277 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4278 Current number of active disk streams</h3>
4279
4280 <p>The front-end can ask for the current number of active disk streams
4281 on a sampler channel by sending the following command:
4282 </p>
4283 <p>
4284 </p>
4285 <blockquote class="text">
4286 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4287 </p>
4288 </blockquote><p>
4289
4290 </p>
4291 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4292 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>
4293 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.
4294 </p>
4295 <p>Possible Answers:
4296 </p>
4297 <p>
4298 </p>
4299 <blockquote class="text">
4300 <p>LinuxSampler will answer by returning the number of active
4301 disk streams on that channel in case the engine supports disk
4302 streaming, if the engine doesn't support disk streaming it will
4303 return "NA" for not available.
4304 </p>
4305 </blockquote><p>
4306
4307 </p>
4308 <p>Example:
4309 </p>
4310 <p>
4311 </p>
4312 <blockquote class="text">
4313 <p>
4314 </p>
4315 </blockquote><p>
4316
4317 </p>
4318 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4319 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4320 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4321 Current fill state of disk stream buffers</h3>
4322
4323 <p>The front-end can ask for the current fill state of all disk streams
4324 on a sampler channel by sending the following command:
4325 </p>
4326 <p>
4327 </p>
4328 <blockquote class="text">
4329 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4330 </p>
4331 </blockquote><p>
4332
4333 </p>
4334 <p>to get the fill state in bytes or
4335 </p>
4336 <p>
4337 </p>
4338 <blockquote class="text">
4339 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4340 </p>
4341 </blockquote><p>
4342
4343 </p>
4344 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4345 sampler channel number the front-end is interested in
4346 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>
4347 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.
4348 </p>
4349 <p>Possible Answers:
4350 </p>
4351 <p>
4352 </p>
4353 <blockquote class="text">
4354 <p>LinuxSampler will either answer by returning a comma separated
4355 string with the fill state of all disk stream buffers on that
4356 channel or an empty line if there are no active disk streams or
4357 "NA" for *not available* in case the engine which is deployed
4358 doesn't support disk streaming. Each entry in the answer list
4359 will begin with the stream's ID in brackets followed by the
4360 numerical representation of the fill size (either in bytes or
4361 percentage). Note: due to efficiency reasons the fill states in
4362 the response are not in particular order, thus the front-end has
4363 to sort them by itself if necessary.
4364 </p>
4365 </blockquote><p>
4366
4367 </p>
4368 <p>Examples:
4369 </p>
4370 <p>
4371 </p>
4372 <blockquote class="text">
4373 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4374 </p>
4375 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4376 </p>
4377 </blockquote><p>
4378
4379 </p>
4380 <blockquote class="text">
4381 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4382 </p>
4383 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4384 </p>
4385 </blockquote><p>
4386
4387 </p>
4388 <blockquote class="text">
4389 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4390 </p>
4391 <p>S: ""
4392 </p>
4393 </blockquote><p>
4394
4395 </p>
4396 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4397 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4398 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4399 Setting audio output device</h3>
4400
4401 <p>The front-end can set the audio output device on a specific sampler
4402 channel by sending the following command:
4403 </p>
4404 <p>
4405 </p>
4406 <blockquote class="text">
4407 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4408 </p>
4409 </blockquote><p>
4410
4411 </p>
4412 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4413 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>
4414 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
4415 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4416 <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>
4417 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>
4418 command.
4419 </p>
4420 <p>Possible Answers:
4421 </p>
4422 <p>
4423 </p>
4424 <blockquote class="text">
4425 <p>"OK" -
4426 </p>
4427 <blockquote class="text">
4428 <p>on success
4429 </p>
4430 </blockquote>
4431
4432
4433 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4434 </p>
4435 <blockquote class="text">
4436 <p>if audio output device was set, but there are noteworthy
4437 issue(s) related, providing an appropriate warning code and
4438 warning message
4439 </p>
4440 </blockquote>
4441
4442
4443 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4444 </p>
4445 <blockquote class="text">
4446 <p>in case it failed, providing an appropriate error code and error message
4447 </p>
4448 </blockquote>
4449
4450
4451 </blockquote><p>
4452
4453 </p>
4454 <p>Examples:
4455 </p>
4456 <p>
4457 </p>
4458 <blockquote class="text">
4459 <p>
4460 </p>
4461 </blockquote><p>
4462
4463 </p>
4464 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4465 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4466 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4467 Setting audio output type</h3>
4468
4469 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4470 </p>
4471 <p>The front-end can alter the audio output type on a specific sampler
4472 channel by sending the following command:
4473 </p>
4474 <p>
4475 </p>
4476 <blockquote class="text">
4477 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4478 </p>
4479 </blockquote><p>
4480
4481 </p>
4482 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4483 &lt;sampler-channel&gt; is the respective sampler channel number.
4484 </p>
4485 <p>Possible Answers:
4486 </p>
4487 <p>
4488 </p>
4489 <blockquote class="text">
4490 <p>"OK" -
4491 </p>
4492 <blockquote class="text">
4493 <p>on success
4494 </p>
4495 </blockquote>
4496
4497
4498 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4499 </p>
4500 <blockquote class="text">
4501 <p>if audio output type was set, but there are noteworthy
4502 issue(s) related, providing an appropriate warning code and
4503 warning message
4504 </p>
4505 </blockquote>
4506
4507
4508 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4509 </p>
4510 <blockquote class="text">
4511 <p>in case it failed, providing an appropriate error code and error message
4512 </p>
4513 </blockquote>
4514
4515
4516 </blockquote><p>
4517
4518 </p>
4519 <p>Examples:
4520 </p>
4521 <p>
4522 </p>
4523 <blockquote class="text">
4524 <p>
4525 </p>
4526 </blockquote><p>
4527
4528 </p>
4529 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4530 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4531 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4532 Setting audio output channel</h3>
4533
4534 <p>The front-end can alter the audio output channel on a specific
4535 sampler channel by sending the following command:
4536 </p>
4537 <p>
4538 </p>
4539 <blockquote class="text">
4540 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4541 </p>
4542 </blockquote><p>
4543
4544 </p>
4545 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4546 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>
4547 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
4548 numerical ID of the sampler channel's audio output channel which should be
4549 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4550 output device where &lt;audio-out&gt; should be routed to.
4551 </p>
4552 <p>Possible Answers:
4553 </p>
4554 <p>
4555 </p>
4556 <blockquote class="text">
4557 <p>"OK" -
4558 </p>
4559 <blockquote class="text">
4560 <p>on success
4561 </p>
4562 </blockquote>
4563
4564
4565 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4566 </p>
4567 <blockquote class="text">
4568 <p>if audio output channel was set, but there are noteworthy
4569 issue(s) related, providing an appropriate warning code and
4570 warning message
4571 </p>
4572 </blockquote>
4573
4574
4575 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4576 </p>
4577 <blockquote class="text">
4578 <p>in case it failed, providing an appropriate error code and error message
4579 </p>
4580 </blockquote>
4581
4582
4583 </blockquote><p>
4584
4585 </p>
4586 <p>Examples:
4587 </p>
4588 <p>
4589 </p>
4590 <blockquote class="text">
4591 <p>
4592 </p>
4593 </blockquote><p>
4594
4595 </p>
4596 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4597 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4598 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4599 Setting MIDI input device</h3>
4600
4601 <p>The front-end can set the MIDI input device on a specific sampler
4602 channel by sending the following command:
4603 </p>
4604 <p>
4605 </p>
4606 <blockquote class="text">
4607 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4608 </p>
4609 </blockquote><p>
4610
4611 </p>
4612 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4613 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>
4614 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
4615 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4616 <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>
4617 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.
4618 </p>
4619 <p>Possible Answers:
4620 </p>
4621 <p>
4622 </p>
4623 <blockquote class="text">
4624 <p>"OK" -
4625 </p>
4626 <blockquote class="text">
4627 <p>on success
4628 </p>
4629 </blockquote>
4630
4631
4632 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4633 </p>
4634 <blockquote class="text">
4635 <p>if MIDI input device was set, but there are noteworthy
4636 issue(s) related, providing an appropriate warning code and
4637 warning message
4638 </p>
4639 </blockquote>
4640
4641
4642 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4643 </p>
4644 <blockquote class="text">
4645 <p>in case it failed, providing an appropriate error code and error message
4646 </p>
4647 </blockquote>
4648
4649
4650 </blockquote><p>
4651
4652 </p>
4653 <p>Examples:
4654 </p>
4655 <p>
4656 </p>
4657 <blockquote class="text">
4658 <p>
4659 </p>
4660 </blockquote><p>
4661
4662 </p>
4663 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4664 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4665 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4666 Setting MIDI input type</h3>
4667
4668 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4669 </p>
4670 <p>The front-end can alter the MIDI input type on a specific sampler
4671 channel by sending the following command:
4672 </p>
4673 <p>
4674 </p>
4675 <blockquote class="text">
4676 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4677 </p>
4678 </blockquote><p>
4679
4680 </p>
4681 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4682 &lt;sampler-channel&gt; is the respective sampler channel number.
4683 </p>
4684 <p>Possible Answers:
4685 </p>
4686 <p>
4687 </p>
4688 <blockquote class="text">
4689 <p>"OK" -
4690 </p>
4691 <blockquote class="text">
4692 <p>on success
4693 </p>
4694 </blockquote>
4695
4696
4697 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4698 </p>
4699 <blockquote class="text">
4700 <p>if MIDI input type was set, but there are noteworthy
4701 issue(s) related, providing an appropriate warning code and
4702 warning message
4703 </p>
4704 </blockquote>
4705
4706
4707 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4708 </p>
4709 <blockquote class="text">
4710 <p>in case it failed, providing an appropriate error code and error message
4711 </p>
4712 </blockquote>
4713
4714
4715 </blockquote><p>
4716
4717 </p>
4718 <p>Examples:
4719 </p>
4720 <p>
4721 </p>
4722 <blockquote class="text">
4723 <p>
4724 </p>
4725 </blockquote><p>
4726
4727 </p>
4728 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4729 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4730 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4731 Setting MIDI input port</h3>
4732
4733 <p>The front-end can alter the MIDI input port on a specific sampler
4734 channel by sending the following command:
4735 </p>
4736 <p>
4737 </p>
4738 <blockquote class="text">
4739 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4740 </p>
4741 </blockquote><p>
4742
4743 </p>
4744 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4745 MIDI input device connected to the sampler channel given by
4746 &lt;sampler-channel&gt;.
4747 </p>
4748 <p>Possible Answers:
4749 </p>
4750 <p>
4751 </p>
4752 <blockquote class="text">
4753 <p>"OK" -
4754 </p>
4755 <blockquote class="text">
4756 <p>on success
4757 </p>
4758 </blockquote>
4759
4760
4761 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4762 </p>
4763 <blockquote class="text">
4764 <p>if MIDI input port was set, but there are noteworthy
4765 issue(s) related, providing an appropriate warning code and
4766 warning message
4767 </p>
4768 </blockquote>
4769
4770
4771 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4772 </p>
4773 <blockquote class="text">
4774 <p>in case it failed, providing an appropriate error code and error message
4775 </p>
4776 </blockquote>
4777
4778
4779 </blockquote><p>
4780
4781 </p>
4782 <p>Examples:
4783 </p>
4784 <p>
4785 </p>
4786 <blockquote class="text">
4787 <p>
4788 </p>
4789 </blockquote><p>
4790
4791 </p>
4792 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4793 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4794 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4795 Setting MIDI input channel</h3>
4796
4797 <p>The front-end can alter the MIDI channel a sampler channel should
4798 listen to by sending the following command:
4799 </p>
4800 <p>
4801 </p>
4802 <blockquote class="text">
4803 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4804 </p>
4805 </blockquote><p>
4806
4807 </p>
4808 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4809 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4810 channels.
4811 </p>
4812 <p>Possible Answers:
4813 </p>
4814 <p>
4815 </p>
4816 <blockquote class="text">
4817 <p>"OK" -
4818 </p>
4819 <blockquote class="text">
4820 <p>on success
4821 </p>
4822 </blockquote>
4823
4824
4825 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4826 </p>
4827 <blockquote class="text">
4828 <p>if MIDI input channel was set, but there are noteworthy
4829 issue(s) related, providing an appropriate warning code and
4830 warning message
4831 </p>
4832 </blockquote>
4833
4834
4835 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4836 </p>
4837 <blockquote class="text">
4838 <p>in case it failed, providing an appropriate error code and error message
4839 </p>
4840 </blockquote>
4841
4842
4843 </blockquote><p>
4844
4845 </p>
4846 <p>Examples:
4847 </p>
4848 <p>
4849 </p>
4850 <blockquote class="text">
4851 <p>
4852 </p>
4853 </blockquote><p>
4854
4855 </p>
4856 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4857 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4858 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4859 Setting channel volume</h3>
4860
4861 <p>The front-end can alter the volume of a sampler channel by sending
4862 the following command:
4863 </p>
4864 <p>
4865 </p>
4866 <blockquote class="text">
4867 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4868 </p>
4869 </blockquote><p>
4870
4871 </p>
4872 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4873 smaller than 1.0 means attenuation, whereas a value greater than
4874 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4875 channel where this volume factor should be set.
4876 </p>
4877 <p>Possible Answers:
4878 </p>
4879 <p>
4880 </p>
4881 <blockquote class="text">
4882 <p>"OK" -
4883 </p>
4884 <blockquote class="text">
4885 <p>on success
4886 </p>
4887 </blockquote>
4888
4889
4890 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4891 </p>
4892 <blockquote class="text">
4893 <p>if channel volume was set, but there are noteworthy
4894 issue(s) related, providing an appropriate warning code and
4895 warning message
4896 </p>
4897 </blockquote>
4898
4899
4900 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4901 </p>
4902 <blockquote class="text">
4903 <p>in case it failed, providing an appropriate error code and error message
4904 </p>
4905 </blockquote>
4906
4907
4908 </blockquote><p>
4909
4910 </p>
4911 <p>Examples:
4912 </p>
4913 <p>
4914 </p>
4915 <blockquote class="text">
4916 <p>
4917 </p>
4918 </blockquote><p>
4919
4920 </p>
4921 <a name="SET CHANNEL MUTE"></a><br /><hr />
4922 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4923 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4924 Muting a sampler channel</h3>
4925
4926 <p>The front-end can mute/unmute a specific sampler
4927 channel by sending the following command:
4928 </p>
4929 <p>
4930 </p>
4931 <blockquote class="text">
4932 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4933 </p>
4934 </blockquote><p>
4935
4936 </p>
4937 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4938 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>
4939 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
4940 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4941 to unmute the channel.
4942 </p>
4943 <p>Possible Answers:
4944 </p>
4945 <p>
4946 </p>
4947 <blockquote class="text">
4948 <p>"OK" -
4949 </p>
4950 <blockquote class="text">
4951 <p>on success
4952 </p>
4953 </blockquote>
4954
4955
4956 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4957 </p>
4958 <blockquote class="text">
4959 <p>if the channel was muted/unmuted, but there are noteworthy
4960 issue(s) related, providing an appropriate warning code and
4961 warning message
4962 </p>
4963 </blockquote>
4964
4965
4966 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4967 </p>
4968 <blockquote class="text">
4969 <p>in case it failed, providing an appropriate error code and error message
4970 </p>
4971 </blockquote>
4972
4973
4974 </blockquote><p>
4975
4976 </p>
4977 <p>Examples:
4978 </p>
4979 <p>
4980 </p>
4981 <blockquote class="text">
4982 <p>
4983 </p>
4984 </blockquote><p>
4985
4986 </p>
4987 <a name="SET CHANNEL SOLO"></a><br /><hr />
4988 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4989 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4990 Soloing a sampler channel</h3>
4991
4992 <p>The front-end can solo/unsolo a specific sampler channel
4993 by sending the following command:
4994 </p>
4995 <p>
4996 </p>
4997 <blockquote class="text">
4998 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4999 </p>
5000 </blockquote><p>
5001
5002 </p>
5003 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5004 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>
5005 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
5006 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5007 to unsolo the channel.
5008 </p>
5009 <p>Possible Answers:
5010 </p>
5011 <p>
5012 </p>
5013 <blockquote class="text">
5014 <p>"OK" -
5015 </p>
5016 <blockquote class="text">
5017 <p>on success
5018 </p>
5019 </blockquote>
5020
5021
5022 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5023 </p>
5024 <blockquote class="text">
5025 <p>if the channel was soloed/unsoloed, but there are noteworthy
5026 issue(s) related, providing an appropriate warning code and
5027 warning message
5028 </p>
5029 </blockquote>
5030
5031
5032 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5033 </p>
5034 <blockquote class="text">
5035 <p>in case it failed, providing an appropriate error code and error message
5036 </p>
5037 </blockquote>
5038
5039
5040 </blockquote><p>
5041
5042 </p>
5043 <p>Examples:
5044 </p>
5045 <p>
5046 </p>
5047 <blockquote class="text">
5048 <p>
5049 </p>
5050 </blockquote><p>
5051
5052 </p>
5053 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5054 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5055 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5056 Assigning a MIDI instrument map to a sampler channel</h3>
5057
5058 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5059 by sending the following command:
5060 </p>
5061 <p>
5062 </p>
5063 <blockquote class="text">
5064 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5065 </p>
5066 </blockquote><p>
5067
5068 </p>
5069 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5070 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>
5071 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
5072 &lt;map&gt; can have the following possibilites:
5073 </p>
5074 <p>
5075 </p>
5076 <blockquote class="text">
5077 <p>"NONE" -
5078 </p>
5079 <blockquote class="text">
5080 <p>This is the default setting. In this case
5081 the sampler channel is not assigned any MIDI
5082 instrument map and thus will ignore all MIDI
5083 program change messages.
5084 </p>
5085 </blockquote>
5086
5087
5088 <p>"DEFAULT" -
5089 </p>
5090 <blockquote class="text">
5091 <p>The sampler channel will always use the
5092 default MIDI instrument map to handle MIDI
5093 program change messages.
5094 </p>
5095 </blockquote>
5096
5097
5098 <p>numeric ID -
5099 </p>
5100 <blockquote class="text">
5101 <p>You can assign a specific MIDI instrument map
5102 by replacing &lt;map&gt; with the respective numeric
5103 ID of the MIDI instrument map as returned by the
5104 <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>
5105 command. Once that map will be deleted, the sampler
5106 channel would fall back to "NONE".
5107 </p>
5108 </blockquote>
5109
5110
5111 </blockquote><p>
5112
5113 </p>
5114 <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>
5115 for details regarding MIDI instrument mapping.
5116 </p>
5117 <p>Possible Answers:
5118 </p>
5119 <p>
5120 </p>
5121 <blockquote class="text">
5122 <p>"OK" -
5123 </p>
5124 <blockquote class="text">
5125 <p>on success
5126 </p>
5127 </blockquote>
5128
5129
5130 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5131 </p>
5132 <blockquote class="text">
5133 <p>in case it failed, providing an appropriate error code and error message
5134 </p>
5135 </blockquote>
5136
5137
5138 </blockquote><p>
5139
5140 </p>
5141 <p>Examples:
5142 </p>
5143 <p>
5144 </p>
5145 <blockquote class="text">
5146 <p>
5147 </p>
5148 </blockquote><p>
5149
5150 </p>
5151 <a name="CREATE FX_SEND"></a><br /><hr />
5152 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5153 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5154 Adding an effect send to a sampler channel</h3>
5155
5156 <p>The front-end can create an additional effect send on a specific sampler channel
5157 by sending the following command:
5158 </p>
5159 <p>
5160 </p>
5161 <blockquote class="text">
5162 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5163 </p>
5164 </blockquote><p>
5165
5166 </p>
5167 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5168 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>
5169 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
5170 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5171 is a number between 0..127 defining the MIDI controller which can alter the
5172 effect send level and &lt;name&gt; is an optional argument defining a name
5173 for the effect send entity. The name does not have to be unique, but MUST be
5174 encapsulated into apostrophes and supports escape sequences as described in chapter
5175 "<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>".
5176 </p>
5177 <p>By default, that is as initial routing, the effect send's audio channels
5178 are automatically routed to the last audio channels of the sampler channel's
5179 audio output device, that way you can i.e. first increase the amount of audio
5180 channels on the audio output device for having dedicated effect send output
5181 channels and when "CREATE FX_SEND" is called, those channels will automatically
5182 be picked. You can alter the destination channels however with
5183 <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>.
5184
5185 </p>
5186 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5187 sends on a sampler channel will decrease runtime performance, because for implementing channel
5188 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5189 the voices and route the audio signal afterwards to the master outputs and effect send
5190 outputs (along with their respective effect send levels). A sampler channel without effect
5191 sends however can mix its voices directly into the audio output devices's audio buffers
5192 and is thus faster.
5193
5194 </p>
5195 <p>Possible Answers:
5196 </p>
5197 <p>
5198 </p>
5199 <blockquote class="text">
5200 <p>"OK[&lt;fx-send-id&gt;]" -
5201 </p>
5202 <blockquote class="text">
5203 <p>in case a new effect send could be added to the
5204 sampler channel, where &lt;fx-send-id&gt; reflects the
5205 unique ID of the newly created effect send entity
5206 </p>
5207 </blockquote>
5208
5209
5210 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5211 </p>
5212 <blockquote class="text">
5213 <p>when a new effect send could not be added, i.e.
5214 due to invalid parameters
5215 </p>
5216 </blockquote>
5217
5218
5219 </blockquote><p>
5220
5221 </p>
5222 <p>Examples:
5223 </p>
5224 <p>
5225 </p>
5226 <blockquote class="text">
5227 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5228 </p>
5229 <p>S: "OK[0]"
5230 </p>
5231 </blockquote><p>
5232
5233 </p>
5234 <p>
5235 </p>
5236 <blockquote class="text">
5237 <p>C: "CREATE FX_SEND 0 93"
5238 </p>
5239 <p>S: "OK[1]"
5240 </p>
5241 </blockquote><p>
5242
5243 </p>
5244 <a name="DESTROY FX_SEND"></a><br /><hr />
5245 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5246 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5247 Removing an effect send from a sampler channel</h3>
5248
5249 <p>The front-end can remove an existing effect send on a specific sampler channel
5250 by sending the following command:
5251 </p>
5252 <p>
5253 </p>
5254 <blockquote class="text">
5255 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5256 </p>
5257 </blockquote><p>
5258
5259 </p>
5260 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5261 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>
5262 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
5263 sampler channel from which the effect send should be removed from and
5264 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5265 <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>
5266 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.
5267 </p>
5268 <p>Possible Answers:
5269 </p>
5270 <p>
5271 </p>
5272 <blockquote class="text">
5273 <p>"OK" -
5274 </p>
5275 <blockquote class="text">
5276 <p>on success
5277 </p>
5278 </blockquote>
5279
5280
5281 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5282 </p>
5283 <blockquote class="text">
5284 <p>in case it failed, providing an appropriate error code and
5285 error message
5286 </p>
5287 </blockquote>
5288
5289
5290 </blockquote><p>
5291
5292 </p>
5293 <p>Example:
5294 </p>
5295 <p>
5296 </p>
5297 <blockquote class="text">
5298 <p>C: "DESTROY FX_SEND 0 0"
5299 </p>
5300 <p>S: "OK"
5301 </p>
5302 </blockquote><p>
5303
5304 </p>
5305 <a name="GET FX_SENDS"></a><br /><hr />
5306 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5307 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5308 Getting amount of effect sends on a sampler channel</h3>
5309
5310 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5311 by sending the following command:
5312 </p>
5313 <p>
5314 </p>
5315 <blockquote class="text">
5316 <p>GET FX_SENDS &lt;sampler-channel&gt;
5317 </p>
5318 </blockquote><p>
5319
5320 </p>
5321 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5322 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>
5323 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.
5324 </p>
5325 <p>Possible Answers:
5326 </p>
5327 <p>
5328 </p>
5329 <blockquote class="text">
5330 <p>The sampler will answer by returning the number of effect
5331 sends on the given sampler channel.
5332 </p>
5333 </blockquote><p>
5334
5335 </p>
5336 <p>Example:
5337 </p>
5338 <p>
5339 </p>
5340 <blockquote class="text">
5341 <p>C: "GET FX_SENDS 0"
5342 </p>
5343 <p>S: "2"
5344 </p>
5345 </blockquote><p>
5346
5347 </p>
5348 <a name="LIST FX_SENDS"></a><br /><hr />
5349 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5350 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5351 Listing all effect sends on a sampler channel</h3>
5352
5353 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5354 by sending the following command:
5355 </p>
5356 <p>
5357 </p>
5358 <blockquote class="text">
5359 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5360 </p>
5361 </blockquote><p>
5362
5363 </p>
5364 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5365 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>
5366 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.
5367 </p>
5368 <p>Possible Answers:
5369 </p>
5370 <p>
5371 </p>
5372 <blockquote class="text">
5373 <p>The sampler will answer by returning a comma separated list
5374 with all effect sends' numerical IDs on the given sampler
5375 channel.
5376 </p>
5377 </blockquote><p>
5378
5379 </p>
5380 <p>Examples:
5381 </p>
5382 <p>
5383 </p>
5384 <blockquote class="text">
5385 <p>C: "LIST FX_SENDS 0"
5386 </p>
5387 <p>S: "0,1"
5388 </p>
5389 </blockquote><p>
5390
5391 </p>
5392 <p>
5393 </p>
5394 <blockquote class="text">
5395 <p>C: "LIST FX_SENDS 1"
5396 </p>
5397 <p>S: ""
5398 </p>
5399 </blockquote><p>
5400
5401 </p>
5402 <a name="GET FX_SEND INFO"></a><br /><hr />
5403 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5404 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5405 Getting effect send information</h3>
5406
5407 <p>The front-end can ask for the current settings of an effect send entity
5408 by sending the following command:
5409 </p>
5410 <p>
5411 </p>
5412 <blockquote class="text">
5413 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5414 </p>
5415 </blockquote><p>
5416
5417 </p>
5418 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5419 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>
5420 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
5421 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5422 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>
5423 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.
5424
5425 </p>
5426 <p>Possible Answers:
5427 </p>
5428 <p>
5429 </p>
5430 <blockquote class="text">
5431 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5432 Each answer line begins with the settings category name
5433 followed by a colon and then a space character &lt;SP&gt; and finally
5434 the info character string to that setting category. At the
5435 moment the following categories are defined:
5436 </p>
5437 <p>
5438 </p>
5439 <blockquote class="text">
5440 <p>NAME -
5441 </p>
5442 <blockquote class="text">
5443 <p>name of the effect send entity
5444 (note that this character string may contain
5445 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5446 </p>
5447 </blockquote>
5448
5449
5450 <p>MIDI_CONTROLLER -
5451 </p>
5452 <blockquote class="text">
5453 <p>a value between 0 and 127 reflecting the MIDI controller
5454 which is able to modify the effect send's send level
5455 </p>
5456 </blockquote>
5457
5458
5459 <p>LEVEL -
5460 </p>
5461 <blockquote class="text">
5462 <p>optionally dotted number reflecting the effect send's
5463 current send level (where a value &lt; 1.0 means attenuation
5464 and a value > 1.0 means amplification)
5465 </p>
5466 </blockquote>
5467
5468
5469 <p>AUDIO_OUTPUT_ROUTING -
5470 </p>
5471 <blockquote class="text">
5472 <p>comma separated list which reflects to which audio
5473 channel of the selected audio output device each
5474 effect send output channel is routed to, e.g. "0,3" would
5475 mean the effect send's output channel 0 is routed to channel
5476 0 of the audio output device and the effect send's output
5477 channel 1 is routed to the channel 3 of the audio
5478 output device (see
5479 <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>
5480 for details), if an internal send
5481 effect is assigned to the effect
5482 send, then this setting defines the
5483 audio channel routing to that
5484 effect instance respectively
5485 </p>
5486 </blockquote>
5487
5488
5489 <p>SEND_EFFECT -
5490 </p>
5491 <blockquote class="text">
5492 <p>destination send effect chain ID
5493 and destination effect chain
5494 position, separated by comma in the
5495 form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5496 or "NONE" if there is no send effect
5497 assigned to the effect send
5498 </p>
5499 </blockquote>
5500
5501
5502 </blockquote>
5503
5504
5505 </blockquote><p>
5506
5507 </p>
5508 <p>The mentioned fields above don't have to be in particular order.
5509 </p>
5510 <p>Example:
5511 </p>
5512 <p>
5513 </p>
5514 <blockquote class="text">
5515 <p>C: "GET FX_SEND INFO 0 0"
5516 </p>
5517 <p>S: "NAME: Reverb Send"
5518 </p>
5519 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5520 </p>
5521 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5522 </p>
5523 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5524 </p>
5525 <p>&nbsp;&nbsp;&nbsp;"."
5526 </p>
5527 </blockquote><p>
5528
5529 </p>
5530 <a name="SET FX_SEND NAME"></a><br /><hr />
5531 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5532 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5533 Changing effect send's name</h3>
5534
5535 <p>The front-end can alter the current name of an effect
5536 send entity by sending the following command:
5537 </p>
5538 <p>
5539 </p>
5540 <blockquote class="text">
5541 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5542 </p>
5543 </blockquote><p>
5544
5545 </p>
5546 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5547 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>
5548 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,
5549 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5550 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>
5551 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
5552 &lt;name&gt; is the new name of the effect send entity, which
5553 does not have to be unique (name MUST be encapsulated into apostrophes
5554 and supports escape sequences as described in chapter
5555 "<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>").
5556
5557 </p>
5558 <p>Possible Answers:
5559 </p>
5560 <p>
5561 </p>
5562 <blockquote class="text">
5563 <p>"OK" -
5564 </p>
5565 <blockquote class="text">
5566 <p>on success
5567 </p>
5568 </blockquote>
5569
5570
5571 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5572 </p>
5573 <blockquote class="text">
5574 <p>in case it failed, providing an appropriate error code and error message
5575 </p>
5576 </blockquote>
5577
5578
5579 </blockquote><p>
5580
5581 </p>
5582 <p>Example:
5583 </p>
5584 <p>
5585 </p>
5586 <blockquote class="text">
5587 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5588 </p>
5589 <p>S: "OK"
5590 </p>
5591 </blockquote><p>
5592
5593 </p>
5594 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5595 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5596 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5597 Altering effect send's audio routing</h3>
5598
5599 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5600 sampler channel by sending the following command:
5601 </p>
5602 <p>
5603 </p>
5604 <blockquote class="text">
5605 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5606 </p>
5607 </blockquote><p>
5608
5609 </p>
5610 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5611 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>
5612 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,
5613 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5614 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>
5615 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,
5616 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5617 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5618 the audio channel of the selected audio output device where &lt;audio-src&gt;
5619 should be routed to. If an internal send effect is assigned
5620 to the effect send, then this setting defines the audio
5621 channel routing to that effect instance respectively.
5622 </p>
5623 <p>Note that effect sends can only route audio to the same audio output
5624 device as assigned to the effect send's sampler channel. Also note that an
5625 effect send entity does always have exactly as much audio channels as its
5626 sampler channel. So if the sampler channel is stereo, the effect send does
5627 have two audio channels as well. Also keep in mind that the amount of audio
5628 channels on a sampler channel might be dependant not only to the deployed
5629 sampler engine on the sampler channel, but also dependant to the instrument
5630 currently loaded. However you can (effectively) turn an i.e. stereo effect
5631 send into a mono one by simply altering its audio routing appropriately.
5632 </p>
5633 <p>Possible Answers:
5634 </p>
5635 <p>
5636 </p>
5637 <blockquote class="text">
5638 <p>"OK" -
5639 </p>
5640 <blockquote class="text">
5641 <p>on success
5642 </p>
5643 </blockquote>
5644
5645
5646 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5647 </p>
5648 <blockquote class="text">
5649 <p>if audio output channel was set, but there are noteworthy
5650 issue(s) related, providing an appropriate warning code and
5651 warning message
5652 </p>
5653 </blockquote>
5654
5655
5656 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5657 </p>
5658 <blockquote class="text">
5659 <p>in case it failed, providing an appropriate error code and error message
5660 </p>
5661 </blockquote>
5662
5663
5664 </blockquote><p>
5665
5666 </p>
5667 <p>Example:
5668 </p>
5669 <p>
5670 </p>
5671 <blockquote class="text">
5672 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5673 </p>
5674 <p>S: "OK"
5675 </p>
5676 </blockquote><p>
5677
5678 </p>
5679 <a name="SET FX_SEND SEND_EFFECT"></a><br /><hr />
5680 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5681 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5682 Assigning destination effect to an effect send</h3>
5683
5684 <p>The front-end can (re-)assign a destination effect to an
5685 effect send by sending the following command:
5686 </p>
5687 <p>
5688 </p>
5689 <blockquote class="text">
5690 <p>SET FX_SEND SEND_EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
5691 </p>
5692 </blockquote><p>
5693
5694 </p>
5695 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5696 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>
5697 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,
5698 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5699 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>
5700 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,
5701 &lt;effect-chain&gt; by the numerical ID of the destination
5702 effect chain as returned by the
5703 <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>
5704 or
5705 <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>
5706 command and &lt;chain-pos&gt; reflects the exact effect
5707 chain position in the effect chain which hosts the actual
5708 destination effect.
5709 </p>
5710 <p>Possible Answers:
5711 </p>
5712 <p>
5713 </p>
5714 <blockquote class="text">
5715 <p>"OK" -
5716 </p>
5717 <blockquote class="text">
5718 <p>on success
5719 </p>
5720 </blockquote>
5721
5722
5723 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5724 </p>
5725 <blockquote class="text">
5726 <p>in case it failed, providing an appropriate error code and error message
5727 </p>
5728 </blockquote>
5729
5730
5731 </blockquote><p>
5732
5733 </p>
5734 <p>Example:
5735 </p>
5736 <p>
5737 </p>
5738 <blockquote class="text">
5739 <p>C: "SET FX_SEND SEND_EFFECT 0 0 2 5"
5740 </p>
5741 <p>S: "OK"
5742 </p>
5743 </blockquote><p>
5744
5745 </p>
5746 <a name="REMOVE FX_SEND SEND_EFFECT"></a><br /><hr />
5747 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5748 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5749 Removing destination effect from an effect send</h3>
5750
5751 <p>The front-end can (re-)assign a destination effect to an
5752 effect send by sending the following command:
5753 </p>
5754 <p>
5755 </p>
5756 <blockquote class="text">
5757 <p>REMOVE FX_SEND SEND_EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
5758 </p>
5759 </blockquote><p>
5760
5761 </p>
5762 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5763 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>
5764 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,
5765 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5766 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>
5767 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.
5768 </p>
5769 <p>After the destination effect has been removed from the
5770 effect send, the audio signal of the effect send will be
5771 routed directly to the audio output device, according to the
5772 audio channel routing setting of the effect send.
5773
5774 </p>
5775 <p>Possible Answers:
5776 </p>
5777 <p>
5778 </p>
5779 <blockquote class="text">
5780 <p>"OK" -
5781 </p>
5782 <blockquote class="text">
5783 <p>on success
5784 </p>
5785 </blockquote>
5786
5787
5788 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5789 </p>
5790 <blockquote class="text">
5791 <p>in case it failed, providing an appropriate error code and error message
5792 </p>
5793 </blockquote>
5794
5795
5796 </blockquote><p>
5797
5798 </p>
5799 <p>Example:
5800 </p>
5801 <p>
5802 </p>
5803 <blockquote class="text">
5804 <p>C: "REMOVE FX_SEND SEND_EFFECT 0 0"
5805 </p>
5806 <p>S: "OK"
5807 </p>
5808 </blockquote><p>
5809
5810 </p>
5811 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5812 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5813 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5814 Altering effect send's MIDI controller</h3>
5815
5816 <p>The front-end can alter the MIDI controller of an effect
5817 send entity by sending the following command:
5818 </p>
5819 <p>
5820 </p>
5821 <blockquote class="text">
5822 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5823 </p>
5824 </blockquote><p>
5825
5826 </p>
5827 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5828 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>
5829 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,
5830 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5831 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>
5832 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
5833 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5834 able to modify the effect send's send level.
5835 </p>
5836 <p>Possible Answers:
5837 </p>
5838 <p>
5839 </p>
5840 <blockquote class="text">
5841 <p>"OK" -
5842 </p>
5843 <blockquote class="text">
5844 <p>on success
5845 </p>
5846 </blockquote>
5847
5848
5849 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5850 </p>
5851 <blockquote class="text">
5852 <p>if MIDI controller was set, but there are noteworthy
5853 issue(s) related, providing an appropriate warning code and
5854 warning message
5855 </p>
5856 </blockquote>
5857
5858
5859 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5860 </p>
5861 <blockquote class="text">
5862 <p>in case it failed, providing an appropriate error code and error message
5863 </p>
5864 </blockquote>
5865
5866
5867 </blockquote><p>
5868
5869 </p>
5870 <p>Example:
5871 </p>
5872 <p>
5873 </p>
5874 <blockquote class="text">
5875 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5876 </p>
5877 <p>S: "OK"
5878 </p>
5879 </blockquote><p>
5880
5881 </p>
5882 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5883 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5884 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5885 Altering effect send's send level</h3>
5886
5887 <p>The front-end can alter the current send level of an effect
5888 send entity by sending the following command:
5889 </p>
5890 <p>
5891 </p>
5892 <blockquote class="text">
5893 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5894 </p>
5895 </blockquote><p>
5896
5897 </p>
5898 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5899 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>
5900 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,
5901 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5902 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>
5903 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
5904 &lt;volume&gt; is an optionally dotted positive number (a value
5905 smaller than 1.0 means attenuation, whereas a value greater than
5906 1.0 means amplification) reflecting the new send level.
5907 </p>
5908 <p>Possible Answers:
5909 </p>
5910 <p>
5911 </p>
5912 <blockquote class="text">
5913 <p>"OK" -
5914 </p>
5915 <blockquote class="text">
5916 <p>on success
5917 </p>
5918 </blockquote>
5919
5920
5921 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5922 </p>
5923 <blockquote class="text">
5924 <p>if new send level was set, but there are noteworthy
5925 issue(s) related, providing an appropriate warning code and
5926 warning message
5927 </p>
5928 </blockquote>
5929
5930
5931 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5932 </p>
5933 <blockquote class="text">
5934 <p>in case it failed, providing an appropriate error code and error message
5935 </p>
5936 </blockquote>
5937
5938
5939 </blockquote><p>
5940
5941 </p>
5942 <p>Example:
5943 </p>
5944 <p>
5945 </p>
5946 <blockquote class="text">
5947 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5948 </p>
5949 <p>S: "OK"
5950 </p>
5951 </blockquote><p>
5952
5953 </p>
5954 <a name="SEND CHANNEL MIDI_DATA"></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.36"></a><h3>6.4.36.&nbsp;
5957 Sending MIDI messages to sampler channel</h3>
5958
5959 <p>The front-end can send MIDI events to a specific sampler channel
5960 by sending the following command:
5961 </p>
5962 <p>
5963 </p>
5964 <blockquote class="text">
5965 <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&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;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
5974 specifies the MIDI message type. Currently, the following MIDI messages are supported:
5975 </p>
5976 <p>
5977 </p>
5978 <blockquote class="text">
5979 <p>"NOTE_ON" -
5980 </p>
5981 <blockquote class="text">
5982 <p>For turning on MIDI notes, where &lt;arg1&gt;
5983 specifies the key number and &lt;arg2&gt; the velocity
5984 as described in the MIDI specification.
5985 </p>
5986 </blockquote>
5987
5988
5989 <p>"NOTE_OFF" -
5990 </p>
5991 <blockquote class="text">
5992 <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
5993 specifies the key number and &lt;arg2&gt; the velocity
5994 as described in the MIDI specification.
5995 </p>
5996 </blockquote>
5997
5998
5999 <p>"CC" -
6000 </p>
6001 <blockquote class="text">
6002 <p>For changing a MIDI controller, where &lt;arg1&gt;
6003 specifies the controller number and &lt;arg2&gt; the
6004 new value of the controller as described in the Control
6005 Change section of the MIDI specification.
6006 </p>
6007 </blockquote>
6008
6009
6010 </blockquote><p>
6011
6012 </p>
6013 <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6014 and no realtime guarantee whatsoever will be made!
6015 </p>
6016 <p>Possible Answers:
6017 </p>
6018 <p>
6019 </p>
6020 <blockquote class="text">
6021 <p>"OK" -
6022 </p>
6023 <blockquote class="text">
6024 <p>on success
6025 </p>
6026 </blockquote>
6027
6028
6029 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6030 </p>
6031 <blockquote class="text">
6032 <p>in case it failed, providing an appropriate error code and error message
6033 </p>
6034 </blockquote>
6035
6036
6037 </blockquote><p>
6038
6039 </p>
6040 <p>Example:
6041 </p>
6042 <p>
6043 </p>
6044 <blockquote class="text">
6045 <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6046 </p>
6047 <p>S: "OK"
6048 </p>
6049 </blockquote><p>
6050
6051 </p>
6052 <a name="RESET CHANNEL"></a><br /><hr />
6053 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6054 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6055 Resetting a sampler channel</h3>
6056
6057 <p>The front-end can reset a particular sampler channel by sending the following command:
6058 </p>
6059 <p>
6060 </p>
6061 <blockquote class="text">
6062 <p>RESET CHANNEL &lt;sampler-channel&gt;
6063 </p>
6064 </blockquote><p>
6065
6066 </p>
6067 <p>
6068 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6069 This will cause the engine on that sampler channel, its voices and
6070 eventually disk streams and all control and status variables to be
6071 reset.
6072 </p>
6073 <p>Possible Answers:
6074 </p>
6075 <p>
6076 </p>
6077 <blockquote class="text">
6078 <p>"OK" -
6079 </p>
6080 <blockquote class="text">
6081 <p>on success
6082 </p>
6083 </blockquote>
6084
6085
6086 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6087 </p>
6088 <blockquote class="text">
6089 <p>if channel was reset, but there are noteworthy issue(s)
6090 related, providing an appropriate warning code and warning
6091 message
6092 </p>
6093 </blockquote>
6094
6095
6096 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6097 </p>
6098 <blockquote class="text">
6099 <p>in case it failed, providing an appropriate error code and
6100 error message
6101 </p>
6102 </blockquote>
6103
6104
6105 </blockquote><p>
6106
6107 </p>
6108 <p>Examples:
6109 </p>
6110 <p>
6111 </p>
6112 <blockquote class="text">
6113 <p>
6114 </p>
6115 </blockquote><p>
6116
6117 </p>
6118 <a name="anchor12"></a><br /><hr />
6119 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6120 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6121 Controlling connection</h3>
6122
6123 <p>The following commands are used to control the connection to LinuxSampler.
6124 </p>
6125 <a name="SUBSCRIBE"></a><br /><hr />
6126 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6127 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6128 Register front-end for receiving event messages</h3>
6129
6130 <p>The front-end can register itself to the LinuxSampler application to
6131 be informed about noteworthy events by sending this command:
6132 </p>
6133 <p>
6134 </p>
6135 <blockquote class="text">
6136 <p>SUBSCRIBE &lt;event-id&gt;
6137 </p>
6138 </blockquote><p>
6139
6140 </p>
6141 <p>where &lt;event-id&gt; will be replaced by the respective event that
6142 client wants to subscribe to.
6143 </p>
6144 <p>Possible Answers:
6145 </p>
6146 <p>
6147 </p>
6148 <blockquote class="text">
6149 <p>"OK" -
6150 </p>
6151 <blockquote class="text">
6152 <p>on success
6153 </p>
6154 </blockquote>
6155
6156
6157 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6158 </p>
6159 <blockquote class="text">
6160 <p>if registration succeeded, but there are noteworthy
6161 issue(s) related, providing an appropriate warning code and
6162 warning message
6163 </p>
6164 </blockquote>
6165
6166
6167 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6168 </p>
6169 <blockquote class="text">
6170 <p>in case it failed, providing an appropriate error code and
6171 error message
6172 </p>
6173 </blockquote>
6174
6175
6176 </blockquote><p>
6177
6178 </p>
6179 <p>Examples:
6180 </p>
6181 <p>
6182 </p>
6183 <blockquote class="text">
6184 <p>
6185 </p>
6186 </blockquote><p>
6187
6188 </p>
6189 <a name="UNSUBSCRIBE"></a><br /><hr />
6190 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6191 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6192 Unregister front-end for not receiving event messages</h3>
6193
6194 <p>The front-end can unregister itself if it doesn't want to receive event
6195 messages anymore by sending the following command:
6196 </p>
6197 <p>
6198 </p>
6199 <blockquote class="text">
6200 <p>UNSUBSCRIBE &lt;event-id&gt;
6201 </p>
6202 </blockquote><p>
6203
6204 </p>
6205 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6206 client doesn't want to receive anymore.
6207 </p>
6208 <p>Possible Answers:
6209 </p>
6210 <p>
6211 </p>
6212 <blockquote class="text">
6213 <p>"OK" -
6214 </p>
6215 <blockquote class="text">
6216 <p>on success
6217 </p>
6218 </blockquote>
6219
6220
6221 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6222 </p>
6223 <blockquote class="text">
6224 <p>if unregistration succeeded, but there are noteworthy
6225 issue(s) related, providing an appropriate warning code and
6226 warning message
6227 </p>
6228 </blockquote>
6229
6230
6231 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6232 </p>
6233 <blockquote class="text">
6234 <p>in case it failed, providing an appropriate error code and
6235 error message
6236 </p>
6237 </blockquote>
6238
6239
6240 </blockquote><p>
6241
6242 </p>
6243 <p>Examples:
6244 </p>
6245 <p>
6246 </p>
6247 <blockquote class="text">
6248 <p>
6249 </p>
6250 </blockquote><p>
6251
6252 </p>
6253 <a name="SET ECHO"></a><br /><hr />
6254 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6255 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6256 Enable or disable echo of commands</h3>
6257
6258 <p>To enable or disable back sending of commands to the client the following command can be used:
6259 </p>
6260 <p>
6261 </p>
6262 <blockquote class="text">
6263 <p>SET ECHO &lt;value&gt;
6264 </p>
6265 </blockquote><p>
6266
6267 </p>
6268 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6269 or "0" to disable echo mode. When echo mode is enabled, all
6270 commands send to LinuxSampler will be immediately send back and
6271 after this echo the actual response to the command will be
6272 returned. Echo mode will only be altered for the client connection
6273 that issued the "SET ECHO" command, not globally for all client
6274 connections.
6275 </p>
6276 <p>Possible Answers:
6277 </p>
6278 <p>
6279 </p>
6280 <blockquote class="text">
6281 <p>"OK" -
6282 </p>
6283 <blockquote class="text">
6284 <p>usually
6285 </p>
6286 </blockquote>
6287
6288
6289 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6290 </p>
6291 <blockquote class="text">
6292 <p>on syntax error, e.g. non boolean value
6293 </p>
6294 </blockquote>
6295
6296
6297 </blockquote><p>
6298
6299 </p>
6300 <p>Examples:
6301 </p>
6302 <p>
6303 </p>
6304 <blockquote class="text">
6305 <p>
6306 </p>
6307 </blockquote><p>
6308
6309 </p>
6310 <a name="QUIT"></a><br /><hr />
6311 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6312 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6313 Close client connection</h3>
6314
6315 <p>The client can close its network connection to LinuxSampler by sending the following command:
6316 </p>
6317 <p>
6318 </p>
6319 <blockquote class="text">
6320 <p>QUIT
6321 </p>
6322 </blockquote><p>
6323
6324 </p>
6325 <p>This is probably more interesting for manual telnet connections to
6326 LinuxSampler than really useful for a front-end implementation.
6327 </p>
6328 <a name="anchor13"></a><br /><hr />
6329 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6330 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6331 Global commands</h3>
6332
6333 <p>The following commands have global impact on the sampler.
6334 </p>
6335 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6336 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6337 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6338 Current number of active voices</h3>
6339
6340 <p>The front-end can ask for the current number of active voices on
6341 the sampler by sending the following command:
6342 </p>
6343 <p>
6344 </p>
6345 <blockquote class="text">
6346 <p>GET TOTAL_VOICE_COUNT
6347 </p>
6348 </blockquote><p>
6349
6350 </p>
6351 <p>Possible Answers:
6352 </p>
6353 <p>
6354 </p>
6355 <blockquote class="text">
6356 <p>LinuxSampler will answer by returning the number of all active
6357 voices on the sampler.
6358 </p>
6359 </blockquote><p>
6360
6361 </p>
6362 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6363 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6364 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6365 Maximum amount of active voices</h3>
6366
6367 <p>The front-end can ask for the maximum number of active voices
6368 by sending the following command:
6369 </p>
6370 <p>
6371 </p>
6372 <blockquote class="text">
6373 <p>GET TOTAL_VOICE_COUNT_MAX
6374 </p>
6375 </blockquote><p>
6376
6377 </p>
6378 <p>Possible Answers:
6379 </p>
6380 <p>
6381 </p>
6382 <blockquote class="text">
6383 <p>LinuxSampler will answer by returning the maximum number
6384 of active voices.
6385 </p>
6386 </blockquote><p>
6387
6388 </p>
6389 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6390 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6391 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6392 Current number of active disk streams</h3>
6393
6394 <p>The front-end can ask for the current number of active disk streams on
6395 the sampler by sending the following command:
6396 </p>
6397 <p>
6398 </p>
6399 <blockquote class="text">
6400 <p>GET TOTAL_STREAM_COUNT
6401 </p>
6402 </blockquote><p>
6403
6404 </p>
6405 <p>Possible Answers:
6406 </p>
6407 <p>
6408 </p>
6409 <blockquote class="text">
6410 <p>LinuxSampler will answer by returning the number of all active
6411 disk streams on the sampler.
6412 </p>
6413 </blockquote><p>
6414
6415 </p>
6416 <a name="RESET"></a><br /><hr />
6417 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6418 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6419 Reset sampler</h3>
6420
6421 <p>The front-end can reset the whole sampler by sending the following command:
6422 </p>
6423 <p>
6424 </p>
6425 <blockquote class="text">
6426 <p>RESET
6427 </p>
6428 </blockquote><p>
6429
6430 </p>
6431 <p>Possible Answers:
6432 </p>
6433 <p>
6434 </p>
6435 <blockquote class="text">
6436 <p>"OK" -
6437 </p>
6438 <blockquote class="text">
6439 <p>always
6440 </p>
6441 </blockquote>
6442
6443
6444 </blockquote><p>
6445
6446 </p>
6447 <p>Examples:
6448 </p>
6449 <p>
6450 </p>
6451 <blockquote class="text">
6452 <p>
6453 </p>
6454 </blockquote><p>
6455
6456 </p>
6457 <a name="GET SERVER INFO"></a><br /><hr />
6458 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6459 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6460 General sampler informations</h3>
6461
6462 <p>The client can ask for general informations about the LinuxSampler
6463 instance by sending the following command:
6464 </p>
6465 <p>
6466 </p>
6467 <blockquote class="text">
6468 <p>GET SERVER INFO
6469 </p>
6470 </blockquote><p>
6471
6472 </p>
6473 <p>Possible Answers:
6474 </p>
6475 <p>
6476 </p>
6477 <blockquote class="text">
6478 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6479 Each answer line begins with the information category name
6480 followed by a colon and then a space character &lt;SP&gt; and finally
6481 the info character string to that information category. At the
6482 moment the following categories are defined:
6483
6484 </p>
6485 <p>
6486 </p>
6487 <blockquote class="text">
6488 <p>DESCRIPTION -
6489 </p>
6490 <blockquote class="text">
6491 <p>arbitrary textual description about the sampler
6492 (note that the character string may contain
6493 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6494 </p>
6495 </blockquote>
6496
6497
6498 <p>VERSION -
6499 </p>
6500 <blockquote class="text">
6501 <p>version of the sampler
6502 </p>
6503 </blockquote>
6504
6505
6506 <p>PROTOCOL_VERSION -
6507 </p>
6508 <blockquote class="text">
6509 <p>version of the LSCP specification the sampler
6510 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)
6511 </p>
6512 </blockquote>
6513
6514
6515 <p>INSTRUMENTS_DB_SUPPORT -
6516 </p>
6517 <blockquote class="text">
6518 <p>either yes or no, specifies whether the
6519 sampler is build with instruments database support.
6520 </p>
6521 </blockquote>
6522
6523
6524 </blockquote>
6525
6526
6527 </blockquote><p>
6528
6529 </p>
6530 <p>The mentioned fields above don't have to be in particular order.
6531 Other fields might be added in future.
6532 </p>
6533 <a name="GET VOLUME"></a><br /><hr />
6534 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6535 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6536 Getting global volume attenuation</h3>
6537
6538 <p>The client can ask for the current global sampler-wide volume
6539 attenuation by sending the following command:
6540 </p>
6541 <p>
6542 </p>
6543 <blockquote class="text">
6544 <p>GET VOLUME
6545 </p>
6546 </blockquote><p>
6547
6548 </p>
6549 <p>Possible Answers:
6550 </p>
6551 <p>
6552 </p>
6553 <blockquote class="text">
6554 <p>The sampler will always answer by returning the optional
6555 dotted floating point coefficient, reflecting the current
6556 global volume attenuation.
6557
6558 </p>
6559 </blockquote><p>
6560
6561 </p>
6562 <p>Note: it is up to the respective sampler engine whether to obey
6563 that global volume parameter or not, but in general all engines SHOULD
6564 use this parameter.
6565 </p>
6566 <a name="SET VOLUME"></a><br /><hr />
6567 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6568 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6569 Setting global volume attenuation</h3>
6570
6571 <p>The client can alter the current global sampler-wide volume
6572 attenuation by sending the following command:
6573 </p>
6574 <p>
6575 </p>
6576 <blockquote class="text">
6577 <p>SET VOLUME &lt;volume&gt;
6578 </p>
6579 </blockquote><p>
6580
6581 </p>
6582 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6583 floating point value, reflecting the new global volume parameter.
6584 This value might usually be in the range between 0.0 and 1.0, that
6585 is for attenuating the overall volume.
6586 </p>
6587 <p>Possible Answers:
6588 </p>
6589 <p>
6590 </p>
6591 <blockquote class="text">
6592 <p>"OK" -
6593 </p>
6594 <blockquote class="text">
6595 <p>on success
6596 </p>
6597 </blockquote>
6598
6599
6600 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6601 </p>
6602 <blockquote class="text">
6603 <p>if the global volume was set, but there are noteworthy
6604 issue(s) related, providing an appropriate warning code and
6605 warning message
6606 </p>
6607 </blockquote>
6608
6609
6610 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6611 </p>
6612 <blockquote class="text">
6613 <p>in case it failed, providing an appropriate error code and error message
6614 </p>
6615 </blockquote>
6616
6617
6618 </blockquote><p>
6619
6620 </p>
6621 <a name="GET VOICES"></a><br /><hr />
6622 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6623 <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
6624 Getting global voice limit</h3>
6625
6626 <p>The client can ask for the current global sampler-wide limit
6627 for maximum voices by sending the following command:
6628 </p>
6629 <p>
6630 </p>
6631 <blockquote class="text">
6632 <p>GET VOICES
6633 </p>
6634 </blockquote><p>
6635
6636 </p>
6637 <p>Possible Answers:
6638 </p>
6639 <p>
6640 </p>
6641 <blockquote class="text">
6642 <p>LinuxSampler will answer by returning the number for
6643 the current limit of maximum voices.
6644 </p>
6645 </blockquote><p>
6646
6647 </p>
6648 <p>The voice limit setting defines how many voices should maximum
6649 be processed by the sampler at the same time. If the user
6650 triggers new notes which would exceed that voice limit, the
6651 sampler engine will react by stealing old voices for those
6652 newly triggered notes. Note that the amount of voices triggered
6653 by a new note can be larger than one and is dependent to the
6654 respective instrument and probably further criterias.
6655 </p>
6656 <a name="SET VOICES"></a><br /><hr />
6657 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6658 <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
6659 Setting global voice limit</h3>
6660
6661 <p>The client can alter the current global sampler-wide limit
6662 for maximum voices by sending the following command:
6663 </p>
6664 <p>
6665 </p>
6666 <blockquote class="text">
6667 <p>SET VOICES &lt;max-voices&gt;
6668 </p>
6669 </blockquote><p>
6670
6671 </p>
6672 <p>Where &lt;max-voices&gt; should be replaced by the integer
6673 value, reflecting the new global amount limit of maximum voices.
6674 This value has to be larger than 0.
6675 </p>
6676 <p>Possible Answers:
6677 </p>
6678 <p>
6679 </p>
6680 <blockquote class="text">
6681 <p>"OK" -
6682 </p>
6683 <blockquote class="text">
6684 <p>on success
6685 </p>
6686 </blockquote>
6687
6688
6689 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6690 </p>
6691 <blockquote class="text">
6692 <p>if the voice limit was set, but there are noteworthy
6693 issue(s) related, providing an appropriate warning code and
6694 warning message
6695 </p>
6696 </blockquote>
6697
6698
6699 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6700 </p>
6701 <blockquote class="text">
6702 <p>in case it failed, providing an appropriate error code and error message
6703 </p>
6704 </blockquote>
6705
6706
6707 </blockquote><p>
6708
6709 </p>
6710 <p>Note: the given value will be passed to all sampler engine instances.
6711 The total amount of maximum voices on the running system might thus
6712 be as big as the given value multiplied by the current amount of engine
6713 instances.
6714 </p>
6715 <p>Caution: when adjusting the voice limit, you SHOULD also
6716 adjust the disk stream limit respectively and vice versa.
6717 </p>
6718 <a name="GET STREAMS"></a><br /><hr />
6719 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6720 <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
6721 Getting global disk stream limit</h3>
6722
6723 <p>The client can ask for the current global sampler-wide limit
6724 for maximum disk streams by sending the following command:
6725 </p>
6726 <p>
6727 </p>
6728 <blockquote class="text">
6729 <p>GET STREAMS
6730 </p>
6731 </blockquote><p>
6732
6733 </p>
6734 <p>Possible Answers:
6735 </p>
6736 <p>
6737 </p>
6738 <blockquote class="text">
6739 <p>LinuxSampler will answer by returning the number for
6740 the current limit of maximum disk streams.
6741 </p>
6742 </blockquote><p>
6743
6744 </p>
6745 <p>The disk stream limit setting defines how many disk streams should
6746 maximum be processed by a sampler engine at the same time. The
6747 higher this value, the more memory (RAM) will be occupied, since
6748 every disk streams allocates a certain buffer size for being able
6749 to perform its streaming operations.
6750 </p>
6751 <a name="SET STREAMS"></a><br /><hr />
6752 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6753 <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
6754 Setting global disk stream limit</h3>
6755
6756 <p>The client can alter the current global sampler-wide limit
6757 for maximum disk streams by sending the following command:
6758 </p>
6759 <p>
6760 </p>
6761 <blockquote class="text">
6762 <p>SET STREAMS &lt;max-streams&gt;
6763 </p>
6764 </blockquote><p>
6765
6766 </p>
6767 <p>Where &lt;max-streams&gt; should be replaced by the integer
6768 value, reflecting the new global amount limit of maximum disk streams.
6769 This value has to be positive.
6770 </p>
6771 <p>Possible Answers:
6772 </p>
6773 <p>
6774 </p>
6775 <blockquote class="text">
6776 <p>"OK" -
6777 </p>
6778 <blockquote class="text">
6779 <p>on success
6780 </p>
6781 </blockquote>
6782
6783
6784 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6785 </p>
6786 <blockquote class="text">
6787 <p>if the disk stream limit was set, but there are noteworthy
6788 issue(s) related, providing an appropriate warning code and
6789 warning message
6790 </p>
6791 </blockquote>
6792
6793
6794 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6795 </p>
6796 <blockquote class="text">
6797 <p>in case it failed, providing an appropriate error code and error message
6798 </p>
6799 </blockquote>
6800
6801
6802 </blockquote><p>
6803
6804 </p>
6805 <p>Note: the given value will be passed to all sampler engine instances.
6806 The total amount of maximum disk streams on the running system might
6807 thus be as big as the given value multiplied by the current amount of
6808 engine instances.
6809 </p>
6810 <p>Caution: when adjusting the disk stream limit, you SHOULD also
6811 adjust the voice limit respectively and vice versa.
6812 </p>
6813 <a name="MIDI Instrument Mapping"></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.7"></a><h3>6.7.&nbsp;
6816 MIDI Instrument Mapping</h3>
6817
6818 <p>The MIDI protocol provides a way to switch between instruments
6819 by sending so called MIDI bank select and MIDI program change
6820 messages which are essentially just numbers. The following commands
6821 allow to actually map arbitrary MIDI bank select / program change
6822 numbers with real instruments.
6823 </p>
6824 <p>The sampler allows to manage an arbitrary amount of MIDI
6825 instrument maps which define which instrument to load on
6826 which MIDI program change message.
6827 </p>
6828 <p>By default, that is when the sampler is launched, there is no
6829 map, thus the sampler will simply ignore all program change
6830 messages. The front-end has to explicitly create at least one
6831 map, add entries to the map and tell the respective sampler
6832 channel(s) which MIDI instrument map to use, so the sampler
6833 knows how to react on a given program change message on the
6834 respective sampler channel, that is by switching to the
6835 respectively defined engine type and loading the respective
6836 instrument. See command
6837 <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>
6838 for how to assign a MIDI instrument map to a sampler channel.
6839 </p>
6840 <p>Also note per MIDI specification a bank select message does not
6841 cause to switch to another instrument. Instead when receiving a
6842 bank select message the bank value will be stored and a subsequent
6843 program change message (which may occur at any time) will finally
6844 cause the sampler to switch to the respective instrument as
6845 reflected by the current MIDI instrument map.
6846 </p>
6847 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6848 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6849 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6850 Create a new MIDI instrument map</h3>
6851
6852 <p>The front-end can add a new MIDI instrument map by sending
6853 the following command:
6854 </p>
6855 <p>
6856 </p>
6857 <blockquote class="text">
6858 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6859 </p>
6860 </blockquote><p>
6861
6862 </p>
6863 <p>Where &lt;name&gt; is an optional argument allowing to
6864 assign a custom name to the new map. MIDI instrument Map
6865 names do not have to be unique, but MUST be encapsulated
6866 into apostrophes and support escape sequences as described
6867 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>".
6868
6869 </p>
6870 <p>Possible Answers:
6871 </p>
6872 <p>
6873 </p>
6874 <blockquote class="text">
6875 <p>"OK[&lt;map&gt;]" -
6876 </p>
6877 <blockquote class="text">
6878 <p>in case a new MIDI instrument map could
6879 be added, where &lt;map&gt; reflects the
6880 unique ID of the newly created MIDI
6881 instrument map
6882 </p>
6883 </blockquote>
6884
6885
6886 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6887 </p>
6888 <blockquote class="text">
6889 <p>when a new map could not be created, which
6890 might never occur in practice
6891 </p>
6892 </blockquote>
6893
6894
6895 </blockquote><p>
6896
6897 </p>
6898 <p>Examples:
6899 </p>
6900 <p>
6901 </p>
6902 <blockquote class="text">
6903 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6904 </p>
6905 <p>S: "OK[0]"
6906 </p>
6907 </blockquote><p>
6908
6909 </p>
6910 <p>
6911 </p>
6912 <blockquote class="text">
6913 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6914 </p>
6915 <p>S: "OK[1]"
6916 </p>
6917 </blockquote><p>
6918
6919 </p>
6920 <p>
6921 </p>
6922 <blockquote class="text">
6923 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6924 </p>
6925 <p>S: "OK[5]"
6926 </p>
6927 </blockquote><p>
6928
6929 </p>
6930 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6931 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6932 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6933 Delete one particular or all MIDI instrument maps</h3>
6934
6935 <p>The front-end can delete a particular MIDI instrument map
6936 by sending the following command:
6937 </p>
6938 <p>
6939 </p>
6940 <blockquote class="text">
6941 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6942 </p>
6943 </blockquote><p>
6944
6945 </p>
6946 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6947 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>
6948 command.
6949 </p>
6950 <p>The front-end can delete all MIDI instrument maps by
6951 sending the following command:
6952 </p>
6953 <p>
6954 </p>
6955 <blockquote class="text">
6956 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6957 </p>
6958 </blockquote><p>
6959
6960 </p>
6961 <p>Possible Answers:
6962 </p>
6963 <p>
6964 </p>
6965 <blockquote class="text">
6966 <p>"OK" -
6967 </p>
6968 <blockquote class="text">
6969 <p>in case the map(s) could be deleted
6970 </p>
6971 </blockquote>
6972
6973
6974 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6975 </p>
6976 <blockquote class="text">
6977 <p>when the given map does not exist
6978 </p>
6979 </blockquote>
6980
6981
6982 </blockquote><p>
6983
6984 </p>
6985 <p>Examples:
6986 </p>
6987 <p>
6988 </p>
6989 <blockquote class="text">
6990 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6991 </p>
6992 <p>S: "OK"
6993 </p>
6994 </blockquote><p>
6995
6996 </p>
6997 <p>
6998 </p>
6999 <blockquote class="text">
7000 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7001 </p>
7002 <p>S: "OK"
7003 </p>
7004 </blockquote><p>
7005
7006 </p>
7007 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7008 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7009 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7010 Get amount of existing MIDI instrument maps</h3>
7011
7012 <p>The front-end can retrieve the current amount of MIDI
7013 instrument maps by sending the following command:
7014 </p>
7015 <p>
7016 </p>
7017 <blockquote class="text">
7018 <p>GET MIDI_INSTRUMENT_MAPS
7019 </p>
7020 </blockquote><p>
7021
7022 </p>
7023 <p>Possible Answers:
7024 </p>
7025 <p>
7026 </p>
7027 <blockquote class="text">
7028 <p>The sampler will answer by returning the current
7029 number of MIDI instrument maps.
7030 </p>
7031 </blockquote><p>
7032
7033 </p>
7034 <p>Example:
7035 </p>
7036 <p>
7037 </p>
7038 <blockquote class="text">
7039 <p>C: "GET MIDI_INSTRUMENT_MAPS"
7040 </p>
7041 <p>S: "2"
7042 </p>
7043 </blockquote><p>
7044
7045 </p>
7046 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7047 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7048 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7049 Getting all created MIDI instrument maps</h3>
7050
7051 <p>The number of MIDI instrument maps can change on runtime. To get the
7052 current list of MIDI instrument maps, the front-end can send the
7053 following command:
7054 </p>
7055 <p>
7056 </p>
7057 <blockquote class="text">
7058 <p>LIST MIDI_INSTRUMENT_MAPS
7059 </p>
7060 </blockquote><p>
7061
7062 </p>
7063 <p>Possible Answers:
7064 </p>
7065 <p>
7066 </p>
7067 <blockquote class="text">
7068 <p>The sampler will answer by returning a comma separated list
7069 with all MIDI instrument maps' numerical IDs.
7070 </p>
7071 </blockquote><p>
7072
7073 </p>
7074 <p>Example:
7075 </p>
7076 <p>
7077 </p>
7078 <blockquote class="text">
7079 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7080 </p>
7081 <p>S: "0,1,5,12"
7082 </p>
7083 </blockquote><p>
7084
7085 </p>
7086 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7087 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7088 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7089 Getting MIDI instrument map information</h3>
7090
7091 <p>The front-end can ask for the current settings of a MIDI
7092 instrument map by sending the following command:
7093 </p>
7094 <p>
7095 </p>
7096 <blockquote class="text">
7097 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7098 </p>
7099 </blockquote><p>
7100
7101 </p>
7102 <p>Where &lt;map&gt; is the numerical ID of the map the
7103 front-end is interested in as returned by the
7104 <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>
7105 command.
7106 </p>
7107 <p>Possible Answers:
7108 </p>
7109 <p>
7110 </p>
7111 <blockquote class="text">
7112 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7113 Each answer line begins with the settings category name
7114 followed by a colon and then a space character &lt;SP&gt; and finally
7115 the info character string to that setting category. At the
7116 moment the following categories are defined:
7117 </p>
7118 <p>
7119 </p>
7120 <blockquote class="text">
7121 <p>NAME -
7122 </p>
7123 <blockquote class="text">
7124 <p>custom name of the given map,
7125 which does not have to be unique
7126 (note that this character string may contain
7127 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7128 </p>
7129 </blockquote>
7130
7131
7132 <p>DEFAULT -
7133 </p>
7134 <blockquote class="text">
7135 <p>either true or false,
7136 defines whether this map is the default map
7137 </p>
7138 </blockquote>
7139
7140
7141 </blockquote>
7142
7143
7144 </blockquote><p>
7145
7146 </p>
7147 <p>The mentioned fields above don't have to be in particular order.
7148 </p>
7149 <p>Example:
7150 </p>
7151 <p>
7152 </p>
7153 <blockquote class="text">
7154 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7155 </p>
7156 <p>S: "NAME: Standard Map"
7157 </p>
7158 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7159 </p>
7160 <p>&nbsp;&nbsp;&nbsp;"."
7161 </p>
7162 </blockquote><p>
7163
7164 </p>
7165 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7166 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7167 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7168 Renaming a MIDI instrument map</h3>
7169
7170 <p>The front-end can alter the custom name of a MIDI
7171 instrument map by sending the following command:
7172 </p>
7173 <p>
7174 </p>
7175 <blockquote class="text">
7176 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7177 </p>
7178 </blockquote><p>
7179
7180 </p>
7181 <p>Where &lt;map&gt; is the numerical ID of the map and
7182 &lt;name&gt; the new custom name of the map, which does not
7183 have to be unique (name MUST be encapsulated into apostrophes
7184 and supports escape sequences as described in chapter
7185 "<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>").
7186
7187 </p>
7188 <p>Possible Answers:
7189 </p>
7190 <p>
7191 </p>
7192 <blockquote class="text">
7193 <p>"OK" -
7194 </p>
7195 <blockquote class="text">
7196 <p>on success
7197 </p>
7198 </blockquote>
7199
7200
7201 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7202 </p>
7203 <blockquote class="text">
7204 <p>in case the given map does not exist
7205 </p>
7206 </blockquote>
7207
7208
7209 </blockquote><p>
7210
7211 </p>
7212 <p>Example:
7213 </p>
7214 <p>
7215 </p>
7216 <blockquote class="text">
7217 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7218 </p>
7219 <p>S: "OK"
7220 </p>
7221 </blockquote><p>
7222
7223 </p>
7224 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7225 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7226 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7227 Create or replace a MIDI instrument map entry</h3>
7228
7229 <p>The front-end can create a new or replace an existing entry
7230 in a sampler's MIDI instrument map by sending the following
7231 command:
7232 </p>
7233 <p>
7234 </p>
7235 <blockquote class="text">
7236 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7237 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7238 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7239 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7240 </p>
7241 </blockquote><p>
7242
7243 </p>
7244 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7245 &lt;midi_bank&gt; is an integer value between
7246 0..16383 reflecting the MIDI bank select index,
7247 &lt;midi_prog&gt; an
7248 integer value between 0..127 reflecting the MIDI program change
7249 index, &lt;engine_name&gt; a sampler engine name as returned by
7250 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
7251 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7252 of the instrument's file to be deployed (encapsulated into apostrophes,
7253 supporting escape sequences as described in chapter
7254 "<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>"),
7255 &lt;instrument_index&gt; the index (integer value) of the instrument
7256 within the given file, &lt;volume_value&gt; reflects the master
7257 volume of the instrument as optionally dotted number (where a
7258 value &lt; 1.0 means attenuation and a value > 1.0 means
7259 amplification). This parameter easily allows to adjust the
7260 volume of all intruments within a custom instrument map
7261 without having to adjust their instrument files. The
7262 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7263 time of the instrument, that is when the instrument should
7264 be loaded, when freed and has exactly the following
7265 possibilities:
7266 </p>
7267 <p>
7268 </p>
7269 <blockquote class="text">
7270 <p>"ON_DEMAND" -
7271 </p>
7272 <blockquote class="text">
7273 <p>The instrument will be loaded when needed,
7274 that is when demanded by at least one sampler
7275 channel. It will immediately be freed from memory
7276 when not needed by any sampler channel anymore.
7277 </p>
7278 </blockquote>
7279
7280
7281 <p>"ON_DEMAND_HOLD" -
7282 </p>
7283 <blockquote class="text">
7284 <p>The instrument will be loaded when needed,
7285 that is when demanded by at least one sampler
7286 channel. It will be kept in memory even when
7287 not needed by any sampler channel anymore.
7288 Instruments with this mode are only freed
7289 when the sampler is reset or all mapping
7290 entries with this mode (and respective
7291 instrument) are explicitly changed to
7292 "ON_DEMAND" and no sampler channel is using
7293 the instrument anymore.
7294 </p>
7295 </blockquote>
7296
7297
7298 <p>"PERSISTENT" -
7299 </p>
7300 <blockquote class="text">
7301 <p>The instrument will immediately be loaded
7302 into memory when this mapping
7303 command is sent and the instrument is kept all
7304 the time. Instruments with this mode are
7305 only freed when the sampler is reset or all
7306 mapping entries with this mode (and
7307 respective instrument) are explicitly
7308 changed to "ON_DEMAND" and no sampler
7309 channel is using the instrument anymore.
7310 </p>
7311 </blockquote>
7312
7313
7314 <p>not supplied -
7315 </p>
7316 <blockquote class="text">
7317 <p>In case there is no &lt;instr_load_mode&gt;
7318 argument given, it will be up to the
7319 InstrumentManager to decide which mode to use.
7320 Usually it will use "ON_DEMAND" if an entry
7321 for the given instrument does not exist in
7322 the InstrumentManager's list yet, otherwise
7323 if an entry already exists, it will simply
7324 stick with the mode currently reflected by
7325 the already existing entry, that is it will
7326 not change the mode.
7327 </p>
7328 </blockquote>
7329
7330
7331 </blockquote><p>
7332
7333 </p>
7334 <p>
7335 The &lt;instr_load_mode&gt; argument thus allows to define an
7336 appropriate strategy (low memory consumption vs. fast
7337 instrument switching) for each instrument individually. Note, the
7338 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7339 "PERSISTENT" have to be supported by the respective sampler engine
7340 (which is technically the case when the engine provides an
7341 InstrumentManager for its format). If this is not the case the
7342 argument will automatically fall back to the default value
7343 "ON_DEMAND". Also the load mode of one instrument may
7344 automatically change the laod mode of other instrument(s), i.e.
7345 because the instruments are part of the same file and the
7346 engine does not allow a way to manage load modes for them
7347 individually. Due to this, in case the frontend shows the
7348 load modes of entries, the frontend should retrieve the actual
7349 mode by i.e. sending
7350 <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>
7351 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7352 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7353 "<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
7354 mapping entry, useful for frontends for displaying an appropriate name for
7355 mapped instruments (using
7356 <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>).
7357
7358 </p>
7359 <p>
7360 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7361 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7362 however causes the respective "MAP MIDI_INSTRUMENT" command to return
7363 immediately, that is to let the sampler establish the mapping in the
7364 background. So this argument might be especially useful for mappings with
7365 a "PERSISTENT" type, because these have to load the respective instruments
7366 immediately and might thus block for a very long time. It is recommended
7367 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7368 because it has the following drawbacks: as "NON_MODAL" instructions return
7369 immediately, they may not necessarily return an error i.e. when the given
7370 instrument file turns out to be corrupt, beside that subsequent commands
7371 in a LSCP instruction sequence might fail, because mandatory mappings are
7372 not yet completed.
7373
7374 </p>
7375 <p>Possible Answers:
7376 </p>
7377 <p>
7378 </p>
7379 <blockquote class="text">
7380 <p>"OK" -
7381 </p>
7382 <blockquote class="text">
7383 <p>usually
7384 </p>
7385 </blockquote>
7386
7387
7388 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7389 </p>
7390 <blockquote class="text">
7391 <p>when the given map or engine does not exist or a value
7392 is out of range
7393 </p>
7394 </blockquote>
7395
7396
7397 </blockquote><p>
7398
7399 </p>
7400 <p>Examples:
7401 </p>
7402 <p>
7403 </p>
7404 <blockquote class="text">
7405 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7406 </p>
7407 <p>S: "OK"
7408 </p>
7409 </blockquote><p>
7410
7411 </p>
7412 <p>
7413 </p>
7414 <blockquote class="text">
7415 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7416 </p>
7417 <p>S: "OK"
7418 </p>
7419 </blockquote><p>
7420
7421 </p>
7422 <p>
7423 </p>
7424 <blockquote class="text">
7425 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7426 </p>
7427 <p>S: "OK"
7428 </p>
7429 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7430 </p>
7431 <p>S: "OK"
7432 </p>
7433 </blockquote><p>
7434
7435 </p>
7436 <p>
7437 </p>
7438 <blockquote class="text">
7439 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7440 </p>
7441 <p>S: "OK"
7442 </p>
7443 </blockquote><p>
7444
7445 </p>
7446 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7447 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7448 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7449 Getting ammount of MIDI instrument map entries</h3>
7450
7451 <p>The front-end can query the amount of currently existing
7452 entries in a MIDI instrument map by sending the following
7453 command:
7454 </p>
7455 <p>
7456 </p>
7457 <blockquote class="text">
7458 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7459 </p>
7460 </blockquote><p>
7461
7462 </p>
7463 <p>The front-end can query the amount of currently existing
7464 entries in all MIDI instrument maps by sending the following
7465 command:
7466 </p>
7467 <p>
7468 </p>
7469 <blockquote class="text">
7470 <p>GET MIDI_INSTRUMENTS ALL
7471 </p>
7472 </blockquote><p>
7473
7474 </p>
7475 <p>Possible Answers:
7476 </p>
7477 <p>
7478 </p>
7479 <blockquote class="text">
7480 <p>The sampler will answer by sending the current number of
7481 entries in the MIDI instrument map(s).
7482 </p>
7483 </blockquote><p>
7484
7485 </p>
7486 <p>Example:
7487 </p>
7488 <p>
7489 </p>
7490 <blockquote class="text">
7491 <p>C: "GET MIDI_INSTRUMENTS 0"
7492 </p>
7493 <p>S: "234"
7494 </p>
7495 </blockquote><p>
7496
7497 </p>
7498 <p>
7499 </p>
7500 <blockquote class="text">
7501 <p>C: "GET MIDI_INSTRUMENTS ALL"
7502 </p>
7503 <p>S: "954"
7504 </p>
7505 </blockquote><p>
7506
7507 </p>
7508 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7509 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7510 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7511 Getting indeces of all entries of a MIDI instrument map</h3>
7512
7513 <p>The front-end can query a list of all currently existing
7514 entries in a certain MIDI instrument map by sending the following
7515 command:
7516 </p>
7517 <p>
7518 </p>
7519 <blockquote class="text">
7520 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7521 </p>
7522 </blockquote><p>
7523
7524 </p>
7525 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7526 </p>
7527 <p>The front-end can query a list of all currently existing
7528 entries of all MIDI instrument maps by sending the following
7529 command:
7530 </p>
7531 <p>
7532 </p>
7533 <blockquote class="text">
7534 <p>LIST MIDI_INSTRUMENTS ALL
7535 </p>
7536 </blockquote><p>
7537
7538 </p>
7539 <p>Possible Answers:
7540 </p>
7541 <p>
7542 </p>
7543 <blockquote class="text">
7544 <p>The sampler will answer by sending a comma separated
7545 list of map ID - MIDI bank - MIDI program triples, where
7546 each triple is encapsulated into curly braces. The
7547 list is returned in one single line. Each triple
7548 just reflects the key of the respective map entry,
7549 thus subsequent
7550 <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>
7551 command(s) are necessary to retrieve detailed informations
7552 about each entry.
7553 </p>
7554 </blockquote><p>
7555
7556 </p>
7557 <p>Example:
7558 </p>
7559 <p>
7560 </p>
7561 <blockquote class="text">
7562 <p>C: "LIST MIDI_INSTRUMENTS 0"
7563 </p>
7564 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7565 </p>
7566 </blockquote><p>
7567
7568 </p>
7569 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7570 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7571 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7572 Remove an entry from the MIDI instrument map</h3>
7573
7574 <p>The front-end can delete an entry from a MIDI instrument
7575 map by sending the following command:
7576 </p>
7577 <p>
7578 </p>
7579 <blockquote class="text">
7580 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7581 </p>
7582 </blockquote><p>
7583
7584 </p>
7585 <p>
7586 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7587 &lt;midi_bank&gt; is an integer value between 0..16383
7588 reflecting the MIDI bank value and
7589 &lt;midi_prog&gt; an integer value between
7590 0..127 reflecting the MIDI program value of the map's entrie's key
7591 index triple.
7592
7593 </p>
7594 <p>Possible Answers:
7595 </p>
7596 <p>
7597 </p>
7598 <blockquote class="text">
7599 <p>"OK" -
7600 </p>
7601 <blockquote class="text">
7602 <p>usually
7603 </p>
7604 </blockquote>
7605
7606
7607 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7608 </p>
7609 <blockquote class="text">
7610 <p>when index out of bounds
7611 </p>
7612 </blockquote>
7613
7614
7615 </blockquote><p>
7616
7617 </p>
7618 <p>Example:
7619 </p>
7620 <p>
7621 </p>
7622 <blockquote class="text">
7623 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7624 </p>
7625 <p>S: "OK"
7626 </p>
7627 </blockquote><p>
7628
7629 </p>
7630 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7631 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7632 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7633 Get current settings of MIDI instrument map entry</h3>
7634
7635 <p>The front-end can retrieve the current settings of a certain
7636 instrument map entry by sending the following command:
7637 </p>
7638 <p>
7639 </p>
7640 <blockquote class="text">
7641 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7642 </p>
7643 </blockquote><p>
7644
7645 </p>
7646 <p>
7647 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7648 &lt;midi_bank&gt; is an integer value between 0..16383
7649 reflecting the MIDI bank value, &lt;midi_bank&gt;
7650 and &lt;midi_prog&gt; an integer value between
7651 0..127 reflecting the MIDI program value of the map's entrie's key
7652 index triple.
7653
7654 </p>
7655 <p>Possible Answers:
7656 </p>
7657 <p>
7658 </p>
7659 <blockquote class="text">
7660 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7661 separated list. Each answer line begins with the
7662 information category name followed by a colon and then
7663 a space character &lt;SP&gt; and finally the info
7664 character string to that info category. At the moment
7665 the following categories are defined:
7666 </p>
7667 <p>"NAME" -
7668 </p>
7669 <blockquote class="text">
7670 <p>Name for this MIDI instrument map entry (if defined).
7671 This name shall be used by frontends for displaying a
7672 name for this mapped instrument. It can be set and
7673 changed with the
7674 <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>
7675 command and does not have to be unique.
7676 (note that this character string may contain
7677 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7678 </p>
7679 </blockquote>
7680
7681
7682 <p>"ENGINE_NAME" -
7683 </p>
7684 <blockquote class="text">
7685 <p>Name of the engine to be deployed for this
7686 instrument.
7687 </p>
7688 </blockquote>
7689
7690
7691 <p>"INSTRUMENT_FILE" -
7692 </p>
7693 <blockquote class="text">
7694 <p>File name of the instrument
7695 (note that this path may contain
7696 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7697 </p>
7698 </blockquote>
7699
7700
7701 <p>"INSTRUMENT_NR" -
7702 </p>
7703 <blockquote class="text">
7704 <p>Index of the instrument within the file.
7705 </p>
7706 </blockquote>
7707
7708
7709 <p>"INSTRUMENT_NAME" -
7710 </p>
7711 <blockquote class="text">
7712 <p>Name of the loaded instrument as reflected by its file.
7713 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7714 cannot be changed (note that this character string may contain
7715 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7716 </p>
7717 </blockquote>
7718
7719
7720 <p>"LOAD_MODE" -
7721 </p>
7722 <blockquote class="text">
7723 <p>Life time of instrument
7724 (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).
7725 </p>
7726 </blockquote>
7727
7728
7729 <p>"VOLUME" -
7730 </p>
7731 <blockquote class="text">
7732 <p>master volume of the instrument as optionally
7733 dotted number (where a value &lt; 1.0 means attenuation
7734 and a value > 1.0 means amplification)
7735 </p>
7736 </blockquote>
7737
7738
7739 <p>The mentioned fields above don't have to be in particular order.
7740 </p>
7741 </blockquote><p>
7742
7743 </p>
7744 <p>Example:
7745 </p>
7746 <p>
7747 </p>
7748 <blockquote class="text">
7749 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7750 </p>
7751 <p>S: "NAME: Drums for Foo Song"
7752 </p>
7753 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7754 </p>
7755 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7756 </p>
7757 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7758 </p>
7759 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7760 </p>
7761 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7762 </p>
7763 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7764 </p>
7765 <p>&nbsp;&nbsp;&nbsp;"."
7766 </p>
7767 </blockquote><p>
7768
7769 </p>
7770 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7771 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7772 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7773 Clear MIDI instrument map</h3>
7774
7775 <p>The front-end can clear a whole MIDI instrument map, that
7776 is delete all its entries by sending the following command:
7777 </p>
7778 <p>
7779 </p>
7780 <blockquote class="text">
7781 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7782 </p>
7783 </blockquote><p>
7784
7785 </p>
7786 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7787 </p>
7788 <p>The front-end can clear all MIDI instrument maps, that
7789 is delete all entries of all maps by sending the following
7790 command:
7791 </p>
7792 <p>
7793 </p>
7794 <blockquote class="text">
7795 <p>CLEAR MIDI_INSTRUMENTS ALL
7796 </p>
7797 </blockquote><p>
7798
7799 </p>
7800 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7801 maps, only their entries, thus the map's settings like
7802 custom name will be preservevd.
7803 </p>
7804 <p>Possible Answers:
7805 </p>
7806 <p>
7807 </p>
7808 <blockquote class="text">
7809 <p>"OK" -
7810 </p>
7811 <blockquote class="text">
7812 <p>always
7813 </p>
7814 </blockquote>
7815
7816
7817 </blockquote><p>
7818
7819 </p>
7820 <p>Examples:
7821 </p>
7822 <p>
7823 </p>
7824 <blockquote class="text">
7825 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7826 </p>
7827 <p>S: "OK"
7828 </p>
7829 </blockquote><p>
7830
7831 </p>
7832 <p>
7833 </p>
7834 <blockquote class="text">
7835 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7836 </p>
7837 <p>S: "OK"
7838 </p>
7839 </blockquote><p>
7840
7841 </p>
7842 <a name="Managing Instruments Database"></a><br /><hr />
7843 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7844 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7845 Managing Instruments Database</h3>
7846
7847 <p>The following commands describe how to use and manage
7848 the instruments database.
7849 </p>
7850 <p>Notice:
7851 </p>
7852 <p>
7853 </p>
7854 <blockquote class="text">
7855 <p>All command arguments representing a path or
7856 instrument/directory name support escape sequences as described in chapter
7857 "<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>".
7858
7859 </p>
7860 <p>All occurrences of a forward slash in instrument and directory
7861 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7862
7863 </p>
7864 </blockquote><p>
7865
7866 </p>
7867 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7868 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7869 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7870 Creating a new instrument directory</h3>
7871
7872 <p>The front-end can add a new instrument directory to the
7873 instruments database by sending the following command:
7874 </p>
7875 <p>
7876 </p>
7877 <blockquote class="text">
7878 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7879 </p>
7880 </blockquote><p>
7881
7882 </p>
7883 <p>Where &lt;dir&gt; is the absolute path name of the directory
7884 to be created (encapsulated into apostrophes).
7885 </p>
7886 <p>Possible Answers:
7887 </p>
7888 <p>
7889 </p>
7890 <blockquote class="text">
7891 <p>"OK" -
7892 </p>
7893 <blockquote class="text">
7894 <p>on success
7895 </p>
7896 </blockquote>
7897
7898
7899 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7900 </p>
7901 <blockquote class="text">
7902 <p>when the directory could not be created, which
7903 can happen if the directory already exists or the
7904 name contains not allowed symbols
7905 </p>
7906 </blockquote>
7907
7908
7909 </blockquote><p>
7910
7911 </p>
7912 <p>Examples:
7913 </p>
7914 <p>
7915 </p>
7916 <blockquote class="text">
7917 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7918 </p>
7919 <p>S: "OK"
7920 </p>
7921 </blockquote><p>
7922
7923 </p>
7924 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7925 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7926 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7927 Deleting an instrument directory</h3>
7928
7929 <p>The front-end can delete a particular instrument directory
7930 from the instruments database by sending the following command:
7931 </p>
7932 <p>
7933 </p>
7934 <blockquote class="text">
7935 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7936 </p>
7937 </blockquote><p>
7938
7939 </p>
7940 <p>Where &lt;dir&gt; is the absolute path name of the directory
7941 to delete. The optional FORCE argument can be used to
7942 force the deletion of a non-empty directory and all its content.
7943 </p>
7944 <p>Possible Answers:
7945 </p>
7946 <p>
7947 </p>
7948 <blockquote class="text">
7949 <p>"OK" -
7950 </p>
7951 <blockquote class="text">
7952 <p>if the directory is deleted successfully
7953 </p>
7954 </blockquote>
7955
7956
7957 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7958 </p>
7959 <blockquote class="text">
7960 <p>if the given directory does not exist, or
7961 if trying to delete a non-empty directory,
7962 without using the FORCE argument.
7963 </p>
7964 </blockquote>
7965
7966
7967 </blockquote><p>
7968
7969 </p>
7970 <p>Examples:
7971 </p>
7972 <p>
7973 </p>
7974 <blockquote class="text">
7975 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7976 </p>
7977 <p>S: "OK"
7978 </p>
7979 </blockquote><p>
7980
7981 </p>
7982 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7983 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7984 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7985 Getting amount of instrument directories</h3>
7986
7987 <p>The front-end can retrieve the current amount of
7988 directories in a specific directory by sending the following command:
7989 </p>
7990 <p>
7991 </p>
7992 <blockquote class="text">
7993 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7994 </p>
7995 </blockquote><p>
7996
7997 </p>
7998 <p>Where &lt;dir&gt; should be replaced by the absolute path
7999 name of the directory. If RECURSIVE is specified, the number of
8000 all directories, including those located in subdirectories of the
8001 specified directory, will be returned.
8002 </p>
8003 <p>Possible Answers:
8004 </p>
8005 <p>
8006 </p>
8007 <blockquote class="text">
8008 <p>The current number of instrument directories
8009 in the specified directory.
8010 </p>
8011 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8012 </p>
8013 <blockquote class="text">
8014 <p>if the given directory does not exist.
8015 </p>
8016 </blockquote>
8017
8018
8019 </blockquote><p>
8020
8021 </p>
8022 <p>Example:
8023 </p>
8024 <p>
8025 </p>
8026 <blockquote class="text">
8027 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8028 </p>
8029 <p>S: "2"
8030 </p>
8031 </blockquote><p>
8032
8033 </p>
8034 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8035 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8036 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8037 Listing all directories in specific directory</h3>
8038
8039 <p>The front-end can retrieve the current list of directories
8040 in specific directory by sending the following command:
8041 </p>
8042 <p>
8043 </p>
8044 <blockquote class="text">
8045 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8046 </p>
8047 </blockquote><p>
8048
8049 </p>
8050 <p>Where &lt;dir&gt; should be replaced by the absolute path
8051 name of the directory. If RECURSIVE is specified, the absolute path names
8052 of all directories, including those located in subdirectories of the
8053 specified directory, will be returned.
8054 </p>
8055 <p>Possible Answers:
8056 </p>
8057 <p>
8058 </p>
8059 <blockquote class="text">
8060 <p>A comma separated list of all instrument directories
8061 (encapsulated into apostrophes) in the specified directory.
8062 </p>
8063 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8064 </p>
8065 <blockquote class="text">
8066 <p>if the given directory does not exist.
8067 </p>
8068 </blockquote>
8069
8070
8071 </blockquote><p>
8072
8073 </p>
8074 <p>Example:
8075 </p>
8076 <p>
8077 </p>
8078 <blockquote class="text">
8079 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8080 </p>
8081 <p>S: "'Piano Collection','Percussion Collection'"
8082 </p>
8083 </blockquote><p>
8084
8085 </p>
8086 <p>
8087 </p>
8088 <blockquote class="text">
8089 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8090 </p>
8091 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8092 </p>
8093 </blockquote><p>
8094
8095 </p>
8096 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8097 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8098 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8099 Getting instrument directory information</h3>
8100
8101 <p>The front-end can ask for the current settings of an
8102 instrument directory by sending the following command:
8103 </p>
8104 <p>
8105 </p>
8106 <blockquote class="text">
8107 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8108 </p>
8109 </blockquote><p>
8110
8111 </p>
8112 <p>Where &lt;dir&gt; should be replaced by the absolute path
8113 name of the directory the front-end is interested in.
8114 </p>
8115 <p>Possible Answers:
8116 </p>
8117 <p>
8118 </p>
8119 <blockquote class="text">
8120 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8121 Each answer line begins with the settings category name
8122 followed by a colon and then a space character &lt;SP&gt; and finally
8123 the info character string to that setting category. At the
8124 moment the following categories are defined:
8125 </p>
8126 <p>
8127 </p>
8128 <blockquote class="text">
8129 <p>DESCRIPTION -
8130 </p>
8131 <blockquote class="text">
8132 <p>A brief description of the directory content.
8133 Note that the character string may contain
8134 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8135 </p>
8136 </blockquote>
8137
8138
8139 <p>CREATED -
8140 </p>
8141 <blockquote class="text">
8142 <p>The creation date and time of the directory,
8143 represented in "YYYY-MM-DD HH:MM:SS" format
8144 </p>
8145 </blockquote>
8146
8147
8148 <p>MODIFIED -
8149 </p>
8150 <blockquote class="text">
8151 <p>The date and time of the last modification of the
8152 directory, represented in "YYYY-MM-DD HH:MM:SS" format
8153 </p>
8154 </blockquote>
8155
8156
8157 </blockquote>
8158
8159
8160 </blockquote><p>
8161
8162 </p>
8163 <p>The mentioned fields above don't have to be in particular order.
8164 </p>
8165 <p>Example:
8166 </p>
8167 <p>
8168 </p>
8169 <blockquote class="text">
8170 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8171 </p>
8172 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8173 </p>
8174 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8175 </p>
8176 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8177 </p>
8178 <p>&nbsp;&nbsp;&nbsp;"."
8179 </p>
8180 </blockquote><p>
8181
8182 </p>
8183 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8184 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8185 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8186 Renaming an instrument directory</h3>
8187
8188 <p>The front-end can alter the name of a specific
8189 instrument directory by sending the following command:
8190 </p>
8191 <p>
8192 </p>
8193 <blockquote class="text">
8194 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8195 </p>
8196 </blockquote><p>
8197
8198 </p>
8199 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8200 &lt;name&gt; is the new name for that directory.
8201 </p>
8202 <p>Possible Answers:
8203 </p>
8204 <p>
8205 </p>
8206 <blockquote class="text">
8207 <p>"OK" -
8208 </p>
8209 <blockquote class="text">
8210 <p>on success
8211 </p>
8212 </blockquote>
8213
8214
8215 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8216 </p>
8217 <blockquote class="text">
8218 <p>in case the given directory does not exists,
8219 or if a directory with name equal to the new
8220 name already exists.
8221 </p>
8222 </blockquote>
8223
8224
8225 </blockquote><p>
8226
8227 </p>
8228 <p>Example:
8229 </p>
8230 <p>
8231 </p>
8232 <blockquote class="text">
8233 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8234 </p>
8235 <p>S: "OK"
8236 </p>
8237 </blockquote><p>
8238
8239 </p>
8240 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8241 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8242 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8243 Moving an instrument directory</h3>
8244
8245 <p>The front-end can move a specific
8246 instrument directory by sending the following command:
8247 </p>
8248 <p>
8249 </p>
8250 <blockquote class="text">
8251 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8252 </p>
8253 </blockquote><p>
8254
8255 </p>
8256 <p>Where &lt;dir&gt; is the absolute path name of the directory
8257 to move and &lt;dst&gt; is the location where the directory will
8258 be moved to.
8259 </p>
8260 <p>Possible Answers:
8261 </p>
8262 <p>
8263 </p>
8264 <blockquote class="text">
8265 <p>"OK" -
8266 </p>
8267 <blockquote class="text">
8268 <p>on success
8269 </p>
8270 </blockquote>
8271
8272
8273 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8274 </p>
8275 <blockquote class="text">
8276 <p>in case a given directory does not exists,
8277 or if a directory with name equal to the name
8278 of the specified directory already exists in
8279 the destination directory. Error is also thrown
8280 when trying to move a directory to a subdirectory
8281 of itself.
8282 </p>
8283 </blockquote>
8284
8285
8286 </blockquote><p>
8287
8288 </p>
8289 <p>Example:
8290 </p>
8291 <p>
8292 </p>
8293 <blockquote class="text">
8294 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8295 </p>
8296 <p>S: "OK"
8297 </p>
8298 </blockquote><p>
8299
8300 </p>
8301 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8302 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8303 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8304 Copying instrument directories</h3>
8305
8306 <p>The front-end can copy a specific
8307 instrument directory by sending the following command:
8308 </p>
8309 <p>
8310 </p>
8311 <blockquote class="text">
8312 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8313 </p>
8314 </blockquote><p>
8315
8316 </p>
8317 <p>Where &lt;dir&gt; is the absolute path name of the directory
8318 to copy and &lt;dst&gt; is the location where the directory will
8319 be copied to.
8320 </p>
8321 <p>Possible Answers:
8322 </p>
8323 <p>
8324 </p>
8325 <blockquote class="text">
8326 <p>"OK" -
8327 </p>
8328 <blockquote class="text">
8329 <p>on success
8330 </p>
8331 </blockquote>
8332
8333
8334 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8335 </p>
8336 <blockquote class="text">
8337 <p>in case a given directory does not exists,
8338 or if a directory with name equal to the name
8339 of the specified directory already exists in
8340 the destination directory. Error is also thrown
8341 when trying to copy a directory to a subdirectory
8342 of itself.
8343 </p>
8344 </blockquote>
8345
8346
8347 </blockquote><p>
8348
8349 </p>
8350 <p>Example:
8351 </p>
8352 <p>
8353 </p>
8354 <blockquote class="text">
8355 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8356 </p>
8357 <p>S: "OK"
8358 </p>
8359 </blockquote><p>
8360
8361 </p>
8362 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8363 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8364 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8365 Changing the description of directory</h3>
8366
8367 <p>The front-end can alter the description of a specific
8368 instrument directory by sending the following command:
8369 </p>
8370 <p>
8371 </p>
8372 <blockquote class="text">
8373 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8374 </p>
8375 </blockquote><p>
8376
8377 </p>
8378 <p>Where &lt;dir&gt; is the absolute path name of the directory and
8379 &lt;desc&gt; is the new description for the directory
8380 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8381 "<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>").
8382 </p>
8383 <p>Possible Answers:
8384 </p>
8385 <p>
8386 </p>
8387 <blockquote class="text">
8388 <p>"OK" -
8389 </p>
8390 <blockquote class="text">
8391 <p>on success
8392 </p>
8393 </blockquote>
8394
8395
8396 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8397 </p>
8398 <blockquote class="text">
8399 <p>in case the given directory does not exists.
8400 </p>
8401 </blockquote>
8402
8403
8404 </blockquote><p>
8405
8406 </p>
8407 <p>Example:
8408 </p>
8409 <p>
8410 </p>
8411 <blockquote class="text">
8412 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8413 </p>
8414 <p>S: "OK"
8415 </p>
8416 </blockquote><p>
8417
8418 </p>
8419 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8420 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8421 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8422 Finding directories</h3>
8423
8424 <p>The front-end can search for directories
8425 in specific directory by sending the following command:
8426 </p>
8427 <p>
8428 </p>
8429 <blockquote class="text">
8430 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8431 </p>
8432 </blockquote><p>
8433
8434 </p>
8435 <p>Where &lt;dir&gt; should be replaced by the absolute path
8436 name of the directory to search in. If NON_RECURSIVE is specified, the
8437 directories located in subdirectories of the specified directory will not
8438 be searched. &lt;criteria-list&gt; is a list of search criterias
8439 in form of "key1=val1 key2=val2 ...". The following criterias are
8440 allowed:
8441 </p>
8442 <p>
8443
8444 <p>NAME='&lt;search-string&gt;'
8445 </p>
8446 <blockquote class="text">
8447 <p>Restricts the search to directories, which names
8448 satisfy the supplied search string (encapsulated into apostrophes,
8449 supporting escape sequences as described in chapter
8450 "<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>").
8451 </p>
8452 </blockquote><p>
8453
8454 </p>
8455
8456
8457 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8458 </p>
8459 <blockquote class="text">
8460 <p>Restricts the search to directories, which creation
8461 date satisfies the specified period, where &lt;date-after&gt;
8462 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8463 If &lt;date-after&gt; is omitted the search is restricted to
8464 directories created before &lt;date-before&gt;. If
8465 &lt;date-before&gt; is omitted, the search is restricted
8466 to directories created after &lt;date-after&gt;.
8467 </p>
8468 </blockquote><p>
8469
8470 </p>
8471
8472
8473 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8474 </p>
8475 <blockquote class="text">
8476 <p>Restricts the search to directories, which
8477 date of last modification satisfies the specified period, where
8478 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8479 format. If &lt;date-after&gt; is omitted the search is restricted to
8480 directories, which are last modified before &lt;date-before&gt;. If
8481 &lt;date-before&gt; is omitted, the search is restricted to directories,
8482 which are last modified after &lt;date-after&gt;.
8483 </p>
8484 </blockquote><p>
8485
8486 </p>
8487
8488
8489 <p>DESCRIPTION='&lt;search-string&gt;'
8490 </p>
8491 <blockquote class="text">
8492 <p>Restricts the search to directories with description
8493 that satisfies the supplied search string
8494 (encapsulated into apostrophes, supporting escape
8495 sequences as described in chapter
8496 "<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>").
8497 </p>
8498 </blockquote><p>
8499
8500 </p>
8501
8502
8503 <p>Where &lt;search-string&gt; is either a regular expression, or a
8504 word list separated with spaces for OR search and with '+' for AND search.
8505 </p>
8506 <p>Possible Answers:
8507 </p>
8508 <p>
8509 </p>
8510 <blockquote class="text">
8511 <p>A comma separated list with the absolute path names (encapsulated into
8512 apostrophes) of all directories in the specified directory that satisfy
8513 the supplied search criterias.
8514 </p>
8515 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8516 </p>
8517 <blockquote class="text">
8518 <p>if the given directory does not exist.
8519 </p>
8520 </blockquote>
8521
8522
8523 </blockquote><p>
8524
8525 </p>
8526 <p>Example:
8527 </p>
8528 <p>
8529 </p>
8530 <blockquote class="text">
8531 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8532 </p>
8533 <p>S: "'/Piano Collection'"
8534 </p>
8535 </blockquote><p>
8536
8537 </p>
8538 <p>
8539 </p>
8540 <blockquote class="text">
8541 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8542 </p>
8543 <p>S: "'/Piano Collection','/Percussions'"
8544 </p>
8545 </blockquote><p>
8546
8547 </p>
8548 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8549 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8550 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8551 Adding instruments to the instruments database</h3>
8552
8553 <p>The front-end can add one or more instruments
8554 to the instruments database by sending the following command:
8555 </p>
8556 <p>
8557 </p>
8558 <blockquote class="text">
8559 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8560 </p>
8561 </blockquote><p>
8562
8563 </p>
8564 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8565 (encapsulated into apostrophes) in the instruments database in which
8566 only the new instruments (that are not already in the database) will
8567 be added, &lt;file_path&gt; is the absolute path name of a file or
8568 directory in the file system (encapsulated into apostrophes). In case
8569 an instrument file is supplied, only the instruments in the specified
8570 file will be added to the instruments database. If the optional
8571 &lt;instr_index&gt; (the index of the instrument within the given file)
8572 is supplied too, then only the specified instrument will be added.
8573 In case a directory is supplied, the instruments in that directory
8574 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8575 when a directory is provided as &lt;file_path&gt; and specifies how the
8576 scanning will be done and has exactly the following possibilities:
8577 </p>
8578 <p>
8579 </p>
8580 <blockquote class="text">
8581 <p>"RECURSIVE" -
8582 </p>
8583 <blockquote class="text">
8584 <p>All instruments will be processed, including those
8585 in the subdirectories, and the respective subdirectory
8586 tree structure will be recreated in the instruments
8587 database
8588 </p>
8589 </blockquote>
8590
8591
8592 <p>"NON_RECURSIVE" -
8593 </p>
8594 <blockquote class="text">
8595 <p>Only the instruments in the specified directory
8596 will be added, the instruments in the subdirectories
8597 will not be processed.
8598 </p>
8599 </blockquote>
8600
8601
8602 <p>"FLAT" -
8603 </p>
8604 <blockquote class="text">
8605 <p>All instruments will be processed, including those
8606 in the subdirectories, but the respective subdirectory
8607 structure will not be recreated in the instruments
8608 database. All instruments will be added directly in
8609 the specified database directory.
8610 </p>
8611 </blockquote>
8612
8613
8614 </blockquote><p>
8615
8616 </p>
8617 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
8618 file will be added to a separate directory in the instruments database, which
8619 name will be the name of the instrument file with the file extension stripped off.
8620
8621 </p>
8622 <p>The difference between regular and NON_MODAL versions of the command
8623 is that the regular command returns when the scanning is finished
8624 while NON_MODAL version returns immediately and a background process is launched.
8625 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>
8626 command can be used to monitor the scanning progress.
8627 </p>
8628 <p>Possible Answers:
8629 </p>
8630 <p>
8631 </p>
8632 <blockquote class="text">
8633 <p>"OK" -
8634 </p>
8635 <blockquote class="text">
8636 <p>on success when NON_MODAL is not supplied
8637 </p>
8638 </blockquote>
8639
8640
8641 <p>"OK[&lt;job-id&gt;]" -
8642 </p>
8643 <blockquote class="text">
8644 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8645 is a numerical ID used to obtain status information about the job progress.
8646 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>
8647
8648 </p>
8649 </blockquote>
8650
8651
8652 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8653 </p>
8654 <blockquote class="text">
8655 <p>if an invalid path is specified.
8656 </p>
8657 </blockquote>
8658
8659
8660 </blockquote><p>
8661
8662 </p>
8663 <p>Examples:
8664 </p>
8665 <p>
8666 </p>
8667 <blockquote class="text">
8668 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8669 </p>
8670 <p>S: "OK"
8671 </p>
8672 </blockquote><p>
8673
8674 </p>
8675 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8676 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8677 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8678 Removing an instrument</h3>
8679
8680 <p>The front-end can remove a particular instrument
8681 from the instruments database by sending the following command:
8682 </p>
8683 <p>
8684 </p>
8685 <blockquote class="text">
8686 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8687 </p>
8688 </blockquote><p>
8689
8690 </p>
8691 <p>Where &lt;instr_path&gt; is the absolute path name
8692 (in the instruments database) of the instrument to remove.
8693 </p>
8694 <p>Possible Answers:
8695 </p>
8696 <p>
8697 </p>
8698 <blockquote class="text">
8699 <p>"OK" -
8700 </p>
8701 <blockquote class="text">
8702 <p>if the instrument is removed successfully
8703 </p>
8704 </blockquote>
8705
8706
8707 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8708 </p>
8709 <blockquote class="text">
8710 <p>if the given path does not exist or
8711 is a directory.
8712 </p>
8713 </blockquote>
8714
8715
8716 </blockquote><p>
8717
8718 </p>
8719 <p>Examples:
8720 </p>
8721 <p>
8722 </p>
8723 <blockquote class="text">
8724 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8725 </p>
8726 <p>S: "OK"
8727 </p>
8728 </blockquote><p>
8729
8730 </p>
8731 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8732 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8733 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8734 Getting amount of instruments</h3>
8735
8736 <p>The front-end can retrieve the current amount of
8737 instruments in a specific directory by sending the following command:
8738 </p>
8739 <p>
8740 </p>
8741 <blockquote class="text">
8742 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8743 </p>
8744 </blockquote><p>
8745
8746 </p>
8747 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8748 of the directory. If RECURSIVE is specified, the number of all
8749 instruments, including those located in subdirectories of the
8750 specified directory, will be returned.
8751 </p>
8752 <p>Possible Answers:
8753 </p>
8754 <p>
8755 </p>
8756 <blockquote class="text">
8757 <p>The current number of instruments
8758 in the specified directory.
8759 </p>
8760 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8761 </p>
8762 <blockquote class="text">
8763 <p>if the given directory does not exist.
8764 </p>
8765 </blockquote>
8766
8767
8768 </blockquote><p>
8769
8770 </p>
8771 <p>Example:
8772 </p>
8773 <p>
8774 </p>
8775 <blockquote class="text">
8776 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8777 </p>
8778 <p>S: "2"
8779 </p>
8780 </blockquote><p>
8781
8782 </p>
8783 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8784 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8785 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8786 Listing all instruments in specific directory</h3>
8787
8788 <p>The front-end can retrieve the current list of instruments
8789 in specific directory by sending the following command:
8790 </p>
8791 <p>
8792 </p>
8793 <blockquote class="text">
8794 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8795 </p>
8796 </blockquote><p>
8797
8798 </p>
8799 <p>Where &lt;dir&gt; should be replaced by the absolute path
8800 name of the directory. If RECURSIVE is specified, the absolute path
8801 names of all instruments, including those located in subdirectories
8802 of the specified directory, will be returned.
8803 </p>
8804 <p>Possible Answers:
8805 </p>
8806 <p>
8807 </p>
8808 <blockquote class="text">
8809 <p>A comma separated list of all instruments
8810 (encapsulated into apostrophes) in the specified directory.
8811 </p>
8812 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8813 </p>
8814 <blockquote class="text">
8815 <p>if the given directory does not exist.
8816 </p>
8817 </blockquote>
8818
8819
8820 </blockquote><p>
8821
8822 </p>
8823 <p>Example:
8824 </p>
8825 <p>
8826 </p>
8827 <blockquote class="text">
8828 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8829 </p>
8830 <p>S: "'Bosendorfer 290','Steinway D'"
8831 </p>
8832 </blockquote><p>
8833
8834 </p>
8835 <p>
8836 </p>
8837 <blockquote class="text">
8838 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8839 </p>
8840 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8841 </p>
8842 </blockquote><p>
8843
8844 </p>
8845 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8846 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8847 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8848 Getting instrument information</h3>
8849
8850 <p>The front-end can ask for the current settings of an
8851 instrument by sending the following command:
8852 </p>
8853 <p>
8854 </p>
8855 <blockquote class="text">
8856 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8857 </p>
8858 </blockquote><p>
8859
8860 </p>
8861 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8862 name of the instrument the front-end is interested in.
8863 </p>
8864 <p>Possible Answers:
8865 </p>
8866 <p>
8867 </p>
8868 <blockquote class="text">
8869 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8870 Each answer line begins with the settings category name
8871 followed by a colon and then a space character &lt;SP&gt; and finally
8872 the info character string to that setting category. At the
8873 moment the following categories are defined:
8874 </p>
8875 <p>
8876 </p>
8877 <blockquote class="text">
8878 <p>INSTRUMENT_FILE -
8879 </p>
8880 <blockquote class="text">
8881 <p>File name of the instrument.
8882 Note that the character string may contain
8883 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8884 </p>
8885 </blockquote>
8886
8887
8888 <p>INSTRUMENT_NR -
8889 </p>
8890 <blockquote class="text">
8891 <p>Index of the instrument within the file.
8892 </p>
8893 </blockquote>
8894
8895
8896 <p>FORMAT_FAMILY -
8897 </p>
8898 <blockquote class="text">
8899 <p>The format family of the instrument.
8900 </p>
8901 </blockquote>
8902
8903
8904 <p>FORMAT_VERSION -
8905 </p>
8906 <blockquote class="text">
8907 <p>The format version of the instrument.
8908 </p>
8909 </blockquote>
8910
8911
8912 <p>SIZE -
8913 </p>
8914 <blockquote class="text">
8915 <p>The size of the instrument in bytes.
8916 </p>
8917 </blockquote>
8918
8919
8920 <p>CREATED -
8921 </p>
8922 <blockquote class="text">
8923 <p>The date and time when the instrument is added
8924 in the instruments database, represented in
8925 "YYYY-MM-DD HH:MM:SS" format
8926 </p>
8927 </blockquote>
8928
8929
8930 <p>MODIFIED -
8931 </p>
8932 <blockquote class="text">
8933 <p>The date and time of the last modification of the
8934 instrument's database settings, represented in
8935 "YYYY-MM-DD HH:MM:SS" format
8936 </p>
8937 </blockquote>
8938
8939
8940 <p>DESCRIPTION -
8941 </p>
8942 <blockquote class="text">
8943 <p>A brief description of the instrument.
8944 Note that the character string may contain
8945 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8946 </p>
8947 </blockquote>
8948
8949
8950 <p>IS_DRUM -
8951 </p>
8952 <blockquote class="text">
8953 <p>either true or false, determines whether the
8954 instrument is a drumkit or a chromatic instrument
8955 </p>
8956 </blockquote>
8957
8958
8959 <p>PRODUCT -
8960 </p>
8961 <blockquote class="text">
8962 <p>The product title of the instrument.
8963 Note that the character string may contain
8964 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8965 </p>
8966 </blockquote>
8967
8968
8969 <p>ARTISTS -
8970 </p>
8971 <blockquote class="text">
8972 <p>Lists the artist names.
8973 Note that the character string may contain
8974 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8975 </p>
8976 </blockquote>
8977
8978
8979 <p>KEYWORDS -
8980 </p>
8981 <blockquote class="text">
8982 <p>Provides a list of keywords that refer to the instrument.
8983 Keywords are separated with semicolon and blank.
8984 Note that the character string may contain
8985 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8986 </p>
8987 </blockquote>
8988
8989
8990 </blockquote>
8991
8992
8993 </blockquote><p>
8994
8995 </p>
8996 <p>The mentioned fields above don't have to be in particular order.
8997 </p>
8998 <p>Example:
8999 </p>
9000 <p>
9001 </p>
9002 <blockquote class="text">
9003 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9004 </p>
9005 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9006 </p>
9007 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9008 </p>
9009 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9010 </p>
9011 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9012 </p>
9013 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9014 </p>
9015 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9016 </p>
9017 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9018 </p>
9019 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9020 </p>
9021 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9022 </p>
9023 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9024 </p>
9025 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9026 </p>
9027 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9028 </p>
9029 <p>&nbsp;&nbsp;&nbsp;"."
9030 </p>
9031 </blockquote><p>
9032
9033 </p>
9034 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9035 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9036 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9037 Renaming an instrument</h3>
9038
9039 <p>The front-end can alter the name of a specific
9040 instrument by sending the following command:
9041 </p>
9042 <p>
9043 </p>
9044 <blockquote class="text">
9045 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9046 </p>
9047 </blockquote><p>
9048
9049 </p>
9050 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9051 &lt;name&gt; is the new name for that instrument.
9052 </p>
9053 <p>Possible Answers:
9054 </p>
9055 <p>
9056 </p>
9057 <blockquote class="text">
9058 <p>"OK" -
9059 </p>
9060 <blockquote class="text">
9061 <p>on success
9062 </p>
9063 </blockquote>
9064
9065
9066 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9067 </p>
9068 <blockquote class="text">
9069 <p>in case the given instrument does not exists,
9070 or if an instrument with name equal to the new
9071 name already exists.
9072 </p>
9073 </blockquote>
9074
9075
9076 </blockquote><p>
9077
9078 </p>
9079 <p>Example:
9080 </p>
9081 <p>
9082 </p>
9083 <blockquote class="text">
9084 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9085 </p>
9086 <p>S: "OK"
9087 </p>
9088 </blockquote><p>
9089
9090 </p>
9091 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9092 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9093 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9094 Moving an instrument</h3>
9095
9096 <p>The front-end can move a specific instrument to another directory by
9097 sending the following command:
9098 </p>
9099 <p>
9100 </p>
9101 <blockquote class="text">
9102 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9103 </p>
9104 </blockquote><p>
9105
9106 </p>
9107 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9108 to move and &lt;dst&gt; is the directory where the instrument will
9109 be moved to.
9110 </p>
9111 <p>Possible Answers:
9112 </p>
9113 <p>
9114 </p>
9115 <blockquote class="text">
9116 <p>"OK" -
9117 </p>
9118 <blockquote class="text">
9119 <p>on success
9120 </p>
9121 </blockquote>
9122
9123
9124 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9125 </p>
9126 <blockquote class="text">
9127 <p>in case the given instrument does not exists,
9128 or if an instrument with name equal to the name of the
9129 specified instrument already exists in the destination
9130 directory.
9131 </p>
9132 </blockquote>
9133
9134
9135 </blockquote><p>
9136
9137 </p>
9138 <p>Example:
9139 </p>
9140 <p>
9141 </p>
9142 <blockquote class="text">
9143 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9144 </p>
9145 <p>S: "OK"
9146 </p>
9147 </blockquote><p>
9148
9149 </p>
9150 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9151 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9152 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9153 Copying instruments</h3>
9154
9155 <p>The front-end can copy a specific instrument to another directory by
9156 sending the following command:
9157 </p>
9158 <p>
9159 </p>
9160 <blockquote class="text">
9161 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9162 </p>
9163 </blockquote><p>
9164
9165 </p>
9166 <p>Where &lt;instr&gt; is the absolute path name of the instrument
9167 to copy and &lt;dst&gt; is the directory where the instrument will
9168 be copied to.
9169 </p>
9170 <p>Possible Answers:
9171 </p>
9172 <p>
9173 </p>
9174 <blockquote class="text">
9175 <p>"OK" -
9176 </p>
9177 <blockquote class="text">
9178 <p>on success
9179 </p>
9180 </blockquote>
9181
9182
9183 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9184 </p>
9185 <blockquote class="text">
9186 <p>in case the given instrument does not exists,
9187 or if an instrument with name equal to the name of the
9188 specified instrument already exists in the destination
9189 directory.
9190 </p>
9191 </blockquote>
9192
9193
9194 </blockquote><p>
9195
9196 </p>
9197 <p>Example:
9198 </p>
9199 <p>
9200 </p>
9201 <blockquote class="text">
9202 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9203 </p>
9204 <p>S: "OK"
9205 </p>
9206 </blockquote><p>
9207
9208 </p>
9209 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9210 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9211 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9212 Changing the description of instrument</h3>
9213
9214 <p>The front-end can alter the description of a specific
9215 instrument by sending the following command:
9216 </p>
9217 <p>
9218 </p>
9219 <blockquote class="text">
9220 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9221 </p>
9222 </blockquote><p>
9223
9224 </p>
9225 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9226 &lt;desc&gt; is the new description for the instrument
9227 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9228 "<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>").
9229 </p>
9230 <p>Possible Answers:
9231 </p>
9232 <p>
9233 </p>
9234 <blockquote class="text">
9235 <p>"OK" -
9236 </p>
9237 <blockquote class="text">
9238 <p>on success
9239 </p>
9240 </blockquote>
9241
9242
9243 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9244 </p>
9245 <blockquote class="text">
9246 <p>in case the given instrument does not exists.
9247 </p>
9248 </blockquote>
9249
9250
9251 </blockquote><p>
9252
9253 </p>
9254 <p>Example:
9255 </p>
9256 <p>
9257 </p>
9258 <blockquote class="text">
9259 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9260 </p>
9261 <p>S: "OK"
9262 </p>
9263 </blockquote><p>
9264
9265 </p>
9266 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9267 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9268 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9269 Finding instruments</h3>
9270
9271 <p>The front-end can search for instruments
9272 in specific directory by sending the following command:
9273 </p>
9274 <p>
9275 </p>
9276 <blockquote class="text">
9277 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9278 </p>
9279 </blockquote><p>
9280
9281 </p>
9282 <p>Where &lt;dir&gt; should be replaced by the absolute path
9283 name of the directory to search in. If NON_RECURSIVE is specified, the
9284 directories located in subdirectories of the specified directory will not
9285 be searched. &lt;criteria-list&gt; is a list of search criterias
9286 in form of "key1=val1 key2=val2 ...". The following criterias are
9287 allowed:
9288 </p>
9289 <p>
9290
9291 <p>NAME='&lt;search-string&gt;'
9292 </p>
9293 <blockquote class="text">
9294 <p>Restricts the search to instruments, which names
9295 satisfy the supplied search string (encapsulated into apostrophes,
9296 supporting escape sequences as described in chapter
9297 "<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>").
9298 </p>
9299 </blockquote><p>
9300
9301 </p>
9302
9303
9304 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9305 </p>
9306 <blockquote class="text">
9307 <p>Restricts the search to instruments, which
9308 size is in the specified range. If &lt;min&gt; is omitted,
9309 the search results are restricted to instruments with size less then
9310 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9311 search is restricted to instruments with size greater then
9312 or equal to &lt;min&gt;.
9313 </p>
9314 </blockquote><p>
9315
9316 </p>
9317
9318
9319 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9320 </p>
9321 <blockquote class="text">
9322 <p>Restricts the search to instruments, which creation
9323 date satisfies the specified period, where &lt;date-after&gt;
9324 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9325 If &lt;date-after&gt; is omitted the search is restricted to
9326 instruments created before &lt;date-before&gt;. If
9327 &lt;date-before&gt; is omitted, the search is restricted
9328 to instruments created after &lt;date-after&gt;.
9329 </p>
9330 </blockquote><p>
9331
9332 </p>
9333
9334
9335 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9336 </p>
9337 <blockquote class="text">
9338 <p>Restricts the search to instruments, which
9339 date of last modification satisfies the specified period, where
9340 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9341 format. If &lt;date-after&gt; is omitted the search is restricted to
9342 instruments, which are last modified before &lt;date-before&gt;. If
9343 &lt;date-before&gt; is omitted, the search is restricted to instruments,
9344 which are last modified after &lt;date-after&gt;.
9345 </p>
9346 </blockquote><p>
9347
9348 </p>
9349
9350
9351 <p>DESCRIPTION='&lt;search-string&gt;'
9352 </p>
9353 <blockquote class="text">
9354 <p>Restricts the search to instruments with description
9355 that satisfies the supplied search string (encapsulated into apostrophes,
9356 supporting escape sequences as described in chapter
9357 "<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>").
9358 </p>
9359 </blockquote><p>
9360
9361 </p>
9362
9363
9364 <p>PRODUCT='&lt;search-string&gt;'
9365 </p>
9366 <blockquote class="text">
9367 <p>Restricts the search to instruments with product info
9368 that satisfies the supplied search string (encapsulated into apostrophes,
9369 supporting escape sequences as described in chapter
9370 "<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>").
9371 </p>
9372 </blockquote><p>
9373
9374 </p>
9375
9376
9377 <p>ARTISTS='&lt;search-string&gt;'
9378 </p>
9379 <blockquote class="text">
9380 <p>Restricts the search to instruments with artists info
9381 that satisfies the supplied search string (encapsulated into apostrophes,
9382 supporting escape sequences as described in chapter
9383 "<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>").
9384 </p>
9385 </blockquote><p>
9386
9387 </p>
9388
9389
9390 <p>KEYWORDS='&lt;search-string&gt;'
9391 </p>
9392 <blockquote class="text">
9393 <p>Restricts the search to instruments with keyword list
9394 that satisfies the supplied search string (encapsulated into apostrophes,
9395 supporting escape sequences as described in chapter
9396 "<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>").
9397 </p>
9398 </blockquote><p>
9399
9400 </p>
9401
9402
9403 <p>IS_DRUM=true | false
9404 </p>
9405 <blockquote class="text">
9406 <p>Either true or false. Restricts the search to
9407 drum kits or chromatic instruments.
9408 </p>
9409 </blockquote><p>
9410
9411 </p>
9412
9413
9414 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9415 </p>
9416 <blockquote class="text">
9417 <p>Restricts the search to instruments of the supplied format families,
9418 where &lt;format-list&gt; is a comma separated list of format families.
9419 </p>
9420 </blockquote><p>
9421
9422 </p>
9423
9424
9425 <p>Where &lt;search-string&gt; is either a regular expression, or a
9426 word list separated with spaces for OR search and with '+' for AND search.
9427 </p>
9428 <p>Possible Answers:
9429 </p>
9430 <p>
9431 </p>
9432 <blockquote class="text">
9433 <p>A comma separated list with the absolute path names (encapsulated into
9434 apostrophes) of all instruments in the specified directory that satisfy
9435 the supplied search criterias.
9436 </p>
9437 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9438 </p>
9439 <blockquote class="text">
9440 <p>if the given directory does not exist.
9441 </p>
9442 </blockquote>
9443
9444
9445 </blockquote><p>
9446
9447 </p>
9448 <p>Example:
9449 </p>
9450 <p>
9451 </p>
9452 <blockquote class="text">
9453 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9454 </p>
9455 <p>S: "'/Piano Collection/Bosendorfer 290'"
9456 </p>
9457 </blockquote><p>
9458
9459 </p>
9460 <p>
9461 </p>
9462 <blockquote class="text">
9463 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9464 </p>
9465 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9466 </p>
9467 </blockquote><p>
9468
9469 </p>
9470 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9471 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9472 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9473 Getting job status information</h3>
9474
9475 <p>The front-end can ask for the current status of a
9476 particular database instruments job by sending the following command:
9477 </p>
9478 <p>
9479 </p>
9480 <blockquote class="text">
9481 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9482 </p>
9483 </blockquote><p>
9484
9485 </p>
9486 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9487 of the job the front-end is interested in.
9488 </p>
9489 <p>Possible Answers:
9490 </p>
9491 <p>
9492 </p>
9493 <blockquote class="text">
9494 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9495 Each answer line begins with the settings category name
9496 followed by a colon and then a space character &lt;SP&gt; and finally
9497 the info character string to that setting category. At the
9498 moment the following categories are defined:
9499 </p>
9500 <p>
9501 </p>
9502 <blockquote class="text">
9503 <p>FILES_TOTAL -
9504 </p>
9505 <blockquote class="text">
9506 <p>The total number of files scheduled for scanning
9507 </p>
9508 </blockquote>
9509
9510
9511 <p>FILES_SCANNED -
9512 </p>
9513 <blockquote class="text">
9514 <p>The current number of scanned files
9515 </p>
9516 </blockquote>
9517
9518
9519 <p>SCANNING -
9520 </p>
9521 <blockquote class="text">
9522 <p>The absolute path name of the file which is currently
9523 being scanned
9524 </p>
9525 </blockquote>
9526
9527
9528 <p>STATUS -
9529 </p>
9530 <blockquote class="text">
9531 <p>An integer value between 0 and 100 indicating the
9532 scanning progress percentage of the file which is
9533 currently being scanned
9534 </p>
9535 </blockquote>
9536
9537
9538 </blockquote>
9539
9540
9541 </blockquote><p>
9542
9543 </p>
9544 <p>The mentioned fields above don't have to be in particular order.
9545 </p>
9546 <p>Example:
9547 </p>
9548 <p>
9549 </p>
9550 <blockquote class="text">
9551 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9552 </p>
9553 <p>S: "FILES_TOTAL: 12"
9554 </p>
9555 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9556 </p>
9557 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9558 </p>
9559 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9560 </p>
9561 <p>&nbsp;&nbsp;&nbsp;"."
9562 </p>
9563 </blockquote><p>
9564
9565 </p>
9566 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9567 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9568 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9569 Formatting the instruments database</h3>
9570
9571 <p>The front-end can remove all instruments and directories and re-create
9572 the instruments database structure (e.g., in case of a database corruption)
9573 by sending the following command:
9574 </p>
9575 <p>
9576 </p>
9577 <blockquote class="text">
9578 <p>FORMAT INSTRUMENTS_DB
9579 </p>
9580 </blockquote><p>
9581
9582 </p>
9583 <p>Possible Answers:
9584 </p>
9585 <p>
9586 </p>
9587 <blockquote class="text">
9588 <p>"OK" -
9589 </p>
9590 <blockquote class="text">
9591 <p>on success
9592 </p>
9593 </blockquote>
9594
9595
9596 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9597 </p>
9598 <blockquote class="text">
9599 <p>If the formatting of the instruments database
9600 failed.
9601 </p>
9602 </blockquote>
9603
9604
9605 </blockquote><p>
9606
9607 </p>
9608 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9609 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9610 <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9611 Checking for lost instrument files</h3>
9612
9613 <p>The front-end can retrieve the list of all instrument files in the instruments database
9614 that don't exist in the filesystem by sending the following command:
9615 </p>
9616 <p>
9617 </p>
9618 <blockquote class="text">
9619 <p>FIND LOST DB_INSTRUMENT_FILES
9620 </p>
9621 </blockquote><p>
9622
9623 </p>
9624 <p>Possible Answers:
9625 </p>
9626 <p>
9627 </p>
9628 <blockquote class="text">
9629 <p>A comma separated list with the absolute path names
9630 (encapsulated into apostrophes) of all lost instrument files.
9631 </p>
9632 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9633 </p>
9634 <blockquote class="text">
9635 <p>in case it failed, providing an appropriate error code and error message.
9636 </p>
9637 </blockquote>
9638
9639
9640 </blockquote><p>
9641
9642 </p>
9643 <p>Example:
9644 </p>
9645 <p>
9646 </p>
9647 <blockquote class="text">
9648 <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9649 </p>
9650 <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9651 </p>
9652 </blockquote><p>
9653
9654 </p>
9655 <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9656 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9657 <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9658 Replacing an instrument file</h3>
9659
9660 <p>The front-end can substitute all occurrences of an instrument file
9661 in the instruments database with a new one by sending the following command:
9662 </p>
9663 <p>
9664 </p>
9665 <blockquote class="text">
9666 <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9667 </p>
9668 </blockquote><p>
9669
9670 </p>
9671 <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9672 to substitute with &lt;new_path&gt;.
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 it failed, providing an appropriate error code and error message.
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 FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9704 </p>
9705 <p>S: "OK"
9706 </p>
9707 </blockquote><p>
9708
9709 </p>
9710 <a name="editing_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.9"></a><h3>6.9.&nbsp;
9713 Editing Instruments</h3>
9714
9715 <p>The sampler allows to edit instruments while playing with the
9716 sampler by spawning an external (3rd party) instrument editor
9717 application for a given instrument. The 3rd party instrument
9718 editor applications have to place a respective plugin DLL file
9719 into the sampler's plugins directory. The sampler will
9720 automatically try to load all plugin DLLs in that directory on
9721 startup and only on startup!
9722 </p>
9723 <p>At the moment there is only one command for this feature set,
9724 but this will most probably change in future.
9725 </p>
9726 <a name="EDIT INSTRUMENT"></a><br /><hr />
9727 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9728 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9729 Opening an appropriate instrument editor application</h3>
9730
9731 <p>The front-end can request to open an appropriate instrument
9732 editor application by sending the following command:
9733 </p>
9734 <p>
9735 </p>
9736 <blockquote class="text">
9737 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9738 </p>
9739 </blockquote><p>
9740
9741 </p>
9742 <p>Where &lt;sampler-channel&gt; should be replaced by the
9743 number of the sampler channel as given by the
9744 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9745 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9746 command.
9747 </p>
9748 <p>The sampler will try to ask all registered instrument
9749 editors (or to be more specific: their sampler plugins)
9750 whether they are capable to handle the instrument on the
9751 given sampler channel. The sampler will simply use the first
9752 instrument editor application which replied with a positive
9753 answer and spawn that instrument editor application within
9754 the sampler's process and provide that application access
9755 to the instrument's data structures, so both applications
9756 can share and access the same instruments data at the same
9757 time, thus allowing to immediately hear changes with the
9758 sampler made by the instrument editor.
9759 </p>
9760 <p>Note: consequently instrument editors are always spawned
9761 locally on the same machine where the sampler is running
9762 on!
9763 </p>
9764 <p>Possible Answers:
9765 </p>
9766 <p>
9767 </p>
9768 <blockquote class="text">
9769 <p>"OK" -
9770 </p>
9771 <blockquote class="text">
9772 <p>when an appropriate instrument editor was
9773 launched
9774 </p>
9775 </blockquote>
9776
9777
9778 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9779 </p>
9780 <blockquote class="text">
9781 <p>when an appropriate instrument editor was
9782 launched, but there are noteworthy issues
9783 </p>
9784 </blockquote>
9785
9786
9787 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9788 </p>
9789 <blockquote class="text">
9790 <p>when an appropriate instrument editor
9791 could not be launched
9792 </p>
9793 </blockquote>
9794
9795
9796 </blockquote><p>
9797
9798 </p>
9799 <p>Examples:
9800 </p>
9801 <p>
9802 </p>
9803 <blockquote class="text">
9804 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9805 </p>
9806 <p>S: "OK"
9807 </p>
9808 </blockquote><p>
9809
9810 </p>
9811 <a name="file_management"></a><br /><hr />
9812 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9813 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9814 Managing Files</h3>
9815
9816 <p>You can query detailed informations about files located
9817 at the same system where the sampler instance is running on.
9818 Using this command set allows to retrieve file informations
9819 even remotely from another machine.
9820 </p>
9821 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9822 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9823 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9824 Retrieving amount of instruments of a file</h3>
9825
9826 <p>The front-end can retrieve the amount of instruments
9827 within a given instrument file by sending the
9828 following command:
9829 </p>
9830 <p>
9831 </p>
9832 <blockquote class="text">
9833 <p>GET FILE INSTRUMENTS &lt;filename&gt;
9834 </p>
9835 </blockquote><p>
9836
9837 </p>
9838 <p>Where &lt;filename&gt; is the name of the instrument
9839 file (encapsulated into apostrophes, supporting escape
9840 sequences as described in chapter
9841 "<a class='info' href='#character_set'>Character Set and Escape
9842 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9843 </p>
9844 <p>The sampler will try to ask all sampler engines,
9845 whether they support the given file and ask the first
9846 engine with a positive answer for the amount of
9847 instruments.
9848 </p>
9849 <p>Possible Answers:
9850 </p>
9851 <p>
9852 </p>
9853 <blockquote class="text">
9854 <p>On success, the sampler will answer by
9855 returning the amount of instruments.
9856
9857 </p>
9858 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9859 </p>
9860 <blockquote class="text">
9861 <p>if the file could not be handled
9862 </p>
9863 </blockquote>
9864
9865
9866 </blockquote><p>
9867
9868 </p>
9869 <p>Examples:
9870 </p>
9871 <p>
9872 </p>
9873 <blockquote class="text">
9874 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9875 </p>
9876 <p>S: "10"
9877 </p>
9878 </blockquote><p>
9879
9880 </p>
9881 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9882 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9883 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9884 Retrieving all instruments of a file</h3>
9885
9886 <p>The front-end can retrieve a list of all instruments
9887 within a given instrument file by sending the
9888 following command:
9889 </p>
9890 <p>
9891 </p>
9892 <blockquote class="text">
9893 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9894 </p>
9895 </blockquote><p>
9896
9897 </p>
9898 <p>Where &lt;filename&gt; is the name of the instrument
9899 file (encapsulated into apostrophes, supporting escape
9900 sequences as described in chapter
9901 "<a class='info' href='#character_set'>Character Set and Escape
9902 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9903 </p>
9904 <p>The sampler will try to ask all sampler engines,
9905 whether they support the given file and ask the first
9906 engine with a positive answer for a list of IDs for the
9907 instruments in the given file.
9908 </p>
9909 <p>Possible Answers:
9910 </p>
9911 <p>
9912 </p>
9913 <blockquote class="text">
9914 <p>On success, the sampler will answer by
9915 returning a comma separated list of
9916 instrument IDs.
9917
9918 </p>
9919 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9920 </p>
9921 <blockquote class="text">
9922 <p>if the file could not be handled
9923 </p>
9924 </blockquote>
9925
9926
9927 </blockquote><p>
9928
9929 </p>
9930 <p>Examples:
9931 </p>
9932 <p>
9933 </p>
9934 <blockquote class="text">
9935 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9936 </p>
9937 <p>S: "0,1,2,3,4,5,6,7,8,9"
9938 </p>
9939 </blockquote><p>
9940
9941 </p>
9942 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9943 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9944 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9945 Retrieving informations about one instrument in a file</h3>
9946
9947 <p>The front-end can retrieve detailed informations
9948 about a specific instrument within a given instrument
9949 file by sending the following command:
9950 </p>
9951 <p>
9952 </p>
9953 <blockquote class="text">
9954 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9955 &lt;instr-id&gt;
9956 </p>
9957 </blockquote><p>
9958
9959 </p>
9960 <p>Where &lt;filename&gt; is the name of the instrument
9961 file (encapsulated into apostrophes, supporting escape
9962 sequences as described in chapter
9963 "<a class='info' href='#character_set'>Character Set and Escape
9964 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9965 instrument ID as returned by the
9966 <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.
9967 </p>
9968 <p>The sampler will try to ask all sampler engines,
9969 whether they support the given file and ask the first
9970 engine with a positive answer for informations about the
9971 specific instrument in the given file.
9972 </p>
9973 <p>Possible Answers:
9974 </p>
9975 <p>
9976 </p>
9977 <blockquote class="text">
9978 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9979 Each answer line begins with the settings category name
9980 followed by a colon and then a space character &lt;SP&gt; and finally
9981 the info character string to that setting category. At the
9982 moment the following categories are defined:
9983 </p>
9984 <p>
9985 </p>
9986 <blockquote class="text">
9987 <p>NAME -
9988 </p>
9989 <blockquote class="text">
9990 <p>name of the instrument as
9991 stored in the instrument file
9992 </p>
9993 </blockquote>
9994
9995
9996 <p>FORMAT_FAMILY -
9997 </p>
9998 <blockquote class="text">
9999 <p>name of the sampler format
10000 of the given instrument
10001 </p>
10002 </blockquote>
10003
10004
10005 <p>FORMAT_VERSION -
10006 </p>
10007 <blockquote class="text">
10008 <p>version of the sampler format
10009 the instrumen is stored as
10010 </p>
10011 </blockquote>
10012
10013
10014 <p>PRODUCT -
10015 </p>
10016 <blockquote class="text">
10017 <p>official product name of the
10018 instrument as stored in the file
10019
10020 </p>
10021 </blockquote>
10022
10023
10024 <p>ARTISTS -
10025 </p>
10026 <blockquote class="text">
10027 <p>artists / sample library
10028 vendor of the instrument
10029 </p>
10030 </blockquote>
10031
10032
10033 <p>KEY_BINDINGS -
10034 </p>
10035 <blockquote class="text">
10036 <p>comma separated list of integer values representing
10037 the instrument's key mapping in the range between 0 .. 127,
10038 reflecting the analog meaning of the MIDI specification.
10039 </p>
10040 </blockquote>
10041
10042
10043 <p>KEYSWITCH_BINDINGS -
10044 </p>
10045 <blockquote class="text">
10046 <p>comma separated list of integer values representing
10047 the instrument's keyswitch mapping in the range between 0 .. 127,
10048 reflecting the analog meaning of the MIDI specification.
10049 </p>
10050 </blockquote>
10051
10052
10053 </blockquote>
10054
10055
10056 </blockquote><p>
10057
10058 </p>
10059 <p>The mentioned fields above don't have to be in particular order.
10060 </p>
10061 <p>Example:
10062 </p>
10063 <p>
10064 </p>
10065 <blockquote class="text">
10066 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10067 </p>
10068 <p>S: "NAME: Lunatic Loops"
10069 </p>
10070 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10071 </p>
10072 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10073 </p>
10074 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10075 </p>
10076 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10077 </p>
10078 <p>&nbsp;&nbsp;&nbsp;"."
10079 </p>
10080 </blockquote><p>
10081
10082 </p>
10083 <a name="effects"></a><br /><hr />
10084 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10085 <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10086 Managing Effects</h3>
10087
10088 <p>Audio effects (e.g. reverb, delay, compression) can be
10089 applied to the audio signals generated by the sampler. The
10090 sampler usually provides a set of internal audio effects for
10091 this task. The exact set of effects depends on the availability
10092 of third party effect plugins installed on the system where the
10093 sampler runs on.
10094 </p>
10095 <p>At the moment only "send effects" are supported. Support for
10096 "insert effects" and "master effects" is planned to be added at
10097 a later point.
10098 </p>
10099 <p>The following commands allow to retrieve the set of internal
10100 effects available to the sampler, detailed informations about
10101 those effects and to create and destroy instances of such
10102 effects. After an instance of an effect is created, the effect
10103 instance can be inserted into the audio signal path of the
10104 sampler, e.g. as send effect.
10105 </p>
10106 <p>The sampler allows to create an arbitrary amount of so called
10107 send effect chains. Each effect chain can host an arbitrary
10108 amount of effect instances. The output of the first effect
10109 instance in an effect chain is fed to the input of the second
10110 effect instance of the chain and so on. So effects in one chain
10111 are processed sequentially. Send effect chains however are
10112 processed in parallel to other send effect chains. Audio signals
10113 of sampler channels are fed to send effects by creating FX sends
10114 to the respective sampler channel and assigning a destination
10115 send effect to that FX by using the
10116 <a class='info' href='#SET FX_SEND SEND_EFFECT'>"SET FX_SEND SEND_EFFECT"<span> (</span><span class='info'>Assigning destination effect to an effect send</span><span>)</span></a>
10117 command. The latter allows to route the FX send to the beginning
10118 of a send effect chain, as well as directly to any other
10119 position of the send effect chain.
10120 </p>
10121 <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10123 <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10124 Retrieve amount of available effects</h3>
10125
10126 <p>The front-end can retrieve the amount of internal
10127 effects, available to the sampler by sending
10128 the following command:
10129 </p>
10130 <p>
10131 </p>
10132 <blockquote class="text">
10133 <p>GET AVAILABLE_EFFECTS
10134 </p>
10135 </blockquote><p>
10136
10137 </p>
10138 <p>Possible Answers:
10139 </p>
10140 <p>
10141 </p>
10142 <blockquote class="text">
10143 <p>The sampler will answer by returning the current
10144 number of effects available to the sampler.
10145 </p>
10146 </blockquote><p>
10147
10148 </p>
10149 <p>Examples:
10150 </p>
10151 <p>
10152 </p>
10153 <blockquote class="text">
10154 <p>C: "GET AVAILABLE_EFFECTS"
10155 </p>
10156 <p>S: "129"
10157 </p>
10158 </blockquote><p>
10159
10160 </p>
10161 <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10162 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10163 <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10164 Get list of available effects</h3>
10165
10166 <p>The set of available internal effects can change at
10167 runtime. The front-end can retrieve the list of internal
10168 effects, available to the sampler by sending the following
10169 command:
10170 </p>
10171 <p>
10172 </p>
10173 <blockquote class="text">
10174 <p>LIST AVAILABLE_EFFECTS
10175 </p>
10176 </blockquote><p>
10177
10178 </p>
10179 <p>Possible Answers:
10180 </p>
10181 <p>
10182 </p>
10183 <blockquote class="text">
10184 <p>The sampler will answer by returning a comma
10185 separated list with numerical IDs of effects. Note:
10186 the numercial ID of an effect is generated by the
10187 sampler for the current moment. The numerical ID of
10188 the same effect can change at runtime, e.g. when the
10189 user requests a rescan of available effect plugins.
10190
10191 </p>
10192 </blockquote><p>
10193
10194 </p>
10195 <p>Example:
10196 </p>
10197 <p>
10198 </p>
10199 <blockquote class="text">
10200 <p>C: "LIST AVAILABLE_EFFECTS"
10201 </p>
10202 <p>S: "5,6,7,120,121,122,123,124"
10203 </p>
10204 </blockquote><p>
10205
10206 </p>
10207 <a name="GET EFFECT INFO"></a><br /><hr />
10208 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10209 <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10210 Retrieving general information about an effect</h3>
10211
10212 <p>The front-end can ask for general informations about an
10213 effect by sending the following command:
10214 </p>
10215 <p>
10216 </p>
10217 <blockquote class="text">
10218 <p>GET EFFECT INFO &lt;effect-index&gt;
10219 </p>
10220 </blockquote><p>
10221
10222 </p>
10223 <p>Where &lt;effect-index&gt; is the numerical ID of an
10224 effect as returned by the
10225 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10226 command.
10227 </p>
10228 <p>Possible Answers:
10229 </p>
10230 <p>
10231 </p>
10232 <blockquote class="text">
10233 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10234 Each answer line begins with the effect information
10235 category name, followed by a colon and then a space
10236 character &lt;SP&gt; and finally the info character
10237 string to that effect information category. At the
10238 moment the following categories are defined:
10239 </p>
10240 <p>
10241 </p>
10242 <blockquote class="text">
10243 <p>SYSTEM -
10244 </p>
10245 <blockquote class="text">
10246 <p>name of the effect plugin system
10247 the effect is based on
10248 (e.g. "LADSPA")
10249 </p>
10250 </blockquote>
10251
10252
10253 <p>MODULE -
10254 </p>
10255 <blockquote class="text">
10256 <p>module of the effect plugin
10257 system that contains this effect,
10258 the module is usually the
10259 dynamic-linked library (DLL)
10260 filename of the effect plugin,
10261 including full path (note that this
10262 filename may contain
10263 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10264 </p>
10265 </blockquote>
10266
10267
10268 <p>NAME -
10269 </p>
10270 <blockquote class="text">
10271 <p>character string defining the
10272 unique name of the effect within its
10273 module (note that the character
10274 string may contain
10275 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10276 </p>
10277 </blockquote>
10278
10279
10280 <p>DESCRIPTION -
10281 </p>
10282 <blockquote class="text">
10283 <p>human readable name of the
10284 effect, intended to be displayed in
10285 user interfaces (note that the
10286 character string may contain
10287 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10288 </p>
10289 </blockquote>
10290
10291
10292 </blockquote>
10293
10294
10295 </blockquote><p>
10296
10297 </p>
10298 <p>The mentioned fields above don't have to be in particular order.
10299 </p>
10300 <p>Example:
10301 </p>
10302 <p>
10303 </p>
10304 <blockquote class="text">
10305 <p>C: "GET EFFECT INFO 121"
10306 </p>
10307 <p>S: "SYSTEM: LADSPA"
10308 </p>
10309 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10310 </p>
10311 <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10312 </p>
10313 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10314 </p>
10315 <p>&nbsp;&nbsp;&nbsp;"."
10316 </p>
10317 </blockquote><p>
10318
10319 </p>
10320 <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10321 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10322 <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10323 Creating an instance of an effect by its portable ID</h3>
10324
10325 <p>The front-end can spawn an instance of the desired
10326 effect by sending the following command:
10327 </p>
10328 <p>
10329 </p>
10330 <blockquote class="text">
10331 <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10332 </p>
10333 </blockquote><p>
10334
10335 </p>
10336 <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10337 &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10338 the "NAME" field as returned by the
10339 <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>
10340 command. The filename of argument &lt;module&gt; and the
10341 character string of argument &lt;effect-name&gt; may contain
10342 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10343 </p>
10344 <p>The sampler will try to load the requested effect and to
10345 create an instance of it. To allow loading the same effect
10346 on a different machine, probably even running a completely
10347 different operating system (e.g. Linux vs. Windows), the
10348 sampler tries to match &lt;module&gt; "softly". That means
10349 it first tries to find an effect that exactly matches the
10350 given &lt;module&gt; argument. If there is no exact match,
10351 the sampler will try to lower the restrictions on matching
10352 the &lt;module&gt; argument more and more, e.g. by ignoring
10353 upper / lower case differences and by ignoring the path of
10354 the DLL filename and file extension. If there is still no
10355 match at the end, the sampler will try to ignore the
10356 &lt;module&gt; argument completely and as a last resort
10357 search for an effect that only matches the given
10358 &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10359 </p>
10360 <p>Possible Answers:
10361 </p>
10362 <p>
10363 </p>
10364 <blockquote class="text">
10365 <p>"OK[&lt;effect-instance&gt;]" -
10366 </p>
10367 <blockquote class="text">
10368 <p>in case the effect instance was
10369 successfully created, where
10370 &lt;effect-instance&gt; is the numerical ID
10371 of the new effect instance
10372 </p>
10373 </blockquote>
10374
10375
10376 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10377 </p>
10378 <blockquote class="text">
10379 <p>in case the effect instance was spawned
10380 successfully, but there are noteworthy
10381 issue(s) related, providing an appropriate
10382 warning code and warning message
10383 </p>
10384 </blockquote>
10385
10386
10387 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10388 </p>
10389 <blockquote class="text">
10390 <p>if the effect could not be instantiated
10391 </p>
10392 </blockquote>
10393
10394
10395 </blockquote><p>
10396
10397 </p>
10398 <p>Examples:
10399 </p>
10400 <p>
10401 </p>
10402 <blockquote class="text">
10403 <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10404 </p>
10405 <p>S: "OK[0]"
10406 </p>
10407 </blockquote><p>
10408
10409 </p>
10410 <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10411 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10412 <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10413 Creating an instance of an effect by its numerical ID</h3>
10414
10415 <p>The front-end can spawn an instance of the desired
10416 effect by sending the following command:
10417 </p>
10418 <p>
10419 </p>
10420 <blockquote class="text">
10421 <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10422 </p>
10423 </blockquote><p>
10424
10425 </p>
10426 <p>Where &lt;effect-index&gt; is the numerical ID of the
10427 effect as returned by the
10428 <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10429 command.
10430 </p>
10431 <p>The sampler will try to load the requested effect and to
10432 create an instance of it.
10433 </p>
10434 <p>Note: Since the numerical ID of a certain effect can
10435 change at any time, you should not use this command in
10436 LSCP files to restore a certain effect at a later time! To
10437 store a sampler session including all its effects, use the
10438 <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10439 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
10440 allows to restore a sampler session with all its effects
10441 also on other machines, possibly even running a completely
10442 different operating system (e.g. Linux vs. Windows), with
10443 different plugin directories or plugin DLL names.
10444 </p>
10445 <p>Possible Answers:
10446 </p>
10447 <p>
10448 </p>
10449 <blockquote class="text">
10450 <p>"OK[&lt;effect-instance&gt;]" -
10451 </p>
10452 <blockquote class="text">
10453 <p>in case the effect instance was
10454 successfully created, where
10455 &lt;effect-instance&gt; is the numerical ID
10456 of the new effect instance
10457 </p>
10458 </blockquote>
10459
10460
10461 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10462 </p>
10463 <blockquote class="text">
10464 <p>in case the effect instance was spawned
10465 successfully, but there are noteworthy
10466 issue(s) related, providing an appropriate
10467 warning code and warning message
10468 </p>
10469 </blockquote>
10470
10471
10472 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10473 </p>
10474 <blockquote class="text">
10475 <p>if the effect could not be instantiated
10476 </p>
10477 </blockquote>
10478
10479
10480 </blockquote><p>
10481
10482 </p>
10483 <p>Examples:
10484 </p>
10485 <p>
10486 </p>
10487 <blockquote class="text">
10488 <p>C: "CREATE EFFECT_INSTANCE 72"
10489 </p>
10490 <p>S: "OK[5]"
10491 </p>
10492 </blockquote><p>
10493
10494 </p>
10495 <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10496 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10497 <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10498 Destroy an effect instance</h3>
10499
10500 <p>The front-end can destroy an unusued effect instance and
10501 thus freeing it from memory by sending the following command:
10502 </p>
10503 <p>
10504 </p>
10505 <blockquote class="text">
10506 <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10507 </p>
10508 </blockquote><p>
10509
10510 </p>
10511 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10512 effect instance as returned by the
10513 <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
10514 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10515 command.
10516 </p>
10517 <p>The effect instance can only be destroyed if it's not
10518 used in any part of the sampler's audio signal path anymore.
10519 If the effect instance is still in use somewhere, trying to
10520 destroy the effect instance will result in an error
10521 message.
10522 </p>
10523 <p>Possible Answers:
10524 </p>
10525 <p>
10526 </p>
10527 <blockquote class="text">
10528 <p>"OK" -
10529 </p>
10530 <blockquote class="text">
10531 <p>in case the effect instance was successfully destroyed
10532 </p>
10533 </blockquote>
10534
10535
10536 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10537 </p>
10538 <blockquote class="text">
10539 <p>in case it failed, providing an appropriate error code and
10540 error message
10541 </p>
10542 </blockquote>
10543
10544
10545 </blockquote><p>
10546
10547 </p>
10548 <p>Examples:
10549 </p>
10550 <p>
10551 </p>
10552 <blockquote class="text">
10553 <p>C: "DESTROY EFFECT_INSTANCE 5"
10554 </p>
10555 <p>S: "OK"
10556 </p>
10557 </blockquote><p>
10558
10559 </p>
10560 <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10561 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10562 <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10563 Retrieve amount of effect instances</h3>
10564
10565 <p>The front-end can retrieve the current amount of effect
10566 instances by sending the following command:
10567 </p>
10568 <p>
10569 </p>
10570 <blockquote class="text">
10571 <p>GET EFFECT_INSTANCES
10572 </p>
10573 </blockquote><p>
10574
10575 </p>
10576 <p>Possible Answers:
10577 </p>
10578 <p>
10579 </p>
10580 <blockquote class="text">
10581 <p>The sampler will answer by returning the current
10582 number of effect instances created and not yet
10583 destroyed in the current sampler session.
10584 </p>
10585 </blockquote><p>
10586
10587 </p>
10588 <p>Examples:
10589 </p>
10590 <p>
10591 </p>
10592 <blockquote class="text">
10593 <p>C: "GET EFFECT_INSTANCES"
10594 </p>
10595 <p>S: "14"
10596 </p>
10597 </blockquote><p>
10598
10599 </p>
10600 <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
10601 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10602 <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
10603 Get list of effect instances</h3>
10604
10605 <p>The front-end can retrieve the current list of effect
10606 instances by sending the following command:
10607 </p>
10608 <p>
10609 </p>
10610 <blockquote class="text">
10611 <p>LIST EFFECT_INSTANCES
10612 </p>
10613 </blockquote><p>
10614
10615 </p>
10616 <p>Possible Answers:
10617 </p>
10618 <p>
10619 </p>
10620 <blockquote class="text">
10621 <p>The sampler will answer by returning a comma
10622 separated list with numerical IDs of effects
10623 instances.
10624
10625 </p>
10626 </blockquote><p>
10627
10628 </p>
10629 <p>Example:
10630 </p>
10631 <p>
10632 </p>
10633 <blockquote class="text">
10634 <p>C: "LIST EFFECT_INSTANCES"
10635 </p>
10636 <p>S: "9,11,14,15,16,17,25"
10637 </p>
10638 </blockquote><p>
10639
10640 </p>
10641 <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
10642 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10643 <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
10644 Retrieving current information about an effect instance</h3>
10645
10646 <p>The front-end can ask for the current informations about
10647 a particular effect instance by sending the following command:
10648 </p>
10649 <p>
10650 </p>
10651 <blockquote class="text">
10652 <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
10653 </p>
10654 </blockquote><p>
10655
10656 </p>
10657 <p>Where &lt;effect-instance&gt; is the numerical ID of an
10658 effect instance as returned by the
10659 <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>
10660 or
10661 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10662 command.
10663 </p>
10664 <p>Possible Answers:
10665 </p>
10666 <p>
10667 </p>
10668 <blockquote class="text">
10669 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10670 Each answer line begins with the information
10671 category name, followed by a colon and then a space
10672 character &lt;SP&gt; and finally the info character
10673 string to that information category. At the
10674 moment the following categories are defined:
10675 </p>
10676 <p>
10677 </p>
10678 <blockquote class="text">
10679 <p>SYSTEM -
10680 </p>
10681 <blockquote class="text">
10682 <p>name of the effect plugin system
10683 the effect is based on
10684 (e.g. "LADSPA")
10685 </p>
10686 </blockquote>
10687
10688
10689 <p>MODULE -
10690 </p>
10691 <blockquote class="text">
10692 <p>module of the effect plugin
10693 system that contains this effect,
10694 the module is usually the
10695 dynamic-linked library (DLL)
10696 filename of the effect plugin,
10697 including full path (note that this
10698 filename may contain
10699 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10700 </p>
10701 </blockquote>
10702
10703
10704 <p>NAME -
10705 </p>
10706 <blockquote class="text">
10707 <p>character string defining the
10708 unique name of the effect within its
10709 module (note that the character
10710 string may contain
10711 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10712 </p>
10713 </blockquote>
10714
10715
10716 <p>DESCRIPTION -
10717 </p>
10718 <blockquote class="text">
10719 <p>human readable name of the
10720 effect, intended to be displayed in
10721 user interfaces (note that the
10722 character string may contain
10723 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10724 </p>
10725 </blockquote>
10726
10727
10728 <p>INPUT_CONTROLS -
10729 </p>
10730 <blockquote class="text">
10731 <p>amount of input controls the
10732 effect instance provides, to allow
10733 controlling the effect parameters in
10734 realtime
10735 </p>
10736 </blockquote>
10737
10738
10739 </blockquote>
10740
10741
10742 </blockquote><p>
10743
10744 </p>
10745 <p>The mentioned fields above don't have to be in particular order.
10746 </p>
10747 <p>Example:
10748 </p>
10749 <p>
10750 </p>
10751 <blockquote class="text">
10752 <p>C: "GET EFFECT_INSTANCE INFO 3"
10753 </p>
10754 <p>S: "SYSTEM: LADSPA"
10755 </p>
10756 <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
10757 </p>
10758 <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
10759 </p>
10760 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
10761 </p>
10762 <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
10763 </p>
10764 <p>&nbsp;&nbsp;&nbsp;"."
10765 </p>
10766 </blockquote><p>
10767
10768 </p>
10769 <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
10770 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10771 <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
10772 Retrieving information about an effect parameter</h3>
10773
10774 <p>Effects typically provide a certain set of effect
10775 parameters which can be altered by the user in realtime
10776 (e.g. depth of a reverb effect, duration of a delay effect,
10777 dry / wet signal ratio). Those controllable effect parameters
10778 are called "input controls". The front-end can ask for the
10779 current informations of an effect instance's input control
10780 by sending the following command:
10781 </p>
10782 <p>
10783 </p>
10784 <blockquote class="text">
10785 <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
10786 </p>
10787 </blockquote><p>
10788
10789 </p>
10790 <p>Where &lt;effect-instance&gt; is the numerical ID of an
10791 effect instance as returned by the
10792 <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>
10793 or
10794 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10795 command and &lt;input-control&gt; is the index of the input
10796 control within the numerical bounds as returned by the
10797 "INPUT_CONTROLS" field of the
10798 <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>
10799 command.
10800 </p>
10801 <p>Possible Answers:
10802 </p>
10803 <p>
10804 </p>
10805 <blockquote class="text">
10806 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10807 Each answer line begins with the information
10808 category name, followed by a colon and then a space
10809 character &lt;SP&gt; and finally the info character
10810 string to that information category. There are
10811 information categories which are always returned,
10812 independent of the respective effect parameter and
10813 there are optional information categories
10814 which are only shown for certain effect parameters.
10815 At the moment the following categories are defined:
10816 </p>
10817 <p>
10818 </p>
10819 <blockquote class="text">
10820 <p>DESCRIPTION -
10821 </p>
10822 <blockquote class="text">
10823 <p>(always returned)
10824 human readable name of the
10825 effect parameter, intended to be
10826 displayed in user interfaces (note
10827 that the character string may
10828 contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10829 </p>
10830 </blockquote>
10831
10832
10833 <p>VALUE -
10834 </p>
10835 <blockquote class="text">
10836 <p>
10837 (always returned)
10838 current (optional dotted)
10839 floating point value of this effect
10840 parameter
10841 </p>
10842 </blockquote>
10843
10844
10845 <p>RANGE_MIN -
10846 </p>
10847 <blockquote class="text">
10848 <p>
10849 (optionally returned)
10850 minimum allowed value for this
10851 effect parameter
10852 </p>
10853 </blockquote>
10854
10855
10856 <p>RANGE_MAX -
10857 </p>
10858 <blockquote class="text">
10859 <p>
10860 (optionally returned)
10861 maximum allowed value for this
10862 effect parameter
10863 </p>
10864 </blockquote>
10865
10866
10867 <p>POSSIBILITIES -
10868 </p>
10869 <blockquote class="text">
10870 <p>
10871 (optionally returned)
10872 comma separated list of
10873 (optional dotted) floating point
10874 numbers, reflecting the exact set of
10875 possible values for this effect
10876 parameter
10877 </p>
10878 </blockquote>
10879
10880
10881 <p>DEFAULT -
10882 </p>
10883 <blockquote class="text">
10884 <p>
10885 (optionally returned)
10886 default value of this effect
10887 parameter
10888 </p>
10889 </blockquote>
10890
10891
10892 </blockquote>
10893
10894
10895 </blockquote><p>
10896
10897 </p>
10898 <p>The mentioned fields above don't have to be in particular order.
10899 </p>
10900 <p>Example:
10901 </p>
10902 <p>
10903 </p>
10904 <blockquote class="text">
10905 <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
10906 </p>
10907 <p>S: "SYSTEM: LADSPA"
10908 </p>
10909 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Base delay (s)"
10910 </p>
10911 <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
10912 </p>
10913 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
10914 </p>
10915 <p>&nbsp;&nbsp;&nbsp;"."
10916 </p>
10917 </blockquote><p>
10918
10919 </p>
10920 <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
10921 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10922 <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
10923 Altering an effect parameter</h3>
10924
10925 <p>The front-end can alter the current value of an effect
10926 parameter by sending the following command:
10927 </p>
10928 <p>
10929 </p>
10930 <blockquote class="text">
10931 <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
10932 </p>
10933 </blockquote><p>
10934
10935 </p>
10936 <p>Where &lt;effect-instance&gt; is the numerical ID of the
10937 effect instance as returned by the
10938 <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
10939 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10940 command, &lt;input-control&gt; is the index of the input
10941 control within the numerical bounds as returned by the
10942 "INPUT_CONTROLS" field of the
10943 <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>
10944 command and &lt;value&gt; is the new (optional dotted)
10945 floating point value for this effect parameter.
10946 </p>
10947 <p>Possible Answers:
10948 </p>
10949 <p>
10950 </p>
10951 <blockquote class="text">
10952 <p>"OK" -
10953 </p>
10954 <blockquote class="text">
10955 <p>in case the effect was altered successfully
10956 </p>
10957 </blockquote>
10958
10959
10960 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10961 </p>
10962 <blockquote class="text">
10963 <p>in case it failed, providing an appropriate error code and
10964 error message
10965 </p>
10966 </blockquote>
10967
10968
10969 </blockquote><p>
10970
10971 </p>
10972 <p>Examples:
10973 </p>
10974 <p>
10975 </p>
10976 <blockquote class="text">
10977 <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
10978 </p>
10979 <p>S: "OK"
10980 </p>
10981 </blockquote><p>
10982
10983 </p>
10984 <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
10985 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10986 <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
10987 Retrieve amount of send effect chains</h3>
10988
10989 <p>The front-end can retrieve the current amount of send
10990 effect chains of an audio output device by sending the
10991 following command:
10992 </p>
10993 <p>
10994 </p>
10995 <blockquote class="text">
10996 <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
10997 </p>
10998 </blockquote><p>
10999
11000 </p>
11001 <p>Where &lt;audio-device&gt; should be replaced by the
11002 numerical ID of the audio output device as given by the
11003 <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>
11004 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>
11005 command.
11006 </p>
11007 <p>Possible Answers:
11008 </p>
11009 <p>
11010 </p>
11011 <blockquote class="text">
11012 <p>The sampler will answer by returning the current
11013 number of send effect chains of the supplied audio
11014 output device.
11015 </p>
11016 </blockquote><p>
11017
11018 </p>
11019 <p>Examples:
11020 </p>
11021 <p>
11022 </p>
11023 <blockquote class="text">
11024 <p>C: "GET SEND_EFFECT_CHAINS 0"
11025 </p>
11026 <p>S: "4"
11027 </p>
11028 </blockquote><p>
11029
11030 </p>
11031 <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11032 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11033 <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11034 Retrieve list of send effect chains</h3>
11035
11036 <p>The front-end can retrieve the current list of send
11037 effect chains of an audio output device by sending the
11038 following command:
11039 </p>
11040 <p>
11041 </p>
11042 <blockquote class="text">
11043 <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11044 </p>
11045 </blockquote><p>
11046
11047 </p>
11048 <p>Where &lt;audio-device&gt; should be replaced by the
11049 numerical ID of the audio output device as given by the
11050 <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>
11051 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>
11052 command.
11053 </p>
11054 <p>Possible Answers:
11055 </p>
11056 <p>
11057 </p>
11058 <blockquote class="text">
11059 <p>The sampler will answer by returning a comma
11060 separated list with numerical IDs of send effect
11061 chains of the supplied audio output device.
11062
11063 </p>
11064 </blockquote><p>
11065
11066 </p>
11067 <p>Examples:
11068 </p>
11069 <p>
11070 </p>
11071 <blockquote class="text">
11072 <p>C: "LIST SEND_EFFECT_CHAINS 0"
11073 </p>
11074 <p>S: "3,4,7"
11075 </p>
11076 </blockquote><p>
11077
11078 </p>
11079 <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11080 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11081 <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11082 Add send effect chain</h3>
11083
11084 <p>The front-end can add a send effect chain by sending the
11085 following command:
11086 </p>
11087 <p>
11088 </p>
11089 <blockquote class="text">
11090 <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11091 </p>
11092 </blockquote><p>
11093
11094 </p>
11095 <p>Where &lt;audio-device&gt; should be replaced by the
11096 numerical ID of the audio output device as given by the
11097 <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>
11098 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>
11099 command.
11100 </p>
11101 <p>Possible Answers:
11102 </p>
11103 <p>
11104 </p>
11105 <blockquote class="text">
11106 <p>"OK[&lt;effect-chain&gt;]" -
11107 </p>
11108 <blockquote class="text">
11109 <p>in case the send effect chain was
11110 added successfully, where
11111 &lt;effect-chain&gt; is the numerical ID
11112 of the new send effect chain
11113 </p>
11114 </blockquote>
11115
11116
11117 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11118 </p>
11119 <blockquote class="text">
11120 <p>if the send effect chain could not be added
11121 </p>
11122 </blockquote>
11123
11124
11125 </blockquote><p>
11126
11127 </p>
11128 <p>Examples:
11129 </p>
11130 <p>
11131 </p>
11132 <blockquote class="text">
11133 <p>C: "ADD SEND_EFFECT_CHAIN 0"
11134 </p>
11135 <p>S: "OK[2]"
11136 </p>
11137 </blockquote><p>
11138
11139 </p>
11140 <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11141 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11142 <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11143 Remove send effect chain</h3>
11144
11145 <p>The front-end can remove a send effect chain by sending
11146 the following command:
11147 </p>
11148 <p>
11149 </p>
11150 <blockquote class="text">
11151 <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11152 </p>
11153 </blockquote><p>
11154
11155 </p>
11156 <p>Where &lt;audio-device&gt; should be replaced by the
11157 numerical ID of the audio output device as given by the
11158 <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>
11159 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>
11160 command and &lt;effect-chain&gt; by the numerical ID as
11161 returned by the
11162 <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>
11163 or
11164 <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>
11165 command.
11166 </p>
11167 <p>Possible Answers:
11168 </p>
11169 <p>
11170 </p>
11171 <blockquote class="text">
11172 <p>"OK" -
11173 </p>
11174 <blockquote class="text">
11175 <p>in case the send effect chain was
11176 removed successfully
11177 </p>
11178 </blockquote>
11179
11180
11181 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11182 </p>
11183 <blockquote class="text">
11184 <p>if the send effect chain could not be removed
11185 </p>
11186 </blockquote>
11187
11188
11189 </blockquote><p>
11190
11191 </p>
11192 <p>Examples:
11193 </p>
11194 <p>
11195 </p>
11196 <blockquote class="text">
11197 <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11198 </p>
11199 <p>S: "OK"
11200 </p>
11201 </blockquote><p>
11202
11203 </p>
11204 <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11205 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11206 <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11207 Retrieving information about a send effect chain</h3>
11208
11209 <p>The front-end can ask for informations of a send effect
11210 chain by sending the following command:
11211 </p>
11212 <p>
11213 </p>
11214 <blockquote class="text">
11215 <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11216 </p>
11217 </blockquote><p>
11218
11219 </p>
11220 <p>Where &lt;audio-device&gt; should be replaced by the
11221 numerical ID of the audio output device as given by the
11222 <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>
11223 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>
11224 command and &lt;effect-chain&gt; by the numerical ID as
11225 returned by the
11226 <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>
11227 or
11228 <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>
11229 command.
11230 </p>
11231 <p>Possible Answers:
11232 </p>
11233 <p>
11234 </p>
11235 <blockquote class="text">
11236 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11237 Each answer line begins with the information
11238 category name, followed by a colon and then a space
11239 character &lt;SP&gt; and finally the info character
11240 string to that information category.
11241 At the moment the following categories are defined:
11242 </p>
11243 <p>
11244 </p>
11245 <blockquote class="text">
11246 <p>EFFECT_COUNT -
11247 </p>
11248 <blockquote class="text">
11249 <p>amount of effects in this send
11250 effect chain
11251 </p>
11252 </blockquote>
11253
11254
11255 <p>EFFECT_SEQUENCE -
11256 </p>
11257 <blockquote class="text">
11258 <p>comma separated list of the
11259 numerical IDs of the effect
11260 instances in this send effect chain,
11261 in the order as they are procssed in
11262 the effect chain
11263 </p>
11264 </blockquote>
11265
11266
11267 </blockquote>
11268
11269
11270 </blockquote><p>
11271
11272 </p>
11273 <p>The mentioned fields above don't have to be in particular order.
11274 </p>
11275 <p>Example:
11276 </p>
11277 <p>
11278 </p>
11279 <blockquote class="text">
11280 <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11281 </p>
11282 <p>S: "EFFECT_COUNT: 3"
11283 </p>
11284 <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11285 </p>
11286 <p>&nbsp;&nbsp;&nbsp;"."
11287 </p>
11288 </blockquote><p>
11289
11290 </p>
11291 <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11292 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11293 <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11294 Append effect instance to a send effect chain</h3>
11295
11296 <p>The front-end can add an unused effect instance to the
11297 end of a send effect chain by sending the following command:
11298 </p>
11299 <p>
11300 </p>
11301 <blockquote class="text">
11302 <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11303 </p>
11304 </blockquote><p>
11305
11306 </p>
11307 <p>Where &lt;audio-device&gt; should be replaced by the
11308 numerical ID of the audio output device as given by the
11309 <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>
11310 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>
11311 command and &lt;effect-chain&gt; by the numerical ID as
11312 returned by the
11313 <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>
11314 or
11315 <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>
11316 command and &lt;effect-instance&gt; as returned by the
11317 <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
11318 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11319 command.
11320 </p>
11321 <p>Only unused effect instances can be added to the effect
11322 chain. Trying to add an effect instance which is already in
11323 use somewhere in the audio signal path of the sampler will
11324 result in an error.
11325 </p>
11326 <p>Possible Answers:
11327 </p>
11328 <p>
11329 </p>
11330 <blockquote class="text">
11331 <p>"OK" -
11332 </p>
11333 <blockquote class="text">
11334 <p>in case the effect instance was
11335 added successfully to the chain
11336 </p>
11337 </blockquote>
11338
11339
11340 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11341 </p>
11342 <blockquote class="text">
11343 <p>if the effect instance could not be added
11344 </p>
11345 </blockquote>
11346
11347
11348 </blockquote><p>
11349
11350 </p>
11351 <p>Examples:
11352 </p>
11353 <p>
11354 </p>
11355 <blockquote class="text">
11356 <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11357 </p>
11358 <p>S: "OK"
11359 </p>
11360 </blockquote><p>
11361
11362 </p>
11363 <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11364 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11365 <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11366 Insert effect instance to a send effect chain</h3>
11367
11368 <p>The front-end can add an unused effect instance to a
11369 certain position of a send effect chain by sending the
11370 following command:
11371 </p>
11372 <p>
11373 </p>
11374 <blockquote class="text">
11375 <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11376 </p>
11377 </blockquote><p>
11378
11379 </p>
11380 <p>Where &lt;audio-device&gt; should be replaced by the
11381 numerical ID of the audio output device as given by the
11382 <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>
11383 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>
11384 command, &lt;effect-chain&gt; by the numerical ID as
11385 returned by the
11386 <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>
11387 or
11388 <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>
11389 command, &lt;effect-instance&gt; as returned by the
11390 <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
11391 <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11392 command and &lt;chain-pos&gt; the exact position of the
11393 effect chain where the supplied effect shall be inserted
11394 to.
11395 </p>
11396 <p>Only unused effect instances can be added to the effect
11397 chain. Trying to add an effect instance which is already in
11398 use somewhere in the audio signal path of the sampler will
11399 result in an error.
11400 </p>
11401 <p>Possible Answers:
11402 </p>
11403 <p>
11404 </p>
11405 <blockquote class="text">
11406 <p>"OK" -
11407 </p>
11408 <blockquote class="text">
11409 <p>in case the effect instance was
11410 added successfully to the chain
11411 </p>
11412 </blockquote>
11413
11414
11415 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11416 </p>
11417 <blockquote class="text">
11418 <p>if the effect instance could not be added
11419 </p>
11420 </blockquote>
11421
11422
11423 </blockquote><p>
11424
11425 </p>
11426 <p>Examples:
11427 </p>
11428 <p>
11429 </p>
11430 <blockquote class="text">
11431 <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11432 </p>
11433 <p>S: "OK"
11434 </p>
11435 </blockquote><p>
11436
11437 </p>
11438 <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11439 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11440 <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11441 Remove effect instance from send effect chain</h3>
11442
11443 <p>The front-end can remove an effect instance from a
11444 certain position of a send effect chain by sending the
11445 following command:
11446 </p>
11447 <p>
11448 </p>
11449 <blockquote class="text">
11450 <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11451 </p>
11452 </blockquote><p>
11453
11454 </p>
11455 <p>Where &lt;audio-device&gt; should be replaced by the
11456 numerical ID of the audio output device as given by the
11457 <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>
11458 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>
11459 command, &lt;effect-chain&gt; by the numerical ID as
11460 returned by the
11461 <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>
11462 or
11463 <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>
11464 command and &lt;chain-pos&gt; the exact position of the
11465 effect instance to be removed from the effect chain.
11466 </p>
11467 <p>Possible Answers:
11468 </p>
11469 <p>
11470 </p>
11471 <blockquote class="text">
11472 <p>"OK" -
11473 </p>
11474 <blockquote class="text">
11475 <p>in case the effect instance was
11476 removed successfully
11477 </p>
11478 </blockquote>
11479
11480
11481 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11482 </p>
11483 <blockquote class="text">
11484 <p>if the effect instance could not be removed
11485 </p>
11486 </blockquote>
11487
11488
11489 </blockquote><p>
11490
11491 </p>
11492 <p>Examples:
11493 </p>
11494 <p>
11495 </p>
11496 <blockquote class="text">
11497 <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11498 </p>
11499 <p>S: "OK"
11500 </p>
11501 </blockquote><p>
11502
11503 </p>
11504 <a name="command_syntax"></a><br /><hr />
11505 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11506 <a name="rfc.section.7"></a><h3>7.&nbsp;
11507 Command Syntax</h3>
11508
11509 <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>
11510 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>)
11511 where applicable.
11512
11513 </p>
11514 <p>input =
11515 </p>
11516 <blockquote class="text">
11517 <p>line LF
11518
11519 </p>
11520 <p>/ line CR LF
11521
11522 </p>
11523 </blockquote><p>
11524
11525 </p>
11526 <p>line =
11527 </p>
11528 <blockquote class="text">
11529 <p>/* epsilon (empty line ignored) */
11530
11531 </p>
11532 <p>/ comment
11533
11534 </p>
11535 <p>/ command
11536
11537 </p>
11538 <p>/ error
11539
11540 </p>
11541 </blockquote><p>
11542
11543 </p>
11544 <p>comment =
11545 </p>
11546 <blockquote class="text">
11547 <p>'#'
11548
11549 </p>
11550 <p>/ comment '#'
11551
11552 </p>
11553 <p>/ comment SP
11554
11555 </p>
11556 <p>/ comment number
11557
11558 </p>
11559 <p>/ comment string
11560
11561 </p>
11562 </blockquote><p>
11563
11564 </p>
11565 <p>command =
11566 </p>
11567 <blockquote class="text">
11568 <p>ADD SP add_instruction
11569
11570 </p>
11571 <p>/ MAP SP map_instruction
11572
11573 </p>
11574 <p>/ UNMAP SP unmap_instruction
11575
11576 </p>
11577 <p>/ GET SP get_instruction
11578
11579 </p>
11580 <p>/ CREATE SP create_instruction
11581
11582 </p>
11583 <p>/ DESTROY SP destroy_instruction
11584
11585 </p>
11586 <p>/ LIST SP list_instruction
11587
11588 </p>
11589 <p>/ LOAD SP load_instruction
11590
11591 </p>
11592 <p>/ REMOVE SP remove_instruction
11593
11594 </p>
11595 <p>/ SET SP set_instruction
11596
11597 </p>
11598 <p>/ SUBSCRIBE SP subscribe_event
11599
11600 </p>
11601 <p>/ UNSUBSCRIBE SP unsubscribe_event
11602
11603 </p>
11604 <p>/ RESET SP reset_instruction
11605
11606 </p>
11607 <p>/ CLEAR SP clear_instruction
11608
11609 </p>
11610 <p>/ FIND SP find_instruction
11611
11612 </p>
11613 <p>/ MOVE SP move_instruction
11614
11615 </p>
11616 <p>/ COPY SP copy_instruction
11617
11618 </p>
11619 <p>/ EDIT SP edit_instruction
11620
11621 </p>
11622 <p>/ FORMAT SP format_instruction
11623
11624 </p>
11625 <p>/ SEND SP send_instruction
11626
11627 </p>
11628 <p>/ APPEND SP append_instruction
11629
11630 </p>
11631 <p>/ INSERT SP insert_instruction
11632
11633 </p>
11634 <p>/ RESET
11635
11636 </p>
11637 <p>/ QUIT
11638
11639 </p>
11640 </blockquote><p>
11641
11642 </p>
11643 <p>add_instruction =
11644 </p>
11645 <blockquote class="text">
11646 <p>CHANNEL
11647
11648 </p>
11649 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11650
11651 </p>
11652 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
11653
11654 </p>
11655 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11656
11657 </p>
11658 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
11659
11660 </p>
11661 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11662
11663 </p>
11664 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
11665
11666 </p>
11667 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
11668
11669 </p>
11670 <p>/ DB_INSTRUMENTS SP db_path SP filename
11671
11672 </p>
11673 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
11674
11675 </p>
11676 <p>/ MIDI_INSTRUMENT_MAP
11677
11678 </p>
11679 <p>/ MIDI_INSTRUMENT_MAP SP map_name
11680
11681 </p>
11682 <p>/ SEND_EFFECT_CHAIN SP device_index
11683
11684 </p>
11685 </blockquote><p>
11686
11687 </p>
11688 <p>subscribe_event =
11689 </p>
11690 <blockquote class="text">
11691 <p>AUDIO_OUTPUT_DEVICE_COUNT
11692
11693 </p>
11694 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11695
11696 </p>
11697 <p>/ MIDI_INPUT_DEVICE_COUNT
11698
11699 </p>
11700 <p>/ MIDI_INPUT_DEVICE_INFO
11701
11702 </p>
11703 <p>/ CHANNEL_COUNT
11704
11705 </p>
11706 <p>/ CHANNEL_MIDI
11707
11708 </p>
11709 <p>/ DEVICE_MIDI
11710
11711 </p>
11712 <p>/ VOICE_COUNT
11713
11714 </p>
11715 <p>/ STREAM_COUNT
11716
11717 </p>
11718 <p>/ BUFFER_FILL
11719
11720 </p>
11721 <p>/ CHANNEL_INFO
11722
11723 </p>
11724 <p>/ FX_SEND_COUNT
11725
11726 </p>
11727 <p>/ FX_SEND_INFO
11728
11729 </p>
11730 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11731
11732 </p>
11733 <p>/ MIDI_INSTRUMENT_MAP_INFO
11734
11735 </p>
11736 <p>/ MIDI_INSTRUMENT_COUNT
11737
11738 </p>
11739 <p>/ MIDI_INSTRUMENT_INFO
11740
11741 </p>
11742 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11743
11744 </p>
11745 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11746
11747 </p>
11748 <p>/ DB_INSTRUMENT_COUNT
11749
11750 </p>
11751 <p>/ DB_INSTRUMENT_INFO
11752
11753 </p>
11754 <p>/ DB_INSTRUMENTS_JOB_INFO
11755
11756 </p>
11757 <p>/ MISCELLANEOUS
11758
11759 </p>
11760 <p>/ TOTAL_STREAM_COUNT
11761
11762 </p>
11763 <p>/ TOTAL_VOICE_COUNT
11764
11765 </p>
11766 <p>/ GLOBAL_INFO
11767
11768 </p>
11769 </blockquote><p>
11770
11771 </p>
11772 <p>unsubscribe_event =
11773 </p>
11774 <blockquote class="text">
11775 <p>AUDIO_OUTPUT_DEVICE_COUNT
11776
11777 </p>
11778 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11779
11780 </p>
11781 <p>/ MIDI_INPUT_DEVICE_COUNT
11782
11783 </p>
11784 <p>/ MIDI_INPUT_DEVICE_INFO
11785
11786 </p>
11787 <p>/ CHANNEL_COUNT
11788
11789 </p>
11790 <p>/ CHANNEL_MIDI
11791
11792 </p>
11793 <p>/ DEVICE_MIDI
11794
11795 </p>
11796 <p>/ VOICE_COUNT
11797
11798 </p>
11799 <p>/ STREAM_COUNT
11800
11801 </p>
11802 <p>/ BUFFER_FILL
11803
11804 </p>
11805 <p>/ CHANNEL_INFO
11806
11807 </p>
11808 <p>/ FX_SEND_COUNT
11809
11810 </p>
11811 <p>/ FX_SEND_INFO
11812
11813 </p>
11814 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11815
11816 </p>
11817 <p>/ MIDI_INSTRUMENT_MAP_INFO
11818
11819 </p>
11820 <p>/ MIDI_INSTRUMENT_COUNT
11821
11822 </p>
11823 <p>/ MIDI_INSTRUMENT_INFO
11824
11825 </p>
11826 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11827
11828 </p>
11829 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11830
11831 </p>
11832 <p>/ DB_INSTRUMENT_COUNT
11833
11834 </p>
11835 <p>/ DB_INSTRUMENT_INFO
11836
11837 </p>
11838 <p>/ DB_INSTRUMENTS_JOB_INFO
11839
11840 </p>
11841 <p>/ MISCELLANEOUS
11842
11843 </p>
11844 <p>/ TOTAL_STREAM_COUNT
11845
11846 </p>
11847 <p>/ TOTAL_VOICE_COUNT
11848
11849 </p>
11850 <p>/ GLOBAL_INFO
11851
11852 </p>
11853 </blockquote><p>
11854
11855 </p>
11856 <p>map_instruction =
11857 </p>
11858 <blockquote class="text">
11859 <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
11860
11861 </p>
11862 <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
11863
11864 </p>
11865 <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
11866
11867 </p>
11868 <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
11869
11870 </p>
11871 </blockquote><p>
11872
11873 </p>
11874 <p>unmap_instruction =
11875 </p>
11876 <blockquote class="text">
11877 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
11878
11879 </p>
11880 </blockquote><p>
11881
11882 </p>
11883 <p>remove_instruction =
11884 </p>
11885 <blockquote class="text">
11886 <p>CHANNEL SP sampler_channel
11887
11888 </p>
11889 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
11890
11891 </p>
11892 <p>/ MIDI_INSTRUMENT_MAP SP ALL
11893
11894 </p>
11895 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
11896
11897 </p>
11898 <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
11899
11900 </p>
11901 <p>/ FX_SEND SP SEND_EFFECT SP sampler_channel SP fx_send_id
11902
11903 </p>
11904 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
11905
11906 </p>
11907 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11908
11909 </p>
11910 <p>/ DB_INSTRUMENT SP db_path
11911
11912 </p>
11913 </blockquote><p>
11914
11915 </p>
11916 <p>get_instruction =
11917 </p>
11918 <blockquote class="text">
11919 <p>AVAILABLE_ENGINES
11920
11921 </p>
11922 <p>/ AVAILABLE_EFFECTS
11923
11924 </p>
11925 <p>/ EFFECT_INSTANCES
11926
11927 </p>
11928 <p>/ EFFECT SP INFO SP effect_index
11929
11930 </p>
11931 <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
11932
11933 </p>
11934 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
11935
11936 </p>
11937 <p>/ SEND_EFFECT_CHAINS SP device_index
11938
11939 </p>
11940 <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
11941
11942 </p>
11943 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
11944
11945 </p>
11946 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
11947
11948 </p>
11949 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
11950
11951 </p>
11952 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
11953
11954 </p>
11955 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
11956
11957 </p>
11958 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
11959
11960 </p>
11961 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
11962
11963 </p>
11964 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
11965
11966 </p>
11967 <p>/ AUDIO_OUTPUT_DEVICES
11968
11969 </p>
11970 <p>/ MIDI_INPUT_DEVICES
11971
11972 </p>
11973 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
11974
11975 </p>
11976 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
11977
11978 </p>
11979 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
11980
11981 </p>
11982 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
11983
11984 </p>
11985 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
11986
11987 </p>
11988 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
11989
11990 </p>
11991 <p>/ CHANNELS
11992
11993 </p>
11994 <p>/ CHANNEL SP INFO SP sampler_channel
11995
11996 </p>
11997 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
11998
11999 </p>
12000 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12001
12002 </p>
12003 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12004
12005 </p>
12006 <p>/ ENGINE SP INFO SP engine_name
12007
12008 </p>
12009 <p>/ SERVER SP INFO
12010
12011 </p>
12012 <p>/ TOTAL_STREAM_COUNT
12013
12014 </p>
12015 <p>/ TOTAL_VOICE_COUNT
12016
12017 </p>
12018 <p>/ TOTAL_VOICE_COUNT_MAX
12019
12020 </p>
12021 <p>/ MIDI_INSTRUMENTS SP midi_map
12022
12023 </p>
12024 <p>/ MIDI_INSTRUMENTS SP ALL
12025
12026 </p>
12027 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12028
12029 </p>
12030 <p>/ MIDI_INSTRUMENT_MAPS
12031
12032 </p>
12033 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12034
12035 </p>
12036 <p>/ FX_SENDS SP sampler_channel
12037
12038 </p>
12039 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12040
12041 </p>
12042 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12043
12044 </p>
12045 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12046
12047 </p>
12048 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12049
12050 </p>
12051 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12052
12053 </p>
12054 <p>/ DB_INSTRUMENTS SP db_path
12055
12056 </p>
12057 <p>/ DB_INSTRUMENT SP INFO SP db_path
12058
12059 </p>
12060 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12061
12062 </p>
12063 <p>/ VOLUME
12064
12065 </p>
12066 <p>/ VOICES
12067
12068 </p>
12069 <p>/ STREAMS
12070
12071 </p>
12072 <p>/ FILE SP INSTRUMENTS SP filename
12073
12074 </p>
12075 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12076
12077 </p>
12078 </blockquote><p>
12079
12080 </p>
12081 <p>set_instruction =
12082 </p>
12083 <blockquote class="text">
12084 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12085
12086 </p>
12087 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12088
12089 </p>
12090 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12091
12092 </p>
12093 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12094
12095 </p>
12096 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12097
12098 </p>
12099 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12100
12101 </p>
12102 <p>/ CHANNEL SP set_chan_instruction
12103
12104 </p>
12105 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12106
12107 </p>
12108 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12109
12110 </p>
12111 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12112
12113 </p>
12114 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12115
12116 </p>
12117 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12118
12119 </p>
12120 <p>/ FX_SEND SP SEND_EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12121
12122 </p>
12123 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12124
12125 </p>
12126 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12127
12128 </p>
12129 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12130
12131 </p>
12132 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12133
12134 </p>
12135 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12136
12137 </p>
12138 <p>/ ECHO SP boolean
12139
12140 </p>
12141 <p>/ VOLUME SP volume_value
12142
12143 </p>
12144 <p>/ VOICES SP number
12145
12146 </p>
12147 <p>/ STREAMS SP number
12148
12149 </p>
12150 </blockquote><p>
12151
12152 </p>
12153 <p>create_instruction =
12154 </p>
12155 <blockquote class="text">
12156 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12157
12158 </p>
12159 <p>/ AUDIO_OUTPUT_DEVICE SP string
12160
12161 </p>
12162 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12163
12164 </p>
12165 <p>/ MIDI_INPUT_DEVICE SP string
12166
12167 </p>
12168 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12169
12170 </p>
12171 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12172
12173 </p>
12174 <p>/ EFFECT_INSTANCE SP effect_index
12175
12176 </p>
12177 <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12178
12179 </p>
12180 </blockquote><p>
12181
12182 </p>
12183 <p>reset_instruction =
12184 </p>
12185 <blockquote class="text">
12186 <p>CHANNEL SP sampler_channel
12187
12188 </p>
12189 </blockquote><p>
12190
12191 </p>
12192 <p>clear_instruction =
12193 </p>
12194 <blockquote class="text">
12195 <p>MIDI_INSTRUMENTS SP midi_map
12196
12197 </p>
12198 <p>/ MIDI_INSTRUMENTS SP ALL
12199
12200 </p>
12201 </blockquote><p>
12202
12203 </p>
12204 <p>find_instruction =
12205 </p>
12206 <blockquote class="text">
12207 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12208
12209 </p>
12210 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12211
12212 </p>
12213 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12214
12215 </p>
12216 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12217
12218 </p>
12219 <p>/ LOST SP DB_INSTRUMENT_FILES
12220
12221 </p>
12222 </blockquote><p>
12223
12224 </p>
12225 <p>move_instruction =
12226 </p>
12227 <blockquote class="text">
12228 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12229
12230 </p>
12231 <p>/ DB_INSTRUMENT SP db_path SP db_path
12232
12233 </p>
12234 </blockquote><p>
12235
12236 </p>
12237 <p>copy_instruction =
12238 </p>
12239 <blockquote class="text">
12240 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12241
12242 </p>
12243 <p>/ DB_INSTRUMENT SP db_path SP db_path
12244
12245 </p>
12246 </blockquote><p>
12247
12248 </p>
12249 <p>destroy_instruction =
12250 </p>
12251 <blockquote class="text">
12252 <p>AUDIO_OUTPUT_DEVICE SP number
12253
12254 </p>
12255 <p>/ MIDI_INPUT_DEVICE SP number
12256
12257 </p>
12258 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12259
12260 </p>
12261 <p>/ EFFECT_INSTANCE SP number
12262
12263 </p>
12264 </blockquote><p>
12265
12266 </p>
12267 <p>load_instruction =
12268 </p>
12269 <blockquote class="text">
12270 <p>INSTRUMENT SP load_instr_args
12271
12272 </p>
12273 <p>/ ENGINE SP load_engine_args
12274
12275 </p>
12276 </blockquote><p>
12277
12278 </p>
12279 <p>append_instruction =
12280 </p>
12281 <blockquote class="text">
12282 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12283
12284 </p>
12285 </blockquote><p>
12286
12287 </p>
12288 <p>insert_instruction =
12289 </p>
12290 <blockquote class="text">
12291 <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12292
12293 </p>
12294 </blockquote><p>
12295
12296 </p>
12297 <p>set_chan_instruction =
12298 </p>
12299 <blockquote class="text">
12300 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12301
12302 </p>
12303 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12304
12305 </p>
12306 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12307
12308 </p>
12309 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12310
12311 </p>
12312 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12313
12314 </p>
12315 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12316
12317 </p>
12318 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12319
12320 </p>
12321 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12322
12323 </p>
12324 <p>/ VOLUME SP sampler_channel SP volume_value
12325
12326 </p>
12327 <p>/ MUTE SP sampler_channel SP boolean
12328
12329 </p>
12330 <p>/ SOLO SP sampler_channel SP boolean
12331
12332 </p>
12333 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12334
12335 </p>
12336 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12337
12338 </p>
12339 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12340
12341 </p>
12342 </blockquote><p>
12343
12344 </p>
12345 <p>edit_instruction =
12346 </p>
12347 <blockquote class="text">
12348 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12349
12350 </p>
12351 </blockquote><p>
12352
12353 </p>
12354 <p>format_instruction =
12355 </p>
12356 <blockquote class="text">
12357 <p>INSTRUMENTS_DB
12358
12359 </p>
12360 </blockquote><p>
12361
12362 </p>
12363 <p>modal_arg =
12364 </p>
12365 <blockquote class="text">
12366 <p>/* epsilon (empty argument) */
12367
12368 </p>
12369 <p>/ NON_MODAL SP
12370
12371 </p>
12372 </blockquote><p>
12373
12374 </p>
12375 <p>key_val_list =
12376 </p>
12377 <blockquote class="text">
12378 <p>string '=' param_val_list
12379
12380 </p>
12381 <p>/ key_val_list SP string '=' param_val_list
12382
12383 </p>
12384 </blockquote><p>
12385
12386 </p>
12387 <p>buffer_size_type =
12388 </p>
12389 <blockquote class="text">
12390 <p>BYTES
12391
12392 </p>
12393 <p>/ PERCENTAGE
12394
12395 </p>
12396 </blockquote><p>
12397
12398 </p>
12399 <p>list_instruction =
12400 </p>
12401 <blockquote class="text">
12402 <p>AUDIO_OUTPUT_DEVICES
12403
12404 </p>
12405 <p>/ MIDI_INPUT_DEVICES
12406
12407 </p>
12408 <p>/ CHANNELS
12409
12410 </p>
12411 <p>/ AVAILABLE_ENGINES
12412
12413 </p>
12414 <p>/ AVAILABLE_EFFECTS
12415
12416 </p>
12417 <p>/ EFFECT_INSTANCES
12418
12419 </p>
12420 <p>/ SEND_EFFECT_CHAINS SP number
12421
12422 </p>
12423 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12424
12425 </p>
12426 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12427
12428 </p>
12429 <p>/ MIDI_INSTRUMENTS SP midi_map
12430
12431 </p>
12432 <p>/ MIDI_INSTRUMENTS SP ALL
12433
12434 </p>
12435 <p>/ MIDI_INSTRUMENT_MAPS
12436
12437 </p>
12438 <p>/ FX_SENDS SP sampler_channel
12439
12440 </p>
12441 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12442
12443 </p>
12444 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12445
12446 </p>
12447 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12448
12449 </p>
12450 <p>/ DB_INSTRUMENTS SP db_path
12451
12452 </p>
12453 <p>/ FILE SP INSTRUMENTS SP filename
12454
12455 </p>
12456 </blockquote><p>
12457
12458 </p>
12459 <p>send_instruction =
12460 </p>
12461 <blockquote class="text">
12462 <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12463
12464 </p>
12465 </blockquote><p>
12466
12467 </p>
12468 <p>load_instr_args =
12469 </p>
12470 <blockquote class="text">
12471 <p>filename SP instrument_index SP sampler_channel
12472
12473 </p>
12474 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12475
12476 </p>
12477 </blockquote><p>
12478
12479 </p>
12480 <p>load_engine_args =
12481 </p>
12482 <blockquote class="text">
12483 <p>engine_name SP sampler_channel
12484
12485 </p>
12486 </blockquote><p>
12487
12488 </p>
12489 <p>instr_load_mode =
12490 </p>
12491 <blockquote class="text">
12492 <p>ON_DEMAND
12493
12494 </p>
12495 <p>/ ON_DEMAND_HOLD
12496
12497 </p>
12498 <p>/ PERSISTENT
12499
12500 </p>
12501 </blockquote><p>
12502
12503 </p>
12504 <p>effect_instance =
12505 </p>
12506 <blockquote class="text">
12507 <p>number
12508
12509 </p>
12510 </blockquote><p>
12511
12512 </p>
12513 <p>device_index =
12514 </p>
12515 <blockquote class="text">
12516 <p>number
12517
12518 </p>
12519 </blockquote><p>
12520
12521 </p>
12522 <p>audio_channel_index =
12523 </p>
12524 <blockquote class="text">
12525 <p>number
12526
12527 </p>
12528 </blockquote><p>
12529
12530 </p>
12531 <p>audio_output_type_name =
12532 </p>
12533 <blockquote class="text">
12534 <p>string
12535
12536 </p>
12537 </blockquote><p>
12538
12539 </p>
12540 <p>midi_input_port_index =
12541 </p>
12542 <blockquote class="text">
12543 <p>number
12544
12545 </p>
12546 </blockquote><p>
12547
12548 </p>
12549 <p>midi_input_channel_index =
12550 </p>
12551 <blockquote class="text">
12552 <p>number
12553
12554 </p>
12555 <p>/ ALL
12556
12557 </p>
12558 </blockquote><p>
12559
12560 </p>
12561 <p>midi_input_type_name =
12562 </p>
12563 <blockquote class="text">
12564 <p>string
12565
12566 </p>
12567 </blockquote><p>
12568
12569 </p>
12570 <p>midi_map =
12571 </p>
12572 <blockquote class="text">
12573 <p>number
12574
12575 </p>
12576 </blockquote><p>
12577
12578 </p>
12579 <p>midi_bank =
12580 </p>
12581 <blockquote class="text">
12582 <p>number
12583
12584 </p>
12585 </blockquote><p>
12586
12587 </p>
12588 <p>midi_prog =
12589 </p>
12590 <blockquote class="text">
12591 <p>number
12592
12593 </p>
12594 </blockquote><p>
12595
12596 </p>
12597 <p>midi_ctrl =
12598 </p>
12599 <blockquote class="text">
12600 <p>number
12601
12602 </p>
12603 </blockquote><p>
12604
12605 </p>
12606 <p>volume_value =
12607 </p>
12608 <blockquote class="text">
12609 <p>dotnum
12610
12611 </p>
12612 <p>/ number
12613
12614 </p>
12615 </blockquote><p>
12616
12617 </p>
12618 <p>control_value =
12619 </p>
12620 <blockquote class="text">
12621 <p>real
12622
12623 </p>
12624 </blockquote><p>
12625
12626 </p>
12627 <p>sampler_channel =
12628 </p>
12629 <blockquote class="text">
12630 <p>number
12631
12632 </p>
12633 </blockquote><p>
12634
12635 </p>
12636 <p>instrument_index =
12637 </p>
12638 <blockquote class="text">
12639 <p>number
12640
12641 </p>
12642 </blockquote><p>
12643
12644 </p>
12645 <p>fx_send_id =
12646 </p>
12647 <blockquote class="text">
12648 <p>number
12649
12650 </p>
12651 </blockquote><p>
12652
12653 </p>
12654 <p>engine_name =
12655 </p>
12656 <blockquote class="text">
12657 <p>string
12658
12659 </p>
12660 </blockquote><p>
12661
12662 </p>
12663 <p>filename =
12664 </p>
12665 <blockquote class="text">
12666 <p>path
12667
12668 </p>
12669 </blockquote><p>
12670
12671 </p>
12672 <p>db_path =
12673 </p>
12674 <blockquote class="text">
12675 <p>path
12676
12677 </p>
12678 </blockquote><p>
12679
12680 </p>
12681 <p>map_name =
12682 </p>
12683 <blockquote class="text">
12684 <p>stringval_escaped
12685
12686 </p>
12687 </blockquote><p>
12688
12689 </p>
12690 <p>entry_name =
12691 </p>
12692 <blockquote class="text">
12693 <p>stringval_escaped
12694
12695 </p>
12696 </blockquote><p>
12697
12698 </p>
12699 <p>fx_send_name =
12700 </p>
12701 <blockquote class="text">
12702 <p>stringval_escaped
12703
12704 </p>
12705 </blockquote><p>
12706
12707 </p>
12708 <p>effect_name =
12709 </p>
12710 <blockquote class="text">
12711 <p>stringval_escaped
12712
12713 </p>
12714 </blockquote><p>
12715
12716 </p>
12717 <p>effect_index =
12718 </p>
12719 <blockquote class="text">
12720 <p>number
12721
12722 </p>
12723 </blockquote><p>
12724
12725 </p>
12726 <p>effect_chain =
12727 </p>
12728 <blockquote class="text">
12729 <p>number
12730
12731 </p>
12732 </blockquote><p>
12733
12734 </p>
12735 <p>chain_pos =
12736 </p>
12737 <blockquote class="text">
12738 <p>number
12739
12740 </p>
12741 </blockquote><p>
12742
12743 </p>
12744 <p>input_control =
12745 </p>
12746 <blockquote class="text">
12747 <p>number
12748
12749 </p>
12750 </blockquote><p>
12751
12752 </p>
12753 <p>param_val_list =
12754 </p>
12755 <blockquote class="text">
12756 <p>param_val
12757
12758 </p>
12759 <p>/ param_val_list','param_val
12760
12761 </p>
12762 </blockquote><p>
12763
12764 </p>
12765 <p>param_val =
12766 </p>
12767 <blockquote class="text">
12768 <p>string
12769
12770 </p>
12771 <p>/ stringval
12772
12773 </p>
12774 <p>/ number
12775
12776 </p>
12777 <p>/ dotnum
12778
12779 </p>
12780 </blockquote><p>
12781
12782 </p>
12783 <p>query_val_list =
12784 </p>
12785 <blockquote class="text">
12786 <p>string '=' query_val
12787
12788 </p>
12789 <p>/ query_val_list SP string '=' query_val
12790
12791 </p>
12792 </blockquote><p>
12793
12794 </p>
12795 <p>query_val =
12796 </p>
12797 <blockquote class="text">
12798 <p>text_escaped
12799
12800 </p>
12801 <p>/ stringval_escaped
12802
12803 </p>
12804 </blockquote><p>
12805
12806 </p>
12807 <p>scan_mode =
12808 </p>
12809 <blockquote class="text">
12810 <p>RECURSIVE
12811
12812 </p>
12813 <p>/ NON_RECURSIVE
12814
12815 </p>
12816 <p>/ FLAT
12817
12818 </p>
12819 </blockquote><p>
12820
12821 </p>
12822 <p>effect_system =
12823 </p>
12824 <blockquote class="text">
12825 <p>string
12826
12827 </p>
12828 </blockquote><p>
12829
12830 </p>
12831 <p>module =
12832 </p>
12833 <blockquote class="text">
12834 <p>filename
12835
12836 </p>
12837 </blockquote><p>
12838
12839 </p>
12840 <a name="character_set"></a><br /><hr />
12841 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
12842 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
12843 Character Set and Escape Sequences</h3>
12844
12845 <p>Older versions of this protocol up to and including v1.1 only
12846 supported the standard ASCII character set (ASCII code 0 - 127)
12847 <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
12848 however support the Extended ASCII character set (ASCII code
12849 0 - 255). The same group of younger protocols also support
12850 escape sequences, but only for certain, explicitly declared
12851 parts of the protocol. The supported escape sequences are
12852 defined as follows:
12853 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
12854 <col align="left"><col align="left">
12855 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
12856 <tr>
12857 <td align="left">\n</td>
12858 <td align="left">new line</td>
12859 </tr>
12860 <tr>
12861 <td align="left">\r</td>
12862 <td align="left">carriage return</td>
12863 </tr>
12864 <tr>
12865 <td align="left">\f</td>
12866 <td align="left">form feed</td>
12867 </tr>
12868 <tr>
12869 <td align="left">\t</td>
12870 <td align="left">horizontal tab</td>
12871 </tr>
12872 <tr>
12873 <td align="left">\v</td>
12874 <td align="left">vertical tab</td>
12875 </tr>
12876 <tr>
12877 <td align="left">\'</td>
12878 <td align="left">apostrophe</td>
12879 </tr>
12880 <tr>
12881 <td align="left">\"</td>
12882 <td align="left">quotation mark</td>
12883 </tr>
12884 <tr>
12885 <td align="left">\\</td>
12886 <td align="left">backslash</td>
12887 </tr>
12888 <tr>
12889 <td align="left">\OOO</td>
12890 <td align="left">three digit octal ASCII code of the character</td>
12891 </tr>
12892 <tr>
12893 <td align="left">\xHH</td>
12894 <td align="left">two digit hex ASCII code of the character</td>
12895 </tr>
12896 </table>
12897 <br clear="all" />
12898
12899 <p>Notice: due to the transition of certain parts of the
12900 protocol which now support escape sequences, a slight backward
12901 incompatibility to protocols version v1.1 and younger has been
12902 introduced. The only difference is that in parts of the protocol
12903 where escape characters are now supported, a backslash characters
12904 MUST be escaped as well (that is as double backslash), whereas
12905 in the old versions a single backslash was sufficient.
12906 </p>
12907 <p>The following LSCP commands support escape sequences as part
12908 of their filename / path based arguments and / or may contain
12909 a filename / path with escape sequences in their response:
12910 </p>
12911 <blockquote class="text">
12912 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
12913 </p>
12914 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
12915 </p>
12916 <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>
12917 </p>
12918 <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>
12919 </p>
12920 <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>
12921 </p>
12922 <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>
12923 </p>
12924 <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>
12925 </p>
12926 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
12927 </p>
12928 <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>
12929 </p>
12930 <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>
12931 </p>
12932 <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>
12933 </p>
12934 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
12935 </p>
12936 <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>
12937 </p>
12938 <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>
12939 </p>
12940 <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>
12941 </p>
12942 <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>
12943 </p>
12944 <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>
12945 </p>
12946 <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>
12947 </p>
12948 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
12949 </p>
12950 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
12951 </p>
12952 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
12953 </p>
12954 <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>
12955 </p>
12956 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
12957 </p>
12958 <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>
12959 </p>
12960 <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>
12961 </p>
12962 <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>
12963 </p>
12964 <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>
12965 </p>
12966 <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>
12967 </p>
12968 <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>
12969 </p>
12970 <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>
12971 </p>
12972 <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>
12973 </p>
12974 <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>
12975 </p>
12976 </blockquote><p>
12977 Note that the forward slash character ('/') has a special meaning in
12978 filename / path based arguments: it acts as separator of the nodes in
12979 the path, thus if a directory- or filename includes a forward slash
12980 (not intended as path node separator), you MUST escape that slash
12981 either with the respective hex escape sequence ("\x2f") or with the
12982 respective octal escape sequence ("\057").
12983
12984 </p>
12985 <p>
12986 Note for Windows: file path arguments in LSCP are expected
12987 to use forward slashes as directory node separator similar
12988 to Unix based operating systems. In contrast to Unix however
12989 a Windows typical drive character is expected to be
12990 prefixed to the path. That is an original Windows file path
12991 like "D:\Sounds\My.gig" would become in LSCP:
12992 "D:/Sounds/My.gig".
12993
12994 </p>
12995 <p>
12996 The following LSCP commands even support escape sequences as
12997 part of at least one of their text-based arguments (i.e. entity name,
12998 description) and / or may contain escape sequences in at least one of
12999 their text-based fields in their response:
13000 </p>
13001 <blockquote class="text">
13002 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
13003 </p>
13004 <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>
13005 </p>
13006 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13007 </p>
13008 <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>
13009 </p>
13010 <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>
13011 </p>
13012 <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>
13013 </p>
13014 <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>
13015 </p>
13016 <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>
13017 </p>
13018 <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>
13019 </p>
13020 <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>
13021 </p>
13022 <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>
13023 </p>
13024 <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>
13025 </p>
13026 <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>
13027 </p>
13028 <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>
13029 </p>
13030 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13031 </p>
13032 <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>
13033 </p>
13034 <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>
13035 </p>
13036 <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>
13037 </p>
13038 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13039 </p>
13040 <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>
13041 </p>
13042 <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>
13043 </p>
13044 <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>
13045 </p>
13046 </blockquote><p>
13047 Please note that these lists are manually maintained. If you
13048 find a command that also supports escape sequences we forgot to
13049 mention here, please report it!
13050
13051 </p>
13052 <a name="events"></a><br /><hr />
13053 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13054 <a name="rfc.section.8"></a><h3>8.&nbsp;
13055 Events</h3>
13056
13057 <p>This chapter will describe all currently defined events supported by LinuxSampler.
13058 </p>
13059 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13060 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13061 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13062 Number of audio output devices changed</h3>
13063
13064 <p>Client may want to be notified when the total number of audio output devices on the
13065 back-end changes by issuing the following command:
13066 </p>
13067 <p>
13068 </p>
13069 <blockquote class="text">
13070 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13071 </p>
13072 </blockquote><p>
13073
13074 </p>
13075 <p>Server will start sending the following notification messages:
13076 </p>
13077 <p>
13078 </p>
13079 <blockquote class="text">
13080 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13081 </p>
13082 </blockquote><p>
13083
13084 </p>
13085 <p>where &lt;devices&gt; will be replaced by the new number
13086 of audio output devices.
13087 </p>
13088 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13089 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13090 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13091 Audio output device's settings changed</h3>
13092
13093 <p>Client may want to be notified when changes were made to audio output devices on the
13094 back-end by issuing the following command:
13095 </p>
13096 <p>
13097 </p>
13098 <blockquote class="text">
13099 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13100 </p>
13101 </blockquote><p>
13102
13103 </p>
13104 <p>Server will start sending the following notification messages:
13105 </p>
13106 <p>
13107 </p>
13108 <blockquote class="text">
13109 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13110 </p>
13111 </blockquote><p>
13112
13113 </p>
13114 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13115 which settings has been changed. The front-end will have to send
13116 the respective command to actually get the audio output device info. Because these messages
13117 will be triggered by LSCP commands issued by other clients rather than real
13118 time events happening on the server, it is believed that an empty notification
13119 message is sufficient here.
13120 </p>
13121 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13123 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13124 Number of MIDI input devices changed</h3>
13125
13126 <p>Client may want to be notified when the total number of MIDI input devices on the
13127 back-end changes by issuing the following command:
13128 </p>
13129 <p>
13130 </p>
13131 <blockquote class="text">
13132 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13133 </p>
13134 </blockquote><p>
13135
13136 </p>
13137 <p>Server will start sending the following notification messages:
13138 </p>
13139 <p>
13140 </p>
13141 <blockquote class="text">
13142 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13143 </p>
13144 </blockquote><p>
13145
13146 </p>
13147 <p>where &lt;devices&gt; will be replaced by the new number
13148 of MIDI input devices.
13149 </p>
13150 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13151 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13152 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13153 MIDI input device's settings changed</h3>
13154
13155 <p>Client may want to be notified when changes were made to MIDI input devices on the
13156 back-end by issuing the following command:
13157 </p>
13158 <p>
13159 </p>
13160 <blockquote class="text">
13161 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13162 </p>
13163 </blockquote><p>
13164
13165 </p>
13166 <p>Server will start sending the following notification messages:
13167 </p>
13168 <p>
13169 </p>
13170 <blockquote class="text">
13171 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13172 </p>
13173 </blockquote><p>
13174
13175 </p>
13176 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13177 which settings has been changed. The front-end will have to send
13178 the respective command to actually get the MIDI input device info. Because these messages
13179 will be triggered by LSCP commands issued by other clients rather than real
13180 time events happening on the server, it is believed that an empty notification
13181 message is sufficient here.
13182 </p>
13183 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13184 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13185 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13186 Number of sampler channels changed</h3>
13187
13188 <p>Client may want to be notified when the total number of channels on the
13189 back-end changes by issuing the following command:
13190 </p>
13191 <p>
13192 </p>
13193 <blockquote class="text">
13194 <p>SUBSCRIBE CHANNEL_COUNT
13195 </p>
13196 </blockquote><p>
13197
13198 </p>
13199 <p>Server will start sending the following notification messages:
13200 </p>
13201 <p>
13202 </p>
13203 <blockquote class="text">
13204 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13205 </p>
13206 </blockquote><p>
13207
13208 </p>
13209 <p>where &lt;channels&gt; will be replaced by the new number
13210 of sampler channels.
13211 </p>
13212 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13213 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13214 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13215 MIDI data on a sampler channel arrived</h3>
13216
13217 <p>Client may want to be notified when MIDI data arrive on sampler channels on
13218 back-end side, by issuing the following command:
13219 </p>
13220 <p>
13221 </p>
13222 <blockquote class="text">
13223 <p>SUBSCRIBE CHANNEL_MIDI
13224 </p>
13225 </blockquote><p>
13226
13227 </p>
13228 <p>Server will start sending one of the the following notification messages:
13229 </p>
13230 <p>
13231 </p>
13232 <blockquote class="text">
13233 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13234 </p>
13235 <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13236 </p>
13237 </blockquote><p>
13238
13239 </p>
13240 <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13241 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13242 0 .. 127, reflecting the analog meaning of the MIDI specification.
13243
13244 </p>
13245 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13246 delivered by this mechanism! With other words: events could be lost at any time!
13247 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13248 thread unaffected by this feature.
13249 </p>
13250 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13251 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13252 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13253 MIDI data on a MIDI input device arrived</h3>
13254
13255 <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13256 </p>
13257 <p>
13258 </p>
13259 <blockquote class="text">
13260 <p>SUBSCRIBE DEVICE_MIDI
13261 </p>
13262 </blockquote><p>
13263
13264 </p>
13265 <p>Server will start sending one of the the following notification messages:
13266 </p>
13267 <p>
13268 </p>
13269 <blockquote class="text">
13270 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13271 </p>
13272 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13273 </p>
13274 </blockquote><p>
13275
13276 </p>
13277 <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13278 by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13279 data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13280 0 .. 127, reflecting the analog meaning of the MIDI specification.
13281
13282 </p>
13283 <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13284 delivered by this mechanism! With other words: events could be lost at any time!
13285 This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13286 thread unaffected by this feature.
13287 </p>
13288 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13289 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13290 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13291 Number of active voices changed</h3>
13292
13293 <p>Client may want to be notified when the number of voices on the
13294 back-end changes by issuing the following command:
13295 </p>
13296 <p>
13297 </p>
13298 <blockquote class="text">
13299 <p>SUBSCRIBE VOICE_COUNT
13300 </p>
13301 </blockquote><p>
13302
13303 </p>
13304 <p>Server will start sending the following notification messages:
13305 </p>
13306 <p>
13307 </p>
13308 <blockquote class="text">
13309 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13310 </p>
13311 </blockquote><p>
13312
13313 </p>
13314 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13315 voice count change occurred and &lt;voices&gt; by the new number of
13316 active voices on that channel.
13317 </p>
13318 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13319 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13320 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13321 Number of active disk streams changed</h3>
13322
13323 <p>Client may want to be notified when the number of streams on the back-end
13324 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13325 </p>
13326 <p>
13327 </p>
13328 <blockquote class="text">
13329 <p>SUBSCRIBE STREAM_COUNT
13330 </p>
13331 </blockquote><p>
13332
13333 </p>
13334 <p>Server will start sending the following notification messages:
13335 </p>
13336 <p>
13337 </p>
13338 <blockquote class="text">
13339 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13340 </p>
13341 </blockquote><p>
13342
13343 </p>
13344 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13345 stream count change occurred and &lt;streams&gt; by the new number of
13346 active disk streams on that channel.
13347 </p>
13348 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13349 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13350 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13351 Disk stream buffer fill state changed</h3>
13352
13353 <p>Client may want to be notified when the buffer fill state of a disk stream
13354 on the back-end changes by issuing the following command:
13355 </p>
13356 <p>
13357 </p>
13358 <blockquote class="text">
13359 <p>SUBSCRIBE BUFFER_FILL
13360 </p>
13361 </blockquote><p>
13362
13363 </p>
13364 <p>Server will start sending the following notification messages:
13365 </p>
13366 <p>
13367 </p>
13368 <blockquote class="text">
13369 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13370 </p>
13371 </blockquote><p>
13372
13373 </p>
13374 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13375 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13376 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>
13377 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.
13378 </p>
13379 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13380 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13381 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13382 Channel information changed</h3>
13383
13384 <p>Client may want to be notified when changes were made to sampler channels on the
13385 back-end by issuing the following command:
13386 </p>
13387 <p>
13388 </p>
13389 <blockquote class="text">
13390 <p>SUBSCRIBE CHANNEL_INFO
13391 </p>
13392 </blockquote><p>
13393
13394 </p>
13395 <p>Server will start sending the following notification messages:
13396 </p>
13397 <p>
13398 </p>
13399 <blockquote class="text">
13400 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13401 </p>
13402 </blockquote><p>
13403
13404 </p>
13405 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13406 channel info change occurred. The front-end will have to send
13407 the respective command to actually get the channel info. Because these messages
13408 will be triggered by LSCP commands issued by other clients rather than real
13409 time events happening on the server, it is believed that an empty notification
13410 message is sufficient here.
13411 </p>
13412 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13413 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13414 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13415 Number of effect sends changed</h3>
13416
13417 <p>Client may want to be notified when the number of effect sends on
13418 a particular sampler channel is changed by issuing the following command:
13419 </p>
13420 <p>
13421 </p>
13422 <blockquote class="text">
13423 <p>SUBSCRIBE FX_SEND_COUNT
13424 </p>
13425 </blockquote><p>
13426
13427 </p>
13428 <p>Server will start sending the following notification messages:
13429 </p>
13430 <p>
13431 </p>
13432 <blockquote class="text">
13433 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13434 </p>
13435 </blockquote><p>
13436
13437 </p>
13438 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13439 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13440 be replaced by the new number of effect sends on that channel.
13441 </p>
13442 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13443 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13444 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13445 Effect send information changed</h3>
13446
13447 <p>Client may want to be notified when changes were made to effect sends on a
13448 a particular sampler channel by issuing the following command:
13449 </p>
13450 <p>
13451 </p>
13452 <blockquote class="text">
13453 <p>SUBSCRIBE FX_SEND_INFO
13454 </p>
13455 </blockquote><p>
13456
13457 </p>
13458 <p>Server will start sending the following notification messages:
13459 </p>
13460 <p>
13461 </p>
13462 <blockquote class="text">
13463 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13464 </p>
13465 </blockquote><p>
13466
13467 </p>
13468 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13469 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13470 be replaced by the numerical ID of the changed effect send.
13471 </p>
13472 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13473 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13474 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13475 Total number of active voices changed</h3>
13476
13477 <p>Client may want to be notified when the total number of voices on the
13478 back-end changes by issuing the following command:
13479 </p>
13480 <p>
13481 </p>
13482 <blockquote class="text">
13483 <p>SUBSCRIBE TOTAL_VOICE_COUNT
13484 </p>
13485 </blockquote><p>
13486
13487 </p>
13488 <p>Server will start sending the following notification messages:
13489 </p>
13490 <p>
13491 </p>
13492 <blockquote class="text">
13493 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13494 </p>
13495 </blockquote><p>
13496
13497 </p>
13498 <p>where &lt;voices&gt; will be replaced by the new number of
13499 all currently active voices.
13500 </p>
13501 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13502 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13503 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13504 Total number of active disk streams changed</h3>
13505
13506 <p>Client may want to be notified when the total number of disk streams on the
13507 back-end changes by issuing the following command:
13508 </p>
13509 <p>
13510 </p>
13511 <blockquote class="text">
13512 <p>SUBSCRIBE TOTAL_STREAM_COUNT
13513 </p>
13514 </blockquote><p>
13515
13516 </p>
13517 <p>Server will start sending the following notification messages:
13518 </p>
13519 <p>
13520 </p>
13521 <blockquote class="text">
13522 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13523 </p>
13524 </blockquote><p>
13525
13526 </p>
13527 <p>where &lt;streams&gt; will be replaced by the new number of
13528 all currently active disk streams.
13529 </p>
13530 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13531 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13532 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13533 Number of MIDI instrument maps changed</h3>
13534
13535 <p>Client may want to be notified when the number of MIDI instrument maps on the
13536 back-end changes by issuing the following command:
13537 </p>
13538 <p>
13539 </p>
13540 <blockquote class="text">
13541 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
13542 </p>
13543 </blockquote><p>
13544
13545 </p>
13546 <p>Server will start sending the following notification messages:
13547 </p>
13548 <p>
13549 </p>
13550 <blockquote class="text">
13551 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
13552 </p>
13553 </blockquote><p>
13554
13555 </p>
13556 <p>where &lt;maps&gt; will be replaced by the new number
13557 of MIDI instrument maps.
13558 </p>
13559 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
13560 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13561 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
13562 MIDI instrument map information changed</h3>
13563
13564 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
13565 back-end by issuing the following command:
13566 </p>
13567 <p>
13568 </p>
13569 <blockquote class="text">
13570 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
13571 </p>
13572 </blockquote><p>
13573
13574 </p>
13575 <p>Server will start sending the following notification messages:
13576 </p>
13577 <p>
13578 </p>
13579 <blockquote class="text">
13580 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
13581 </p>
13582 </blockquote><p>
13583
13584 </p>
13585 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13586 for which information changes occurred. The front-end will have to send
13587 the respective command to actually get the MIDI instrument map info. Because these messages
13588 will be triggered by LSCP commands issued by other clients rather than real
13589 time events happening on the server, it is believed that an empty notification
13590 message is sufficient here.
13591 </p>
13592 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
13593 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13594 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
13595 Number of MIDI instruments changed</h3>
13596
13597 <p>Client may want to be notified when the number of MIDI instrument maps on the
13598 back-end changes by issuing the following command:
13599 </p>
13600 <p>
13601 </p>
13602 <blockquote class="text">
13603 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
13604 </p>
13605 </blockquote><p>
13606
13607 </p>
13608 <p>Server will start sending the following notification messages:
13609 </p>
13610 <p>
13611 </p>
13612 <blockquote class="text">
13613 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
13614 </p>
13615 </blockquote><p>
13616
13617 </p>
13618 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
13619 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
13620 the new number of MIDI instruments in the specified map.
13621 </p>
13622 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
13623 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13624 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
13625 MIDI instrument information changed</h3>
13626
13627 <p>Client may want to be notified when changes were made to MIDI instruments on the
13628 back-end by issuing the following command:
13629 </p>
13630 <p>
13631 </p>
13632 <blockquote class="text">
13633 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
13634 </p>
13635 </blockquote><p>
13636
13637 </p>
13638 <p>Server will start sending the following notification messages:
13639 </p>
13640 <p>
13641 </p>
13642 <blockquote class="text">
13643 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
13644 </p>
13645 </blockquote><p>
13646
13647 </p>
13648 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13649 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
13650 the location of the changed MIDI instrument in the map. The front-end will have to send
13651 the respective command to actually get the MIDI instrument info. Because these messages
13652 will be triggered by LSCP commands issued by other clients rather than real
13653 time events happening on the server, it is believed that an empty notification
13654 message is sufficient here.
13655 </p>
13656 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
13657 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13658 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
13659 Global settings changed</h3>
13660
13661 <p>Client may want to be notified when changes to the global settings
13662 of the sampler were made by issuing the following command:
13663 </p>
13664 <p>
13665 </p>
13666 <blockquote class="text">
13667 <p>SUBSCRIBE GLOBAL_INFO
13668 </p>
13669 </blockquote><p>
13670
13671 </p>
13672 <p>Server will start sending the following types of notification messages:
13673 </p>
13674 <p>
13675 </p>
13676 <blockquote class="text">
13677 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
13678 golbal volume of the sampler is changed, where &lt;volume&gt; will be
13679 replaced by the optional dotted floating point value, reflecting the
13680 new global volume parameter.
13681 </p>
13682 </blockquote><p>
13683 </p>
13684 <blockquote class="text">
13685 <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
13686 golbal limit of the sampler for maximum voices is changed, where
13687 &lt;max-voices&gt; will be an integer value, reflecting the
13688 new global voice limit parameter.
13689 </p>
13690 </blockquote><p>
13691 </p>
13692 <blockquote class="text">
13693 <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
13694 golbal limit of the sampler for maximum disk streams is changed, where
13695 &lt;max-streams&gt; will be an integer value, reflecting the
13696 new global disk streams limit parameter.
13697 </p>
13698 </blockquote><p>
13699
13700 </p>
13701 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
13702 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13703 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
13704 Number of database instrument directories changed</h3>
13705
13706 <p>Client may want to be notified when the number of instrument
13707 directories in a particular directory in the instruments database
13708 is changed by issuing the following command:
13709 </p>
13710 <p>
13711 </p>
13712 <blockquote class="text">
13713 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
13714 </p>
13715 </blockquote><p>
13716
13717 </p>
13718 <p>Server will start sending the following notification messages:
13719 </p>
13720 <p>
13721 </p>
13722 <blockquote class="text">
13723 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
13724 </p>
13725 </blockquote><p>
13726
13727 </p>
13728 <p>where &lt;dir-path&gt; will be replaced by the absolute path
13729 name of the directory in the instruments database,
13730 in which the number of directories is changed.
13731 </p>
13732 <p>Note that when a non-empty directory is removed, this event
13733 is not sent for the subdirectories in that directory.
13734 </p>
13735 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
13736 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13737 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
13738 Database instrument directory information changed</h3>
13739
13740 <p>Client may want to be notified when changes were made to directories
13741 in the instruments database by issuing the following command:
13742 </p>
13743 <p>
13744 </p>
13745 <blockquote class="text">
13746 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
13747 </p>
13748 </blockquote><p>
13749
13750 </p>
13751 <p>Server will start sending the following notification messages:
13752 </p>
13753 <p>
13754 </p>
13755 <blockquote class="text">
13756 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
13757 </p>
13758 </blockquote><p>
13759
13760 </p>
13761 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
13762 of the directory, for which information changes occurred. The front-end will have to send
13763 the respective command to actually get the updated directory info. Because these messages
13764 will be triggered by LSCP commands issued by other clients rather than real
13765 time events happening on the server, it is believed that an empty notification
13766 message is sufficient here.
13767 </p>
13768 <p>
13769 </p>
13770 <blockquote class="text">
13771 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
13772 </p>
13773 </blockquote><p>
13774
13775 </p>
13776 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
13777 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13778 the new name of the directory, encapsulated into apostrophes.
13779 </p>
13780 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
13781 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13782 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
13783 Number of database instruments changed</h3>
13784
13785 <p>Client may want to be notified when the number of instruments
13786 in a particular directory in the instruments database
13787 is changed by issuing the following command:
13788 </p>
13789 <p>
13790 </p>
13791 <blockquote class="text">
13792 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
13793 </p>
13794 </blockquote><p>
13795
13796 </p>
13797 <p>Server will start sending the following notification messages:
13798 </p>
13799 <p>
13800 </p>
13801 <blockquote class="text">
13802 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
13803 </p>
13804 </blockquote><p>
13805
13806 </p>
13807 <p>where &lt;dir-path&gt; will be replaced by the absolute path
13808 name of the directory in the instruments database,
13809 in which the number of instruments is changed.
13810 </p>
13811 <p>Note that when a non-empty directory is removed, this event
13812 is not sent for the instruments in that directory.
13813 </p>
13814 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
13815 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13816 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
13817 Database instrument information changed</h3>
13818
13819 <p>Client may want to be notified when changes were made to instruments
13820 in the instruments database by issuing the following command:
13821 </p>
13822 <p>
13823 </p>
13824 <blockquote class="text">
13825 <p>SUBSCRIBE DB_INSTRUMENT_INFO
13826 </p>
13827 </blockquote><p>
13828
13829 </p>
13830 <p>Server will start sending the following notification messages:
13831 </p>
13832 <p>
13833 </p>
13834 <blockquote class="text">
13835 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
13836 </p>
13837 </blockquote><p>
13838
13839 </p>
13840 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
13841 of the instrument, which settings are changed. The front-end will have to send
13842 the respective command to actually get the updated directory info. Because these messages
13843 will be triggered by LSCP commands issued by other clients rather than real
13844 time events happening on the server, it is believed that an empty notification
13845 message is sufficient here.
13846 </p>
13847 <p>
13848 </p>
13849 <blockquote class="text">
13850 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
13851 </p>
13852 </blockquote><p>
13853
13854 </p>
13855 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
13856 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13857 the new name of the instrument, encapsulated into apostrophes.
13858 </p>
13859 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
13860 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13861 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
13862 Database job status information changed</h3>
13863
13864 <p>Client may want to be notified when the status of particular database
13865 instruments job is changed by issuing the following command:
13866 </p>
13867 <p>
13868 </p>
13869 <blockquote class="text">
13870 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
13871 </p>
13872 </blockquote><p>
13873
13874 </p>
13875 <p>Server will start sending the following notification messages:
13876 </p>
13877 <p>
13878 </p>
13879 <blockquote class="text">
13880 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
13881 </p>
13882 </blockquote><p>
13883
13884 </p>
13885 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
13886 which status is changed. The front-end will have to send the respective
13887 command to actually get the status info. Because these messages
13888 will be triggered by LSCP commands issued by other clients rather than real
13889 time events happening on the server, it is believed that an empty notification
13890 message is sufficient here.
13891 </p>
13892 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
13893 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13894 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
13895 Miscellaneous and debugging events</h3>
13896
13897 <p>Client may want to be notified of miscellaneous and debugging events occurring at
13898 the server by issuing the following command:
13899 </p>
13900 <p>
13901 </p>
13902 <blockquote class="text">
13903 <p>SUBSCRIBE MISCELLANEOUS
13904 </p>
13905 </blockquote><p>
13906
13907 </p>
13908 <p>Server will start sending the following notification messages:
13909 </p>
13910 <p>
13911 </p>
13912 <blockquote class="text">
13913 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
13914 </p>
13915 </blockquote><p>
13916
13917 </p>
13918 <p>where &lt;string&gt; will be replaced by whatever data server
13919 wants to send to the client. Client MAY display this data to the
13920 user AS IS to facilitate debugging.
13921 </p>
13922 <a name="anchor14"></a><br /><hr />
13923 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13924 <a name="rfc.section.9"></a><h3>9.&nbsp;
13925 Security Considerations</h3>
13926
13927 <p>As there is so far no method of authentication and authorization
13928 defined and so not required for a client applications to succeed to
13929 connect, running LinuxSampler might be a security risk for the host
13930 system the LinuxSampler instance is running on.
13931 </p>
13932 <a name="anchor15"></a><br /><hr />
13933 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13934 <a name="rfc.section.10"></a><h3>10.&nbsp;
13935 Acknowledgments</h3>
13936
13937 <p>This document has benefited greatly from the comments of the
13938 following people, discussed on the LinuxSampler developer's mailing
13939 list:
13940 </p>
13941 <p>
13942 </p>
13943 <blockquote class="text">
13944 <p>Rui Nuno Capela
13945 </p>
13946 <p>Vladimir Senkov
13947 </p>
13948 <p>Mark Knecht
13949 </p>
13950 <p>Grigor Iliev
13951 </p>
13952 </blockquote><p>
13953
13954 </p>
13955 <a name="rfc.references1"></a><br /><hr />
13956 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13957 <h3>11.&nbsp;References</h3>
13958 <table width="99%" border="0">
13959 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
13960 <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>
13961 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
13962 <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>
13963 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
13964 <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>
13965 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
13966 <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>
13967 </table>
13968
13969 <a name="rfc.authors"></a><br /><hr />
13970 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13971 <h3>Author's Address</h3>
13972 <table width="99%" border="0" cellpadding="0" cellspacing="0">
13973 <tr><td class="author-text">&nbsp;</td>
13974 <td class="author-text">C.
13975 Schoenebeck</td></tr>
13976 <tr><td class="author-text">&nbsp;</td>
13977 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
13978 <tr><td class="author-text">&nbsp;</td>
13979 <td class="author-text">Max-Planck-Str. 39</td></tr>
13980 <tr><td class="author-text">&nbsp;</td>
13981 <td class="author-text">74081 Heilbronn</td></tr>
13982 <tr><td class="author-text">&nbsp;</td>
13983 <td class="author-text">Germany</td></tr>
13984 <tr><td class="author" align="right">Email:&nbsp;</td>
13985 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
13986 </table>
13987 <a name="rfc.copyright"></a><br /><hr />
13988 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13989 <h3>Full Copyright Statement</h3>
13990 <p class='copyright'>
13991 Copyright &copy; The IETF Trust (2010).</p>
13992 <p class='copyright'>
13993 This document is subject to the rights,
13994 licenses and restrictions contained in BCP&nbsp;78,
13995 and except as set forth therein,
13996 the authors retain all their rights.</p>
13997 <p class='copyright'>
13998 This document and the information contained herein are provided
13999 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14000 THE ORGANIZATION HE/SHE REPRESENTS
14001 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14002 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14003 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14004 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14005 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14006 PURPOSE.</p>
14007 <h3>Intellectual Property</h3>
14008 <p class='copyright'>
14009 The IETF takes no position regarding the validity or scope of any
14010 Intellectual Property Rights or other rights that might be claimed
14011 to pertain to the implementation or use of the technology
14012 described in this document or the extent to which any license
14013 under such rights might or might not be available; nor does it
14014 represent that it has made any independent effort to identify any
14015 such rights.
14016 Information on the procedures with respect to
14017 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14018 <p class='copyright'>
14019 Copies of IPR disclosures made to the IETF Secretariat and any
14020 assurances of licenses to be made available,
14021 or the result of an attempt made to obtain a general license or
14022 permission for the use of such proprietary rights by implementers or
14023 users of this specification can be obtained from the IETF on-line IPR
14024 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14025 <p class='copyright'>
14026 The IETF invites any interested party to bring to its attention
14027 any copyrights,
14028 patents or patent applications,
14029 or other
14030 proprietary rights that may cover technology that may be required
14031 to implement this standard.
14032 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14033 </body></html>

  ViewVC Help
Powered by ViewVC