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

  ViewVC Help
Powered by ViewVC