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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

1 schoenebeck 2498 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2     <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4     <meta name="description" content="LinuxSampler Control Protocol">
5     <meta name="keywords" content="LSCP">
6     <meta name="generator" content="xml2rfc v1.35 (http://xml.resource.org/)">
7     <style type='text/css'><!--
8     body {
9     font-family: verdana, charcoal, helvetica, arial, sans-serif;
10     font-size: small; color: #000; background-color: #FFF;
11     margin: 2em;
12     }
13     h1, h2, h3, h4, h5, h6 {
14     font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15     font-weight: bold; font-style: normal;
16     }
17     h1 { color: #900; background-color: transparent; text-align: right; }
18     h3 { color: #333; background-color: transparent; }
19    
20     td.RFCbug {
21     font-size: x-small; text-decoration: none;
22     width: 30px; height: 30px; padding-top: 2px;
23     text-align: justify; vertical-align: middle;
24     background-color: #000;
25     }
26     td.RFCbug span.RFC {
27     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28     font-weight: bold; color: #666;
29     }
30     td.RFCbug span.hotText {
31     font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32     font-weight: normal; text-align: center; color: #FFF;
33     }
34    
35     table.TOCbug { width: 30px; height: 15px; }
36     td.TOCbug {
37     text-align: center; width: 30px; height: 15px;
38     color: #FFF; background-color: #900;
39     }
40     td.TOCbug a {
41     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42     font-weight: bold; font-size: x-small; text-decoration: none;
43     color: #FFF; background-color: transparent;
44     }
45    
46     td.header {
47     font-family: arial, helvetica, sans-serif; font-size: x-small;
48     vertical-align: top; width: 33%;
49     color: #FFF; background-color: #666;
50     }
51     td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52     td.author-text { font-size: x-small; }
53    
54     /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55     a.info {
56     /* This is the key. */
57     position: relative;
58     z-index: 24;
59     text-decoration: none;
60     }
61     a.info:hover {
62     z-index: 25;
63     color: #FFF; background-color: #900;
64     }
65     a.info span { display: none; }
66     a.info:hover span.info {
67     /* The span will display just on :hover state. */
68     display: block;
69     position: absolute;
70     font-size: smaller;
71     top: 2em; left: -5em; width: 15em;
72     padding: 2px; border: 1px solid #333;
73     color: #900; background-color: #EEE;
74     text-align: left;
75     }
76    
77     a { font-weight: bold; }
78     a:link { color: #900; background-color: transparent; }
79     a:visited { color: #633; background-color: transparent; }
80     a:active { color: #633; background-color: transparent; }
81    
82     p { margin-left: 2em; margin-right: 2em; }
83     p.copyright { font-size: x-small; }
84     p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85     table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86     td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87    
88     ol.text { margin-left: 2em; margin-right: 2em; }
89     ul.text { margin-left: 2em; margin-right: 2em; }
90     li { margin-left: 3em; }
91    
92     /* RFC-2629 <spanx>s and <artwork>s. */
93     em { font-style: italic; }
94     strong { font-weight: bold; }
95     dfn { font-weight: bold; font-style: normal; }
96     cite { font-weight: normal; font-style: normal; }
97     tt { color: #036; }
98     tt, pre, pre dfn, pre em, pre cite, pre span {
99     font-family: "Courier New", Courier, monospace; font-size: small;
100     }
101     pre {
102     text-align: left; padding: 4px;
103     color: #000; background-color: #CCC;
104     }
105     pre dfn { color: #900; }
106     pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107     pre .key { color: #33C; font-weight: bold; }
108     pre .id { color: #900; }
109     pre .str { color: #000; background-color: #CFF; }
110     pre .val { color: #066; }
111     pre .rep { color: #909; }
112     pre .oth { color: #000; background-color: #FCF; }
113     pre .err { background-color: #FCC; }
114    
115     /* RFC-2629 <texttable>s. */
116     table.all, table.full, table.headers, table.none {
117     font-size: small; text-align: center; border-width: 2px;
118     vertical-align: top; border-collapse: collapse;
119     }
120     table.all, table.full { border-style: solid; border-color: black; }
121     table.headers, table.none { border-style: none; }
122     th {
123     font-weight: bold; border-color: black;
124     border-width: 2px 2px 3px 2px;
125     }
126     table.all th, table.full th { border-style: solid; }
127     table.headers th { border-style: none none solid none; }
128     table.none th { border-style: none; }
129     table.all td {
130     border-style: solid; border-color: #333;
131     border-width: 1px 2px;
132     }
133     table.full td, table.headers td, table.none td { border-style: none; }
134    
135     hr { height: 1px; }
136     hr.insert {
137     width: 80%; border-style: none; border-width: 0;
138     color: #CCC; background-color: #CCC;
139     }
140     --></style>
141     </head>
142     <body>
143     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144     <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145     <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146     <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147     <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148     <tr><td class="header">Expires: December 3, 2011</td><td class="header">June 2011</td></tr>
149     </table></td></tr></table>
150     <h1><br />LinuxSampler Control Protocol<br />LSCP 1.5</h1>
151    
152     <h3>Abstract</h3>
153    
154     <p>The LinuxSampler Control Protocol (LSCP) is an
155     application-level protocol primarily intended for local and
156     remote controlling the LinuxSampler backend application, which is a
157     sophisticated server-like console application essentially playing
158     back audio samples and manipulating the samples in real time to
159     certain extent.
160     </p>
161     <h3>Status of this Memo</h3>
162     <p>
163     By submitting this Internet-Draft,
164     each author represents that any applicable patent or other IPR claims of which
165     he or she is aware have been or will be disclosed,
166     and any of which he or she becomes aware will be disclosed,
167     in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
168     <p>
169     Internet-Drafts are working documents of the Internet Engineering
170     Task Force (IETF). Note that other groups may also distribute
171     working documents as Internet-Drafts. The list of current
172     Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.</p>
173     <p>
174     Internet-Drafts are draft documents valid for a maximum of six months
175     and may be updated, replaced, or obsoleted by other documents at any time.
176     It is inappropriate to use Internet-Drafts as reference material or to cite
177     them other than as &ldquo;work in progress.&rdquo;</p>
178     <p>
179     This Internet-Draft will expire on December 3, 2011.</p>
180     <a name="toc"></a><br /><hr />
181     <h3>Table of Contents</h3>
182     <p class="toc">
183     <a href="#anchor1">1.</a>&nbsp;
184     Requirements notation<br />
185     <a href="#LSCP versioning">2.</a>&nbsp;
186     Versioning of this specification<br />
187     <a href="#anchor2">3.</a>&nbsp;
188     Introduction<br />
189     <a href="#anchor3">4.</a>&nbsp;
190     Focus of this protocol<br />
191     <a href="#anchor4">5.</a>&nbsp;
192     Communication Overview<br />
193     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194     Request/response communication method<br />
195     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196     Result format<br />
197     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198     Subscribe/notify communication method<br />
199     <a href="#control_commands">6.</a>&nbsp;
200     Description for control commands<br />
201     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202     Ignored lines and comments<br />
203     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204     Configuring audio drivers<br />
205     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206     Getting amount of available audio output drivers<br />
207     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208     Getting all available audio output drivers<br />
209     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210     Getting information about a specific audio
211     output driver<br />
212     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213     Getting information about specific audio
214     output driver parameter<br />
215     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216     Creating an audio output device<br />
217     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218     Destroying an audio output device<br />
219     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220     Getting all created audio output device count<br />
221     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222     Getting all created audio output device list<br />
223     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224     Getting current settings of an audio output device<br />
225     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226     Changing settings of audio output devices<br />
227     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228     Getting information about an audio channel<br />
229     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230     Getting information about specific audio channel parameter<br />
231     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232     Changing settings of audio output channels<br />
233     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234     Configuring MIDI input drivers<br />
235     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236     Getting amount of available MIDI input drivers<br />
237     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238     Getting all available MIDI input drivers<br />
239     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240     Getting information about a specific MIDI input driver<br />
241     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242     Getting information about specific MIDI input driver parameter<br />
243     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244     Creating a MIDI input device<br />
245     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246     Destroying a MIDI input device<br />
247     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248     Getting all created MIDI input device count<br />
249     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250     Getting all created MIDI input device list<br />
251     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252     Getting current settings of a MIDI input device<br />
253     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254     Changing settings of MIDI input devices<br />
255     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256     Getting information about a MIDI port<br />
257     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258     Getting information about specific MIDI port parameter<br />
259     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260     Changing settings of MIDI input ports<br />
261     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262     Configuring sampler channels<br />
263     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264     Loading an instrument<br />
265     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266     Loading a sampler engine<br />
267     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268     Getting all created sampler channel count<br />
269     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270     Getting all created sampler channel list<br />
271     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272     Adding a new sampler channel<br />
273     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274     Removing a sampler channel<br />
275     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276     Getting amount of available engines<br />
277     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278     Getting all available engines<br />
279     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280     Getting information about an engine<br />
281     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282     Getting sampler channel information<br />
283     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284     Current number of active voices<br />
285     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286     Current number of active disk streams<br />
287     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288     Current fill state of disk stream buffers<br />
289     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290     Setting audio output device<br />
291     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292     Setting audio output type<br />
293     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294     Setting audio output channel<br />
295     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
296     Setting MIDI input device<br />
297     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
298     Setting MIDI input type<br />
299     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
300     Setting MIDI input port<br />
301     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
302     Setting MIDI input channel<br />
303     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
304     Setting channel volume<br />
305     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
306     Muting a sampler channel<br />
307     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
308     Soloing a sampler channel<br />
309     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
310     Assigning a MIDI instrument map to a sampler channel<br />
311     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
312     Adding an effect send to a sampler channel<br />
313     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
314     Removing an effect send from a sampler channel<br />
315     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
316     Getting amount of effect sends on a sampler channel<br />
317     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
318     Listing all effect sends on a sampler channel<br />
319     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
320     Getting effect send information<br />
321     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
322     Changing effect send's name<br />
323     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
324     Altering effect send's audio routing<br />
325     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.32.</a>&nbsp;
326     Assigning destination effect to an effect send<br />
327     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.33.</a>&nbsp;
328     Removing destination effect from an effect send<br />
329     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.34.</a>&nbsp;
330     Altering effect send's MIDI controller<br />
331     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.35.</a>&nbsp;
332     Altering effect send's send level<br />
333     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.36.</a>&nbsp;
334     Sending MIDI messages to sampler channel<br />
335     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.37.</a>&nbsp;
336     Resetting a sampler channel<br />
337     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
338     Controlling connection<br />
339     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
340     Register front-end for receiving event messages<br />
341     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
342     Unregister front-end for not receiving event messages<br />
343     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
344     Enable or disable echo of commands<br />
345     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
346     Close client connection<br />
347     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
348     Global commands<br />
349     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
350     Current number of active voices<br />
351     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
352     Maximum amount of active voices<br />
353     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
354     Current number of active disk streams<br />
355     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
356     Reset sampler<br />
357     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
358     General sampler informations<br />
359     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
360     Getting global volume attenuation<br />
361     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
362     Setting global volume attenuation<br />
363     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
364     Getting global voice limit<br />
365     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
366     Setting global voice limit<br />
367     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
368     Getting global disk stream limit<br />
369     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
370     Setting global disk stream limit<br />
371     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
372     MIDI Instrument Mapping<br />
373     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
374     Create a new MIDI instrument map<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
376     Delete one particular or all MIDI instrument maps<br />
377     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
378     Get amount of existing MIDI instrument maps<br />
379     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
380     Getting all created MIDI instrument maps<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
382     Getting MIDI instrument map information<br />
383     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
384     Renaming a MIDI instrument map<br />
385     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
386     Create or replace a MIDI instrument map entry<br />
387     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
388     Getting ammount of MIDI instrument map entries<br />
389     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
390     Getting indeces of all entries of a MIDI instrument map<br />
391     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
392     Remove an entry from the MIDI instrument map<br />
393     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
394     Get current settings of MIDI instrument map entry<br />
395     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
396     Clear MIDI instrument map<br />
397     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
398     Managing Instruments Database<br />
399     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
400     Creating a new instrument directory<br />
401     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
402     Deleting an instrument directory<br />
403     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
404     Getting amount of instrument directories<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
406     Listing all directories in specific directory<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
408     Getting instrument directory information<br />
409     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
410     Renaming an instrument directory<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
412     Moving an instrument directory<br />
413     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
414     Copying instrument directories<br />
415     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
416     Changing the description of directory<br />
417     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
418     Finding directories<br />
419     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
420     Adding instruments to the instruments database<br />
421     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
422     Removing an instrument<br />
423     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
424     Getting amount of instruments<br />
425     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
426     Listing all instruments in specific directory<br />
427     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
428     Getting instrument information<br />
429     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
430     Renaming an instrument<br />
431     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
432     Moving an instrument<br />
433     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
434     Copying instruments<br />
435     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
436     Changing the description of instrument<br />
437     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
438     Finding instruments<br />
439     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
440     Getting job status information<br />
441     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
442     Formatting the instruments database<br />
443     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
444     Checking for lost instrument files<br />
445     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
446     Replacing an instrument file<br />
447     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
448     Editing Instruments<br />
449     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
450     Opening an appropriate instrument editor application<br />
451     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
452     Managing Files<br />
453     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
454     Retrieving amount of instruments of a file<br />
455     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
456     Retrieving all instruments of a file<br />
457     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
458     Retrieving informations about one instrument in a file<br />
459     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
460     Managing Effects<br />
461     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
462     Retrieve amount of available effects<br />
463     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
464     Get list of available effects<br />
465     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
466     Retrieving general information about an effect<br />
467     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
468     Creating an instance of an effect by its portable ID<br />
469     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
470     Creating an instance of an effect by its numerical ID<br />
471     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
472     Destroy an effect instance<br />
473     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
474     Retrieve amount of effect instances<br />
475     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
476     Get list of effect instances<br />
477     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
478     Retrieving current information about an effect instance<br />
479     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
480     Retrieving information about an effect parameter<br />
481     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
482     Altering an effect parameter<br />
483     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
484     Retrieve amount of send effect chains<br />
485     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
486     Retrieve list of send effect chains<br />
487     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
488     Add send effect chain<br />
489     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
490     Remove send effect chain<br />
491     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
492     Retrieving information about a send effect chain<br />
493     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
494     Append effect instance to a send effect chain<br />
495     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
496     Insert effect instance to a send effect chain<br />
497     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
498     Remove effect instance from send effect chain<br />
499     <a href="#command_syntax">7.</a>&nbsp;
500     Command Syntax<br />
501     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
502     Character Set and Escape Sequences<br />
503     <a href="#events">8.</a>&nbsp;
504     Events<br />
505     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
506     Number of audio output devices changed<br />
507     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
508     Audio output device's settings changed<br />
509     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
510     Number of MIDI input devices changed<br />
511     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
512     MIDI input device's settings changed<br />
513     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
514     Number of sampler channels changed<br />
515     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
516     MIDI data on a sampler channel arrived<br />
517     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
518     MIDI data on a MIDI input device arrived<br />
519     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
520     Number of active voices changed<br />
521     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
522     Number of active disk streams changed<br />
523     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
524     Disk stream buffer fill state changed<br />
525     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
526     Channel information changed<br />
527     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
528     Number of effect sends changed<br />
529     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
530     Effect send information changed<br />
531     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
532     Total number of active voices changed<br />
533     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
534     Total number of active disk streams changed<br />
535     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
536     Number of MIDI instrument maps changed<br />
537     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
538     MIDI instrument map information changed<br />
539     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
540     Number of MIDI instruments changed<br />
541     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
542     MIDI instrument information changed<br />
543     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
544     Global settings changed<br />
545     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
546     Number of database instrument directories changed<br />
547     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
548     Database instrument directory information changed<br />
549     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
550     Number of database instruments changed<br />
551     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
552     Database instrument information changed<br />
553     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
554     Database job status information changed<br />
555     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_COUNT">8.26.</a>&nbsp;
556     Number of effect instances changed<br />
557     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_INFO">8.27.</a>&nbsp;
558     Effect instance information changed<br />
559     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_COUNT">8.28.</a>&nbsp;
560     Number of send effect chains changed<br />
561     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_INFO">8.29.</a>&nbsp;
562     Send effect chain information changed<br />
563     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.30.</a>&nbsp;
564     Miscellaneous and debugging events<br />
565     <a href="#anchor14">9.</a>&nbsp;
566     Security Considerations<br />
567     <a href="#anchor15">10.</a>&nbsp;
568     Acknowledgments<br />
569     <a href="#rfc.references1">11.</a>&nbsp;
570     References<br />
571     <a href="#rfc.authors">&#167;</a>&nbsp;
572     Author's Address<br />
573     <a href="#rfc.copyright">&#167;</a>&nbsp;
574     Intellectual Property and Copyright Statements<br />
575     </p>
576     <br clear="all" />
577    
578     <a name="anchor1"></a><br /><hr />
579     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
580     <a name="rfc.section.1"></a><h3>1.&nbsp;
581     Requirements notation</h3>
582    
583     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
584     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
585     and "OPTIONAL" in this document are to be interpreted as
586     described in <a class='info' href='#RFC2119'>[RFC2119]<span> (</span><span class='info'>Bradner, S., &ldquo;Key words for use in RFCs to Indicate Requirement Levels,&rdquo; 1997.</span><span>)</span></a>.
587     </p>
588     <p>This protocol is always case-sensitive if not explicitly
589     claimed the opposite.
590     </p>
591     <p>In examples, "C:" and "S:" indicate lines sent by the client
592     (front-end) and server (LinuxSampler) respectively. Lines in
593     examples must be interpreted as every line being CRLF
594     terminated (carriage return character followed by line feed
595     character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
596     thus the following example:
597     </p>
598     <p>
599     </p>
600     <blockquote class="text">
601     <p>C: "some line"
602     </p>
603     <p>&nbsp;&nbsp;&nbsp;"another line"
604     </p>
605     </blockquote><p>
606    
607     </p>
608     <p>must actually be interpreted as client sending the following
609     message:
610     </p>
611     <p>
612     </p>
613     <blockquote class="text">
614     <p>"some line&lt;CR&gt;&lt;LF&gt;another
615     line&lt;CR&gt;&lt;LF&gt;"
616     </p>
617     </blockquote><p>
618    
619     </p>
620     <p>where &lt;CR&gt; symbolizes the carriage return character and
621     &lt;LF&gt; the line feed character as defined in the ASCII
622     standard.
623     </p>
624     <p>Due to technical reasons, messages can arbitrary be
625     fragmented, means the following example:
626     </p>
627     <p>
628     </p>
629     <blockquote class="text">
630     <p>S: "abcd"
631     </p>
632     </blockquote><p>
633    
634     </p>
635     <p>could also happen to be sent in three messages like in the
636     following sequence scenario:
637     </p>
638     <p>
639     </p>
640     <ul class="text">
641     <li>server sending message "a"
642     </li>
643     <li>followed by a delay (pause) with
644     arbitrary duration
645     </li>
646     <li>followed by server sending message
647     "bcd&lt;CR&gt;"
648     </li>
649     <li>again followed by a delay (pause) with arbitrary
650     duration
651     </li>
652     <li>followed by server sending the message
653     "&lt;LF&gt;"
654     </li>
655     </ul><p>
656    
657     </p>
658     <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
659     return and line feed characters respectively.
660     </p>
661     <a name="LSCP versioning"></a><br /><hr />
662     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
663     <a name="rfc.section.2"></a><h3>2.&nbsp;
664     Versioning of this specification</h3>
665    
666     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
667     release of the LSCP specification will be tagged with a unique version
668     tuple. The version tuple consists at least of a major and minor version
669     number like:
670    
671     </p>
672     <p>
673     </p>
674     <blockquote class="text">
675     <p>"1.2"
676     </p>
677     </blockquote><p>
678    
679     </p>
680     <p>
681     In this example the major version number would be "1" and the minor
682     version number would be "2". Note that the version tuple might also
683     have more than two elements. The major version number defines a
684     group of backward compatible versions. That means a frontend is
685     compatible to the connected sampler if and only if the LSCP versions
686     to which each of the two parties complies to, match both of the
687     following rules:
688    
689     </p>
690     <p>Compatibility:
691     </p>
692     <p>
693     </p>
694     <ol class="text">
695     <li>The frontend's LSCP major version and the sampler's LSCP
696     major version are exactly equal.
697     </li>
698     <li>The frontend's LSCP minor version is less or equal than
699     the sampler's LSCP minor version.
700     </li>
701     </ol><p>
702    
703     </p>
704     <p>
705     Compatibility can only be claimed if both rules are true.
706     The frontend can use the
707     <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
708     get the version of the LSCP specification the sampler complies with.
709    
710     </p>
711     <a name="anchor2"></a><br /><hr />
712     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
713     <a name="rfc.section.3"></a><h3>3.&nbsp;
714     Introduction</h3>
715    
716     <p>LinuxSampler is a so called software sampler application
717     capable to playback audio samples from a computer's Random
718     Access Memory (RAM) as well as directly streaming it from disk.
719     LinuxSampler is designed to be modular. It provides several so
720     called "sampler engines" where each engine is specialized for a
721     certain purpose. LinuxSampler has virtual channels which will be
722     referred in this document as "sampler channels". The channels
723     are in such way virtual as they can be connected to an
724     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
725     sampler channel 17 could be connected to an ALSA sequencer
726     device 64:0 and listening to MIDI channel 1 there). Each sampler
727     channel will be associated with an instance of one of the available
728     sampler engines (e.g. GigEngine, DLSEngine). The audio output of
729     each sampler channel can be routed to an arbitrary audio output
730     method (ALSA / JACK) and an arbitrary audio output channel
731     there.
732     </p>
733     <a name="anchor3"></a><br /><hr />
734     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
735     <a name="rfc.section.4"></a><h3>4.&nbsp;
736     Focus of this protocol</h3>
737    
738     <p>Main focus of this protocol is to provide a way to configure
739     a running LinuxSampler instance and to retrieve information
740     about it. The focus of this protocol is not to provide a way to
741     control synthesis parameters or even to trigger or release
742     notes. Or in other words; the focus are those functionalities
743     which are not covered by MIDI or which may at most be handled
744     via MIDI System Exclusive Messages.
745     </p>
746     <a name="anchor4"></a><br /><hr />
747     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
748     <a name="rfc.section.5"></a><h3>5.&nbsp;
749     Communication Overview</h3>
750    
751     <p>There are two distinct methods of communication between a
752     running instance of LinuxSampler and one or more control
753     applications, so called "front-ends": a simple request/response
754     communication method used by the clients to give commands to the
755     server as well as to inquire about server's status and a
756     subscribe/notify communication method used by the client to
757     subscribe to and receive notifications of certain events as they
758     happen on the server. The latter needs more effort to be
759     implemented in the front-end application. The two communication
760     methods will be described next.
761     </p>
762     <a name="anchor5"></a><br /><hr />
763     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
764     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
765     Request/response communication method</h3>
766    
767     <p>This simple communication method is based on
768     <a class='info' href='#RFC793'>TCP<span> (</span><span class='info'>Defense Advanced Research Projects Agency, &ldquo;TRANSMISSION CONTROL PROTOCOL,&rdquo; 1981.</span><span>)</span></a> [RFC793]. The
769     front-end application establishes a TCP connection to the
770     LinuxSampler instance on a certain host system. Then the
771     front-end application will send certain ASCII based commands
772     as defined in this document (every command line must be CRLF
773     terminated - see "Conventions used in this document" at the
774     beginning of this document) and the LinuxSampler application
775     will response after a certain process time with an
776     appropriate ASCII based answer, also as defined in this
777     document. So this TCP communication is simply based on query
778     and answer paradigm. That way LinuxSampler is only able to
779     answer on queries from front-ends, but not able to
780     automatically send messages to the client if it's not asked
781     to. The fronted should not reconnect to LinuxSampler for
782     every single command, instead it should keep the connection
783     established and simply resend message(s) for subsequent
784     commands. To keep information in the front-end up-to-date
785     the front-end has to periodically send new requests to get
786     the current information from the LinuxSampler instance. This
787     is often referred to as "polling". While polling is simple
788     to implement and may be OK to use in some cases, there may
789     be disadvantages to polling such as network traffic overhead
790     and information being out of date.
791     It is possible for a client or several clients to open more
792     than one connection to the server at the same time. It is
793     also possible to send more than one request to the server
794     at the same time but if those requests are sent over the
795     same connection server MUST execute them sequentially. Upon
796     executing a request server will produce a result set and
797     send it to the client. Each and every request made by the
798     client MUST result in a result set being sent back to the
799     client. No other data other than a result set may be sent by
800     a server to a client. No result set may be sent to a client
801     without the client sending request to the server first. On
802     any particular connection, result sets MUST be sent in their
803     entirety without being interrupted by other result sets. If
804     several requests got queued up at the server they MUST be
805     processed in the order they were received and result sets
806     MUST be sent back in the same order.
807     </p>
808     <a name="anchor6"></a><br /><hr />
809     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
810     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
811     Result format</h3>
812    
813     <p>Result set could be one of the following types:
814     </p>
815     <p>
816     </p>
817     <ol class="text">
818     <li>Normal
819     </li>
820     <li>Warning
821     </li>
822     <li>Error
823     </li>
824     </ol><p>
825    
826     </p>
827     <p>Warning and Error result sets MUST be single line and
828     have the following format:
829     </p>
830     <p>
831     </p>
832     <ul class="text">
833     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
834     </li>
835     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
836     </li>
837     </ul><p>
838    
839     </p>
840     <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
841     numeric unique identifiers of the warning or error and
842     &lt;warning-message&gt; and &lt;error-message&gt; are
843     human readable descriptions of the warning or error
844     respectively.
845     </p>
846     <p>Examples:
847     </p>
848     <p>
849     </p>
850     <blockquote class="text">
851     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
852     </p>
853     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
854     </p>
855     </blockquote><p>
856    
857     </p>
858     <p>
859     </p>
860     <blockquote class="text">
861     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
862     </p>
863     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
864     </p>
865     </blockquote><p>
866    
867     </p>
868     <p>
869     </p>
870     <blockquote class="text">
871     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
872     </p>
873     <p>S: "ERR:9:There is no audio output device with index 123456."
874     </p>
875     </blockquote><p>
876    
877     </p>
878     <p>Normal result sets could be:
879     </p>
880     <p>
881     </p>
882     <ol class="text">
883     <li>Empty
884     </li>
885     <li>Single line
886     </li>
887     <li>Multi-line
888     </li>
889     </ol><p>
890    
891     </p>
892     <p> Empty result set is issued when the server only
893     needed to acknowledge the fact that the request was
894     received and it was processed successfully and no
895     additional information is available. This result set has
896     the following format:
897     </p>
898     <p>
899     </p>
900     <blockquote class="text">
901     <p>"OK"
902     </p>
903     </blockquote><p>
904    
905     </p>
906     <p>Example:
907     </p>
908     <p>
909     </p>
910     <blockquote class="text">
911     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
912     </p>
913     <p>S: "OK"
914     </p>
915     </blockquote><p>
916    
917     </p>
918     <p>Single line result sets are command specific. One
919     example of a single line result set is an empty line.
920     Multi-line result sets are command specific and may
921     include one or more lines of information. They MUST
922     always end with the following line:
923     </p>
924     <p>
925     </p>
926     <blockquote class="text">
927     <p>"."
928     </p>
929     </blockquote><p>
930    
931     </p>
932     <p>Example:
933     </p>
934     <p>
935     </p>
936     <blockquote class="text">
937     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
938     </p>
939     <p>S: "DRIVER: ALSA"
940     </p>
941     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
942     </p>
943     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
944     </p>
945     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
946     </p>
947     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
948     </p>
949     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
950     </p>
951     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
952     </p>
953     <p>&nbsp;&nbsp;&nbsp;"."
954     </p>
955     </blockquote><p>
956    
957     </p>
958     <p>In addition to above mentioned formats, warnings and
959     empty result sets MAY be indexed. In this case, they
960     have the following formats respectively:
961     </p>
962     <p>
963     </p>
964     <ul class="text">
965     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
966     </li>
967     <li>"OK[&lt;index&gt;]"
968     </li>
969     </ul><p>
970    
971     </p>
972     <p>where &lt;index&gt; is command specific and is used
973     to indicate channel number that the result set was
974     related to or other integer value.
975     </p>
976     <p>Each line of the result set MUST end with
977     &lt;CRLF&gt;.
978     </p>
979     <p>Examples:
980     </p>
981     <p>
982     </p>
983     <blockquote class="text">
984     <p>C: "ADD CHANNEL"
985     </p>
986     <p>S: "OK[12]"
987     </p>
988     </blockquote><p>
989    
990     </p>
991     <p>
992     </p>
993     <blockquote class="text">
994     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
995     </p>
996     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
997     </p>
998     </blockquote><p>
999    
1000     </p>
1001     <a name="anchor7"></a><br /><hr />
1002     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1003     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
1004     Subscribe/notify communication method</h3>
1005    
1006     <p>This more sophisticated communication method is actually
1007     only an extension of the simple request/response
1008     communication method. The front-end still uses a TCP
1009     connection and sends the same commands on the TCP
1010     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1011     commands that allow a client to tell the server that it is
1012     interested in receiving notifications about certain events
1013     as they happen on the server. The SUBSCRIBE command has the
1014     following syntax:
1015     </p>
1016     <p>
1017     </p>
1018     <blockquote class="text">
1019     <p>SUBSCRIBE &lt;event-id&gt;
1020     </p>
1021     </blockquote><p>
1022    
1023     </p>
1024     <p>where &lt;event-id&gt; will be replaced by the respective
1025     event that client wants to subscribe to. Upon receiving such
1026     request, server SHOULD respond with OK and start sending
1027     EVENT notifications when a given even has occurred to the
1028     front-end when an event has occurred. It MAY be possible
1029     certain events may be sent before OK response during real
1030     time nature of their generation. Event messages have the
1031     following format:
1032     </p>
1033     <p>
1034     </p>
1035     <blockquote class="text">
1036     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1037     </p>
1038     </blockquote><p>
1039    
1040     </p>
1041     <p>where &lt;event-id&gt; uniquely identifies the event that
1042     has occurred and &lt;custom-event-data&gt; is event
1043     specific.
1044     </p>
1045     <p>Several rules must be followed by the server when
1046     generating events:
1047     </p>
1048     <p>
1049     </p>
1050     <ol class="text">
1051     <li>Events MUST NOT be sent to any client who has not
1052     issued an appropriate SUBSCRIBE command.
1053     </li>
1054     <li>Events MUST only be sent using the same
1055     connection that was used to subscribe to them.
1056     </li>
1057     <li>When response is being sent to the client, event
1058     MUST be inserted in the stream before or after the
1059     response, but NOT in the middle. Same is true about
1060     the response. It should never be inserted in the
1061     middle of the event message as well as any other
1062     response.
1063     </li>
1064     </ol><p>
1065    
1066     </p>
1067     <p>If the client is not interested in a particular event
1068     anymore it MAY issue UNSUBSCRIBE command using the following
1069     syntax:
1070     </p>
1071     <p>
1072     </p>
1073     <blockquote class="text">
1074     <p>UNSUBSCRIBE &lt;event-id&gt;
1075     </p>
1076     </blockquote><p>
1077    
1078     </p>
1079     <p>where &lt;event-id&gt; will be replace by the respective
1080     event that client is no longer interested in receiving. For
1081     a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1082     </p>
1083     <p>Example: the fill states of disk stream buffers have
1084     changed on sampler channel 4 and the LinuxSampler instance
1085     will react by sending the following message to all clients
1086     who subscribed to this event:
1087     </p>
1088     <p>
1089     </p>
1090     <blockquote class="text">
1091     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1092     </p>
1093     </blockquote><p>
1094    
1095     </p>
1096     <p>Which means there are currently three active streams on
1097     sampler channel 4, where the stream with ID "35" is filled
1098     by 62%, stream with ID 33 is filled by 80% and stream with
1099     ID 37 is filled by 98%.
1100     </p>
1101     <p>Clients may choose to open more than one connection to
1102     the server and use some connections to receive notifications
1103     while using other connections to issue commands to the
1104     back-end. This is entirely legal and up to the
1105     implementation. This does not change the protocol in any way
1106     and no special restrictions exist on the server to allow or
1107     disallow this or to track what connections belong to what
1108     front-ends. Server will listen on a single port, accept
1109     multiple connections and support protocol described in this
1110     specification in it's entirety on this single port on each
1111     connection that it accepted.
1112     </p>
1113     <p>Due to the fact that TCP is used for this communication,
1114     dead peers will be detected automatically by the OS TCP
1115     stack. While it may take a while to detect dead peers if no
1116     traffic is being sent from server to client (TCP keep-alive
1117     timer is set to 2 hours on many OSes) it will not be an
1118     issue here as when notifications are sent by the server,
1119     dead client will be detected quickly.
1120     </p>
1121     <p>When connection is closed for any reason server MUST
1122     forget all subscriptions that were made on this connection.
1123     If client reconnects it MUST resubscribe to all events that
1124     it wants to receive.
1125     </p>
1126     <a name="control_commands"></a><br /><hr />
1127     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1128     <a name="rfc.section.6"></a><h3>6.&nbsp;
1129     Description for control commands</h3>
1130    
1131     <p>This chapter will describe the available control commands
1132     that can be sent on the TCP connection in detail. Some certain
1133     commands (e.g. <a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
1134     or <a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>) lead to
1135     multiple-line responses. In this case LinuxSampler signals the
1136     end of the response by a "." (single dot) line.
1137     </p>
1138     <a name="anchor8"></a><br /><hr />
1139     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1140     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1141     Ignored lines and comments</h3>
1142    
1143     <p>White lines, that is lines which only contain space and
1144     tabulator characters, and lines that start with a "#"
1145     character are ignored, thus it's possible for example to
1146     group commands and to place comments in a LSCP script
1147     file.
1148     </p>
1149     <a name="anchor9"></a><br /><hr />
1150     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1151     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1152     Configuring audio drivers</h3>
1153    
1154     <p>Instances of drivers in LinuxSampler are called devices.
1155     You can use multiple audio devices simultaneously, e.g. to
1156     output the sound of one sampler channel using the ALSA audio
1157     output driver, and on another sampler channel you might want
1158     to use the JACK audio output driver. For particular audio
1159     output systems it's also possible to create several devices
1160     of the same audio output driver, e.g. two separate ALSA
1161     audio output devices for using two different sound cards at
1162     the same time. This chapter describes all commands to
1163     configure LinuxSampler's audio output devices and their
1164     parameters.
1165     </p>
1166     <p>Instead of defining commands and parameters for each
1167     driver individually, all possible parameters, their meanings
1168     and possible values have to be obtained at runtime. This
1169     makes the protocol a bit abstract, but has the advantage,
1170     that front-ends can be written independently of what drivers
1171     are currently implemented and what parameters these drivers
1172     are actually offering. This means front-ends can even handle
1173     drivers which are implemented somewhere in future without
1174     modifying the front-end at all.
1175     </p>
1176     <p>Note: examples in this chapter showing particular
1177     parameters of drivers are not meant as specification of the
1178     drivers' parameters. Driver implementations in LinuxSampler
1179     might have complete different parameter names and meanings
1180     than shown in these examples or might change in future, so
1181     these examples are only meant for showing how to retrieve
1182     what parameters drivers are offering, how to retrieve their
1183     possible values, etc.
1184     </p>
1185     <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1186     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1187     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1188     Getting amount of available audio output drivers</h3>
1189    
1190     <p>Use the following command to get the number of
1191     audio output drivers currently available for the
1192     LinuxSampler instance:
1193     </p>
1194     <p>
1195     </p>
1196     <blockquote class="text">
1197     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1198     </p>
1199     </blockquote><p>
1200    
1201     </p>
1202     <p>Possible Answers:
1203     </p>
1204     <p>
1205     </p>
1206     <blockquote class="text">
1207     <p>LinuxSampler will answer by sending the
1208     number of audio output drivers.
1209     </p>
1210     </blockquote><p>
1211    
1212     </p>
1213     <p>Example:
1214     </p>
1215     <p>
1216     </p>
1217     <blockquote class="text">
1218     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1219     </p>
1220     <p>S: "2"
1221     </p>
1222     </blockquote><p>
1223    
1224     </p>
1225     <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1226     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1227     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1228     Getting all available audio output drivers</h3>
1229    
1230     <p>Use the following command to list all audio output
1231     drivers currently available for the LinuxSampler
1232     instance:
1233     </p>
1234     <p>
1235     </p>
1236     <blockquote class="text">
1237     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1238     </p>
1239     </blockquote><p>
1240    
1241     </p>
1242     <p>Possible Answers:
1243     </p>
1244     <p>
1245     </p>
1246     <blockquote class="text">
1247     <p>LinuxSampler will answer by sending comma
1248     separated character strings, each symbolizing an
1249     audio output driver.
1250     </p>
1251     </blockquote><p>
1252    
1253     </p>
1254     <p>Example:
1255     </p>
1256     <p>
1257     </p>
1258     <blockquote class="text">
1259     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1260     </p>
1261     <p>S: "ALSA,JACK"
1262     </p>
1263     </blockquote><p>
1264    
1265     </p>
1266     <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1267     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1268     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1269     Getting information about a specific audio
1270     output driver</h3>
1271    
1272     <p>Use the following command to get detailed information
1273     about a specific audio output driver:
1274     </p>
1275     <p>
1276     </p>
1277     <blockquote class="text">
1278     <p>GET AUDIO_OUTPUT_DRIVER INFO
1279     &lt;audio-output-driver&gt;
1280     </p>
1281     </blockquote><p>
1282    
1283     </p>
1284     <p>Where &lt;audio-output-driver&gt; is the name of the
1285     audio output driver, returned by the
1286     <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a> command.
1287     </p>
1288     <p>Possible Answers:
1289     </p>
1290     <p>
1291     </p>
1292     <blockquote class="text">
1293     <p>LinuxSampler will answer by sending a
1294     &lt;CRLF&gt; separated list. Each answer line
1295     begins with the information category name
1296     followed by a colon and then a space character
1297     &lt;SP&gt; and finally the info character string
1298     to that info category. At the moment the
1299     following information categories are
1300     defined:
1301     </p>
1302     <p>
1303     </p>
1304     <blockquote class="text">
1305     <p>DESCRIPTION -
1306     </p>
1307     <blockquote class="text">
1308     <p> character string describing the
1309     audio output driver
1310     </p>
1311     </blockquote>
1312    
1313    
1314     <p>VERSION -
1315     </p>
1316     <blockquote class="text">
1317     <p>character string reflecting the
1318     driver's version
1319     </p>
1320     </blockquote>
1321    
1322    
1323     <p>PARAMETERS -
1324     </p>
1325     <blockquote class="text">
1326     <p>comma separated list of all
1327     parameters available for the given
1328     audio output driver, at least
1329     parameters 'channels', 'samplerate'
1330     and 'active' are offered by all audio
1331     output drivers
1332     </p>
1333     </blockquote>
1334    
1335    
1336     </blockquote>
1337    
1338    
1339     <p>The mentioned fields above don't have to be
1340     in particular order.
1341     </p>
1342     </blockquote><p>
1343    
1344     </p>
1345     <p>Example:
1346     </p>
1347     <p>
1348     </p>
1349     <blockquote class="text">
1350     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1351     </p>
1352     <p>S: "DESCRIPTION: Advanced Linux Sound
1353     Architecture"
1354     </p>
1355     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1356     </p>
1357     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1358     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1359     FRAGMENTSIZE,CARD"
1360     </p>
1361     <p>&nbsp;&nbsp;&nbsp;"."
1362     </p>
1363     </blockquote><p>
1364    
1365     </p>
1366     <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1367     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1368     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1369     Getting information about specific audio
1370     output driver parameter</h3>
1371    
1372     <p>Use the following command to get detailed information
1373     about a specific audio output driver parameter:
1374     </p>
1375     <p>
1376     </p>
1377     <blockquote class="text">
1378     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1379     </p>
1380     </blockquote><p>
1381    
1382     </p>
1383     <p>Where &lt;audio&gt; is the name of the audio output
1384     driver as returned by the <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a> command,
1385     &lt;prm&gt; a specific parameter name for which information should be
1386     obtained (as returned by the
1387     <a class='info' href='#GET AUDIO_OUTPUT_DRIVER INFO'>"GET AUDIO_OUTPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific audio output driver</span><span>)</span></a> command) and
1388     &lt;deplist&gt; is an optional list of parameters on which the sought
1389     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1390     pairs in form of "key1=val1 key2=val2 ...", where character string values
1391     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1392     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1393     the front-end application can simply put all parameters into &lt;deplist&gt;
1394     with the values already selected by the user.
1395     </p>
1396     <p>Possible Answers:
1397     </p>
1398     <p>
1399     </p>
1400     <blockquote class="text">
1401     <p>LinuxSampler will answer by sending a
1402     &lt;CRLF&gt; separated list.
1403     Each answer line begins with the information category name
1404     followed by a colon and then a space character &lt;SP&gt; and
1405     finally
1406     the info character string to that info category. There are
1407     information which is always returned, independently of the
1408     given driver parameter and there are optional information
1409     which is only shown dependently to given driver parameter. At
1410     the moment the following information categories are defined:
1411     </p>
1412     </blockquote><p>
1413    
1414     </p>
1415     <p>
1416     </p>
1417     <blockquote class="text">
1418     <p>TYPE -
1419     </p>
1420     <blockquote class="text">
1421     <p>either "BOOL" for boolean value(s) or
1422     "INT" for integer
1423     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1424     character string(s)
1425     (always returned, no matter which driver parameter)
1426     </p>
1427     </blockquote>
1428    
1429    
1430     <p>DESCRIPTION -
1431     </p>
1432     <blockquote class="text">
1433     <p>arbitrary text describing the purpose of the parameter
1434     (always returned, no matter which driver parameter)
1435     </p>
1436     </blockquote>
1437    
1438    
1439     <p>MANDATORY -
1440     </p>
1441     <blockquote class="text">
1442     <p>either true or false, defines if this parameter must be
1443     given when the device is to be created with the
1444     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1445     command (always returned, no matter which driver parameter)
1446     </p>
1447     </blockquote>
1448    
1449    
1450     <p>FIX -
1451     </p>
1452     <blockquote class="text">
1453     <p>either true or false, if false then this parameter can
1454     be changed at any time, once the device is created by
1455     the <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1456     command (always returned, no matter which driver parameter)
1457     </p>
1458     </blockquote>
1459    
1460    
1461     <p>MULTIPLICITY -
1462     </p>
1463     <blockquote class="text">
1464     <p>either true or false, defines if this parameter allows
1465     only one value or a list of values, where true means
1466     multiple values and false only a single value allowed
1467     (always returned, no matter which driver parameter)
1468     </p>
1469     </blockquote>
1470    
1471    
1472     <p>DEPENDS -
1473     </p>
1474     <blockquote class="text">
1475     <p>comma separated list of parameters this parameter depends
1476     on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1477     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1478     listed parameters, for example assuming that an audio
1479     driver (like the ALSA driver) offers parameters 'card'
1480     and 'samplerate' then parameter 'samplerate' would
1481     depend on 'card' because the possible values for
1482     'samplerate' depends on the sound card which can be
1483     chosen by the 'card' parameter
1484     (optionally returned, dependent to driver parameter)
1485     </p>
1486     </blockquote>
1487    
1488    
1489     <p>DEFAULT -
1490     </p>
1491     <blockquote class="text">
1492     <p>reflects the default value for this parameter which is
1493     used when the device is created and not explicitly
1494     given with the <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a> command,
1495     in case of MULTIPLCITY=true, this is a comma separated
1496     list, that's why character strings are encapsulated into
1497     apostrophes (')
1498     (optionally returned, dependent to driver parameter)
1499     </p>
1500     </blockquote>
1501    
1502    
1503     <p>RANGE_MIN -
1504     </p>
1505     <blockquote class="text">
1506     <p>defines lower limit of the allowed value range for this
1507     parameter, can be an integer value as well as a dotted
1508     number, this parameter is often used in conjunction
1509     with RANGE_MAX, but may also appear without
1510     (optionally returned, dependent to driver parameter)
1511     </p>
1512     </blockquote>
1513    
1514    
1515     <p>RANGE_MAX -
1516     </p>
1517     <blockquote class="text">
1518     <p>defines upper limit of the allowed value range for this
1519     parameter, can be an integer value as well as a dotted
1520     number, this parameter is often used in conjunction with
1521     RANGE_MIN, but may also appear without
1522     (optionally returned, dependent to driver parameter)
1523     </p>
1524     </blockquote>
1525    
1526    
1527     <p>POSSIBILITIES -
1528     </p>
1529     <blockquote class="text">
1530     <p>comma separated list of possible values for this
1531     parameter, character strings are encapsulated into
1532     apostrophes
1533     (optionally returned, dependent to driver parameter)
1534     </p>
1535     </blockquote>
1536    
1537    
1538     </blockquote><p>
1539    
1540     </p>
1541     <p>The mentioned fields above don't have to be in particular order.
1542     </p>
1543     <p>Examples:
1544     </p>
1545     <p>
1546     </p>
1547     <blockquote class="text">
1548     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1549     </p>
1550     <p>S: "DESCRIPTION: sound card to be used"
1551     </p>
1552     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1553     </p>
1554     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1555     </p>
1556     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1557     </p>
1558     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1559     </p>
1560     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1561     </p>
1562     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1563     </p>
1564     <p>&nbsp;&nbsp;&nbsp;"."
1565     </p>
1566     </blockquote><p>
1567    
1568     </p>
1569     <p>
1570     </p>
1571     <blockquote class="text">
1572     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1573     </p>
1574     <p>S: "DESCRIPTION: output sample rate in Hz"
1575     </p>
1576     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1577     </p>
1578     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1579     </p>
1580     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1581     </p>
1582     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1583     </p>
1584     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1585     </p>
1586     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1587     </p>
1588     <p>&nbsp;&nbsp;&nbsp;"."
1589     </p>
1590     </blockquote><p>
1591    
1592     </p>
1593     <p>
1594     </p>
1595     <blockquote class="text">
1596     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1597     </p>
1598     <p>S: "DESCRIPTION: output sample rate in Hz"
1599     </p>
1600     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1601     </p>
1602     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1603     </p>
1604     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1605     </p>
1606     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1607     </p>
1608     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1609     </p>
1610     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1611     </p>
1612     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1613     </p>
1614     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1615     </p>
1616     <p>&nbsp;&nbsp;&nbsp;"."
1617     </p>
1618     </blockquote><p>
1619    
1620     </p>
1621     <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1622     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1623     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1624     Creating an audio output device</h3>
1625    
1626     <p>Use the following command to create a new audio output device for the desired audio output system:
1627     </p>
1628     <p>
1629     </p>
1630     <blockquote class="text">
1631     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1632     </p>
1633     </blockquote><p>
1634    
1635     </p>
1636     <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1637     output system as returned by the
1638     <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a>
1639     command and &lt;param-list&gt; by an optional list of driver
1640     specific parameters in form of "key1=val1 key2=val2 ...", where
1641     character string values should be encapsulated into apostrophes (').
1642     Note that there might be drivers which require parameter(s) to be
1643     given with this command. Use the previously described commands in
1644     this chapter to get this information.
1645     </p>
1646     <p>Possible Answers:
1647     </p>
1648     <p>
1649     </p>
1650     <blockquote class="text">
1651     <p>"OK[&lt;device-id&gt;]" -
1652     </p>
1653     <blockquote class="text">
1654     <p>in case the device was successfully created, where
1655     &lt;device-id&gt; is the numerical ID of the new device
1656     </p>
1657     </blockquote>
1658    
1659    
1660     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1661     </p>
1662     <blockquote class="text">
1663     <p>in case the device was created successfully, where
1664     &lt;device-id&gt; is the numerical ID of the new device, but there
1665     are noteworthy issue(s) related (e.g. sound card doesn't
1666     support given hardware parameters and the driver is using
1667     fall-back values), providing an appropriate warning code and
1668     warning message
1669     </p>
1670     </blockquote>
1671    
1672    
1673     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1674     </p>
1675     <blockquote class="text">
1676     <p>in case it failed, providing an appropriate error code and error message
1677     </p>
1678     </blockquote>
1679    
1680    
1681     </blockquote><p>
1682    
1683     </p>
1684     <p>Examples:
1685     </p>
1686     <p>
1687     </p>
1688     <blockquote class="text">
1689     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1690     </p>
1691     <p>S: "OK[0]"
1692     </p>
1693     </blockquote><p>
1694    
1695     </p>
1696     <p>
1697     </p>
1698     <blockquote class="text">
1699     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1700     </p>
1701     <p>S: "OK[1]"
1702     </p>
1703     </blockquote><p>
1704    
1705     </p>
1706     <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1707     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1708     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1709     Destroying an audio output device</h3>
1710    
1711     <p>Use the following command to destroy a created output device:
1712     </p>
1713     <p>
1714     </p>
1715     <blockquote class="text">
1716     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1717     </p>
1718     </blockquote><p>
1719    
1720     </p>
1721     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1722     audio output device as given by the
1723     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1724     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1725     command.
1726     </p>
1727     <p>Possible Answers:
1728     </p>
1729     <p>
1730     </p>
1731     <blockquote class="text">
1732     <p>"OK" -
1733     </p>
1734     <blockquote class="text">
1735     <p>in case the device was successfully destroyed
1736     </p>
1737     </blockquote>
1738    
1739    
1740     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1741     </p>
1742     <blockquote class="text">
1743     <p>in case the device was destroyed successfully, but there are
1744     noteworthy issue(s) related (e.g. an audio over ethernet
1745     driver was unloaded but the other host might not be
1746     informed about this situation), providing an appropriate
1747     warning code and warning message
1748     </p>
1749     </blockquote>
1750    
1751    
1752     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1753     </p>
1754     <blockquote class="text">
1755     <p>in case it failed, providing an appropriate error code and
1756     error message
1757     </p>
1758     </blockquote>
1759    
1760    
1761     </blockquote><p>
1762    
1763     </p>
1764     <p>Example:
1765     </p>
1766     <p>
1767     </p>
1768     <blockquote class="text">
1769     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1770     </p>
1771     <p>S: "OK"
1772     </p>
1773     </blockquote><p>
1774    
1775     </p>
1776     <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1777     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1778     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1779     Getting all created audio output device count</h3>
1780    
1781     <p>Use the following command to count all created audio output devices:
1782     </p>
1783     <p>
1784     </p>
1785     <blockquote class="text">
1786     <p>GET AUDIO_OUTPUT_DEVICES
1787     </p>
1788     </blockquote><p>
1789    
1790     </p>
1791     <p>Possible Answers:
1792     </p>
1793     <p>
1794     </p>
1795     <blockquote class="text">
1796     <p>LinuxSampler will answer by sending the current number of all
1797     audio output devices.
1798     </p>
1799     </blockquote><p>
1800    
1801     </p>
1802     <p>Example:
1803     </p>
1804     <p>
1805     </p>
1806     <blockquote class="text">
1807     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1808     </p>
1809     <p>S: "4"
1810     </p>
1811     </blockquote><p>
1812    
1813     </p>
1814     <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1815     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1816     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1817     Getting all created audio output device list</h3>
1818    
1819     <p>Use the following command to list all created audio output devices:
1820     </p>
1821     <p>
1822     </p>
1823     <blockquote class="text">
1824     <p>LIST AUDIO_OUTPUT_DEVICES
1825     </p>
1826     </blockquote><p>
1827    
1828     </p>
1829     <p>Possible Answers:
1830     </p>
1831     <p>
1832     </p>
1833     <blockquote class="text">
1834     <p>LinuxSampler will answer by sending a comma separated list with
1835     the numerical IDs of all audio output devices.
1836     </p>
1837     </blockquote><p>
1838    
1839     </p>
1840     <p>Example:
1841     </p>
1842     <p>
1843     </p>
1844     <blockquote class="text">
1845     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1846     </p>
1847     <p>S: "0,1,4,5"
1848     </p>
1849     </blockquote><p>
1850    
1851     </p>
1852     <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1853     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1854     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1855     Getting current settings of an audio output device</h3>
1856    
1857     <p>Use the following command to get current settings of a specific, created audio output device:
1858     </p>
1859     <p>
1860     </p>
1861     <blockquote class="text">
1862     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1863     </p>
1864     </blockquote><p>
1865    
1866     </p>
1867     <p>Where &lt;device-id&gt; should be replaced by numerical ID
1868     of the audio output device as e.g. returned by the
1869     <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a> command.
1870     </p>
1871     <p>Possible Answers:
1872     </p>
1873     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1874     Each answer line begins with the information category name
1875     followed by a colon and then a space character &lt;SP&gt; and finally
1876     the info character string to that info category. As some
1877     parameters might allow multiple values, character strings are
1878     encapsulated into apostrophes ('). At the moment the following
1879     information categories are defined (independently of device):
1880     </p>
1881     <p>
1882     </p>
1883     <blockquote class="text">
1884     <p>DRIVER -
1885     </p>
1886     <blockquote class="text">
1887     <p>identifier of the used audio output driver, as also
1888     returned by the
1889     <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a>
1890     command
1891     </p>
1892     </blockquote>
1893    
1894    
1895     <p>CHANNELS -
1896     </p>
1897     <blockquote class="text">
1898     <p>amount of audio output channels this device currently
1899     offers
1900     </p>
1901     </blockquote>
1902    
1903    
1904     <p>SAMPLERATE -
1905     </p>
1906     <blockquote class="text">
1907     <p>playback sample rate the device uses
1908     </p>
1909     </blockquote>
1910    
1911    
1912     <p>ACTIVE -
1913     </p>
1914     <blockquote class="text">
1915     <p>either true or false, if false then the audio device is
1916     inactive and doesn't output any sound, nor do the
1917     sampler channels connected to this audio device render
1918     any audio
1919     </p>
1920     </blockquote>
1921    
1922    
1923     </blockquote><p>
1924    
1925     </p>
1926     <p>The mentioned fields above don't have to be in particular
1927     order. The fields above are only those fields which are
1928     returned by all audio output devices. Every audio output driver
1929     might have its own, additional driver specific parameters (see
1930     <a class='info' href='#GET AUDIO_OUTPUT_DRIVER INFO'>Section&nbsp;6.2.3<span> (</span><span class='info'>Getting information about a specific audio output driver</span><span>)</span></a>)
1931     which are also returned by this command.
1932     </p>
1933     <p>Example:
1934     </p>
1935     <p>
1936     </p>
1937     <blockquote class="text">
1938     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1939     </p>
1940     <p>S: "DRIVER: ALSA"
1941     </p>
1942     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1943     </p>
1944     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1945     </p>
1946     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1947     </p>
1948     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1949     </p>
1950     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1951     </p>
1952     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1953     </p>
1954     <p>&nbsp;&nbsp;&nbsp;"."
1955     </p>
1956     </blockquote><p>
1957    
1958     </p>
1959     <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1960     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1961     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1962     Changing settings of audio output devices</h3>
1963    
1964     <p>Use the following command to alter a specific setting of a created audio output device:
1965     </p>
1966     <p>
1967     </p>
1968     <blockquote class="text">
1969     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1970     </p>
1971     </blockquote><p>
1972    
1973     </p>
1974     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1975     audio output device as given by the
1976     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1977     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1978     command, &lt;key&gt; by the name of the parameter to change
1979     and &lt;value&gt; by the new value for this parameter.
1980     </p>
1981     <p>Possible Answers:
1982     </p>
1983     <p>
1984     </p>
1985     <blockquote class="text">
1986     <p>"OK" -
1987     </p>
1988     <blockquote class="text">
1989     <p>in case setting was successfully changed
1990     </p>
1991     </blockquote>
1992    
1993    
1994     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1995     </p>
1996     <blockquote class="text">
1997     <p>in case setting was changed successfully, but there are
1998     noteworthy issue(s) related, providing an appropriate
1999     warning code and warning message
2000     </p>
2001     </blockquote>
2002    
2003    
2004     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2005     </p>
2006     <blockquote class="text">
2007     <p>in case it failed, providing an appropriate error code and
2008     error message
2009     </p>
2010     </blockquote>
2011    
2012    
2013     </blockquote><p>
2014    
2015     </p>
2016     <p>Example:
2017     </p>
2018     <p>
2019     </p>
2020     <blockquote class="text">
2021     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2022     </p>
2023     <p>S: "OK"
2024     </p>
2025     </blockquote><p>
2026    
2027     </p>
2028     <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2029     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2030     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2031     Getting information about an audio channel</h3>
2032    
2033     <p>Use the following command to get information about an audio channel:
2034     </p>
2035     <p>
2036     </p>
2037     <blockquote class="text">
2038     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2039     </p>
2040     </blockquote><p>
2041    
2042     </p>
2043     <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2044     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2045     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2046     command and &lt;audio-chan&gt; the audio channel number.
2047     </p>
2048     <p>Possible Answers:
2049     </p>
2050     <p>
2051     </p>
2052     <blockquote class="text">
2053     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2054     Each answer line begins with the information category name
2055     followed by a colon and then a space character &lt;SP&gt; and finally
2056     the info character string to that info category. At the moment
2057     the following information categories are defined:
2058     </p>
2059     <p>
2060     </p>
2061     <blockquote class="text">
2062     <p>NAME -
2063     </p>
2064     <blockquote class="text">
2065     <p>arbitrary character string naming the channel, which
2066     doesn't have to be unique (always returned by all audio channels)
2067     </p>
2068     </blockquote>
2069    
2070    
2071     <p>IS_MIX_CHANNEL -
2072     </p>
2073     <blockquote class="text">
2074     <p>either true or false, a mix-channel is not a real,
2075     independent audio channel, but a virtual channel which
2076     is mixed to another real channel, this mechanism is
2077     needed for sampler engines which need more audio
2078     channels than the used audio system might be able to offer
2079     (always returned by all audio channels)
2080     </p>
2081     </blockquote>
2082    
2083    
2084     <p>MIX_CHANNEL_DESTINATION -
2085     </p>
2086     <blockquote class="text">
2087     <p>numerical ID (positive integer including 0)
2088     which reflects the real audio channel (of the same audio
2089     output device) this mix channel refers to, means where
2090     the audio signal actually will be routed / added to
2091     (only returned in case the audio channel is mix channel)
2092     </p>
2093     </blockquote>
2094    
2095    
2096     </blockquote>
2097    
2098    
2099     </blockquote><p>
2100    
2101     </p>
2102     <p>The mentioned fields above don't have to be in particular
2103     order. The fields above are only those fields which are
2104     generally returned for the described cases by all audio
2105     channels regardless of the audio driver. Every audio channel
2106     might have its own, additional driver and channel specific
2107     parameters.
2108     </p>
2109     <p>Examples:
2110     </p>
2111     <p>
2112     </p>
2113     <blockquote class="text">
2114     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2115     </p>
2116     <p>S: "NAME: studio monitor left"
2117     </p>
2118     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2119     </p>
2120     <p>&nbsp;&nbsp;&nbsp;"."
2121     </p>
2122     </blockquote><p>
2123    
2124     </p>
2125     <p>
2126     </p>
2127     <blockquote class="text">
2128     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2129     </p>
2130     <p>S: "NAME: studio monitor right"
2131     </p>
2132     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2133     </p>
2134     <p>&nbsp;&nbsp;&nbsp;"."
2135     </p>
2136     </blockquote><p>
2137    
2138     </p>
2139     <p>
2140     </p>
2141     <blockquote class="text">
2142     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2143     </p>
2144     <p>S: "NAME: studio monitor left"
2145     </p>
2146     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2147     </p>
2148     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2149     </p>
2150     <p>&nbsp;&nbsp;&nbsp;"."
2151     </p>
2152     </blockquote><p>
2153    
2154     </p>
2155     <p>
2156     </p>
2157     <blockquote class="text">
2158     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2159     </p>
2160     <p>S: "NAME: 'ardour (left)'"
2161     </p>
2162     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2163     </p>
2164     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2165     </p>
2166     <p>&nbsp;&nbsp;&nbsp;"."
2167     </p>
2168     </blockquote><p>
2169    
2170     </p>
2171     <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2172     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2173     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2174     Getting information about specific audio channel parameter</h3>
2175    
2176     <p>Use the following command to get detailed information about specific audio channel parameter:
2177     </p>
2178     <p>
2179     </p>
2180     <blockquote class="text">
2181     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2182     </p>
2183     </blockquote><p>
2184    
2185     </p>
2186     <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2187     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2188     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2189     command, &lt;chan&gt; the audio channel number
2190     and &lt;param&gt; a specific channel parameter name for which information should
2191     be obtained (as returned by the <a class='info' href='#GET AUDIO_OUTPUT_CHANNEL INFO'>"GET AUDIO_OUTPUT_CHANNEL INFO"<span> (</span><span class='info'>Getting information about an audio channel</span><span>)</span></a> command).
2192     </p>
2193     <p>Possible Answers:
2194     </p>
2195     <p>
2196     </p>
2197     <blockquote class="text">
2198     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2199     Each answer line begins with the information category name
2200     followed by a colon and then a space character &lt;SP&gt; and finally
2201     the info character string to that info category. There are
2202     information which is always returned, independently of the
2203     given channel parameter and there is optional information
2204     which is only shown dependently to the given audio channel. At
2205     the moment the following information categories are defined:
2206     </p>
2207     <p>
2208     </p>
2209     <blockquote class="text">
2210     <p>TYPE -
2211     </p>
2212     <blockquote class="text">
2213     <p>either "BOOL" for boolean value(s) or "INT" for integer
2214     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2215     character string(s)
2216     (always returned)
2217     </p>
2218     </blockquote>
2219    
2220    
2221     <p>DESCRIPTION -
2222     </p>
2223     <blockquote class="text">
2224     <p>arbitrary text describing the purpose of the parameter (always returned)
2225     </p>
2226     </blockquote>
2227    
2228    
2229     <p>FIX -
2230     </p>
2231     <blockquote class="text">
2232     <p>either true or false, if true then this parameter is
2233     read only, thus cannot be altered
2234     (always returned)
2235     </p>
2236     </blockquote>
2237    
2238    
2239     <p>MULTIPLICITY -
2240     </p>
2241     <blockquote class="text">
2242     <p>either true or false, defines if this parameter allows
2243     only one value or a list of values, where true means
2244     multiple values and false only a single value allowed
2245     (always returned)
2246     </p>
2247     </blockquote>
2248    
2249    
2250     <p>RANGE_MIN -
2251     </p>
2252     <blockquote class="text">
2253     <p>defines lower limit of the allowed value range for this
2254     parameter, can be an integer value as well as a dotted
2255     number, usually used in conjunction with 'RANGE_MAX',
2256     but may also appear without
2257     (optionally returned, dependent to driver and channel
2258     parameter)
2259     </p>
2260     </blockquote>
2261    
2262    
2263     <p>RANGE_MAX -
2264     </p>
2265     <blockquote class="text">
2266     <p>defines upper limit of the allowed value range for this
2267     parameter, can be an integer value as well as a dotted
2268     number, usually used in conjunction with 'RANGE_MIN',
2269     but may also appear without
2270     (optionally returned, dependent to driver and channel
2271     parameter)
2272     </p>
2273     </blockquote>
2274    
2275    
2276     <p>POSSIBILITIES -
2277     </p>
2278     <blockquote class="text">
2279     <p>comma separated list of possible values for this
2280     parameter, character strings are encapsulated into
2281     apostrophes
2282     (optionally returned, dependent to driver and channel
2283     parameter)
2284     </p>
2285     </blockquote>
2286    
2287    
2288     </blockquote>
2289    
2290    
2291     <p>The mentioned fields above don't have to be in particular order.
2292     </p>
2293     </blockquote><p>
2294    
2295     </p>
2296     <p>Example:
2297     </p>
2298     <p>
2299     </p>
2300     <blockquote class="text">
2301     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2302     </p>
2303     <p>S: "DESCRIPTION: bindings to other JACK clients"
2304     </p>
2305     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2306     </p>
2307     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2308     </p>
2309     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2310     </p>
2311     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2312     </p>
2313     <p>&nbsp;&nbsp;&nbsp;"."
2314     </p>
2315     </blockquote><p>
2316    
2317     </p>
2318     <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2319     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2320     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2321     Changing settings of audio output channels</h3>
2322    
2323     <p>Use the following command to alter a specific setting of an audio output channel:
2324     </p>
2325     <p>
2326     </p>
2327     <blockquote class="text">
2328     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2329     </p>
2330     </blockquote><p>
2331    
2332     </p>
2333     <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2334     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2335     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2336     command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2337     parameter to change and &lt;value&gt; by the new value for this parameter.
2338     </p>
2339     <p>Possible Answers:
2340     </p>
2341     <p>
2342     </p>
2343     <blockquote class="text">
2344     <p>"OK" -
2345     </p>
2346     <blockquote class="text">
2347     <p>in case setting was successfully changed
2348     </p>
2349     </blockquote>
2350    
2351    
2352     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2353     </p>
2354     <blockquote class="text">
2355     <p>in case setting was changed successfully, but there are
2356     noteworthy issue(s) related, providing an appropriate
2357     warning code and warning message
2358     </p>
2359     </blockquote>
2360    
2361    
2362     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2363     </p>
2364     <blockquote class="text">
2365     <p>in case it failed, providing an appropriate error code and
2366     error message
2367     </p>
2368     </blockquote>
2369    
2370    
2371     </blockquote><p>
2372    
2373     </p>
2374     <p>Example:
2375     </p>
2376     <p>
2377     </p>
2378     <blockquote class="text">
2379     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2380     </p>
2381     <p>S: "OK"
2382     </p>
2383     </blockquote><p>
2384    
2385     </p>
2386     <p>
2387     </p>
2388     <blockquote class="text">
2389     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2390     </p>
2391     <p>S: "OK"
2392     </p>
2393     </blockquote><p>
2394    
2395     </p>
2396     <a name="anchor10"></a><br /><hr />
2397     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2398     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2399     Configuring MIDI input drivers</h3>
2400    
2401     <p>Instances of drivers in LinuxSampler are called devices. You can use
2402     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2403     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2404     channel. For particular MIDI input systems it's also possible to create
2405     several devices of the same MIDI input type. This chapter describes all
2406     commands to configure LinuxSampler's MIDI input devices and their parameters.
2407     </p>
2408     <p>Instead of defining commands and parameters for each driver individually,
2409     all possible parameters, their meanings and possible values have to be obtained
2410     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2411     front-ends can be written independently of what drivers are currently implemented
2412     and what parameters these drivers are actually offering. This means front-ends can
2413     even handle drivers which are implemented somewhere in future without modifying
2414     the front-end at all.
2415     </p>
2416     <p>Commands for configuring MIDI input devices are pretty much the same as the
2417     commands for configuring audio output drivers, already described in the last
2418     chapter.
2419     </p>
2420     <p>Note: examples in this chapter showing particular parameters of drivers are
2421     not meant as specification of the drivers' parameters. Driver implementations in
2422     LinuxSampler might have complete different parameter names and meanings than shown
2423     in these examples or might change in future, so these examples are only meant for
2424     showing how to retrieve what parameters drivers are offering, how to retrieve their
2425     possible values, etc.
2426     </p>
2427     <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2428     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2429     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2430     Getting amount of available MIDI input drivers</h3>
2431    
2432     <p>Use the following command to get the number of
2433     MIDI input drivers currently available for the
2434     LinuxSampler instance:
2435     </p>
2436     <p>
2437     </p>
2438     <blockquote class="text">
2439     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2440     </p>
2441     </blockquote><p>
2442    
2443     </p>
2444     <p>Possible Answers:
2445     </p>
2446     <p>
2447     </p>
2448     <blockquote class="text">
2449     <p>LinuxSampler will answer by sending the
2450     number of available MIDI input drivers.
2451     </p>
2452     </blockquote><p>
2453    
2454     </p>
2455     <p>Example:
2456     </p>
2457     <p>
2458     </p>
2459     <blockquote class="text">
2460     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2461     </p>
2462     <p>S: "2"
2463     </p>
2464     </blockquote><p>
2465    
2466     </p>
2467     <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2468     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2469     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2470     Getting all available MIDI input drivers</h3>
2471    
2472     <p>Use the following command to list all MIDI input drivers currently available
2473     for the LinuxSampler instance:
2474     </p>
2475     <p>
2476     </p>
2477     <blockquote class="text">
2478     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2479     </p>
2480     </blockquote><p>
2481    
2482     </p>
2483     <p>Possible Answers:
2484     </p>
2485     <p>
2486     </p>
2487     <blockquote class="text">
2488     <p>LinuxSampler will answer by sending comma separated character
2489     strings, each symbolizing a MIDI input driver.
2490     </p>
2491     </blockquote><p>
2492    
2493     </p>
2494     <p>Example:
2495     </p>
2496     <p>
2497     </p>
2498     <blockquote class="text">
2499     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2500     </p>
2501     <p>S: "ALSA,JACK"
2502     </p>
2503     </blockquote><p>
2504    
2505     </p>
2506     <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2507     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2508     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2509     Getting information about a specific MIDI input driver</h3>
2510    
2511     <p>Use the following command to get detailed information about a specific MIDI input driver:
2512     </p>
2513     <p>
2514     </p>
2515     <blockquote class="text">
2516     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2517     </p>
2518     </blockquote><p>
2519    
2520     </p>
2521     <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2522     by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command.
2523     </p>
2524     <p>Possible Answers:
2525     </p>
2526     <p>
2527     </p>
2528     <blockquote class="text">
2529     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2530     Each answer line begins with the information category name
2531     followed by a colon and then a space character &lt;SP&gt; and finally
2532     the info character string to that info category. At the moment
2533     the following information categories are defined:
2534     </p>
2535     <p>
2536     </p>
2537     <blockquote class="text">
2538     <p>DESCRIPTION -
2539     </p>
2540     <blockquote class="text">
2541     <p>arbitrary description text about the MIDI input driver
2542     </p>
2543     </blockquote>
2544    
2545    
2546     <p>VERSION -
2547     </p>
2548     <blockquote class="text">
2549     <p>arbitrary character string regarding the driver's version
2550     </p>
2551     </blockquote>
2552    
2553    
2554     <p>PARAMETERS -
2555     </p>
2556     <blockquote class="text">
2557     <p>comma separated list of all parameters available for the given MIDI input driver
2558     </p>
2559     </blockquote>
2560    
2561    
2562     </blockquote>
2563    
2564    
2565     <p>The mentioned fields above don't have to be in particular order.
2566     </p>
2567     </blockquote><p>
2568    
2569     </p>
2570     <p>Example:
2571     </p>
2572     <p>
2573     </p>
2574     <blockquote class="text">
2575     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2576     </p>
2577     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2578     </p>
2579     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2580     </p>
2581     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2582     </p>
2583     <p>&nbsp;&nbsp;&nbsp;"."
2584     </p>
2585     </blockquote><p>
2586    
2587     </p>
2588     <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2589     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2590     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2591     Getting information about specific MIDI input driver parameter</h3>
2592    
2593     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2594     </p>
2595     <p>
2596     </p>
2597     <blockquote class="text">
2598     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2599     </p>
2600     </blockquote><p>
2601    
2602     </p>
2603     <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2604     by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command, &lt;param&gt; a specific
2605     parameter name for which information should be obtained (as returned by the
2606     <a class='info' href='#GET MIDI_INPUT_DRIVER INFO'>"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific MIDI input driver</span><span>)</span></a> command) and &lt;deplist&gt; is an optional list
2607     of parameters on which the sought parameter &lt;param&gt; depends on,
2608     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2609     where character string values are encapsulated into apostrophes ('). Arguments
2610     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2611     will be ignored, means the front-end application can simply put all parameters
2612     in &lt;deplist&gt; with the values selected by the user.
2613     </p>
2614     <p>Possible Answers:
2615     </p>
2616     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2617     Each answer line begins with the information category name
2618     followed by a colon and then a space character &lt;SP> and finally
2619     the info character string to that info category. There is
2620     information which is always returned, independent of the
2621     given driver parameter and there is optional information
2622     which is only shown dependent to given driver parameter. At
2623     the moment the following information categories are defined:
2624     </p>
2625     <p>
2626     </p>
2627     <blockquote class="text">
2628     <p>TYPE -
2629     </p>
2630     <blockquote class="text">
2631     <p>either "BOOL" for boolean value(s) or "INT" for integer
2632     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2633     character string(s)
2634     (always returned, no matter which driver parameter)
2635     </p>
2636     </blockquote>
2637    
2638    
2639     <p>DESCRIPTION -
2640     </p>
2641     <blockquote class="text">
2642     <p>arbitrary text describing the purpose of the parameter
2643     (always returned, no matter which driver parameter)
2644     </p>
2645     </blockquote>
2646    
2647    
2648     <p>MANDATORY -
2649     </p>
2650     <blockquote class="text">
2651     <p>either true or false, defines if this parameter must be
2652     given when the device is to be created with the
2653     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2654     (always returned, no matter which driver parameter)
2655     </p>
2656     </blockquote>
2657    
2658    
2659     <p>FIX -
2660     </p>
2661     <blockquote class="text">
2662     <p>either true or false, if false then this parameter can
2663     be changed at any time, once the device is created by
2664     the <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2665     (always returned, no matter which driver parameter)
2666     </p>
2667     </blockquote>
2668    
2669    
2670     <p>MULTIPLICITY -
2671     </p>
2672     <blockquote class="text">
2673     <p>either true or false, defines if this parameter allows
2674     only one value or a list of values, where true means
2675     multiple values and false only a single value allowed
2676     (always returned, no matter which driver parameter)
2677     </p>
2678     </blockquote>
2679    
2680    
2681     <p>DEPENDS -
2682     </p>
2683     <blockquote class="text">
2684     <p>comma separated list of parameters this parameter depends
2685     on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2686     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2687     listed parameters, for example assuming that an audio
2688     driver (like the ALSA driver) offers parameters 'card'
2689     and 'samplerate' then parameter 'samplerate' would
2690     depend on 'card' because the possible values for
2691     'samplerate' depends on the sound card which can be
2692     chosen by the 'card' parameter
2693     (optionally returned, dependent to driver parameter)
2694     </p>
2695     </blockquote>
2696    
2697    
2698     <p>DEFAULT -
2699     </p>
2700     <blockquote class="text">
2701     <p>reflects the default value for this parameter which is
2702     used when the device is created and not explicitly
2703     given with the <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command,
2704     in case of MULTIPLCITY=true, this is a comma separated
2705     list, that's why character strings are encapsulated into
2706     apostrophes (')
2707     (optionally returned, dependent to driver parameter)
2708     </p>
2709     </blockquote>
2710    
2711    
2712     <p>RANGE_MIN -
2713     </p>
2714     <blockquote class="text">
2715     <p>defines lower limit of the allowed value range for this
2716     parameter, can be an integer value as well as a dotted
2717     number, this parameter is often used in conjunction
2718     with RANGE_MAX, but may also appear without
2719     (optionally returned, dependent to driver parameter)
2720     </p>
2721     </blockquote>
2722    
2723    
2724     <p>RANGE_MAX -
2725     </p>
2726     <blockquote class="text">
2727     <p>defines upper limit of the allowed value range for this
2728     parameter, can be an integer value as well as a dotted
2729     number, this parameter is often used in conjunction with
2730     RANGE_MIN, but may also appear without
2731     (optionally returned, dependent to driver parameter)
2732     </p>
2733     </blockquote>
2734    
2735    
2736     <p>POSSIBILITIES -
2737     </p>
2738     <blockquote class="text">
2739     <p>comma separated list of possible values for this
2740     parameter, character strings are encapsulated into
2741     apostrophes
2742     (optionally returned, dependent to driver parameter)
2743     </p>
2744     </blockquote>
2745    
2746    
2747     </blockquote><p>
2748    
2749     </p>
2750     <p>The mentioned fields above don't have to be in particular order.
2751     </p>
2752     <p>Example:
2753     </p>
2754     <p>
2755     </p>
2756     <blockquote class="text">
2757     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2758     </p>
2759     <p>S: "DESCRIPTION: Whether device is enabled"
2760     </p>
2761     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2762     </p>
2763     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2764     </p>
2765     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2766     </p>
2767     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2768     </p>
2769     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2770     </p>
2771     <p>&nbsp;&nbsp;&nbsp;"."
2772     </p>
2773     </blockquote><p>
2774    
2775     </p>
2776     <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2777     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2778     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2779     Creating a MIDI input device</h3>
2780    
2781     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2782     </p>
2783     <p>
2784     </p>
2785     <blockquote class="text">
2786     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2787     </p>
2788     </blockquote><p>
2789    
2790     </p>
2791     <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2792     by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command and &lt;param-list&gt; by an
2793     optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2794     character string values should be encapsulated into apostrophes (').
2795     Note that there might be drivers which require parameter(s) to be
2796     given with this command. Use the previously described commands in
2797     this chapter to get that information.
2798     </p>
2799     <p>Possible Answers:
2800     </p>
2801     <p>
2802     </p>
2803     <blockquote class="text">
2804     <p>"OK[&lt;device-id&gt;]" -
2805     </p>
2806     <blockquote class="text">
2807     <p>in case the device was successfully created, where
2808     &lt;device-id&gt; is the numerical ID of the new device
2809     </p>
2810     </blockquote>
2811    
2812    
2813     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2814     </p>
2815     <blockquote class="text">
2816     <p>in case the driver was loaded successfully, where
2817     &lt;device-id&gt; is the numerical ID of the new device, but
2818     there are noteworthy issue(s) related, providing an
2819     appropriate warning code and warning message
2820     </p>
2821     </blockquote>
2822    
2823    
2824     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2825     </p>
2826     <blockquote class="text">
2827     <p>in case it failed, providing an appropriate error code and error message
2828     </p>
2829     </blockquote>
2830    
2831    
2832     </blockquote><p>
2833    
2834     </p>
2835     <p>Example:
2836     </p>
2837     <p>
2838     </p>
2839     <blockquote class="text">
2840     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2841     </p>
2842     <p>S: "OK[0]"
2843     </p>
2844     </blockquote><p>
2845    
2846     </p>
2847     <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2848     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2849     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2850     Destroying a MIDI input device</h3>
2851    
2852     <p>Use the following command to destroy a created MIDI input device:
2853     </p>
2854     <p>
2855     </p>
2856     <blockquote class="text">
2857     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2858     </p>
2859     </blockquote><p>
2860    
2861     </p>
2862     <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2863     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
2864     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
2865     command.
2866     </p>
2867     <p>Possible Answers:
2868     </p>
2869     <p>
2870     </p>
2871     <blockquote class="text">
2872     <p>"OK" -
2873     </p>
2874     <blockquote class="text">
2875     <p>in case the device was successfully destroyed
2876     </p>
2877     </blockquote>
2878    
2879    
2880     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2881     </p>
2882     <blockquote class="text">
2883     <p>in case the device was destroyed, but there are noteworthy
2884     issue(s) related, providing an appropriate warning code and
2885     warning message
2886     </p>
2887     </blockquote>
2888    
2889    
2890     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2891     </p>
2892     <blockquote class="text">
2893     <p>in case it failed, providing an appropriate error code and error message
2894     </p>
2895     </blockquote>
2896    
2897    
2898     </blockquote><p>
2899    
2900     </p>
2901     <p>Example:
2902     </p>
2903     <p>
2904     </p>
2905     <blockquote class="text">
2906     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2907     </p>
2908     <p>S: "OK"
2909     </p>
2910     </blockquote><p>
2911    
2912     </p>
2913     <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2914     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2915     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2916     Getting all created MIDI input device count</h3>
2917    
2918     <p>Use the following command to count all created MIDI input devices:
2919     </p>
2920     <p>
2921     </p>
2922     <blockquote class="text">
2923     <p>GET MIDI_INPUT_DEVICES
2924     </p>
2925     </blockquote><p>
2926    
2927     </p>
2928     <p>Possible Answers:
2929     </p>
2930     <p>
2931     </p>
2932     <blockquote class="text">
2933     <p>LinuxSampler will answer by sending the current number of all
2934     MIDI input devices.
2935     </p>
2936     </blockquote><p>
2937    
2938     </p>
2939     <p>Example:
2940     </p>
2941     <p>
2942     </p>
2943     <blockquote class="text">
2944     <p>C: "GET MIDI_INPUT_DEVICES"
2945     </p>
2946     <p>S: "3"
2947     </p>
2948     </blockquote><p>
2949    
2950     </p>
2951     <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2952     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2953     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2954     Getting all created MIDI input device list</h3>
2955    
2956     <p>Use the following command to list all created MIDI input devices:
2957     </p>
2958     <p>
2959     </p>
2960     <blockquote class="text">
2961     <p>LIST MIDI_INPUT_DEVICES
2962     </p>
2963     </blockquote><p>
2964    
2965     </p>
2966     <p>Possible Answers:
2967     </p>
2968     <p>
2969     </p>
2970     <blockquote class="text">
2971     <p>LinuxSampler will answer by sending a comma separated list
2972     with the numerical Ids of all created MIDI input devices.
2973     </p>
2974     </blockquote><p>
2975    
2976     </p>
2977     <p>Examples:
2978     </p>
2979     <p>
2980     </p>
2981     <blockquote class="text">
2982     <p>C: "LIST MIDI_INPUT_DEVICES"
2983     </p>
2984     <p>S: "0,1,2"
2985     </p>
2986     </blockquote><p>
2987    
2988     </p>
2989     <p>
2990     </p>
2991     <blockquote class="text">
2992     <p>C: "LIST MIDI_INPUT_DEVICES"
2993     </p>
2994     <p>S: "1,3"
2995     </p>
2996     </blockquote><p>
2997    
2998     </p>
2999     <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
3000     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3001     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
3002     Getting current settings of a MIDI input device</h3>
3003    
3004     <p>Use the following command to get current settings of a specific, created MIDI input device:
3005     </p>
3006     <p>
3007     </p>
3008     <blockquote class="text">
3009     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3010     </p>
3011     </blockquote><p>
3012    
3013     </p>
3014     <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3015     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3016     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3017     command.
3018     </p>
3019     <p>Possible Answers:
3020     </p>
3021     <p>
3022     </p>
3023     <blockquote class="text">
3024     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3025     Each answer line begins with the information category name
3026     followed by a colon and then a space character &lt;SP&gt; and finally
3027     the info character string to that info category. As some
3028     parameters might allow multiple values, character strings are
3029     encapsulated into apostrophes ('). At the moment the following
3030     information categories are defined (independent of driver):
3031     </p>
3032     <p>
3033     </p>
3034     <blockquote class="text">
3035     <p>DRIVER -
3036     </p>
3037     <blockquote class="text">
3038     <p>identifier of the used MIDI input driver, as e.g.
3039     returned by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a>
3040     command
3041     </p>
3042     </blockquote>
3043    
3044    
3045     </blockquote>
3046    
3047     <blockquote class="text">
3048     <p>ACTIVE -
3049     </p>
3050     <blockquote class="text">
3051     <p>either true or false, if false then the MIDI device is
3052     inactive and doesn't listen to any incoming MIDI events
3053     and thus doesn't forward them to connected sampler
3054     channels
3055     </p>
3056     </blockquote>
3057    
3058    
3059     </blockquote>
3060    
3061    
3062     </blockquote><p>
3063    
3064     </p>
3065     <p>The mentioned fields above don't have to be in particular
3066     order. The fields above are only those fields which are
3067     returned by all MIDI input devices. Every MIDI input driver
3068     might have its own, additional driver specific parameters (see
3069     <a class='info' href='#GET MIDI_INPUT_DRIVER INFO'>"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific MIDI input driver</span><span>)</span></a> command) which are also returned
3070     by this command.
3071     </p>
3072     <p>Example:
3073     </p>
3074     <p>
3075     </p>
3076     <blockquote class="text">
3077     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3078     </p>
3079     <p>S: "DRIVER: ALSA"
3080     </p>
3081     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3082     </p>
3083     <p>&nbsp;&nbsp;&nbsp;"."
3084     </p>
3085     </blockquote><p>
3086    
3087     </p>
3088     <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3089     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3090     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3091     Changing settings of MIDI input devices</h3>
3092    
3093     <p>Use the following command to alter a specific setting of a created MIDI input device:
3094     </p>
3095     <p>
3096     </p>
3097     <blockquote class="text">
3098     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3099     </p>
3100     </blockquote><p>
3101    
3102     </p>
3103     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3104     MIDI input device as returned by the
3105     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3106     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3107     command, &lt;key&gt; by the name of the parameter to change and
3108     &lt;value&gt; by the new value for this parameter.
3109     </p>
3110     <p>Possible Answers:
3111     </p>
3112     <p>
3113     </p>
3114     <blockquote class="text">
3115     <p>"OK" -
3116     </p>
3117     <blockquote class="text">
3118     <p>in case setting was successfully changed
3119     </p>
3120     </blockquote>
3121    
3122    
3123     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3124     </p>
3125     <blockquote class="text">
3126     <p>in case setting was changed successfully, but there are
3127     noteworthy issue(s) related, providing an appropriate
3128     warning code and warning message
3129     </p>
3130     </blockquote>
3131    
3132    
3133     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3134     </p>
3135     <blockquote class="text">
3136     <p>in case it failed, providing an appropriate error code and error message
3137     </p>
3138     </blockquote>
3139    
3140    
3141     </blockquote><p>
3142    
3143     </p>
3144     <p>Example:
3145     </p>
3146     <p>
3147     </p>
3148     <blockquote class="text">
3149     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3150     </p>
3151     <p>S: "OK"
3152     </p>
3153     </blockquote><p>
3154    
3155     </p>
3156     <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3157     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3158     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3159     Getting information about a MIDI port</h3>
3160    
3161     <p>Use the following command to get information about a MIDI port:
3162     </p>
3163     <p>
3164     </p>
3165     <blockquote class="text">
3166     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3167     </p>
3168     </blockquote><p>
3169    
3170     </p>
3171     <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3172     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3173     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3174     command and &lt;midi-port&gt; the MIDI input port number.
3175     </p>
3176     <p>Possible Answers:
3177     </p>
3178     <p>
3179     </p>
3180     <blockquote class="text">
3181     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3182     Each answer line begins with the information category name
3183     followed by a colon and then a space character &lt;SP&gt; and finally
3184     the info character string to that info category. At the moment
3185     the following information categories are defined:
3186     </p>
3187     <p>NAME -
3188     </p>
3189     <blockquote class="text">
3190     <p>arbitrary character string naming the port
3191     </p>
3192     </blockquote>
3193    
3194    
3195     </blockquote><p>
3196    
3197     </p>
3198     <p>The field above is only the one which is returned by all MIDI
3199     ports regardless of the MIDI driver and port. Every MIDI port
3200     might have its own, additional driver and port specific
3201     parameters.
3202     </p>
3203     <p>Example:
3204     </p>
3205     <p>
3206     </p>
3207     <blockquote class="text">
3208     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3209     </p>
3210     <p>S: "NAME: 'Masterkeyboard'"
3211     </p>
3212     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3213     </p>
3214     <p>&nbsp;&nbsp;&nbsp;"."
3215     </p>
3216     </blockquote><p>
3217    
3218     </p>
3219     <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3220     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3221     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3222     Getting information about specific MIDI port parameter</h3>
3223    
3224     <p>Use the following command to get detailed information about specific MIDI port parameter:
3225     </p>
3226     <p>
3227     </p>
3228     <blockquote class="text">
3229     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3230     </p>
3231     </blockquote><p>
3232    
3233     </p>
3234     <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3235     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3236     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3237     command, &lt;port&gt; the MIDI port number and
3238     &lt;param&gt; a specific port parameter name for which information should be
3239     obtained (as returned by the <a class='info' href='#GET MIDI_INPUT_PORT INFO'>"GET MIDI_INPUT_PORT INFO"<span> (</span><span class='info'>Getting information about a MIDI port</span><span>)</span></a> command).
3240     </p>
3241     <p>Possible Answers:
3242     </p>
3243     <p>
3244     </p>
3245     <blockquote class="text">
3246     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3247     Each answer line begins with the information category name
3248     followed by a colon and then a space character &lt;SP&gt; and finally
3249     the info character string to that info category. There is
3250     information which is always returned, independently of the
3251     given channel parameter and there is optional information
3252     which are only shown dependently to the given MIDI port. At the
3253     moment the following information categories are defined:
3254     </p>
3255     <p>TYPE -
3256     </p>
3257     <blockquote class="text">
3258     <p>either "BOOL" for boolean value(s) or "INT" for integer
3259     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3260     character string(s)
3261     (always returned)
3262     </p>
3263     </blockquote>
3264    
3265    
3266     <p>DESCRIPTION -
3267     </p>
3268     <blockquote class="text">
3269     <p>arbitrary text describing the purpose of the parameter
3270     (always returned)
3271     </p>
3272     </blockquote>
3273    
3274    
3275     <p>FIX -
3276     </p>
3277     <blockquote class="text">
3278     <p>either true or false, if true then this parameter is
3279     read only, thus cannot be altered
3280     (always returned)
3281     </p>
3282     </blockquote>
3283    
3284    
3285     <p>MULTIPLICITY -
3286     </p>
3287     <blockquote class="text">
3288     <p>either true or false, defines if this parameter allows
3289     only one value or a list of values, where true means
3290     multiple values and false only a single value allowed
3291     (always returned)
3292     </p>
3293     </blockquote>
3294    
3295    
3296     <p>RANGE_MIN -
3297     </p>
3298     <blockquote class="text">
3299     <p>defines lower limit of the allowed value range for this
3300     parameter, can be an integer value as well as a dotted
3301     number, this parameter is usually used in conjunction
3302     with 'RANGE_MAX' but may also appear without
3303     (optionally returned, dependent to driver and port
3304     parameter)
3305     </p>
3306     </blockquote>
3307    
3308    
3309     <p>RANGE_MAX -
3310     </p>
3311     <blockquote class="text">
3312     <p>defines upper limit of the allowed value range for this
3313     parameter, can be an integer value as well as a dotted
3314     number, this parameter is usually used in conjunction
3315     with 'RANGE_MIN' but may also appear without
3316     (optionally returned, dependent to driver and port
3317     parameter)
3318     </p>
3319     </blockquote>
3320    
3321    
3322     <p>POSSIBILITIES -
3323     </p>
3324     <blockquote class="text">
3325     <p>comma separated list of possible values for this
3326     parameter, character strings are encapsulated into
3327     apostrophes
3328     (optionally returned, dependent to device and port
3329     parameter)
3330     </p>
3331     </blockquote>
3332    
3333    
3334     </blockquote><p>
3335    
3336     </p>
3337     <p>The mentioned fields above don't have to be in particular order.
3338     </p>
3339     <p>Example:
3340     </p>
3341     <p>
3342     </p>
3343     <blockquote class="text">
3344     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3345     </p>
3346     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3347     </p>
3348     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3349     </p>
3350     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3351     </p>
3352     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3353     </p>
3354     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3355     </p>
3356     <p>&nbsp;&nbsp;&nbsp;"."
3357     </p>
3358     </blockquote><p>
3359    
3360     </p>
3361     <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3362     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3363     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3364     Changing settings of MIDI input ports</h3>
3365    
3366     <p>Use the following command to alter a specific setting of a MIDI input port:
3367     </p>
3368     <p>
3369     </p>
3370     <blockquote class="text">
3371     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3372     </p>
3373     </blockquote><p>
3374    
3375     </p>
3376     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3377     MIDI device as returned by the
3378     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3379     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3380     command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3381     the parameter to change and &lt;value&gt; by the new value for this
3382     parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3383     for specifying no value for parameters allowing a list of values.
3384     </p>
3385     <p>Possible Answers:
3386     </p>
3387     <p>
3388     </p>
3389     <blockquote class="text">
3390     <p>"OK" -
3391     </p>
3392     <blockquote class="text">
3393     <p>in case setting was successfully changed
3394     </p>
3395     </blockquote>
3396    
3397    
3398     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3399     </p>
3400     <blockquote class="text">
3401     <p>in case setting was changed successfully, but there are
3402     noteworthy issue(s) related, providing an appropriate
3403     warning code and warning message
3404     </p>
3405     </blockquote>
3406    
3407    
3408     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3409     </p>
3410     <blockquote class="text">
3411     <p>in case it failed, providing an appropriate error code and error message
3412     </p>
3413     </blockquote>
3414    
3415    
3416     </blockquote><p>
3417    
3418     </p>
3419     <p>Example:
3420     </p>
3421     <p>
3422     </p>
3423     <blockquote class="text">
3424     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3425     </p>
3426     <p>S: "OK"
3427     </p>
3428     </blockquote><p>
3429    
3430     </p>
3431     <p>
3432     </p>
3433     <blockquote class="text">
3434     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3435     </p>
3436     <p>S: "OK"
3437     </p>
3438     </blockquote><p>
3439    
3440     </p>
3441     <a name="anchor11"></a><br /><hr />
3442     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3443     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3444     Configuring sampler channels</h3>
3445    
3446     <p>The following commands describe how to add and remove sampler channels, associate a
3447     sampler channel with a sampler engine, load instruments and connect sampler channels to
3448     MIDI and audio devices.
3449     </p>
3450     <a name="LOAD INSTRUMENT"></a><br /><hr />
3451     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3452     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3453     Loading an instrument</h3>
3454    
3455     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3456     </p>
3457     <p>
3458     </p>
3459     <blockquote class="text">
3460     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3461     </p>
3462     </blockquote><p>
3463    
3464     </p>
3465     <p>Where &lt;filename&gt; is the name of the instrument file on the
3466     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3467     instrument in the instrument file and &lt;sampler-channel> is the
3468     number of the sampler channel the instrument should be assigned to.
3469     Each sampler channel can only have one instrument.
3470     </p>
3471     <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3472     escape characters for special characters (see chapter
3473     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"
3474     for details) and accordingly backslash characters in the filename
3475     MUST now be escaped as well!
3476     </p>
3477     <p>The difference between regular and NON_MODAL versions of the command
3478     is that the regular command returns OK only after the instrument has been
3479     fully loaded and the channel is ready to be used while NON_MODAL version
3480     returns immediately and a background process is launched to load the instrument
3481     on the channel. The <a class='info' href='#GET CHANNEL INFO'>GET CHANNEL INFO<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
3482     command can be used to obtain loading
3483     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3484     such as making sure that the file could be read and it is of a proper format
3485     and SHOULD return ERR and SHOULD not launch the background process should any
3486     errors be detected at that point.
3487     </p>
3488     <p>Possible Answers:
3489     </p>
3490     <p>
3491     </p>
3492     <blockquote class="text">
3493     <p>"OK" -
3494     </p>
3495     <blockquote class="text">
3496     <p>in case the instrument was successfully loaded
3497     </p>
3498     </blockquote>
3499    
3500    
3501     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3502     </p>
3503     <blockquote class="text">
3504     <p>in case the instrument was loaded successfully, but there
3505     are noteworthy issue(s) related (e.g. Engine doesn't support
3506     one or more patch parameters provided by the loaded
3507     instrument file), providing an appropriate warning code and
3508     warning message
3509     </p>
3510     </blockquote>
3511    
3512    
3513     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3514     </p>
3515     <blockquote class="text">
3516     <p>in case it failed, providing an appropriate error code and error message
3517     </p>
3518     </blockquote>
3519    
3520    
3521     </blockquote><p>
3522    
3523     </p>
3524     <p>Example (Unix):
3525     </p>
3526     <p>
3527     </p>
3528     <blockquote class="text">
3529     <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3530     </p>
3531     <p>S: OK
3532     </p>
3533     </blockquote><p>
3534    
3535     </p>
3536     <p>Example (Windows):
3537     </p>
3538     <p>
3539     </p>
3540     <blockquote class="text">
3541     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3542     </p>
3543     <p>S: OK
3544     </p>
3545     </blockquote><p>
3546    
3547     </p>
3548     <a name="LOAD ENGINE"></a><br /><hr />
3549     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3550     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3551     Loading a sampler engine</h3>
3552    
3553     <p>A sampler engine type can be associated to a specific sampler
3554     channel by the following command:
3555     </p>
3556     <p>
3557     </p>
3558     <blockquote class="text">
3559     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3560     </p>
3561     </blockquote><p>
3562    
3563     </p>
3564     <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3565     <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command and &lt;sampler-channel&gt;
3566     the sampler channel as returned by the
3567     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3568     <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command where
3569     the engine type should be assigned to. This command should be issued
3570     after adding a new sampler channel and before any other control
3571     commands on the new sampler channel. It can also be used to change
3572     the engine type of a sampler channel. This command has (currently) no
3573     way to define or force if a new engine instance should be created and
3574     assigned to the given sampler channel or if an already existing
3575     instance of that engine type, shared with other sampler channels,
3576     should be used.
3577     </p>
3578     <p>Possible Answers:
3579     </p>
3580     <p>
3581     </p>
3582     <blockquote class="text">
3583     <p>"OK" -
3584     </p>
3585     <blockquote class="text">
3586     <p>in case the engine was successfully deployed
3587     </p>
3588     </blockquote>
3589    
3590    
3591     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3592     </p>
3593     <blockquote class="text">
3594     <p>in case the engine was deployed successfully, but there
3595     are noteworthy issue(s) related, providing an appropriate
3596     warning code and warning message
3597     </p>
3598     </blockquote>
3599    
3600    
3601     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3602     </p>
3603     <blockquote class="text">
3604     <p>in case it failed, providing an appropriate error code and
3605     error message
3606     </p>
3607     </blockquote>
3608    
3609    
3610     </blockquote><p>
3611    
3612     </p>
3613     <p>Example:
3614     </p>
3615     <p>
3616     </p>
3617     <blockquote class="text">
3618     <p>
3619     </p>
3620     </blockquote><p>
3621    
3622     </p>
3623     <a name="GET CHANNELS"></a><br /><hr />
3624     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3625     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3626     Getting all created sampler channel count</h3>
3627    
3628     <p>The number of sampler channels can change on runtime. To get the
3629     current amount of sampler channels, the front-end can send the
3630     following command:
3631     </p>
3632     <p>
3633     </p>
3634     <blockquote class="text">
3635     <p>GET CHANNELS
3636     </p>
3637     </blockquote><p>
3638    
3639     </p>
3640     <p>Possible Answers:
3641     </p>
3642     <p>
3643     </p>
3644     <blockquote class="text">
3645     <p>LinuxSampler will answer by returning the current number of sampler channels.
3646     </p>
3647     </blockquote><p>
3648    
3649     </p>
3650     <p>Example:
3651     </p>
3652     <p>
3653     </p>
3654     <blockquote class="text">
3655     <p>C: "GET CHANNELS"
3656     </p>
3657     <p>S: "12"
3658     </p>
3659     </blockquote><p>
3660    
3661     </p>
3662     <a name="LIST CHANNELS"></a><br /><hr />
3663     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3664     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3665     Getting all created sampler channel list</h3>
3666    
3667     <p>The number of sampler channels can change on runtime. To get the
3668     current list of sampler channels, the front-end can send the
3669     following command:
3670     </p>
3671     <p>
3672     </p>
3673     <blockquote class="text">
3674     <p>LIST CHANNELS
3675     </p>
3676     </blockquote><p>
3677    
3678     </p>
3679     <p>Possible Answers:
3680     </p>
3681     <p>
3682     </p>
3683     <blockquote class="text">
3684     <p>LinuxSampler will answer by returning a comma separated list
3685     with all sampler channels numerical IDs.
3686     </p>
3687     </blockquote><p>
3688    
3689     </p>
3690     <p>Example:
3691     </p>
3692     <p>
3693     </p>
3694     <blockquote class="text">
3695     <p>C: "LIST CHANNELS"
3696     </p>
3697     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3698     </p>
3699     </blockquote><p>
3700    
3701     </p>
3702     <a name="ADD CHANNEL"></a><br /><hr />
3703     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3704     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3705     Adding a new sampler channel</h3>
3706    
3707     <p>A new sampler channel can be added to the end of the sampler
3708     channel list by sending the following command:
3709     </p>
3710     <p>
3711     </p>
3712     <blockquote class="text">
3713     <p>ADD CHANNEL
3714     </p>
3715     </blockquote><p>
3716    
3717     </p>
3718     <p>This will increment the sampler channel count by one and the new
3719     sampler channel will be appended to the end of the sampler channel
3720     list. The front-end should send the respective, related commands
3721     right after to e.g. load an engine, load an instrument and setting
3722     input, output method and eventually other commands to initialize
3723     the new channel. The front-end should use the sampler channel
3724     returned by the answer of this command to perform the previously
3725     recommended commands, to avoid race conditions e.g. with other
3726     front-ends that might also have sent an "ADD CHANNEL" command.
3727     </p>
3728     <p>Possible Answers:
3729     </p>
3730     <p>
3731     </p>
3732     <blockquote class="text">
3733     <p>"OK[&lt;sampler-channel&gt;]" -
3734     </p>
3735     <blockquote class="text">
3736     <p>in case a new sampler channel could be added, where
3737     &lt;sampler-channel&gt; reflects the channel number of the new
3738     created sampler channel which should be used to set up
3739     the sampler channel by sending subsequent initialization
3740     commands
3741     </p>
3742     </blockquote>
3743    
3744    
3745     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3746     </p>
3747     <blockquote class="text">
3748     <p>in case a new channel was added successfully, but there are
3749     noteworthy issue(s) related, providing an appropriate
3750     warning code and warning message
3751     </p>
3752     </blockquote>
3753    
3754    
3755     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3756     </p>
3757     <blockquote class="text">
3758     <p>in case it failed, providing an appropriate error code and
3759     error message
3760     </p>
3761     </blockquote>
3762    
3763    
3764     </blockquote><p>
3765    
3766     </p>
3767     <p>Example:
3768     </p>
3769     <p>
3770     </p>
3771     <blockquote class="text">
3772     <p>
3773     </p>
3774     </blockquote><p>
3775    
3776     </p>
3777     <a name="REMOVE CHANNEL"></a><br /><hr />
3778     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3779     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3780     Removing a sampler channel</h3>
3781    
3782     <p>A sampler channel can be removed by sending the following command:
3783     </p>
3784     <p>
3785     </p>
3786     <blockquote class="text">
3787     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3788     </p>
3789     </blockquote><p>
3790    
3791     </p>
3792     <p>Where &lt;sampler-channel&gt; should be replaced by the
3793     number of the sampler channel as given by the
3794     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3795     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3796     command. The channel numbers of all subsequent sampler channels
3797     remain the same.
3798     </p>
3799     <p>Possible Answers:
3800     </p>
3801     <p>
3802     </p>
3803     <blockquote class="text">
3804     <p>"OK" -
3805     </p>
3806     <blockquote class="text">
3807     <p>in case the given sampler channel could be removed
3808     </p>
3809     </blockquote>
3810    
3811    
3812     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3813     </p>
3814     <blockquote class="text">
3815     <p>in case the given channel was removed, but there are
3816     noteworthy issue(s) related, providing an appropriate
3817     warning code and warning message
3818     </p>
3819     </blockquote>
3820    
3821    
3822     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3823     </p>
3824     <blockquote class="text">
3825     <p>in case it failed, providing an appropriate error code and
3826     error message
3827     </p>
3828     </blockquote>
3829    
3830    
3831     </blockquote><p>
3832    
3833     </p>
3834     <p>Example:
3835     </p>
3836     <p>
3837     </p>
3838     <blockquote class="text">
3839     <p>
3840     </p>
3841     </blockquote><p>
3842    
3843     </p>
3844     <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3845     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3846     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3847     Getting amount of available engines</h3>
3848    
3849     <p>The front-end can ask for the number of available engines by sending the following command:
3850     </p>
3851     <p>
3852     </p>
3853     <blockquote class="text">
3854     <p>GET AVAILABLE_ENGINES
3855     </p>
3856     </blockquote><p>
3857    
3858     </p>
3859     <p>Possible Answers:
3860     </p>
3861     <p>
3862     </p>
3863     <blockquote class="text">
3864     <p>LinuxSampler will answer by sending the number of available engines.
3865     </p>
3866     </blockquote><p>
3867    
3868     </p>
3869     <p>Example:
3870     </p>
3871     <p>
3872     </p>
3873     <blockquote class="text">
3874     <p>C: "GET AVAILABLE_ENGINES"
3875     </p>
3876     <p>S: "4"
3877     </p>
3878     </blockquote><p>
3879    
3880     </p>
3881     <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3882     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3883     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3884     Getting all available engines</h3>
3885    
3886     <p>The front-end can ask for a list of all available engines by sending the following command:
3887     </p>
3888     <p>
3889     </p>
3890     <blockquote class="text">
3891     <p>LIST AVAILABLE_ENGINES
3892     </p>
3893     </blockquote><p>
3894    
3895     </p>
3896     <p>Possible Answers:
3897     </p>
3898     <p>
3899     </p>
3900     <blockquote class="text">
3901     <p>LinuxSampler will answer by sending a comma separated list
3902     of the engines' names encapsulated into apostrophes (').
3903     Engine names can consist of lower and upper cases,
3904     digits and underlines ("_" character).
3905     </p>
3906     </blockquote><p>
3907    
3908     </p>
3909     <p>Example:
3910     </p>
3911     <p>
3912     </p>
3913     <blockquote class="text">
3914     <p>C: "LIST AVAILABLE_ENGINES"
3915     </p>
3916     <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3917     </p>
3918     </blockquote><p>
3919    
3920     </p>
3921     <a name="GET ENGINE INFO"></a><br /><hr />
3922     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3923     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3924     Getting information about an engine</h3>
3925    
3926     <p>The front-end can ask for information about a specific engine by
3927     sending the following command:
3928     </p>
3929     <p>
3930     </p>
3931     <blockquote class="text">
3932     <p>GET ENGINE INFO &lt;engine-name&gt;
3933     </p>
3934     </blockquote><p>
3935    
3936     </p>
3937     <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3938     <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3939     </p>
3940     <p>Possible Answers:
3941     </p>
3942     <p>
3943     </p>
3944     <blockquote class="text">
3945     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3946     Each answer line begins with the information category name
3947     followed by a colon and then a space character &lt;SP&gt; and finally
3948     the info character string to that info category. At the moment
3949     the following categories are defined:
3950     </p>
3951     <p>
3952     </p>
3953     <blockquote class="text">
3954     <p>DESCRIPTION -
3955     </p>
3956     <blockquote class="text">
3957     <p>arbitrary description text about the engine
3958     (note that the character string may contain
3959     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3960     </p>
3961     </blockquote>
3962    
3963    
3964     <p>VERSION -
3965     </p>
3966     <blockquote class="text">
3967     <p>arbitrary character string regarding the engine's version
3968     </p>
3969     </blockquote>
3970    
3971    
3972     </blockquote>
3973    
3974    
3975     </blockquote><p>
3976    
3977     </p>
3978     <p>The mentioned fields above don't have to be in particular order.
3979     </p>
3980     <p>Example:
3981     </p>
3982     <p>
3983     </p>
3984     <blockquote class="text">
3985     <p>C: "GET ENGINE INFO JoesCustomEngine"
3986     </p>
3987     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3988     </p>
3989     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3990     </p>
3991     <p>&nbsp;&nbsp;&nbsp;"."
3992     </p>
3993     </blockquote><p>
3994    
3995     </p>
3996     <a name="GET CHANNEL INFO"></a><br /><hr />
3997     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3998     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3999     Getting sampler channel information</h3>
4000    
4001     <p>The front-end can ask for the current settings of a sampler channel
4002     by sending the following command:
4003     </p>
4004     <p>
4005     </p>
4006     <blockquote class="text">
4007     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4008     </p>
4009     </blockquote><p>
4010    
4011     </p>
4012     <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4013     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4014     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4015     </p>
4016     <p>Possible Answers:
4017     </p>
4018     <p>
4019     </p>
4020     <blockquote class="text">
4021     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4022     Each answer line begins with the settings category name
4023     followed by a colon and then a space character &lt;SP&gt; and finally
4024     the info character string to that setting category. At the
4025     moment the following categories are defined:
4026     </p>
4027     <p>
4028     </p>
4029     <blockquote class="text">
4030     <p>ENGINE_NAME -
4031     </p>
4032     <blockquote class="text">
4033     <p>name of the engine that is associated with the sampler
4034     channel, "NONE" if there's no engine associated yet for
4035     this sampler channel
4036     </p>
4037     </blockquote>
4038    
4039    
4040     <p>AUDIO_OUTPUT_DEVICE -
4041     </p>
4042     <blockquote class="text">
4043     <p>numerical ID of the audio output device which is
4044     currently connected to this sampler channel to output
4045     the audio signal, "-1" if there's no device
4046     connected to this sampler channel
4047     </p>
4048     </blockquote>
4049    
4050    
4051     <p>AUDIO_OUTPUT_CHANNELS -
4052     </p>
4053     <blockquote class="text">
4054     <p>number of output channels the sampler channel offers
4055     (dependent to used sampler engine and loaded instrument)
4056     </p>
4057     </blockquote>
4058    
4059    
4060     <p>AUDIO_OUTPUT_ROUTING -
4061     </p>
4062     <blockquote class="text">
4063     <p>comma separated list which reflects to which audio
4064     channel of the selected audio output device each
4065     sampler output channel is routed to, e.g. "0,3" would
4066     mean the engine's output channel 0 is routed to channel
4067     0 of the audio output device and the engine's output
4068     channel 1 is routed to the channel 3 of the audio
4069     output device
4070     </p>
4071     </blockquote>
4072    
4073    
4074     <p>INSTRUMENT_FILE -
4075     </p>
4076     <blockquote class="text">
4077     <p>the file name of the loaded instrument, "NONE" if
4078     there's no instrument yet loaded for this sampler
4079     channel (note: since LSCP 1.2 this path may contain
4080     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4081     </p>
4082     </blockquote>
4083    
4084    
4085     <p>INSTRUMENT_NR -
4086     </p>
4087     <blockquote class="text">
4088     <p>the instrument index number of the loaded instrument,
4089     "-1" if there's no instrument loaded for this sampler
4090     channel
4091     </p>
4092     </blockquote>
4093    
4094    
4095     <p>INSTRUMENT_NAME -
4096     </p>
4097     <blockquote class="text">
4098     <p>the instrument name of the loaded instrument
4099     (note: since LSCP 1.2 this character string may contain
4100     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4101     </p>
4102     </blockquote>
4103    
4104    
4105     <p>INSTRUMENT_STATUS -
4106     </p>
4107     <blockquote class="text">
4108     <p>Integer values 0 to 100 indicating loading progress
4109     percentage for the instrument. Negative
4110     value indicates a loading exception (also returns "-1" in case no
4111     instrument was yet to be loaded on the sampler channel).
4112     Value of 100 indicates that the instrument is fully
4113     loaded.
4114     </p>
4115     </blockquote>
4116    
4117    
4118     <p>MIDI_INPUT_DEVICE -
4119     </p>
4120     <blockquote class="text">
4121     <p>numerical ID of the MIDI input device which is
4122     currently connected to this sampler channel to deliver
4123     MIDI input commands, "-1" if there's no device
4124     connected to this sampler channel
4125     </p>
4126     </blockquote>
4127    
4128    
4129     <p>MIDI_INPUT_PORT -
4130     </p>
4131     <blockquote class="text">
4132     <p>port number of the MIDI input device (in case a
4133     MIDI device was already assigned to the sampler
4134     channel)
4135     </p>
4136     </blockquote>
4137    
4138    
4139     <p>MIDI_INPUT_CHANNEL -
4140     </p>
4141     <blockquote class="text">
4142     <p>the MIDI input channel number this sampler channel
4143     should listen to or "ALL" to listen on all MIDI channels
4144     </p>
4145     </blockquote>
4146    
4147    
4148     <p>VOLUME -
4149     </p>
4150     <blockquote class="text">
4151     <p>optionally dotted number for the channel volume factor
4152     (where a value &lt; 1.0 means attenuation and a value >
4153     1.0 means amplification)
4154     </p>
4155     </blockquote>
4156    
4157    
4158     <p>MUTE -
4159     </p>
4160     <blockquote class="text">
4161     <p>Determines whether the channel is muted, "true" if the
4162     channel is muted, "false" if the channel is not muted, and
4163     "MUTED_BY_SOLO" if the channel is muted because of the
4164     presence of a solo channel and will be unmuted when
4165     there are no solo channels left
4166     </p>
4167     </blockquote>
4168    
4169    
4170     <p>SOLO -
4171     </p>
4172     <blockquote class="text">
4173     <p>Determines whether this is a solo channel, "true" if
4174     the channel is a solo channel; "false" otherwise
4175     </p>
4176     </blockquote>
4177    
4178    
4179     <p>MIDI_INSTRUMENT_MAP -
4180     </p>
4181     <blockquote class="text">
4182     <p>Determines to which MIDI instrument map this sampler
4183     channel is assigned to. Read chapter
4184     <a class='info' href='#SET CHANNEL MIDI_INSTRUMENT_MAP'>"SET CHANNEL MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Assigning a MIDI instrument map to a sampler channel</span><span>)</span></a>
4185     for a list of possible values.
4186     </p>
4187     </blockquote>
4188    
4189    
4190     </blockquote>
4191    
4192    
4193     </blockquote><p>
4194    
4195     </p>
4196     <p>The mentioned fields above don't have to be in particular order.
4197     </p>
4198     <p>Example:
4199     </p>
4200     <p>
4201     </p>
4202     <blockquote class="text">
4203     <p>C: "GET CHANNEL INFO 34"
4204     </p>
4205     <p>S: "ENGINE_NAME: GigEngine"
4206     </p>
4207     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4208     </p>
4209     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4210     </p>
4211     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4212     </p>
4213     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4214     </p>
4215     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4216     </p>
4217     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4218     </p>
4219     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4220     </p>
4221     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4222     </p>
4223     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4224     </p>
4225     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4226     </p>
4227     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4228     </p>
4229     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4230     </p>
4231     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4232     </p>
4233     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4234     </p>
4235     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4236     </p>
4237     <p>&nbsp;&nbsp;&nbsp;"."
4238     </p>
4239     </blockquote><p>
4240    
4241     </p>
4242     <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4243     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4244     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4245     Current number of active voices</h3>
4246    
4247     <p>The front-end can ask for the current number of active voices on a
4248     sampler channel by sending the following command:
4249     </p>
4250     <p>
4251     </p>
4252     <blockquote class="text">
4253     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4254     </p>
4255     </blockquote><p>
4256    
4257     </p>
4258     <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4259     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4260     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4261     </p>
4262     <p>Possible Answers:
4263     </p>
4264     <p>
4265     </p>
4266     <blockquote class="text">
4267     <p>LinuxSampler will answer by returning the number of active
4268     voices on that channel.
4269     </p>
4270     </blockquote><p>
4271    
4272     </p>
4273     <p>Example:
4274     </p>
4275     <p>
4276     </p>
4277     <blockquote class="text">
4278     <p>
4279     </p>
4280     </blockquote><p>
4281    
4282     </p>
4283     <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4284     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4285     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4286     Current number of active disk streams</h3>
4287    
4288     <p>The front-end can ask for the current number of active disk streams
4289     on a sampler channel by sending the following command:
4290     </p>
4291     <p>
4292     </p>
4293     <blockquote class="text">
4294     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4295     </p>
4296     </blockquote><p>
4297    
4298     </p>
4299     <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4300     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4301     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4302     </p>
4303     <p>Possible Answers:
4304     </p>
4305     <p>
4306     </p>
4307     <blockquote class="text">
4308     <p>LinuxSampler will answer by returning the number of active
4309     disk streams on that channel in case the engine supports disk
4310     streaming, if the engine doesn't support disk streaming it will
4311     return "NA" for not available.
4312     </p>
4313     </blockquote><p>
4314    
4315     </p>
4316     <p>Example:
4317     </p>
4318     <p>
4319     </p>
4320     <blockquote class="text">
4321     <p>
4322     </p>
4323     </blockquote><p>
4324    
4325     </p>
4326     <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4327     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4328     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4329     Current fill state of disk stream buffers</h3>
4330    
4331     <p>The front-end can ask for the current fill state of all disk streams
4332     on a sampler channel by sending the following command:
4333     </p>
4334     <p>
4335     </p>
4336     <blockquote class="text">
4337     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4338     </p>
4339     </blockquote><p>
4340    
4341     </p>
4342     <p>to get the fill state in bytes or
4343     </p>
4344     <p>
4345     </p>
4346     <blockquote class="text">
4347     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4348     </p>
4349     </blockquote><p>
4350    
4351     </p>
4352     <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4353     sampler channel number the front-end is interested in
4354     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4355     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4356     </p>
4357     <p>Possible Answers:
4358     </p>
4359     <p>
4360     </p>
4361     <blockquote class="text">
4362     <p>LinuxSampler will either answer by returning a comma separated
4363     string with the fill state of all disk stream buffers on that
4364     channel or an empty line if there are no active disk streams or
4365     "NA" for *not available* in case the engine which is deployed
4366     doesn't support disk streaming. Each entry in the answer list
4367     will begin with the stream's ID in brackets followed by the
4368     numerical representation of the fill size (either in bytes or
4369     percentage). Note: due to efficiency reasons the fill states in
4370     the response are not in particular order, thus the front-end has
4371     to sort them by itself if necessary.
4372     </p>
4373     </blockquote><p>
4374    
4375     </p>
4376     <p>Examples:
4377     </p>
4378     <p>
4379     </p>
4380     <blockquote class="text">
4381     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4382     </p>
4383     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4384     </p>
4385     </blockquote><p>
4386    
4387     </p>
4388     <blockquote class="text">
4389     <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4390     </p>
4391     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4392     </p>
4393     </blockquote><p>
4394    
4395     </p>
4396     <blockquote class="text">
4397     <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4398     </p>
4399     <p>S: ""
4400     </p>
4401     </blockquote><p>
4402    
4403     </p>
4404     <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4405     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4406     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4407     Setting audio output device</h3>
4408    
4409     <p>The front-end can set the audio output device on a specific sampler
4410     channel by sending the following command:
4411     </p>
4412     <p>
4413     </p>
4414     <blockquote class="text">
4415     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4416     </p>
4417     </blockquote><p>
4418    
4419     </p>
4420     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4421     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4422     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4423     &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4424     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
4425     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
4426     command.
4427     </p>
4428     <p>Possible Answers:
4429     </p>
4430     <p>
4431     </p>
4432     <blockquote class="text">
4433     <p>"OK" -
4434     </p>
4435     <blockquote class="text">
4436     <p>on success
4437     </p>
4438     </blockquote>
4439    
4440    
4441     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4442     </p>
4443     <blockquote class="text">
4444     <p>if audio output device was set, but there are noteworthy
4445     issue(s) related, providing an appropriate warning code and
4446     warning message
4447     </p>
4448     </blockquote>
4449    
4450    
4451     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4452     </p>
4453     <blockquote class="text">
4454     <p>in case it failed, providing an appropriate error code and error message
4455     </p>
4456     </blockquote>
4457    
4458    
4459     </blockquote><p>
4460    
4461     </p>
4462     <p>Examples:
4463     </p>
4464     <p>
4465     </p>
4466     <blockquote class="text">
4467     <p>
4468     </p>
4469     </blockquote><p>
4470    
4471     </p>
4472     <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4473     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4474     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4475     Setting audio output type</h3>
4476    
4477     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4478     </p>
4479     <p>The front-end can alter the audio output type on a specific sampler
4480     channel by sending the following command:
4481     </p>
4482     <p>
4483     </p>
4484     <blockquote class="text">
4485     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4486     </p>
4487     </blockquote><p>
4488    
4489     </p>
4490     <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4491     &lt;sampler-channel&gt; is the respective sampler channel number.
4492     </p>
4493     <p>Possible Answers:
4494     </p>
4495     <p>
4496     </p>
4497     <blockquote class="text">
4498     <p>"OK" -
4499     </p>
4500     <blockquote class="text">
4501     <p>on success
4502     </p>
4503     </blockquote>
4504    
4505    
4506     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4507     </p>
4508     <blockquote class="text">
4509     <p>if audio output type was set, but there are noteworthy
4510     issue(s) related, providing an appropriate warning code and
4511     warning message
4512     </p>
4513     </blockquote>
4514    
4515    
4516     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4517     </p>
4518     <blockquote class="text">
4519     <p>in case it failed, providing an appropriate error code and error message
4520     </p>
4521     </blockquote>
4522    
4523    
4524     </blockquote><p>
4525    
4526     </p>
4527     <p>Examples:
4528     </p>
4529     <p>
4530     </p>
4531     <blockquote class="text">
4532     <p>
4533     </p>
4534     </blockquote><p>
4535    
4536     </p>
4537     <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4538     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4539     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4540     Setting audio output channel</h3>
4541    
4542     <p>The front-end can alter the audio output channel on a specific
4543     sampler channel by sending the following command:
4544     </p>
4545     <p>
4546     </p>
4547     <blockquote class="text">
4548     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4549     </p>
4550     </blockquote><p>
4551    
4552     </p>
4553     <p>Where &lt;sampler-chan&gt; is the sampler channel number
4554     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4555     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, &lt;audio-out&gt; is the
4556     numerical ID of the sampler channel's audio output channel which should be
4557     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4558     output device where &lt;audio-out&gt; should be routed to.
4559     </p>
4560     <p>Possible Answers:
4561     </p>
4562     <p>
4563     </p>
4564     <blockquote class="text">
4565     <p>"OK" -
4566     </p>
4567     <blockquote class="text">
4568     <p>on success
4569     </p>
4570     </blockquote>
4571    
4572    
4573     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4574     </p>
4575     <blockquote class="text">
4576     <p>if audio output channel was set, but there are noteworthy
4577     issue(s) related, providing an appropriate warning code and
4578     warning message
4579     </p>
4580     </blockquote>
4581    
4582    
4583     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4584     </p>
4585     <blockquote class="text">
4586     <p>in case it failed, providing an appropriate error code and error message
4587     </p>
4588     </blockquote>
4589    
4590    
4591     </blockquote><p>
4592    
4593     </p>
4594     <p>Examples:
4595     </p>
4596     <p>
4597     </p>
4598     <blockquote class="text">
4599     <p>
4600     </p>
4601     </blockquote><p>
4602    
4603     </p>
4604     <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4605     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4606     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4607     Setting MIDI input device</h3>
4608    
4609     <p>The front-end can set the MIDI input device on a specific sampler
4610     channel by sending the following command:
4611     </p>
4612     <p>
4613     </p>
4614     <blockquote class="text">
4615     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4616     </p>
4617     </blockquote><p>
4618    
4619     </p>
4620     <p>Where &lt;sampler-channel&gt; is the sampler channel number
4621     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4622     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command
4623     and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4624     <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
4625     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a> command.
4626     </p>
4627     <p>Possible Answers:
4628     </p>
4629     <p>
4630     </p>
4631     <blockquote class="text">
4632     <p>"OK" -
4633     </p>
4634     <blockquote class="text">
4635     <p>on success
4636     </p>
4637     </blockquote>
4638    
4639    
4640     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4641     </p>
4642     <blockquote class="text">
4643     <p>if MIDI input device was set, but there are noteworthy
4644     issue(s) related, providing an appropriate warning code and
4645     warning message
4646     </p>
4647     </blockquote>
4648    
4649    
4650     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4651     </p>
4652     <blockquote class="text">
4653     <p>in case it failed, providing an appropriate error code and error message
4654     </p>
4655     </blockquote>
4656    
4657    
4658     </blockquote><p>
4659    
4660     </p>
4661     <p>Examples:
4662     </p>
4663     <p>
4664     </p>
4665     <blockquote class="text">
4666     <p>
4667     </p>
4668     </blockquote><p>
4669    
4670     </p>
4671     <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4672     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4673     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4674     Setting MIDI input type</h3>
4675    
4676     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4677     </p>
4678     <p>The front-end can alter the MIDI input type on a specific sampler
4679     channel by sending the following command:
4680     </p>
4681     <p>
4682     </p>
4683     <blockquote class="text">
4684     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4685     </p>
4686     </blockquote><p>
4687    
4688     </p>
4689     <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4690     &lt;sampler-channel&gt; is the respective sampler channel number.
4691     </p>
4692     <p>Possible Answers:
4693     </p>
4694     <p>
4695     </p>
4696     <blockquote class="text">
4697     <p>"OK" -
4698     </p>
4699     <blockquote class="text">
4700     <p>on success
4701     </p>
4702     </blockquote>
4703    
4704    
4705     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4706     </p>
4707     <blockquote class="text">
4708     <p>if MIDI input type was set, but there are noteworthy
4709     issue(s) related, providing an appropriate warning code and
4710     warning message
4711     </p>
4712     </blockquote>
4713    
4714    
4715     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4716     </p>
4717     <blockquote class="text">
4718     <p>in case it failed, providing an appropriate error code and error message
4719     </p>
4720     </blockquote>
4721    
4722    
4723     </blockquote><p>
4724    
4725     </p>
4726     <p>Examples:
4727     </p>
4728     <p>
4729     </p>
4730     <blockquote class="text">
4731     <p>
4732     </p>
4733     </blockquote><p>
4734    
4735     </p>
4736     <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4737     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4738     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4739     Setting MIDI input port</h3>
4740    
4741     <p>The front-end can alter the MIDI input port on a specific sampler
4742     channel by sending the following command:
4743     </p>
4744     <p>
4745     </p>
4746     <blockquote class="text">
4747     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4748     </p>
4749     </blockquote><p>
4750    
4751     </p>
4752     <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4753     MIDI input device connected to the sampler channel given by
4754     &lt;sampler-channel&gt;.
4755     </p>
4756     <p>Possible Answers:
4757     </p>
4758     <p>
4759     </p>
4760     <blockquote class="text">
4761     <p>"OK" -
4762     </p>
4763     <blockquote class="text">
4764     <p>on success
4765     </p>
4766     </blockquote>
4767    
4768    
4769     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4770     </p>
4771     <blockquote class="text">
4772     <p>if MIDI input port was set, but there are noteworthy
4773     issue(s) related, providing an appropriate warning code and
4774     warning message
4775     </p>
4776     </blockquote>
4777    
4778    
4779     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4780     </p>
4781     <blockquote class="text">
4782     <p>in case it failed, providing an appropriate error code and error message
4783     </p>
4784     </blockquote>
4785    
4786    
4787     </blockquote><p>
4788    
4789     </p>
4790     <p>Examples:
4791     </p>
4792     <p>
4793     </p>
4794     <blockquote class="text">
4795     <p>
4796     </p>
4797     </blockquote><p>
4798    
4799     </p>
4800     <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4801     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4802     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4803     Setting MIDI input channel</h3>
4804    
4805     <p>The front-end can alter the MIDI channel a sampler channel should
4806     listen to by sending the following command:
4807     </p>
4808     <p>
4809     </p>
4810     <blockquote class="text">
4811     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4812     </p>
4813     </blockquote><p>
4814    
4815     </p>
4816     <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4817     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4818     channels.
4819     </p>
4820     <p>Possible Answers:
4821     </p>
4822     <p>
4823     </p>
4824     <blockquote class="text">
4825     <p>"OK" -
4826     </p>
4827     <blockquote class="text">
4828     <p>on success
4829     </p>
4830     </blockquote>
4831    
4832    
4833     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4834     </p>
4835     <blockquote class="text">
4836     <p>if MIDI input channel was set, but there are noteworthy
4837     issue(s) related, providing an appropriate warning code and
4838     warning message
4839     </p>
4840     </blockquote>
4841    
4842    
4843     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4844     </p>
4845     <blockquote class="text">
4846     <p>in case it failed, providing an appropriate error code and error message
4847     </p>
4848     </blockquote>
4849    
4850    
4851     </blockquote><p>
4852    
4853     </p>
4854     <p>Examples:
4855     </p>
4856     <p>
4857     </p>
4858     <blockquote class="text">
4859     <p>
4860     </p>
4861     </blockquote><p>
4862    
4863     </p>
4864     <a name="SET CHANNEL VOLUME"></a><br /><hr />
4865     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4866     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4867     Setting channel volume</h3>
4868    
4869     <p>The front-end can alter the volume of a sampler channel by sending
4870     the following command:
4871     </p>
4872     <p>
4873     </p>
4874     <blockquote class="text">
4875     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4876     </p>
4877     </blockquote><p>
4878    
4879     </p>
4880     <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4881     smaller than 1.0 means attenuation, whereas a value greater than
4882     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4883     channel where this volume factor should be set.
4884     </p>
4885     <p>Possible Answers:
4886     </p>
4887     <p>
4888     </p>
4889     <blockquote class="text">
4890     <p>"OK" -
4891     </p>
4892     <blockquote class="text">
4893     <p>on success
4894     </p>
4895     </blockquote>
4896    
4897    
4898     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4899     </p>
4900     <blockquote class="text">
4901     <p>if channel volume was set, but there are noteworthy
4902     issue(s) related, providing an appropriate warning code and
4903     warning message
4904     </p>
4905     </blockquote>
4906    
4907    
4908     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4909     </p>
4910     <blockquote class="text">
4911     <p>in case it failed, providing an appropriate error code and error message
4912     </p>
4913     </blockquote>
4914    
4915    
4916     </blockquote><p>
4917    
4918     </p>
4919     <p>Examples:
4920     </p>
4921     <p>
4922     </p>
4923     <blockquote class="text">
4924     <p>
4925     </p>
4926     </blockquote><p>
4927    
4928     </p>
4929     <a name="SET CHANNEL MUTE"></a><br /><hr />
4930     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4931     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4932     Muting a sampler channel</h3>
4933    
4934     <p>The front-end can mute/unmute a specific sampler
4935     channel by sending the following command:
4936     </p>
4937     <p>
4938     </p>
4939     <blockquote class="text">
4940     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4941     </p>
4942     </blockquote><p>
4943    
4944     </p>
4945     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4946     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4947     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4948     &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4949     to unmute the channel.
4950     </p>
4951     <p>Possible Answers:
4952     </p>
4953     <p>
4954     </p>
4955     <blockquote class="text">
4956     <p>"OK" -
4957     </p>
4958     <blockquote class="text">
4959     <p>on success
4960     </p>
4961     </blockquote>
4962    
4963    
4964     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4965     </p>
4966     <blockquote class="text">
4967     <p>if the channel was muted/unmuted, but there are noteworthy
4968     issue(s) related, providing an appropriate warning code and
4969     warning message
4970     </p>
4971     </blockquote>
4972    
4973    
4974     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4975     </p>
4976     <blockquote class="text">
4977     <p>in case it failed, providing an appropriate error code and error message
4978     </p>
4979     </blockquote>
4980    
4981    
4982     </blockquote><p>
4983    
4984     </p>
4985     <p>Examples:
4986     </p>
4987     <p>
4988     </p>
4989     <blockquote class="text">
4990     <p>
4991     </p>
4992     </blockquote><p>
4993    
4994     </p>
4995     <a name="SET CHANNEL SOLO"></a><br /><hr />
4996     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4997     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4998     Soloing a sampler channel</h3>
4999    
5000     <p>The front-end can solo/unsolo a specific sampler channel
5001     by sending the following command:
5002     </p>
5003     <p>
5004     </p>
5005     <blockquote class="text">
5006     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5007     </p>
5008     </blockquote><p>
5009    
5010     </p>
5011     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5012     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5013     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
5014     &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5015     to unsolo the channel.
5016     </p>
5017     <p>Possible Answers:
5018     </p>
5019     <p>
5020     </p>
5021     <blockquote class="text">
5022     <p>"OK" -
5023     </p>
5024     <blockquote class="text">
5025     <p>on success
5026     </p>
5027     </blockquote>
5028    
5029    
5030     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5031     </p>
5032     <blockquote class="text">
5033     <p>if the channel was soloed/unsoloed, but there are noteworthy
5034     issue(s) related, providing an appropriate warning code and
5035     warning message
5036     </p>
5037     </blockquote>
5038    
5039    
5040     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5041     </p>
5042     <blockquote class="text">
5043     <p>in case it failed, providing an appropriate error code and error message
5044     </p>
5045     </blockquote>
5046    
5047    
5048     </blockquote><p>
5049    
5050     </p>
5051     <p>Examples:
5052     </p>
5053     <p>
5054     </p>
5055     <blockquote class="text">
5056     <p>
5057     </p>
5058     </blockquote><p>
5059    
5060     </p>
5061     <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5062     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5063     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5064     Assigning a MIDI instrument map to a sampler channel</h3>
5065    
5066     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5067     by sending the following command:
5068     </p>
5069     <p>
5070     </p>
5071     <blockquote class="text">
5072     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5073     </p>
5074     </blockquote><p>
5075    
5076     </p>
5077     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5078     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5079     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
5080     &lt;map&gt; can have the following possibilites:
5081     </p>
5082     <p>
5083     </p>
5084     <blockquote class="text">
5085     <p>"NONE" -
5086     </p>
5087     <blockquote class="text">
5088     <p>This is the default setting. In this case
5089     the sampler channel is not assigned any MIDI
5090     instrument map and thus will ignore all MIDI
5091     program change messages.
5092     </p>
5093     </blockquote>
5094    
5095    
5096     <p>"DEFAULT" -
5097     </p>
5098     <blockquote class="text">
5099     <p>The sampler channel will always use the
5100     default MIDI instrument map to handle MIDI
5101     program change messages.
5102     </p>
5103     </blockquote>
5104    
5105    
5106     <p>numeric ID -
5107     </p>
5108     <blockquote class="text">
5109     <p>You can assign a specific MIDI instrument map
5110     by replacing &lt;map&gt; with the respective numeric
5111     ID of the MIDI instrument map as returned by the
5112     <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
5113     command. Once that map will be deleted, the sampler
5114     channel would fall back to "NONE".
5115     </p>
5116     </blockquote>
5117    
5118    
5119     </blockquote><p>
5120    
5121     </p>
5122     <p>Read chapter <a class='info' href='#MIDI Instrument Mapping'>"MIDI Instrument Mapping"<span> (</span><span class='info'>MIDI Instrument Mapping</span><span>)</span></a>
5123     for details regarding MIDI instrument mapping.
5124     </p>
5125     <p>Possible Answers:
5126     </p>
5127     <p>
5128     </p>
5129     <blockquote class="text">
5130     <p>"OK" -
5131     </p>
5132     <blockquote class="text">
5133     <p>on success
5134     </p>
5135     </blockquote>
5136    
5137    
5138     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5139     </p>
5140     <blockquote class="text">
5141     <p>in case it failed, providing an appropriate error code and error message
5142     </p>
5143     </blockquote>
5144    
5145    
5146     </blockquote><p>
5147    
5148     </p>
5149     <p>Examples:
5150     </p>
5151     <p>
5152     </p>
5153     <blockquote class="text">
5154     <p>
5155     </p>
5156     </blockquote><p>
5157    
5158     </p>
5159     <a name="CREATE FX_SEND"></a><br /><hr />
5160     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5161     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5162     Adding an effect send to a sampler channel</h3>
5163    
5164     <p>The front-end can create an additional effect send on a specific sampler channel
5165     by sending the following command:
5166     </p>
5167     <p>
5168     </p>
5169     <blockquote class="text">
5170     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5171     </p>
5172     </blockquote><p>
5173    
5174     </p>
5175     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5176     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5177     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
5178     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5179     is a number between 0..127 defining the MIDI controller which can alter the
5180     effect send level and &lt;name&gt; is an optional argument defining a name
5181     for the effect send entity. The name does not have to be unique, but MUST be
5182     encapsulated into apostrophes and supports escape sequences as described in chapter
5183     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
5184     </p>
5185     <p>By default, that is as initial routing, the effect send's audio channels
5186     are automatically routed to the last audio channels of the sampler channel's
5187     audio output device, that way you can i.e. first increase the amount of audio
5188     channels on the audio output device for having dedicated effect send output
5189     channels and when "CREATE FX_SEND" is called, those channels will automatically
5190     be picked. You can alter the destination channels however with
5191     <a class='info' href='#SET FX_SEND AUDIO_OUTPUT_CHANNEL'>"SET FX_SEND AUDIO_OUTPUT_CHANNEL"<span> (</span><span class='info'>Altering effect send's audio routing</span><span>)</span></a>.
5192    
5193     </p>
5194     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5195     sends on a sampler channel will decrease runtime performance, because for implementing channel
5196     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5197     the voices and route the audio signal afterwards to the master outputs and effect send
5198     outputs (along with their respective effect send levels). A sampler channel without effect
5199     sends however can mix its voices directly into the audio output devices's audio buffers
5200     and is thus faster.
5201    
5202     </p>
5203     <p>Possible Answers:
5204     </p>
5205     <p>
5206     </p>
5207     <blockquote class="text">
5208     <p>"OK[&lt;fx-send-id&gt;]" -
5209     </p>
5210     <blockquote class="text">
5211     <p>in case a new effect send could be added to the
5212     sampler channel, where &lt;fx-send-id&gt; reflects the
5213     unique ID of the newly created effect send entity
5214     </p>
5215     </blockquote>
5216    
5217    
5218     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5219     </p>
5220     <blockquote class="text">
5221     <p>when a new effect send could not be added, i.e.
5222     due to invalid parameters
5223     </p>
5224     </blockquote>
5225    
5226    
5227     </blockquote><p>
5228    
5229     </p>
5230     <p>Examples:
5231     </p>
5232     <p>
5233     </p>
5234     <blockquote class="text">
5235     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5236     </p>
5237     <p>S: "OK[0]"
5238     </p>
5239     </blockquote><p>
5240    
5241     </p>
5242     <p>
5243     </p>
5244     <blockquote class="text">
5245     <p>C: "CREATE FX_SEND 0 93"
5246     </p>
5247     <p>S: "OK[1]"
5248     </p>
5249     </blockquote><p>
5250    
5251     </p>
5252     <a name="DESTROY FX_SEND"></a><br /><hr />
5253     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5254     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5255     Removing an effect send from a sampler channel</h3>
5256    
5257     <p>The front-end can remove an existing effect send on a specific sampler channel
5258     by sending the following command:
5259     </p>
5260     <p>
5261     </p>
5262     <blockquote class="text">
5263     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5264     </p>
5265     </blockquote><p>
5266    
5267     </p>
5268     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5269     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5270     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
5271     sampler channel from which the effect send should be removed from and
5272     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5273     <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5274     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5275     </p>
5276     <p>Possible Answers:
5277     </p>
5278     <p>
5279     </p>
5280     <blockquote class="text">
5281     <p>"OK" -
5282     </p>
5283     <blockquote class="text">
5284     <p>on success
5285     </p>
5286     </blockquote>
5287    
5288    
5289     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5290     </p>
5291     <blockquote class="text">
5292     <p>in case it failed, providing an appropriate error code and
5293     error message
5294     </p>
5295     </blockquote>
5296    
5297    
5298     </blockquote><p>
5299    
5300     </p>
5301     <p>Example:
5302     </p>
5303     <p>
5304     </p>
5305     <blockquote class="text">
5306     <p>C: "DESTROY FX_SEND 0 0"
5307     </p>
5308     <p>S: "OK"
5309     </p>
5310     </blockquote><p>
5311    
5312     </p>
5313     <a name="GET FX_SENDS"></a><br /><hr />
5314     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5315     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5316     Getting amount of effect sends on a sampler channel</h3>
5317    
5318     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5319     by sending the following command:
5320     </p>
5321     <p>
5322     </p>
5323     <blockquote class="text">
5324     <p>GET FX_SENDS &lt;sampler-channel&gt;
5325     </p>
5326     </blockquote><p>
5327    
5328     </p>
5329     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5330     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5331     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5332     </p>
5333     <p>Possible Answers:
5334     </p>
5335     <p>
5336     </p>
5337     <blockquote class="text">
5338     <p>The sampler will answer by returning the number of effect
5339     sends on the given sampler channel.
5340     </p>
5341     </blockquote><p>
5342    
5343     </p>
5344     <p>Example:
5345     </p>
5346     <p>
5347     </p>
5348     <blockquote class="text">
5349     <p>C: "GET FX_SENDS 0"
5350     </p>
5351     <p>S: "2"
5352     </p>
5353     </blockquote><p>
5354    
5355     </p>
5356     <a name="LIST FX_SENDS"></a><br /><hr />
5357     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5358     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5359     Listing all effect sends on a sampler channel</h3>
5360    
5361     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5362     by sending the following command:
5363     </p>
5364     <p>
5365     </p>
5366     <blockquote class="text">
5367     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5368     </p>
5369     </blockquote><p>
5370    
5371     </p>
5372     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5373     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5374     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5375     </p>
5376     <p>Possible Answers:
5377     </p>
5378     <p>
5379     </p>
5380     <blockquote class="text">
5381     <p>The sampler will answer by returning a comma separated list
5382     with all effect sends' numerical IDs on the given sampler
5383     channel.
5384     </p>
5385     </blockquote><p>
5386    
5387     </p>
5388     <p>Examples:
5389     </p>
5390     <p>
5391     </p>
5392     <blockquote class="text">
5393     <p>C: "LIST FX_SENDS 0"
5394     </p>
5395     <p>S: "0,1"
5396     </p>
5397     </blockquote><p>
5398    
5399     </p>
5400     <p>
5401     </p>
5402     <blockquote class="text">
5403     <p>C: "LIST FX_SENDS 1"
5404     </p>
5405     <p>S: ""
5406     </p>
5407     </blockquote><p>
5408    
5409     </p>
5410     <a name="GET FX_SEND INFO"></a><br /><hr />
5411     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5412     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5413     Getting effect send information</h3>
5414    
5415     <p>The front-end can ask for the current settings of an effect send entity
5416     by sending the following command:
5417     </p>
5418     <p>
5419     </p>
5420     <blockquote class="text">
5421     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5422     </p>
5423     </blockquote><p>
5424    
5425     </p>
5426     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5427     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5428     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
5429     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5430     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5431     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5432    
5433     </p>
5434     <p>Possible Answers:
5435     </p>
5436     <p>
5437     </p>
5438     <blockquote class="text">
5439     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5440     Each answer line begins with the settings category name
5441     followed by a colon and then a space character &lt;SP&gt; and finally
5442     the info character string to that setting category. At the
5443     moment the following categories are defined:
5444     </p>
5445     <p>
5446     </p>
5447     <blockquote class="text">
5448     <p>NAME -
5449     </p>
5450     <blockquote class="text">
5451     <p>name of the effect send entity
5452     (note that this character string may contain
5453     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5454     </p>
5455     </blockquote>
5456    
5457    
5458     <p>MIDI_CONTROLLER -
5459     </p>
5460     <blockquote class="text">
5461     <p>a value between 0 and 127 reflecting the MIDI controller
5462     which is able to modify the effect send's send level
5463     </p>
5464     </blockquote>
5465    
5466    
5467     <p>LEVEL -
5468     </p>
5469     <blockquote class="text">
5470     <p>optionally dotted number reflecting the effect send's
5471     current send level (where a value &lt; 1.0 means attenuation
5472     and a value > 1.0 means amplification)
5473     </p>
5474     </blockquote>
5475    
5476    
5477     <p>AUDIO_OUTPUT_ROUTING -
5478     </p>
5479     <blockquote class="text">
5480     <p>comma separated list which reflects to which audio
5481     channel of the selected audio output device each
5482     effect send output channel is routed to, e.g. "0,3" would
5483     mean the effect send's output channel 0 is routed to channel
5484     0 of the audio output device and the effect send's output
5485     channel 1 is routed to the channel 3 of the audio
5486     output device (see
5487     <a class='info' href='#SET FX_SEND AUDIO_OUTPUT_CHANNEL'>"SET FX_SEND AUDIO_OUTPUT_CHANNEL"<span> (</span><span class='info'>Altering effect send's audio routing</span><span>)</span></a>
5488     for details), if an internal send
5489     effect is assigned to the effect
5490     send, then this setting defines the
5491     audio channel routing to that
5492     effect instance respectively
5493     </p>
5494     </blockquote>
5495    
5496    
5497     <p>EFFECT -
5498     </p>
5499     <blockquote class="text">
5500     <p>destination send effect chain ID
5501     and destination effect chain
5502     position, separated by comma in the
5503     form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5504     or "NONE" if there is no send effect
5505     assigned to the effect send
5506     </p>
5507     </blockquote>
5508    
5509    
5510     </blockquote>
5511    
5512    
5513     </blockquote><p>
5514    
5515     </p>
5516     <p>The mentioned fields above don't have to be in particular order.
5517     </p>
5518     <p>Example:
5519     </p>
5520     <p>
5521     </p>
5522     <blockquote class="text">
5523     <p>C: "GET FX_SEND INFO 0 0"
5524     </p>
5525     <p>S: "NAME: Reverb Send"
5526     </p>
5527     <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5528     </p>
5529     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5530     </p>
5531     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5532     </p>
5533     <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5534     </p>
5535     <p>&nbsp;&nbsp;&nbsp;"."
5536     </p>
5537     </blockquote><p>
5538    
5539     </p>
5540     <p>
5541     </p>
5542     <blockquote class="text">
5543     <p>C: "GET FX_SEND INFO 0 1"
5544     </p>
5545     <p>S: "NAME: Delay Send (Internal)"
5546     </p>
5547     <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5548     </p>
5549     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5550     </p>
5551     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5552     </p>
5553     <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5554     </p>
5555     <p>&nbsp;&nbsp;&nbsp;"."
5556     </p>
5557     </blockquote><p>
5558    
5559     </p>
5560     <a name="SET FX_SEND NAME"></a><br /><hr />
5561     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5562     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5563     Changing effect send's name</h3>
5564    
5565     <p>The front-end can alter the current name of an effect
5566     send entity by sending the following command:
5567     </p>
5568     <p>
5569     </p>
5570     <blockquote class="text">
5571     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5572     </p>
5573     </blockquote><p>
5574    
5575     </p>
5576     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5577     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5578     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5579     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5580     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5581     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5582     &lt;name&gt; is the new name of the effect send entity, which
5583     does not have to be unique (name MUST be encapsulated into apostrophes
5584     and supports escape sequences as described in chapter
5585     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
5586    
5587     </p>
5588     <p>Possible Answers:
5589     </p>
5590     <p>
5591     </p>
5592     <blockquote class="text">
5593     <p>"OK" -
5594     </p>
5595     <blockquote class="text">
5596     <p>on success
5597     </p>
5598     </blockquote>
5599    
5600    
5601     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5602     </p>
5603     <blockquote class="text">
5604     <p>in case it failed, providing an appropriate error code and error message
5605     </p>
5606     </blockquote>
5607    
5608    
5609     </blockquote><p>
5610    
5611     </p>
5612     <p>Example:
5613     </p>
5614     <p>
5615     </p>
5616     <blockquote class="text">
5617     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5618     </p>
5619     <p>S: "OK"
5620     </p>
5621     </blockquote><p>
5622    
5623     </p>
5624     <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5625     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5626     <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5627     Altering effect send's audio routing</h3>
5628    
5629     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5630     sampler channel by sending the following command:
5631     </p>
5632     <p>
5633     </p>
5634     <blockquote class="text">
5635     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5636     </p>
5637     </blockquote><p>
5638    
5639     </p>
5640     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5641     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5642     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5643     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5644     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5645     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command,
5646     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5647     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5648     the audio channel of the selected audio output device where &lt;audio-src&gt;
5649     should be routed to. If an internal send effect is assigned
5650     to the effect send, then this setting defines the audio
5651     channel routing to that effect instance respectively.
5652     </p>
5653     <p>Note that effect sends can only route audio to the same audio output
5654     device as assigned to the effect send's sampler channel. Also note that an
5655     effect send entity does always have exactly as much audio channels as its
5656     sampler channel. So if the sampler channel is stereo, the effect send does
5657     have two audio channels as well. Also keep in mind that the amount of audio
5658     channels on a sampler channel might be dependant not only to the deployed
5659     sampler engine on the sampler channel, but also dependant to the instrument
5660     currently loaded. However you can (effectively) turn an i.e. stereo effect
5661     send into a mono one by simply altering its audio routing appropriately.
5662     </p>
5663     <p>Possible Answers:
5664     </p>
5665     <p>
5666     </p>
5667     <blockquote class="text">
5668     <p>"OK" -
5669     </p>
5670     <blockquote class="text">
5671     <p>on success
5672     </p>
5673     </blockquote>
5674    
5675    
5676     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5677     </p>
5678     <blockquote class="text">
5679     <p>if audio output channel was set, but there are noteworthy
5680     issue(s) related, providing an appropriate warning code and
5681     warning message
5682     </p>
5683     </blockquote>
5684    
5685    
5686     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5687     </p>
5688     <blockquote class="text">
5689     <p>in case it failed, providing an appropriate error code and error message
5690     </p>
5691     </blockquote>
5692    
5693    
5694     </blockquote><p>
5695    
5696     </p>
5697     <p>Example:
5698     </p>
5699     <p>
5700     </p>
5701     <blockquote class="text">
5702     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5703     </p>
5704     <p>S: "OK"
5705     </p>
5706     </blockquote><p>
5707    
5708     </p>
5709     <a name="SET FX_SEND EFFECT"></a><br /><hr />
5710     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5711     <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5712     Assigning destination effect to an effect send</h3>
5713    
5714     <p>The front-end can (re-)assign a destination effect to an
5715     effect send by sending the following command:
5716     </p>
5717     <p>
5718     </p>
5719     <blockquote class="text">
5720     <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
5721     </p>
5722     </blockquote><p>
5723    
5724     </p>
5725     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5726     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5727     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5728     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5729     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5730     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command,
5731     &lt;effect-chain&gt; by the numerical ID of the destination
5732     effect chain as returned by the
5733     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
5734     or
5735     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
5736     command and &lt;chain-pos&gt; reflects the exact effect
5737     chain position in the effect chain which hosts the actual
5738     destination effect.
5739     </p>
5740     <p>Possible Answers:
5741     </p>
5742     <p>
5743     </p>
5744     <blockquote class="text">
5745     <p>"OK" -
5746     </p>
5747     <blockquote class="text">
5748     <p>on success
5749     </p>
5750     </blockquote>
5751    
5752    
5753     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5754     </p>
5755     <blockquote class="text">
5756     <p>in case it failed, providing an appropriate error code and error message
5757     </p>
5758     </blockquote>
5759    
5760    
5761     </blockquote><p>
5762    
5763     </p>
5764     <p>Example:
5765     </p>
5766     <p>
5767     </p>
5768     <blockquote class="text">
5769     <p>C: "SET FX_SEND EFFECT 0 0 2 5"
5770     </p>
5771     <p>S: "OK"
5772     </p>
5773     </blockquote><p>
5774    
5775     </p>
5776     <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
5777     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5778     <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5779     Removing destination effect from an effect send</h3>
5780    
5781     <p>The front-end can (re-)assign a destination effect to an
5782     effect send by sending the following command:
5783     </p>
5784     <p>
5785     </p>
5786     <blockquote class="text">
5787     <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
5788     </p>
5789     </blockquote><p>
5790    
5791     </p>
5792     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5793     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5794     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5795     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5796     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5797     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5798     </p>
5799     <p>After the destination effect has been removed from the
5800     effect send, the audio signal of the effect send will be
5801     routed directly to the audio output device, according to the
5802     audio channel routing setting of the effect send.
5803    
5804     </p>
5805     <p>Possible Answers:
5806     </p>
5807     <p>
5808     </p>
5809     <blockquote class="text">
5810     <p>"OK" -
5811     </p>
5812     <blockquote class="text">
5813     <p>on success
5814     </p>
5815     </blockquote>
5816    
5817    
5818     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5819     </p>
5820     <blockquote class="text">
5821     <p>in case it failed, providing an appropriate error code and error message
5822     </p>
5823     </blockquote>
5824    
5825    
5826     </blockquote><p>
5827    
5828     </p>
5829     <p>Example:
5830     </p>
5831     <p>
5832     </p>
5833     <blockquote class="text">
5834     <p>C: "REMOVE FX_SEND EFFECT 0 0"
5835     </p>
5836     <p>S: "OK"
5837     </p>
5838     </blockquote><p>
5839    
5840     </p>
5841     <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5842     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5843     <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5844     Altering effect send's MIDI controller</h3>
5845    
5846     <p>The front-end can alter the MIDI controller of an effect
5847     send entity by sending the following command:
5848     </p>
5849     <p>
5850     </p>
5851     <blockquote class="text">
5852     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5853     </p>
5854     </blockquote><p>
5855    
5856     </p>
5857     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5858     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5859     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5860     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5861     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5862     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5863     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5864     able to modify the effect send's send level.
5865     </p>
5866     <p>Possible Answers:
5867     </p>
5868     <p>
5869     </p>
5870     <blockquote class="text">
5871     <p>"OK" -
5872     </p>
5873     <blockquote class="text">
5874     <p>on success
5875     </p>
5876     </blockquote>
5877    
5878    
5879     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5880     </p>
5881     <blockquote class="text">
5882     <p>if MIDI controller was set, but there are noteworthy
5883     issue(s) related, providing an appropriate warning code and
5884     warning message
5885     </p>
5886     </blockquote>
5887    
5888    
5889     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5890     </p>
5891     <blockquote class="text">
5892     <p>in case it failed, providing an appropriate error code and error message
5893     </p>
5894     </blockquote>
5895    
5896    
5897     </blockquote><p>
5898    
5899     </p>
5900     <p>Example:
5901     </p>
5902     <p>
5903     </p>
5904     <blockquote class="text">
5905     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5906     </p>
5907     <p>S: "OK"
5908     </p>
5909     </blockquote><p>
5910    
5911     </p>
5912     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5913     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5914     <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5915     Altering effect send's send level</h3>
5916    
5917     <p>The front-end can alter the current send level of an effect
5918     send entity by sending the following command:
5919     </p>
5920     <p>
5921     </p>
5922     <blockquote class="text">
5923     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5924     </p>
5925     </blockquote><p>
5926    
5927     </p>
5928     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5929     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5930     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5931     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5932     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5933     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5934     &lt;volume&gt; is an optionally dotted positive number (a value
5935     smaller than 1.0 means attenuation, whereas a value greater than
5936     1.0 means amplification) reflecting the new send level.
5937     </p>
5938     <p>Possible Answers:
5939     </p>
5940     <p>
5941     </p>
5942     <blockquote class="text">
5943     <p>"OK" -
5944     </p>
5945     <blockquote class="text">
5946     <p>on success
5947     </p>
5948     </blockquote>
5949    
5950    
5951     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5952     </p>
5953     <blockquote class="text">
5954     <p>if new send level was set, but there are noteworthy
5955     issue(s) related, providing an appropriate warning code and
5956     warning message
5957     </p>
5958     </blockquote>
5959    
5960    
5961     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5962     </p>
5963     <blockquote class="text">
5964     <p>in case it failed, providing an appropriate error code and error message
5965     </p>
5966     </blockquote>
5967    
5968    
5969     </blockquote><p>
5970    
5971     </p>
5972     <p>Example:
5973     </p>
5974     <p>
5975     </p>
5976     <blockquote class="text">
5977     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5978     </p>
5979     <p>S: "OK"
5980     </p>
5981     </blockquote><p>
5982    
5983     </p>
5984     <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5985     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5986     <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
5987     Sending MIDI messages to sampler channel</h3>
5988    
5989     <p>The front-end can send MIDI events to a specific sampler channel
5990     by sending the following command:
5991     </p>
5992     <p>
5993     </p>
5994     <blockquote class="text">
5995     <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
5996     </p>
5997     </blockquote><p>
5998    
5999     </p>
6000     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6001     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
6002     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
6003     &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6004     specifies the MIDI message type. Currently, the following MIDI messages are supported:
6005     </p>
6006     <p>
6007     </p>
6008     <blockquote class="text">
6009     <p>"NOTE_ON" -
6010     </p>
6011     <blockquote class="text">
6012     <p>For turning on MIDI notes, where &lt;arg1&gt;
6013     specifies the key number and &lt;arg2&gt; the velocity
6014     as described in the MIDI specification.
6015     </p>
6016     </blockquote>
6017    
6018    
6019     <p>"NOTE_OFF" -
6020     </p>
6021     <blockquote class="text">
6022     <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6023     specifies the key number and &lt;arg2&gt; the velocity
6024     as described in the MIDI specification.
6025     </p>
6026     </blockquote>
6027    
6028    
6029     <p>"CC" -
6030     </p>
6031     <blockquote class="text">
6032     <p>For changing a MIDI controller, where &lt;arg1&gt;
6033     specifies the controller number and &lt;arg2&gt; the
6034     new value of the controller as described in the Control
6035     Change section of the MIDI specification.
6036     </p>
6037     </blockquote>
6038    
6039    
6040     </blockquote><p>
6041    
6042     </p>
6043     <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6044     and no realtime guarantee whatsoever will be made!
6045     </p>
6046     <p>Possible Answers:
6047     </p>
6048     <p>
6049     </p>
6050     <blockquote class="text">
6051     <p>"OK" -
6052     </p>
6053     <blockquote class="text">
6054     <p>on success
6055     </p>
6056     </blockquote>
6057    
6058    
6059     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6060     </p>
6061     <blockquote class="text">
6062     <p>in case it failed, providing an appropriate error code and error message
6063     </p>
6064     </blockquote>
6065    
6066    
6067     </blockquote><p>
6068    
6069     </p>
6070     <p>Example:
6071     </p>
6072     <p>
6073     </p>
6074     <blockquote class="text">
6075     <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6076     </p>
6077     <p>S: "OK"
6078     </p>
6079     </blockquote><p>
6080    
6081     </p>
6082     <a name="RESET CHANNEL"></a><br /><hr />
6083     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6084     <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6085     Resetting a sampler channel</h3>
6086    
6087     <p>The front-end can reset a particular sampler channel by sending the following command:
6088     </p>
6089     <p>
6090     </p>
6091     <blockquote class="text">
6092     <p>RESET CHANNEL &lt;sampler-channel&gt;
6093     </p>
6094     </blockquote><p>
6095    
6096     </p>
6097     <p>
6098     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6099     This will cause the engine on that sampler channel, its voices and
6100     eventually disk streams and all control and status variables to be
6101     reset.
6102     </p>
6103     <p>Possible Answers:
6104     </p>
6105     <p>
6106     </p>
6107     <blockquote class="text">
6108     <p>"OK" -
6109     </p>
6110     <blockquote class="text">
6111     <p>on success
6112     </p>
6113     </blockquote>
6114    
6115    
6116     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6117     </p>
6118     <blockquote class="text">
6119     <p>if channel was reset, but there are noteworthy issue(s)
6120     related, providing an appropriate warning code and warning
6121     message
6122     </p>
6123     </blockquote>
6124    
6125    
6126     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6127     </p>
6128     <blockquote class="text">
6129     <p>in case it failed, providing an appropriate error code and
6130     error message
6131     </p>
6132     </blockquote>
6133    
6134    
6135     </blockquote><p>
6136    
6137     </p>
6138     <p>Examples:
6139     </p>
6140     <p>
6141     </p>
6142     <blockquote class="text">
6143     <p>
6144     </p>
6145     </blockquote><p>
6146    
6147     </p>
6148     <a name="anchor12"></a><br /><hr />
6149     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6150     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6151     Controlling connection</h3>
6152    
6153     <p>The following commands are used to control the connection to LinuxSampler.
6154     </p>
6155     <a name="SUBSCRIBE"></a><br /><hr />
6156     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6157     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6158     Register front-end for receiving event messages</h3>
6159    
6160     <p>The front-end can register itself to the LinuxSampler application to
6161     be informed about noteworthy events by sending this command:
6162     </p>
6163     <p>
6164     </p>
6165     <blockquote class="text">
6166     <p>SUBSCRIBE &lt;event-id&gt;
6167     </p>
6168     </blockquote><p>
6169    
6170     </p>
6171     <p>where &lt;event-id&gt; will be replaced by the respective event that
6172     client wants to subscribe to.
6173     </p>
6174     <p>Possible Answers:
6175     </p>
6176     <p>
6177     </p>
6178     <blockquote class="text">
6179     <p>"OK" -
6180     </p>
6181     <blockquote class="text">
6182     <p>on success
6183     </p>
6184     </blockquote>
6185    
6186    
6187     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6188     </p>
6189     <blockquote class="text">
6190     <p>if registration succeeded, but there are noteworthy
6191     issue(s) related, providing an appropriate warning code and
6192     warning message
6193     </p>
6194     </blockquote>
6195    
6196    
6197     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6198     </p>
6199     <blockquote class="text">
6200     <p>in case it failed, providing an appropriate error code and
6201     error message
6202     </p>
6203     </blockquote>
6204    
6205    
6206     </blockquote><p>
6207    
6208     </p>
6209     <p>Examples:
6210     </p>
6211     <p>
6212     </p>
6213     <blockquote class="text">
6214     <p>
6215     </p>
6216     </blockquote><p>
6217    
6218     </p>
6219     <a name="UNSUBSCRIBE"></a><br /><hr />
6220     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6221     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6222     Unregister front-end for not receiving event messages</h3>
6223    
6224     <p>The front-end can unregister itself if it doesn't want to receive event
6225     messages anymore by sending the following command:
6226     </p>
6227     <p>
6228     </p>
6229     <blockquote class="text">
6230     <p>UNSUBSCRIBE &lt;event-id&gt;
6231     </p>
6232     </blockquote><p>
6233    
6234     </p>
6235     <p>Where &lt;event-id&gt; will be replaced by the respective event that
6236     client doesn't want to receive anymore.
6237     </p>
6238     <p>Possible Answers:
6239     </p>
6240     <p>
6241     </p>
6242     <blockquote class="text">
6243     <p>"OK" -
6244     </p>
6245     <blockquote class="text">
6246     <p>on success
6247     </p>
6248     </blockquote>
6249    
6250    
6251     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6252     </p>
6253     <blockquote class="text">
6254     <p>if unregistration succeeded, but there are noteworthy
6255     issue(s) related, providing an appropriate warning code and
6256     warning message
6257     </p>
6258     </blockquote>
6259    
6260    
6261     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6262     </p>
6263     <blockquote class="text">
6264     <p>in case it failed, providing an appropriate error code and
6265     error message
6266     </p>
6267     </blockquote>
6268    
6269    
6270     </blockquote><p>
6271    
6272     </p>
6273     <p>Examples:
6274     </p>
6275     <p>
6276     </p>
6277     <blockquote class="text">
6278     <p>
6279     </p>
6280     </blockquote><p>
6281    
6282     </p>
6283     <a name="SET ECHO"></a><br /><hr />
6284     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6285     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6286     Enable or disable echo of commands</h3>
6287    
6288     <p>To enable or disable back sending of commands to the client the following command can be used:
6289     </p>
6290     <p>
6291     </p>
6292     <blockquote class="text">
6293     <p>SET ECHO &lt;value&gt;
6294     </p>
6295     </blockquote><p>
6296    
6297     </p>
6298     <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6299     or "0" to disable echo mode. When echo mode is enabled, all
6300     commands send to LinuxSampler will be immediately send back and
6301     after this echo the actual response to the command will be
6302     returned. Echo mode will only be altered for the client connection
6303     that issued the "SET ECHO" command, not globally for all client
6304     connections.
6305     </p>
6306     <p>Possible Answers:
6307     </p>
6308     <p>
6309     </p>
6310     <blockquote class="text">
6311     <p>"OK" -
6312     </p>
6313     <blockquote class="text">
6314     <p>usually
6315     </p>
6316     </blockquote>
6317    
6318    
6319     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6320     </p>
6321     <blockquote class="text">
6322     <p>on syntax error, e.g. non boolean value
6323     </p>
6324     </blockquote>
6325    
6326    
6327     </blockquote><p>
6328    
6329     </p>
6330     <p>Examples:
6331     </p>
6332     <p>
6333     </p>
6334     <blockquote class="text">
6335     <p>
6336     </p>
6337     </blockquote><p>
6338    
6339     </p>
6340     <a name="QUIT"></a><br /><hr />
6341     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6342     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6343     Close client connection</h3>
6344    
6345     <p>The client can close its network connection to LinuxSampler by sending the following command:
6346     </p>
6347     <p>
6348     </p>
6349     <blockquote class="text">
6350     <p>QUIT
6351     </p>
6352     </blockquote><p>
6353    
6354     </p>
6355     <p>This is probably more interesting for manual telnet connections to
6356     LinuxSampler than really useful for a front-end implementation.
6357     </p>
6358     <a name="anchor13"></a><br /><hr />
6359     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6360     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6361     Global commands</h3>
6362    
6363     <p>The following commands have global impact on the sampler.
6364     </p>
6365     <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6366     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6367     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6368     Current number of active voices</h3>
6369    
6370     <p>The front-end can ask for the current number of active voices on
6371     the sampler by sending the following command:
6372     </p>
6373     <p>
6374     </p>
6375     <blockquote class="text">
6376     <p>GET TOTAL_VOICE_COUNT
6377     </p>
6378     </blockquote><p>
6379    
6380     </p>
6381     <p>Possible Answers:
6382     </p>
6383     <p>
6384     </p>
6385     <blockquote class="text">
6386     <p>LinuxSampler will answer by returning the number of all active
6387     voices on the sampler.
6388     </p>
6389     </blockquote><p>
6390    
6391     </p>
6392     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6393     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6394     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6395     Maximum amount of active voices</h3>
6396    
6397     <p>The front-end can ask for the maximum number of active voices
6398     by sending the following command:
6399     </p>
6400     <p>
6401     </p>
6402     <blockquote class="text">
6403     <p>GET TOTAL_VOICE_COUNT_MAX
6404     </p>
6405     </blockquote><p>
6406    
6407     </p>
6408     <p>Possible Answers:
6409     </p>
6410     <p>
6411     </p>
6412     <blockquote class="text">
6413     <p>LinuxSampler will answer by returning the maximum number
6414     of active voices.
6415     </p>
6416     </blockquote><p>
6417    
6418     </p>
6419     <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6420     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6421     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6422     Current number of active disk streams</h3>
6423    
6424     <p>The front-end can ask for the current number of active disk streams on
6425     the sampler by sending the following command:
6426     </p>
6427     <p>
6428     </p>
6429     <blockquote class="text">
6430     <p>GET TOTAL_STREAM_COUNT
6431     </p>
6432     </blockquote><p>
6433    
6434     </p>
6435     <p>Possible Answers:
6436     </p>
6437     <p>
6438     </p>
6439     <blockquote class="text">
6440     <p>LinuxSampler will answer by returning the number of all active
6441     disk streams on the sampler.
6442     </p>
6443     </blockquote><p>
6444    
6445     </p>
6446     <a name="RESET"></a><br /><hr />
6447     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6448     <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6449     Reset sampler</h3>
6450    
6451     <p>The front-end can reset the whole sampler by sending the following command:
6452     </p>
6453     <p>
6454     </p>
6455     <blockquote class="text">
6456     <p>RESET
6457     </p>
6458     </blockquote><p>
6459    
6460     </p>
6461     <p>Possible Answers:
6462     </p>
6463     <p>
6464     </p>
6465     <blockquote class="text">
6466     <p>"OK" -
6467     </p>
6468     <blockquote class="text">
6469     <p>always
6470     </p>
6471     </blockquote>
6472    
6473    
6474     </blockquote><p>
6475    
6476     </p>
6477     <p>Examples:
6478     </p>
6479     <p>
6480     </p>
6481     <blockquote class="text">
6482     <p>
6483     </p>
6484     </blockquote><p>
6485    
6486     </p>
6487     <a name="GET SERVER INFO"></a><br /><hr />
6488     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6489     <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6490     General sampler informations</h3>
6491    
6492     <p>The client can ask for general informations about the LinuxSampler
6493     instance by sending the following command:
6494     </p>
6495     <p>
6496     </p>
6497     <blockquote class="text">
6498     <p>GET SERVER INFO
6499     </p>
6500     </blockquote><p>
6501    
6502     </p>
6503     <p>Possible Answers:
6504     </p>
6505     <p>
6506     </p>
6507     <blockquote class="text">
6508     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6509     Each answer line begins with the information category name
6510     followed by a colon and then a space character &lt;SP&gt; and finally
6511     the info character string to that information category. At the
6512     moment the following categories are defined:
6513    
6514     </p>
6515     <p>
6516     </p>
6517     <blockquote class="text">
6518     <p>DESCRIPTION -
6519     </p>
6520     <blockquote class="text">
6521     <p>arbitrary textual description about the sampler
6522     (note that the character string may contain
6523     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6524     </p>
6525     </blockquote>
6526    
6527    
6528     <p>VERSION -
6529     </p>
6530     <blockquote class="text">
6531     <p>version of the sampler
6532     </p>
6533     </blockquote>
6534    
6535    
6536     <p>PROTOCOL_VERSION -
6537     </p>
6538     <blockquote class="text">
6539     <p>version of the LSCP specification the sampler
6540     complies with (see <a class='info' href='#LSCP versioning'>Section&nbsp;2<span> (</span><span class='info'>Versioning of this specification</span><span>)</span></a> for details)
6541     </p>
6542     </blockquote>
6543    
6544    
6545     <p>INSTRUMENTS_DB_SUPPORT -
6546     </p>
6547     <blockquote class="text">
6548     <p>either yes or no, specifies whether the
6549     sampler is build with instruments database support.
6550     </p>
6551     </blockquote>
6552    
6553    
6554     </blockquote>
6555    
6556    
6557     </blockquote><p>
6558    
6559     </p>
6560     <p>The mentioned fields above don't have to be in particular order.
6561     Other fields might be added in future.
6562     </p>
6563     <a name="GET VOLUME"></a><br /><hr />
6564     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6565     <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6566     Getting global volume attenuation</h3>
6567    
6568     <p>The client can ask for the current global sampler-wide volume
6569     attenuation by sending the following command:
6570     </p>
6571     <p>
6572     </p>
6573     <blockquote class="text">
6574     <p>GET VOLUME
6575     </p>
6576     </blockquote><p>
6577    
6578     </p>
6579     <p>Possible Answers:
6580     </p>
6581     <p>
6582     </p>
6583     <blockquote class="text">
6584     <p>The sampler will always answer by returning the optional
6585     dotted floating point coefficient, reflecting the current
6586     global volume attenuation.
6587    
6588     </p>
6589     </blockquote><p>
6590    
6591     </p>
6592     <p>Note: it is up to the respective sampler engine whether to obey
6593     that global volume parameter or not, but in general all engines SHOULD
6594     use this parameter.
6595     </p>
6596     <a name="SET VOLUME"></a><br /><hr />
6597     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6598     <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6599     Setting global volume attenuation</h3>
6600    
6601     <p>The client can alter the current global sampler-wide volume
6602     attenuation by sending the following command:
6603     </p>
6604     <p>
6605     </p>
6606     <blockquote class="text">
6607     <p>SET VOLUME &lt;volume&gt;
6608     </p>
6609     </blockquote><p>
6610    
6611     </p>
6612     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6613     floating point value, reflecting the new global volume parameter.
6614     This value might usually be in the range between 0.0 and 1.0, that
6615     is for attenuating the overall volume.
6616     </p>
6617     <p>Possible Answers:
6618     </p>
6619     <p>
6620     </p>
6621     <blockquote class="text">
6622     <p>"OK" -
6623     </p>
6624     <blockquote class="text">
6625     <p>on success
6626     </p>
6627     </blockquote>
6628    
6629    
6630     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6631     </p>
6632     <blockquote class="text">
6633     <p>if the global volume was set, but there are noteworthy
6634     issue(s) related, providing an appropriate warning code and
6635     warning message
6636     </p>
6637     </blockquote>
6638    
6639    
6640     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6641     </p>
6642     <blockquote class="text">
6643     <p>in case it failed, providing an appropriate error code and error message
6644     </p>
6645     </blockquote>
6646    
6647    
6648     </blockquote><p>
6649    
6650     </p>
6651     <a name="GET VOICES"></a><br /><hr />
6652     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6653     <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
6654     Getting global voice limit</h3>
6655    
6656     <p>The client can ask for the current global sampler-wide limit
6657     for maximum voices by sending the following command:
6658     </p>
6659     <p>
6660     </p>
6661     <blockquote class="text">
6662     <p>GET VOICES
6663     </p>
6664     </blockquote><p>
6665    
6666     </p>
6667     <p>Possible Answers:
6668     </p>
6669     <p>
6670     </p>
6671     <blockquote class="text">
6672     <p>LinuxSampler will answer by returning the number for
6673     the current limit of maximum voices.
6674     </p>
6675     </blockquote><p>
6676    
6677     </p>
6678     <p>The voice limit setting defines how many voices should maximum
6679     be processed by the sampler at the same time. If the user
6680     triggers new notes which would exceed that voice limit, the
6681     sampler engine will react by stealing old voices for those
6682     newly triggered notes. Note that the amount of voices triggered
6683     by a new note can be larger than one and is dependent to the
6684     respective instrument and probably further criterias.
6685     </p>
6686     <a name="SET VOICES"></a><br /><hr />
6687     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6688     <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
6689     Setting global voice limit</h3>
6690    
6691     <p>The client can alter the current global sampler-wide limit
6692     for maximum voices by sending the following command:
6693     </p>
6694     <p>
6695     </p>
6696     <blockquote class="text">
6697     <p>SET VOICES &lt;max-voices&gt;
6698     </p>
6699     </blockquote><p>
6700    
6701     </p>
6702     <p>Where &lt;max-voices&gt; should be replaced by the integer
6703     value, reflecting the new global amount limit of maximum voices.
6704     This value has to be larger than 0.
6705     </p>
6706     <p>Possible Answers:
6707     </p>
6708     <p>
6709     </p>
6710     <blockquote class="text">
6711     <p>"OK" -
6712     </p>
6713     <blockquote class="text">
6714     <p>on success
6715     </p>
6716     </blockquote>
6717    
6718    
6719     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6720     </p>
6721     <blockquote class="text">
6722     <p>if the voice limit was set, but there are noteworthy
6723     issue(s) related, providing an appropriate warning code and
6724     warning message
6725     </p>
6726     </blockquote>
6727    
6728    
6729     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6730     </p>
6731     <blockquote class="text">
6732     <p>in case it failed, providing an appropriate error code and error message
6733     </p>
6734     </blockquote>
6735    
6736    
6737     </blockquote><p>
6738    
6739     </p>
6740     <p>Note: the given value will be passed to all sampler engine instances.
6741     The total amount of maximum voices on the running system might thus
6742     be as big as the given value multiplied by the current amount of engine
6743     instances.
6744     </p>
6745     <p>Caution: when adjusting the voice limit, you SHOULD also
6746     adjust the disk stream limit respectively and vice versa.
6747     </p>
6748     <a name="GET STREAMS"></a><br /><hr />
6749     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6750     <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
6751     Getting global disk stream limit</h3>
6752    
6753     <p>The client can ask for the current global sampler-wide limit
6754     for maximum disk streams by sending the following command:
6755     </p>
6756     <p>
6757     </p>
6758     <blockquote class="text">
6759     <p>GET STREAMS
6760     </p>
6761     </blockquote><p>
6762    
6763     </p>
6764     <p>Possible Answers:
6765     </p>
6766     <p>
6767     </p>
6768     <blockquote class="text">
6769     <p>LinuxSampler will answer by returning the number for
6770     the current limit of maximum disk streams.
6771     </p>
6772     </blockquote><p>
6773    
6774     </p>
6775     <p>The disk stream limit setting defines how many disk streams should
6776     maximum be processed by a sampler engine at the same time. The
6777     higher this value, the more memory (RAM) will be occupied, since
6778     every disk streams allocates a certain buffer size for being able
6779     to perform its streaming operations.
6780     </p>
6781     <a name="SET STREAMS"></a><br /><hr />
6782     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6783     <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
6784     Setting global disk stream limit</h3>
6785    
6786     <p>The client can alter the current global sampler-wide limit
6787     for maximum disk streams by sending the following command:
6788     </p>
6789     <p>
6790     </p>
6791     <blockquote class="text">
6792     <p>SET STREAMS &lt;max-streams&gt;
6793     </p>
6794     </blockquote><p>
6795    
6796     </p>
6797     <p>Where &lt;max-streams&gt; should be replaced by the integer
6798     value, reflecting the new global amount limit of maximum disk streams.
6799     This value has to be positive.
6800     </p>
6801     <p>Possible Answers:
6802     </p>
6803     <p>
6804     </p>
6805     <blockquote class="text">
6806     <p>"OK" -
6807     </p>
6808     <blockquote class="text">
6809     <p>on success
6810     </p>
6811     </blockquote>
6812    
6813    
6814     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6815     </p>
6816     <blockquote class="text">
6817     <p>if the disk stream limit was set, but there are noteworthy
6818     issue(s) related, providing an appropriate warning code and
6819     warning message
6820     </p>
6821     </blockquote>
6822    
6823    
6824     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6825     </p>
6826     <blockquote class="text">
6827     <p>in case it failed, providing an appropriate error code and error message
6828     </p>
6829     </blockquote>
6830    
6831    
6832     </blockquote><p>
6833    
6834     </p>
6835     <p>Note: the given value will be passed to all sampler engine instances.
6836     The total amount of maximum disk streams on the running system might
6837     thus be as big as the given value multiplied by the current amount of
6838     engine instances.
6839     </p>
6840     <p>Caution: when adjusting the disk stream limit, you SHOULD also
6841     adjust the voice limit respectively and vice versa.
6842     </p>
6843     <a name="MIDI Instrument Mapping"></a><br /><hr />
6844     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6845     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6846     MIDI Instrument Mapping</h3>
6847    
6848     <p>The MIDI protocol provides a way to switch between instruments
6849     by sending so called MIDI bank select and MIDI program change
6850     messages which are essentially just numbers. The following commands
6851     allow to actually map arbitrary MIDI bank select / program change
6852     numbers with real instruments.
6853     </p>
6854     <p>The sampler allows to manage an arbitrary amount of MIDI
6855     instrument maps which define which instrument to load on
6856     which MIDI program change message.
6857     </p>
6858     <p>By default, that is when the sampler is launched, there is no
6859     map, thus the sampler will simply ignore all program change
6860     messages. The front-end has to explicitly create at least one
6861     map, add entries to the map and tell the respective sampler
6862     channel(s) which MIDI instrument map to use, so the sampler
6863     knows how to react on a given program change message on the
6864     respective sampler channel, that is by switching to the
6865     respectively defined engine type and loading the respective
6866     instrument. See command
6867     <a class='info' href='#SET CHANNEL MIDI_INSTRUMENT_MAP'>"SET CHANNEL MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Assigning a MIDI instrument map to a sampler channel</span><span>)</span></a>
6868     for how to assign a MIDI instrument map to a sampler channel.
6869     </p>
6870     <p>Also note per MIDI specification a bank select message does not
6871     cause to switch to another instrument. Instead when receiving a
6872     bank select message the bank value will be stored and a subsequent
6873     program change message (which may occur at any time) will finally
6874     cause the sampler to switch to the respective instrument as
6875     reflected by the current MIDI instrument map.
6876     </p>
6877     <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6878     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6879     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6880     Create a new MIDI instrument map</h3>
6881    
6882     <p>The front-end can add a new MIDI instrument map by sending
6883     the following command:
6884     </p>
6885     <p>
6886     </p>
6887     <blockquote class="text">
6888     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6889     </p>
6890     </blockquote><p>
6891    
6892     </p>
6893     <p>Where &lt;name&gt; is an optional argument allowing to
6894     assign a custom name to the new map. MIDI instrument Map
6895     names do not have to be unique, but MUST be encapsulated
6896     into apostrophes and support escape sequences as described
6897     in chapter "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
6898    
6899     </p>
6900     <p>Possible Answers:
6901     </p>
6902     <p>
6903     </p>
6904     <blockquote class="text">
6905     <p>"OK[&lt;map&gt;]" -
6906     </p>
6907     <blockquote class="text">
6908     <p>in case a new MIDI instrument map could
6909     be added, where &lt;map&gt; reflects the
6910     unique ID of the newly created MIDI
6911     instrument map
6912     </p>
6913     </blockquote>
6914    
6915    
6916     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6917     </p>
6918     <blockquote class="text">
6919     <p>when a new map could not be created, which
6920     might never occur in practice
6921     </p>
6922     </blockquote>
6923    
6924    
6925     </blockquote><p>
6926    
6927     </p>
6928     <p>Examples:
6929     </p>
6930     <p>
6931     </p>
6932     <blockquote class="text">
6933     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6934     </p>
6935     <p>S: "OK[0]"
6936     </p>
6937     </blockquote><p>
6938    
6939     </p>
6940     <p>
6941     </p>
6942     <blockquote class="text">
6943     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6944     </p>
6945     <p>S: "OK[1]"
6946     </p>
6947     </blockquote><p>
6948    
6949     </p>
6950     <p>
6951     </p>
6952     <blockquote class="text">
6953     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6954     </p>
6955     <p>S: "OK[5]"
6956     </p>
6957     </blockquote><p>
6958    
6959     </p>
6960     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6961     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6962     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6963     Delete one particular or all MIDI instrument maps</h3>
6964    
6965     <p>The front-end can delete a particular MIDI instrument map
6966     by sending the following command:
6967     </p>
6968     <p>
6969     </p>
6970     <blockquote class="text">
6971     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6972     </p>
6973     </blockquote><p>
6974    
6975     </p>
6976     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6977     as returned by the <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
6978     command.
6979     </p>
6980     <p>The front-end can delete all MIDI instrument maps by
6981     sending the following command:
6982     </p>
6983     <p>
6984     </p>
6985     <blockquote class="text">
6986     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6987     </p>
6988     </blockquote><p>
6989    
6990     </p>
6991     <p>Possible Answers:
6992     </p>
6993     <p>
6994     </p>
6995     <blockquote class="text">
6996     <p>"OK" -
6997     </p>
6998     <blockquote class="text">
6999     <p>in case the map(s) could be deleted
7000     </p>
7001     </blockquote>
7002    
7003    
7004     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7005     </p>
7006     <blockquote class="text">
7007     <p>when the given map does not exist
7008     </p>
7009     </blockquote>
7010    
7011    
7012     </blockquote><p>
7013    
7014     </p>
7015     <p>Examples:
7016     </p>
7017     <p>
7018     </p>
7019     <blockquote class="text">
7020     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7021     </p>
7022     <p>S: "OK"
7023     </p>
7024     </blockquote><p>
7025    
7026     </p>
7027     <p>
7028     </p>
7029     <blockquote class="text">
7030     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7031     </p>
7032     <p>S: "OK"
7033     </p>
7034     </blockquote><p>
7035    
7036     </p>
7037     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7038     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7039     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7040     Get amount of existing MIDI instrument maps</h3>
7041    
7042     <p>The front-end can retrieve the current amount of MIDI
7043     instrument maps by sending the following command:
7044     </p>
7045     <p>
7046     </p>
7047     <blockquote class="text">
7048     <p>GET MIDI_INSTRUMENT_MAPS
7049     </p>
7050     </blockquote><p>
7051    
7052     </p>
7053     <p>Possible Answers:
7054     </p>
7055     <p>
7056     </p>
7057     <blockquote class="text">
7058     <p>The sampler will answer by returning the current
7059     number of MIDI instrument maps.
7060     </p>
7061     </blockquote><p>
7062    
7063     </p>
7064     <p>Example:
7065     </p>
7066     <p>
7067     </p>
7068     <blockquote class="text">
7069     <p>C: "GET MIDI_INSTRUMENT_MAPS"
7070     </p>
7071     <p>S: "2"
7072     </p>
7073     </blockquote><p>
7074    
7075     </p>
7076     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7077     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7078     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7079     Getting all created MIDI instrument maps</h3>
7080    
7081     <p>The number of MIDI instrument maps can change on runtime. To get the
7082     current list of MIDI instrument maps, the front-end can send the
7083     following command:
7084     </p>
7085     <p>
7086     </p>
7087     <blockquote class="text">
7088     <p>LIST MIDI_INSTRUMENT_MAPS
7089     </p>
7090     </blockquote><p>
7091    
7092     </p>
7093     <p>Possible Answers:
7094     </p>
7095     <p>
7096     </p>
7097     <blockquote class="text">
7098     <p>The sampler will answer by returning a comma separated list
7099     with all MIDI instrument maps' numerical IDs.
7100     </p>
7101     </blockquote><p>
7102    
7103     </p>
7104     <p>Example:
7105     </p>
7106     <p>
7107     </p>
7108     <blockquote class="text">
7109     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7110     </p>
7111     <p>S: "0,1,5,12"
7112     </p>
7113     </blockquote><p>
7114    
7115     </p>
7116     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7117     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7118     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7119     Getting MIDI instrument map information</h3>
7120    
7121     <p>The front-end can ask for the current settings of a MIDI
7122     instrument map by sending the following command:
7123     </p>
7124     <p>
7125     </p>
7126     <blockquote class="text">
7127     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7128     </p>
7129     </blockquote><p>
7130    
7131     </p>
7132     <p>Where &lt;map&gt; is the numerical ID of the map the
7133     front-end is interested in as returned by the
7134     <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
7135     command.
7136     </p>
7137     <p>Possible Answers:
7138     </p>
7139     <p>
7140     </p>
7141     <blockquote class="text">
7142     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7143     Each answer line begins with the settings category name
7144     followed by a colon and then a space character &lt;SP&gt; and finally
7145     the info character string to that setting category. At the
7146     moment the following categories are defined:
7147     </p>
7148     <p>
7149     </p>
7150     <blockquote class="text">
7151     <p>NAME -
7152     </p>
7153     <blockquote class="text">
7154     <p>custom name of the given map,
7155     which does not have to be unique
7156     (note that this character string may contain
7157     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7158     </p>
7159     </blockquote>
7160    
7161    
7162     <p>DEFAULT -
7163     </p>
7164     <blockquote class="text">
7165     <p>either true or false,
7166     defines whether this map is the default map
7167     </p>
7168     </blockquote>
7169    
7170    
7171     </blockquote>
7172    
7173    
7174     </blockquote><p>
7175    
7176     </p>
7177     <p>The mentioned fields above don't have to be in particular order.
7178     </p>
7179     <p>Example:
7180     </p>
7181     <p>
7182     </p>
7183     <blockquote class="text">
7184     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7185     </p>
7186     <p>S: "NAME: Standard Map"
7187     </p>
7188     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7189     </p>
7190     <p>&nbsp;&nbsp;&nbsp;"."
7191     </p>
7192     </blockquote><p>
7193    
7194     </p>
7195     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7196     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7197     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7198     Renaming a MIDI instrument map</h3>
7199    
7200     <p>The front-end can alter the custom name of a MIDI
7201     instrument map by sending the following command:
7202     </p>
7203     <p>
7204     </p>
7205     <blockquote class="text">
7206     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7207     </p>
7208     </blockquote><p>
7209    
7210     </p>
7211     <p>Where &lt;map&gt; is the numerical ID of the map and
7212     &lt;name&gt; the new custom name of the map, which does not
7213     have to be unique (name MUST be encapsulated into apostrophes
7214     and supports escape sequences as described in chapter
7215     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7216    
7217     </p>
7218     <p>Possible Answers:
7219     </p>
7220     <p>
7221     </p>
7222     <blockquote class="text">
7223     <p>"OK" -
7224     </p>
7225     <blockquote class="text">
7226     <p>on success
7227     </p>
7228     </blockquote>
7229    
7230    
7231     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7232     </p>
7233     <blockquote class="text">
7234     <p>in case the given map does not exist
7235     </p>
7236     </blockquote>
7237    
7238    
7239     </blockquote><p>
7240    
7241     </p>
7242     <p>Example:
7243     </p>
7244     <p>
7245     </p>
7246     <blockquote class="text">
7247     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7248     </p>
7249     <p>S: "OK"
7250     </p>
7251     </blockquote><p>
7252    
7253     </p>
7254     <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7255     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7256     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7257     Create or replace a MIDI instrument map entry</h3>
7258    
7259     <p>The front-end can create a new or replace an existing entry
7260     in a sampler's MIDI instrument map by sending the following
7261     command:
7262     </p>
7263     <p>
7264     </p>
7265     <blockquote class="text">
7266     <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7267     &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7268     &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7269     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7270     </p>
7271     </blockquote><p>
7272    
7273     </p>
7274     <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7275     &lt;midi_bank&gt; is an integer value between
7276     0..16383 reflecting the MIDI bank select index,
7277     &lt;midi_prog&gt; an
7278     integer value between 0..127 reflecting the MIDI program change
7279     index, &lt;engine_name&gt; a sampler engine name as returned by
7280     the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
7281     command (not encapsulated into apostrophes), &lt;filename&gt; the name
7282     of the instrument's file to be deployed (encapsulated into apostrophes,
7283     supporting escape sequences as described in chapter
7284     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"),
7285     &lt;instrument_index&gt; the index (integer value) of the instrument
7286     within the given file, &lt;volume_value&gt; reflects the master
7287     volume of the instrument as optionally dotted number (where a
7288     value &lt; 1.0 means attenuation and a value > 1.0 means
7289     amplification). This parameter easily allows to adjust the
7290     volume of all intruments within a custom instrument map
7291     without having to adjust their instrument files. The
7292     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7293     time of the instrument, that is when the instrument should
7294     be loaded, when freed and has exactly the following
7295     possibilities:
7296     </p>
7297     <p>
7298     </p>
7299     <blockquote class="text">
7300     <p>"ON_DEMAND" -
7301     </p>
7302     <blockquote class="text">
7303     <p>The instrument will be loaded when needed,
7304     that is when demanded by at least one sampler
7305     channel. It will immediately be freed from memory
7306     when not needed by any sampler channel anymore.
7307     </p>
7308     </blockquote>
7309    
7310    
7311     <p>"ON_DEMAND_HOLD" -
7312     </p>
7313     <blockquote class="text">
7314     <p>The instrument will be loaded when needed,
7315     that is when demanded by at least one sampler
7316     channel. It will be kept in memory even when
7317     not needed by any sampler channel anymore.
7318     Instruments with this mode are only freed
7319     when the sampler is reset or all mapping
7320     entries with this mode (and respective
7321     instrument) are explicitly changed to
7322     "ON_DEMAND" and no sampler channel is using
7323     the instrument anymore.
7324     </p>
7325     </blockquote>
7326    
7327    
7328     <p>"PERSISTENT" -
7329     </p>
7330     <blockquote class="text">
7331     <p>The instrument will immediately be loaded
7332     into memory when this mapping
7333     command is sent and the instrument is kept all
7334     the time. Instruments with this mode are
7335     only freed when the sampler is reset or all
7336     mapping entries with this mode (and
7337     respective instrument) are explicitly
7338     changed to "ON_DEMAND" and no sampler
7339     channel is using the instrument anymore.
7340     </p>
7341     </blockquote>
7342    
7343    
7344     <p>not supplied -
7345     </p>
7346     <blockquote class="text">
7347     <p>In case there is no &lt;instr_load_mode&gt;
7348     argument given, it will be up to the
7349     InstrumentManager to decide which mode to use.
7350     Usually it will use "ON_DEMAND" if an entry
7351     for the given instrument does not exist in
7352     the InstrumentManager's list yet, otherwise
7353     if an entry already exists, it will simply
7354     stick with the mode currently reflected by
7355     the already existing entry, that is it will
7356     not change the mode.
7357     </p>
7358     </blockquote>
7359    
7360    
7361     </blockquote><p>
7362    
7363     </p>
7364     <p>
7365     The &lt;instr_load_mode&gt; argument thus allows to define an
7366     appropriate strategy (low memory consumption vs. fast
7367     instrument switching) for each instrument individually. Note, the
7368     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7369     "PERSISTENT" have to be supported by the respective sampler engine
7370     (which is technically the case when the engine provides an
7371     InstrumentManager for its format). If this is not the case the
7372     argument will automatically fall back to the default value
7373     "ON_DEMAND". Also the load mode of one instrument may
7374     automatically change the laod mode of other instrument(s), i.e.
7375     because the instruments are part of the same file and the
7376     engine does not allow a way to manage load modes for them
7377     individually. Due to this, in case the frontend shows the
7378     load modes of entries, the frontend should retrieve the actual
7379     mode by i.e. sending
7380     <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
7381     command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7382     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7383     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") for the
7384     mapping entry, useful for frontends for displaying an appropriate name for
7385     mapped instruments (using
7386     <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>).
7387    
7388     </p>
7389     <p>
7390     By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7391     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7392     however causes the respective "MAP MIDI_INSTRUMENT" command to return
7393     immediately, that is to let the sampler establish the mapping in the
7394     background. So this argument might be especially useful for mappings with
7395     a "PERSISTENT" type, because these have to load the respective instruments
7396     immediately and might thus block for a very long time. It is recommended
7397     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7398     because it has the following drawbacks: as "NON_MODAL" instructions return
7399     immediately, they may not necessarily return an error i.e. when the given
7400     instrument file turns out to be corrupt, beside that subsequent commands
7401     in a LSCP instruction sequence might fail, because mandatory mappings are
7402     not yet completed.
7403    
7404     </p>
7405     <p>Possible Answers:
7406     </p>
7407     <p>
7408     </p>
7409     <blockquote class="text">
7410     <p>"OK" -
7411     </p>
7412     <blockquote class="text">
7413     <p>usually
7414     </p>
7415     </blockquote>
7416    
7417    
7418     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7419     </p>
7420     <blockquote class="text">
7421     <p>when the given map or engine does not exist or a value
7422     is out of range
7423     </p>
7424     </blockquote>
7425    
7426    
7427     </blockquote><p>
7428    
7429     </p>
7430     <p>Examples:
7431     </p>
7432     <p>
7433     </p>
7434     <blockquote class="text">
7435     <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7436     </p>
7437     <p>S: "OK"
7438     </p>
7439     </blockquote><p>
7440    
7441     </p>
7442     <p>
7443     </p>
7444     <blockquote class="text">
7445     <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7446     </p>
7447     <p>S: "OK"
7448     </p>
7449     </blockquote><p>
7450    
7451     </p>
7452     <p>
7453     </p>
7454     <blockquote class="text">
7455     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7456     </p>
7457     <p>S: "OK"
7458     </p>
7459     <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7460     </p>
7461     <p>S: "OK"
7462     </p>
7463     </blockquote><p>
7464    
7465     </p>
7466     <p>
7467     </p>
7468     <blockquote class="text">
7469     <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7470     </p>
7471     <p>S: "OK"
7472     </p>
7473     </blockquote><p>
7474    
7475     </p>
7476     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7477     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7478     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7479     Getting ammount of MIDI instrument map entries</h3>
7480    
7481     <p>The front-end can query the amount of currently existing
7482     entries in a MIDI instrument map by sending the following
7483     command:
7484     </p>
7485     <p>
7486     </p>
7487     <blockquote class="text">
7488     <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7489     </p>
7490     </blockquote><p>
7491    
7492     </p>
7493     <p>The front-end can query the amount of currently existing
7494     entries in all MIDI instrument maps by sending the following
7495     command:
7496     </p>
7497     <p>
7498     </p>
7499     <blockquote class="text">
7500     <p>GET MIDI_INSTRUMENTS ALL
7501     </p>
7502     </blockquote><p>
7503    
7504     </p>
7505     <p>Possible Answers:
7506     </p>
7507     <p>
7508     </p>
7509     <blockquote class="text">
7510     <p>The sampler will answer by sending the current number of
7511     entries in the MIDI instrument map(s).
7512     </p>
7513     </blockquote><p>
7514    
7515     </p>
7516     <p>Example:
7517     </p>
7518     <p>
7519     </p>
7520     <blockquote class="text">
7521     <p>C: "GET MIDI_INSTRUMENTS 0"
7522     </p>
7523     <p>S: "234"
7524     </p>
7525     </blockquote><p>
7526    
7527     </p>
7528     <p>
7529     </p>
7530     <blockquote class="text">
7531     <p>C: "GET MIDI_INSTRUMENTS ALL"
7532     </p>
7533     <p>S: "954"
7534     </p>
7535     </blockquote><p>
7536    
7537     </p>
7538     <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7539     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7540     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7541     Getting indeces of all entries of a MIDI instrument map</h3>
7542    
7543     <p>The front-end can query a list of all currently existing
7544     entries in a certain MIDI instrument map by sending the following
7545     command:
7546     </p>
7547     <p>
7548     </p>
7549     <blockquote class="text">
7550     <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7551     </p>
7552     </blockquote><p>
7553    
7554     </p>
7555     <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7556     </p>
7557     <p>The front-end can query a list of all currently existing
7558     entries of all MIDI instrument maps by sending the following
7559     command:
7560     </p>
7561     <p>
7562     </p>
7563     <blockquote class="text">
7564     <p>LIST MIDI_INSTRUMENTS ALL
7565     </p>
7566     </blockquote><p>
7567    
7568     </p>
7569     <p>Possible Answers:
7570     </p>
7571     <p>
7572     </p>
7573     <blockquote class="text">
7574     <p>The sampler will answer by sending a comma separated
7575     list of map ID - MIDI bank - MIDI program triples, where
7576     each triple is encapsulated into curly braces. The
7577     list is returned in one single line. Each triple
7578     just reflects the key of the respective map entry,
7579     thus subsequent
7580     <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
7581     command(s) are necessary to retrieve detailed informations
7582     about each entry.
7583     </p>
7584     </blockquote><p>
7585    
7586     </p>
7587     <p>Example:
7588     </p>
7589     <p>
7590     </p>
7591     <blockquote class="text">
7592     <p>C: "LIST MIDI_INSTRUMENTS 0"
7593     </p>
7594     <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7595     </p>
7596     </blockquote><p>
7597    
7598     </p>
7599     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7600     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7601     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7602     Remove an entry from the MIDI instrument map</h3>
7603    
7604     <p>The front-end can delete an entry from a MIDI instrument
7605     map by sending the following command:
7606     </p>
7607     <p>
7608     </p>
7609     <blockquote class="text">
7610     <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7611     </p>
7612     </blockquote><p>
7613    
7614     </p>
7615     <p>
7616     Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7617     &lt;midi_bank&gt; is an integer value between 0..16383
7618     reflecting the MIDI bank value and
7619     &lt;midi_prog&gt; an integer value between
7620     0..127 reflecting the MIDI program value of the map's entrie's key
7621     index triple.
7622    
7623     </p>
7624     <p>Possible Answers:
7625     </p>
7626     <p>
7627     </p>
7628     <blockquote class="text">
7629     <p>"OK" -
7630     </p>
7631     <blockquote class="text">
7632     <p>usually
7633     </p>
7634     </blockquote>
7635    
7636    
7637     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7638     </p>
7639     <blockquote class="text">
7640     <p>when index out of bounds
7641     </p>
7642     </blockquote>
7643    
7644    
7645     </blockquote><p>
7646    
7647     </p>
7648     <p>Example:
7649     </p>
7650     <p>
7651     </p>
7652     <blockquote class="text">
7653     <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7654     </p>
7655     <p>S: "OK"
7656     </p>
7657     </blockquote><p>
7658    
7659     </p>
7660     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7661     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7662     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7663     Get current settings of MIDI instrument map entry</h3>
7664    
7665     <p>The front-end can retrieve the current settings of a certain
7666     instrument map entry by sending the following command:
7667     </p>
7668     <p>
7669     </p>
7670     <blockquote class="text">
7671     <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7672     </p>
7673     </blockquote><p>
7674    
7675     </p>
7676     <p>
7677     Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7678     &lt;midi_bank&gt; is an integer value between 0..16383
7679     reflecting the MIDI bank value, &lt;midi_bank&gt;
7680     and &lt;midi_prog&gt; an integer value between
7681     0..127 reflecting the MIDI program value of the map's entrie's key
7682     index triple.
7683    
7684     </p>
7685     <p>Possible Answers:
7686     </p>
7687     <p>
7688     </p>
7689     <blockquote class="text">
7690     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7691     separated list. Each answer line begins with the
7692     information category name followed by a colon and then
7693     a space character &lt;SP&gt; and finally the info
7694     character string to that info category. At the moment
7695     the following categories are defined:
7696     </p>
7697     <p>"NAME" -
7698     </p>
7699     <blockquote class="text">
7700     <p>Name for this MIDI instrument map entry (if defined).
7701     This name shall be used by frontends for displaying a
7702     name for this mapped instrument. It can be set and
7703     changed with the
7704     <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
7705     command and does not have to be unique.
7706     (note that this character string may contain
7707     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7708     </p>
7709     </blockquote>
7710    
7711    
7712     <p>"ENGINE_NAME" -
7713     </p>
7714     <blockquote class="text">
7715     <p>Name of the engine to be deployed for this
7716     instrument.
7717     </p>
7718     </blockquote>
7719    
7720    
7721     <p>"INSTRUMENT_FILE" -
7722     </p>
7723     <blockquote class="text">
7724     <p>File name of the instrument
7725     (note that this path may contain
7726     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7727     </p>
7728     </blockquote>
7729    
7730    
7731     <p>"INSTRUMENT_NR" -
7732     </p>
7733     <blockquote class="text">
7734     <p>Index of the instrument within the file.
7735     </p>
7736     </blockquote>
7737    
7738    
7739     <p>"INSTRUMENT_NAME" -
7740     </p>
7741     <blockquote class="text">
7742     <p>Name of the loaded instrument as reflected by its file.
7743     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7744     cannot be changed (note that this character string may contain
7745     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7746     </p>
7747     </blockquote>
7748    
7749    
7750     <p>"LOAD_MODE" -
7751     </p>
7752     <blockquote class="text">
7753     <p>Life time of instrument
7754     (see <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a> for details about this setting).
7755     </p>
7756     </blockquote>
7757    
7758    
7759     <p>"VOLUME" -
7760     </p>
7761     <blockquote class="text">
7762     <p>master volume of the instrument as optionally
7763     dotted number (where a value &lt; 1.0 means attenuation
7764     and a value > 1.0 means amplification)
7765     </p>
7766     </blockquote>
7767    
7768    
7769     <p>The mentioned fields above don't have to be in particular order.
7770     </p>
7771     </blockquote><p>
7772    
7773     </p>
7774     <p>Example:
7775     </p>
7776     <p>
7777     </p>
7778     <blockquote class="text">
7779     <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7780     </p>
7781     <p>S: "NAME: Drums for Foo Song"
7782     </p>
7783     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7784     </p>
7785     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7786     </p>
7787     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7788     </p>
7789     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7790     </p>
7791     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7792     </p>
7793     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7794     </p>
7795     <p>&nbsp;&nbsp;&nbsp;"."
7796     </p>
7797     </blockquote><p>
7798    
7799     </p>
7800     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7801     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7802     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7803     Clear MIDI instrument map</h3>
7804    
7805     <p>The front-end can clear a whole MIDI instrument map, that
7806     is delete all its entries by sending the following command:
7807     </p>
7808     <p>
7809     </p>
7810     <blockquote class="text">
7811     <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7812     </p>
7813     </blockquote><p>
7814    
7815     </p>
7816     <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7817     </p>
7818     <p>The front-end can clear all MIDI instrument maps, that
7819     is delete all entries of all maps by sending the following
7820     command:
7821     </p>
7822     <p>
7823     </p>
7824     <blockquote class="text">
7825     <p>CLEAR MIDI_INSTRUMENTS ALL
7826     </p>
7827     </blockquote><p>
7828    
7829     </p>
7830     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7831     maps, only their entries, thus the map's settings like
7832     custom name will be preservevd.
7833     </p>
7834     <p>Possible Answers:
7835     </p>
7836     <p>
7837     </p>
7838     <blockquote class="text">
7839     <p>"OK" -
7840     </p>
7841     <blockquote class="text">
7842     <p>always
7843     </p>
7844     </blockquote>
7845    
7846    
7847     </blockquote><p>
7848    
7849     </p>
7850     <p>Examples:
7851     </p>
7852     <p>
7853     </p>
7854     <blockquote class="text">
7855     <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7856     </p>
7857     <p>S: "OK"
7858     </p>
7859     </blockquote><p>
7860    
7861     </p>
7862     <p>
7863     </p>
7864     <blockquote class="text">
7865     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7866     </p>
7867     <p>S: "OK"
7868     </p>
7869     </blockquote><p>
7870    
7871     </p>
7872     <a name="Managing Instruments Database"></a><br /><hr />
7873     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7874     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7875     Managing Instruments Database</h3>
7876    
7877     <p>The following commands describe how to use and manage
7878     the instruments database.
7879     </p>
7880     <p>Notice:
7881     </p>
7882     <p>
7883     </p>
7884     <blockquote class="text">
7885     <p>All command arguments representing a path or
7886     instrument/directory name support escape sequences as described in chapter
7887     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
7888    
7889     </p>
7890     <p>All occurrences of a forward slash in instrument and directory
7891     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7892    
7893     </p>
7894     </blockquote><p>
7895    
7896     </p>
7897     <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7898     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7899     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7900     Creating a new instrument directory</h3>
7901    
7902     <p>The front-end can add a new instrument directory to the
7903     instruments database by sending the following command:
7904     </p>
7905     <p>
7906     </p>
7907     <blockquote class="text">
7908     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7909     </p>
7910     </blockquote><p>
7911    
7912     </p>
7913     <p>Where &lt;dir&gt; is the absolute path name of the directory
7914     to be created (encapsulated into apostrophes).
7915     </p>
7916     <p>Possible Answers:
7917     </p>
7918     <p>
7919     </p>
7920     <blockquote class="text">
7921     <p>"OK" -
7922     </p>
7923     <blockquote class="text">
7924     <p>on success
7925     </p>
7926     </blockquote>
7927    
7928    
7929     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7930     </p>
7931     <blockquote class="text">
7932     <p>when the directory could not be created, which
7933     can happen if the directory already exists or the
7934     name contains not allowed symbols
7935     </p>
7936     </blockquote>
7937    
7938    
7939     </blockquote><p>
7940    
7941     </p>
7942     <p>Examples:
7943     </p>
7944     <p>
7945     </p>
7946     <blockquote class="text">
7947     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7948     </p>
7949     <p>S: "OK"
7950     </p>
7951     </blockquote><p>
7952    
7953     </p>
7954     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7955     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7956     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7957     Deleting an instrument directory</h3>
7958    
7959     <p>The front-end can delete a particular instrument directory
7960     from the instruments database by sending the following command:
7961     </p>
7962     <p>
7963     </p>
7964     <blockquote class="text">
7965     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7966     </p>
7967     </blockquote><p>
7968    
7969     </p>
7970     <p>Where &lt;dir&gt; is the absolute path name of the directory
7971     to delete. The optional FORCE argument can be used to
7972     force the deletion of a non-empty directory and all its content.
7973     </p>
7974     <p>Possible Answers:
7975     </p>
7976     <p>
7977     </p>
7978     <blockquote class="text">
7979     <p>"OK" -
7980     </p>
7981     <blockquote class="text">
7982     <p>if the directory is deleted successfully
7983     </p>
7984     </blockquote>
7985    
7986    
7987     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7988     </p>
7989     <blockquote class="text">
7990     <p>if the given directory does not exist, or
7991     if trying to delete a non-empty directory,
7992     without using the FORCE argument.
7993     </p>
7994     </blockquote>
7995    
7996    
7997     </blockquote><p>
7998    
7999     </p>
8000     <p>Examples:
8001     </p>
8002     <p>
8003     </p>
8004     <blockquote class="text">
8005     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8006     </p>
8007     <p>S: "OK"
8008     </p>
8009     </blockquote><p>
8010    
8011     </p>
8012     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8013     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8014     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8015     Getting amount of instrument directories</h3>
8016    
8017     <p>The front-end can retrieve the current amount of
8018     directories in a specific directory by sending the following command:
8019     </p>
8020     <p>
8021     </p>
8022     <blockquote class="text">
8023     <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8024     </p>
8025     </blockquote><p>
8026    
8027     </p>
8028     <p>Where &lt;dir&gt; should be replaced by the absolute path
8029     name of the directory. If RECURSIVE is specified, the number of
8030     all directories, including those located in subdirectories of the
8031     specified directory, will be returned.
8032     </p>
8033     <p>Possible Answers:
8034     </p>
8035     <p>
8036     </p>
8037     <blockquote class="text">
8038     <p>The current number of instrument directories
8039     in the specified directory.
8040     </p>
8041     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8042     </p>
8043     <blockquote class="text">
8044     <p>if the given directory does not exist.
8045     </p>
8046     </blockquote>
8047    
8048    
8049     </blockquote><p>
8050    
8051     </p>
8052     <p>Example:
8053     </p>
8054     <p>
8055     </p>
8056     <blockquote class="text">
8057     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8058     </p>
8059     <p>S: "2"
8060     </p>
8061     </blockquote><p>
8062    
8063     </p>
8064     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8065     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8066     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8067     Listing all directories in specific directory</h3>
8068    
8069     <p>The front-end can retrieve the current list of directories
8070     in specific directory by sending the following command:
8071     </p>
8072     <p>
8073     </p>
8074     <blockquote class="text">
8075     <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8076     </p>
8077     </blockquote><p>
8078    
8079     </p>
8080     <p>Where &lt;dir&gt; should be replaced by the absolute path
8081     name of the directory. If RECURSIVE is specified, the absolute path names
8082     of all directories, including those located in subdirectories of the
8083     specified directory, will be returned.
8084     </p>
8085     <p>Possible Answers:
8086     </p>
8087     <p>
8088     </p>
8089     <blockquote class="text">
8090     <p>A comma separated list of all instrument directories
8091     (encapsulated into apostrophes) in the specified directory.
8092     </p>
8093     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8094     </p>
8095     <blockquote class="text">
8096     <p>if the given directory does not exist.
8097     </p>
8098     </blockquote>
8099    
8100    
8101     </blockquote><p>
8102    
8103     </p>
8104     <p>Example:
8105     </p>
8106     <p>
8107     </p>
8108     <blockquote class="text">
8109     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8110     </p>
8111     <p>S: "'Piano Collection','Percussion Collection'"
8112     </p>
8113     </blockquote><p>
8114    
8115     </p>
8116     <p>
8117     </p>
8118     <blockquote class="text">
8119     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8120     </p>
8121     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8122     </p>
8123     </blockquote><p>
8124    
8125     </p>
8126     <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8127     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8128     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8129     Getting instrument directory information</h3>
8130    
8131     <p>The front-end can ask for the current settings of an
8132     instrument directory by sending the following command:
8133     </p>
8134     <p>
8135     </p>
8136     <blockquote class="text">
8137     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8138     </p>
8139     </blockquote><p>
8140    
8141     </p>
8142     <p>Where &lt;dir&gt; should be replaced by the absolute path
8143     name of the directory the front-end is interested in.
8144     </p>
8145     <p>Possible Answers:
8146     </p>
8147     <p>
8148     </p>
8149     <blockquote class="text">
8150     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8151     Each answer line begins with the settings category name
8152     followed by a colon and then a space character &lt;SP&gt; and finally
8153     the info character string to that setting category. At the
8154     moment the following categories are defined:
8155     </p>
8156     <p>
8157     </p>
8158     <blockquote class="text">
8159     <p>DESCRIPTION -
8160     </p>
8161     <blockquote class="text">
8162     <p>A brief description of the directory content.
8163     Note that the character string may contain
8164     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8165     </p>
8166     </blockquote>
8167    
8168    
8169     <p>CREATED -
8170     </p>
8171     <blockquote class="text">
8172     <p>The creation date and time of the directory,
8173     represented in "YYYY-MM-DD HH:MM:SS" format
8174     </p>
8175     </blockquote>
8176    
8177    
8178     <p>MODIFIED -
8179     </p>
8180     <blockquote class="text">
8181     <p>The date and time of the last modification of the
8182     directory, represented in "YYYY-MM-DD HH:MM:SS" format
8183     </p>
8184     </blockquote>
8185    
8186    
8187     </blockquote>
8188    
8189    
8190     </blockquote><p>
8191    
8192     </p>
8193     <p>The mentioned fields above don't have to be in particular order.
8194     </p>
8195     <p>Example:
8196     </p>
8197     <p>
8198     </p>
8199     <blockquote class="text">
8200     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8201     </p>
8202     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8203     </p>
8204     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8205     </p>
8206     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8207     </p>
8208     <p>&nbsp;&nbsp;&nbsp;"."
8209     </p>
8210     </blockquote><p>
8211    
8212     </p>
8213     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8214     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8215     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8216     Renaming an instrument directory</h3>
8217    
8218     <p>The front-end can alter the name of a specific
8219     instrument directory by sending the following command:
8220     </p>
8221     <p>
8222     </p>
8223     <blockquote class="text">
8224     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8225     </p>
8226     </blockquote><p>
8227    
8228     </p>
8229     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8230     &lt;name&gt; is the new name for that directory.
8231     </p>
8232     <p>Possible Answers:
8233     </p>
8234     <p>
8235     </p>
8236     <blockquote class="text">
8237     <p>"OK" -
8238     </p>
8239     <blockquote class="text">
8240     <p>on success
8241     </p>
8242     </blockquote>
8243    
8244    
8245     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8246     </p>
8247     <blockquote class="text">
8248     <p>in case the given directory does not exists,
8249     or if a directory with name equal to the new
8250     name already exists.
8251     </p>
8252     </blockquote>
8253    
8254    
8255     </blockquote><p>
8256    
8257     </p>
8258     <p>Example:
8259     </p>
8260     <p>
8261     </p>
8262     <blockquote class="text">
8263     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8264     </p>
8265     <p>S: "OK"
8266     </p>
8267     </blockquote><p>
8268    
8269     </p>
8270     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8271     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8272     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8273     Moving an instrument directory</h3>
8274    
8275     <p>The front-end can move a specific
8276     instrument directory by sending the following command:
8277     </p>
8278     <p>
8279     </p>
8280     <blockquote class="text">
8281     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8282     </p>
8283     </blockquote><p>
8284    
8285     </p>
8286     <p>Where &lt;dir&gt; is the absolute path name of the directory
8287     to move and &lt;dst&gt; is the location where the directory will
8288     be moved to.
8289     </p>
8290     <p>Possible Answers:
8291     </p>
8292     <p>
8293     </p>
8294     <blockquote class="text">
8295     <p>"OK" -
8296     </p>
8297     <blockquote class="text">
8298     <p>on success
8299     </p>
8300     </blockquote>
8301    
8302    
8303     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8304     </p>
8305     <blockquote class="text">
8306     <p>in case a given directory does not exists,
8307     or if a directory with name equal to the name
8308     of the specified directory already exists in
8309     the destination directory. Error is also thrown
8310     when trying to move a directory to a subdirectory
8311     of itself.
8312     </p>
8313     </blockquote>
8314    
8315    
8316     </blockquote><p>
8317    
8318     </p>
8319     <p>Example:
8320     </p>
8321     <p>
8322     </p>
8323     <blockquote class="text">
8324     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8325     </p>
8326     <p>S: "OK"
8327     </p>
8328     </blockquote><p>
8329    
8330     </p>
8331     <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8332     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8333     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8334     Copying instrument directories</h3>
8335    
8336     <p>The front-end can copy a specific
8337     instrument directory by sending the following command:
8338     </p>
8339     <p>
8340     </p>
8341     <blockquote class="text">
8342     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8343     </p>
8344     </blockquote><p>
8345    
8346     </p>
8347     <p>Where &lt;dir&gt; is the absolute path name of the directory
8348     to copy and &lt;dst&gt; is the location where the directory will
8349     be copied to.
8350     </p>
8351     <p>Possible Answers:
8352     </p>
8353     <p>
8354     </p>
8355     <blockquote class="text">
8356     <p>"OK" -
8357     </p>
8358     <blockquote class="text">
8359     <p>on success
8360     </p>
8361     </blockquote>
8362    
8363    
8364     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8365     </p>
8366     <blockquote class="text">
8367     <p>in case a given directory does not exists,
8368     or if a directory with name equal to the name
8369     of the specified directory already exists in
8370     the destination directory. Error is also thrown
8371     when trying to copy a directory to a subdirectory
8372     of itself.
8373     </p>
8374     </blockquote>
8375    
8376    
8377     </blockquote><p>
8378    
8379     </p>
8380     <p>Example:
8381     </p>
8382     <p>
8383     </p>
8384     <blockquote class="text">
8385     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8386     </p>
8387     <p>S: "OK"
8388     </p>
8389     </blockquote><p>
8390    
8391     </p>
8392     <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8393     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8394     <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8395     Changing the description of directory</h3>
8396    
8397     <p>The front-end can alter the description of a specific
8398     instrument directory by sending the following command:
8399     </p>
8400     <p>
8401     </p>
8402     <blockquote class="text">
8403     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8404     </p>
8405     </blockquote><p>
8406    
8407     </p>
8408     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8409     &lt;desc&gt; is the new description for the directory
8410     (encapsulated into apostrophes, supporting escape sequences as described in chapter
8411     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8412     </p>
8413     <p>Possible Answers:
8414     </p>
8415     <p>
8416     </p>
8417     <blockquote class="text">
8418     <p>"OK" -
8419     </p>
8420     <blockquote class="text">
8421     <p>on success
8422     </p>
8423     </blockquote>
8424    
8425    
8426     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8427     </p>
8428     <blockquote class="text">
8429     <p>in case the given directory does not exists.
8430     </p>
8431     </blockquote>
8432    
8433    
8434     </blockquote><p>
8435    
8436     </p>
8437     <p>Example:
8438     </p>
8439     <p>
8440     </p>
8441     <blockquote class="text">
8442     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8443     </p>
8444     <p>S: "OK"
8445     </p>
8446     </blockquote><p>
8447    
8448     </p>
8449     <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8450     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8451     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8452     Finding directories</h3>
8453    
8454     <p>The front-end can search for directories
8455     in specific directory by sending the following command:
8456     </p>
8457     <p>
8458     </p>
8459     <blockquote class="text">
8460     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8461     </p>
8462     </blockquote><p>
8463    
8464     </p>
8465     <p>Where &lt;dir&gt; should be replaced by the absolute path
8466     name of the directory to search in. If NON_RECURSIVE is specified, the
8467     directories located in subdirectories of the specified directory will not
8468     be searched. &lt;criteria-list&gt; is a list of search criterias
8469     in form of "key1=val1 key2=val2 ...". The following criterias are
8470     allowed:
8471     </p>
8472     <p>
8473    
8474     <p>NAME='&lt;search-string&gt;'
8475     </p>
8476     <blockquote class="text">
8477     <p>Restricts the search to directories, which names
8478     satisfy the supplied search string (encapsulated into apostrophes,
8479     supporting escape sequences as described in chapter
8480     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8481     </p>
8482     </blockquote><p>
8483    
8484     </p>
8485    
8486    
8487     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8488     </p>
8489     <blockquote class="text">
8490     <p>Restricts the search to directories, which creation
8491     date satisfies the specified period, where &lt;date-after&gt;
8492     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8493     If &lt;date-after&gt; is omitted the search is restricted to
8494     directories created before &lt;date-before&gt;. If
8495     &lt;date-before&gt; is omitted, the search is restricted
8496     to directories created after &lt;date-after&gt;.
8497     </p>
8498     </blockquote><p>
8499    
8500     </p>
8501    
8502    
8503     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8504     </p>
8505     <blockquote class="text">
8506     <p>Restricts the search to directories, which
8507     date of last modification satisfies the specified period, where
8508     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8509     format. If &lt;date-after&gt; is omitted the search is restricted to
8510     directories, which are last modified before &lt;date-before&gt;. If
8511     &lt;date-before&gt; is omitted, the search is restricted to directories,
8512     which are last modified after &lt;date-after&gt;.
8513     </p>
8514     </blockquote><p>
8515    
8516     </p>
8517    
8518    
8519     <p>DESCRIPTION='&lt;search-string&gt;'
8520     </p>
8521     <blockquote class="text">
8522     <p>Restricts the search to directories with description
8523     that satisfies the supplied search string
8524     (encapsulated into apostrophes, supporting escape
8525     sequences as described in chapter
8526     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8527     </p>
8528     </blockquote><p>
8529    
8530     </p>
8531    
8532    
8533     <p>Where &lt;search-string&gt; is either a regular expression, or a
8534     word list separated with spaces for OR search and with '+' for AND search.
8535     </p>
8536     <p>Possible Answers:
8537     </p>
8538     <p>
8539     </p>
8540     <blockquote class="text">
8541     <p>A comma separated list with the absolute path names (encapsulated into
8542     apostrophes) of all directories in the specified directory that satisfy
8543     the supplied search criterias.
8544     </p>
8545     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8546     </p>
8547     <blockquote class="text">
8548     <p>if the given directory does not exist.
8549     </p>
8550     </blockquote>
8551    
8552    
8553     </blockquote><p>
8554    
8555     </p>
8556     <p>Example:
8557     </p>
8558     <p>
8559     </p>
8560     <blockquote class="text">
8561     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8562     </p>
8563     <p>S: "'/Piano Collection'"
8564     </p>
8565     </blockquote><p>
8566    
8567     </p>
8568     <p>
8569     </p>
8570     <blockquote class="text">
8571     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8572     </p>
8573     <p>S: "'/Piano Collection','/Percussions'"
8574     </p>
8575     </blockquote><p>
8576    
8577     </p>
8578     <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8579     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8580     <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8581     Adding instruments to the instruments database</h3>
8582    
8583     <p>The front-end can add one or more instruments
8584     to the instruments database by sending the following command:
8585     </p>
8586     <p>
8587     </p>
8588     <blockquote class="text">
8589     <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8590     </p>
8591     </blockquote><p>
8592    
8593     </p>
8594     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8595     (encapsulated into apostrophes) in the instruments database in which
8596     only the new instruments (that are not already in the database) will
8597     be added, &lt;file_path&gt; is the absolute path name of a file or
8598     directory in the file system (encapsulated into apostrophes). In case
8599     an instrument file is supplied, only the instruments in the specified
8600     file will be added to the instruments database. If the optional
8601     &lt;instr_index&gt; (the index of the instrument within the given file)
8602     is supplied too, then only the specified instrument will be added.
8603     In case a directory is supplied, the instruments in that directory
8604     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8605     when a directory is provided as &lt;file_path&gt; and specifies how the
8606     scanning will be done and has exactly the following possibilities:
8607     </p>
8608     <p>
8609     </p>
8610     <blockquote class="text">
8611     <p>"RECURSIVE" -
8612     </p>
8613     <blockquote class="text">
8614     <p>All instruments will be processed, including those
8615     in the subdirectories, and the respective subdirectory
8616     tree structure will be recreated in the instruments
8617     database
8618     </p>
8619     </blockquote>
8620    
8621    
8622     <p>"NON_RECURSIVE" -
8623     </p>
8624     <blockquote class="text">
8625     <p>Only the instruments in the specified directory
8626     will be added, the instruments in the subdirectories
8627     will not be processed.
8628     </p>
8629     </blockquote>
8630    
8631    
8632     <p>"FLAT" -
8633     </p>
8634     <blockquote class="text">
8635     <p>All instruments will be processed, including those
8636     in the subdirectories, but the respective subdirectory
8637     structure will not be recreated in the instruments
8638     database. All instruments will be added directly in
8639     the specified database directory.
8640     </p>
8641     </blockquote>
8642    
8643    
8644     </blockquote><p>
8645    
8646     </p>
8647     <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
8648     file will be added to a separate directory in the instruments database, which
8649     name will be the name of the instrument file with the file extension stripped off.
8650    
8651     </p>
8652     <p>The difference between regular and NON_MODAL versions of the command
8653     is that the regular command returns when the scanning is finished
8654     while NON_MODAL version returns immediately and a background process is launched.
8655     The <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8656     command can be used to monitor the scanning progress.
8657     </p>
8658     <p>Possible Answers:
8659     </p>
8660     <p>
8661     </p>
8662     <blockquote class="text">
8663     <p>"OK" -
8664     </p>
8665     <blockquote class="text">
8666     <p>on success when NON_MODAL is not supplied
8667     </p>
8668     </blockquote>
8669    
8670    
8671     <p>"OK[&lt;job-id&gt;]" -
8672     </p>
8673     <blockquote class="text">
8674     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8675     is a numerical ID used to obtain status information about the job progress.
8676     See <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8677    
8678     </p>
8679     </blockquote>
8680    
8681    
8682     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8683     </p>
8684     <blockquote class="text">
8685     <p>if an invalid path is specified.
8686     </p>
8687     </blockquote>
8688    
8689    
8690     </blockquote><p>
8691    
8692     </p>
8693     <p>Examples:
8694     </p>
8695     <p>
8696     </p>
8697     <blockquote class="text">
8698     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8699     </p>
8700     <p>S: "OK"
8701     </p>
8702     </blockquote><p>
8703    
8704     </p>
8705     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8706     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8707     <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8708     Removing an instrument</h3>
8709    
8710     <p>The front-end can remove a particular instrument
8711     from the instruments database by sending the following command:
8712     </p>
8713     <p>
8714     </p>
8715     <blockquote class="text">
8716     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8717     </p>
8718     </blockquote><p>
8719    
8720     </p>
8721     <p>Where &lt;instr_path&gt; is the absolute path name
8722     (in the instruments database) of the instrument to remove.
8723     </p>
8724     <p>Possible Answers:
8725     </p>
8726     <p>
8727     </p>
8728     <blockquote class="text">
8729     <p>"OK" -
8730     </p>
8731     <blockquote class="text">
8732     <p>if the instrument is removed successfully
8733     </p>
8734     </blockquote>
8735    
8736    
8737     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8738     </p>
8739     <blockquote class="text">
8740     <p>if the given path does not exist or
8741     is a directory.
8742     </p>
8743     </blockquote>
8744    
8745    
8746     </blockquote><p>
8747    
8748     </p>
8749     <p>Examples:
8750     </p>
8751     <p>
8752     </p>
8753     <blockquote class="text">
8754     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8755     </p>
8756     <p>S: "OK"
8757     </p>
8758     </blockquote><p>
8759    
8760     </p>
8761     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8762     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8763     <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8764     Getting amount of instruments</h3>
8765    
8766     <p>The front-end can retrieve the current amount of
8767     instruments in a specific directory by sending the following command:
8768     </p>
8769     <p>
8770     </p>
8771     <blockquote class="text">
8772     <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8773     </p>
8774     </blockquote><p>
8775    
8776     </p>
8777     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8778     of the directory. If RECURSIVE is specified, the number of all
8779     instruments, including those located in subdirectories of the
8780     specified directory, will be returned.
8781     </p>
8782     <p>Possible Answers:
8783     </p>
8784     <p>
8785     </p>
8786     <blockquote class="text">
8787     <p>The current number of instruments
8788     in the specified directory.
8789     </p>
8790     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8791     </p>
8792     <blockquote class="text">
8793     <p>if the given directory does not exist.
8794     </p>
8795     </blockquote>
8796    
8797    
8798     </blockquote><p>
8799    
8800     </p>
8801     <p>Example:
8802     </p>
8803     <p>
8804     </p>
8805     <blockquote class="text">
8806     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8807     </p>
8808     <p>S: "2"
8809     </p>
8810     </blockquote><p>
8811    
8812     </p>
8813     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8814     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8815     <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8816     Listing all instruments in specific directory</h3>
8817    
8818     <p>The front-end can retrieve the current list of instruments
8819     in specific directory by sending the following command:
8820     </p>
8821     <p>
8822     </p>
8823     <blockquote class="text">
8824     <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8825     </p>
8826     </blockquote><p>
8827    
8828     </p>
8829     <p>Where &lt;dir&gt; should be replaced by the absolute path
8830     name of the directory. If RECURSIVE is specified, the absolute path
8831     names of all instruments, including those located in subdirectories
8832     of the specified directory, will be returned.
8833     </p>
8834     <p>Possible Answers:
8835     </p>
8836     <p>
8837     </p>
8838     <blockquote class="text">
8839     <p>A comma separated list of all instruments
8840     (encapsulated into apostrophes) in the specified directory.
8841     </p>
8842     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8843     </p>
8844     <blockquote class="text">
8845     <p>if the given directory does not exist.
8846     </p>
8847     </blockquote>
8848    
8849    
8850     </blockquote><p>
8851    
8852     </p>
8853     <p>Example:
8854     </p>
8855     <p>
8856     </p>
8857     <blockquote class="text">
8858     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8859     </p>
8860     <p>S: "'Bosendorfer 290','Steinway D'"
8861     </p>
8862     </blockquote><p>
8863    
8864     </p>
8865     <p>
8866     </p>
8867     <blockquote class="text">
8868     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8869     </p>
8870     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8871     </p>
8872     </blockquote><p>
8873    
8874     </p>
8875     <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8876     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8877     <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8878     Getting instrument information</h3>
8879    
8880     <p>The front-end can ask for the current settings of an
8881     instrument by sending the following command:
8882     </p>
8883     <p>
8884     </p>
8885     <blockquote class="text">
8886     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8887     </p>
8888     </blockquote><p>
8889    
8890     </p>
8891     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8892     name of the instrument the front-end is interested in.
8893     </p>
8894     <p>Possible Answers:
8895     </p>
8896     <p>
8897     </p>
8898     <blockquote class="text">
8899     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8900     Each answer line begins with the settings category name
8901     followed by a colon and then a space character &lt;SP&gt; and finally
8902     the info character string to that setting category. At the
8903     moment the following categories are defined:
8904     </p>
8905     <p>
8906     </p>
8907     <blockquote class="text">
8908     <p>INSTRUMENT_FILE -
8909     </p>
8910     <blockquote class="text">
8911     <p>File name of the instrument.
8912     Note that the character string may contain
8913     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8914     </p>
8915     </blockquote>
8916    
8917    
8918     <p>INSTRUMENT_NR -
8919     </p>
8920     <blockquote class="text">
8921     <p>Index of the instrument within the file.
8922     </p>
8923     </blockquote>
8924    
8925    
8926     <p>FORMAT_FAMILY -
8927     </p>
8928     <blockquote class="text">
8929     <p>The format family of the instrument.
8930     </p>
8931     </blockquote>
8932    
8933    
8934     <p>FORMAT_VERSION -
8935     </p>
8936     <blockquote class="text">
8937     <p>The format version of the instrument.
8938     </p>
8939     </blockquote>
8940    
8941    
8942     <p>SIZE -
8943     </p>
8944     <blockquote class="text">
8945     <p>The size of the instrument in bytes.
8946     </p>
8947     </blockquote>
8948    
8949    
8950     <p>CREATED -
8951     </p>
8952     <blockquote class="text">
8953     <p>The date and time when the instrument is added
8954     in the instruments database, represented in
8955     "YYYY-MM-DD HH:MM:SS" format
8956     </p>
8957     </blockquote>
8958    
8959    
8960     <p>MODIFIED -
8961     </p>
8962     <blockquote class="text">
8963     <p>The date and time of the last modification of the
8964     instrument's database settings, represented in
8965     "YYYY-MM-DD HH:MM:SS" format
8966     </p>
8967     </blockquote>
8968    
8969    
8970     <p>DESCRIPTION -
8971     </p>
8972     <blockquote class="text">
8973     <p>A brief description of the instrument.
8974     Note that the character string may contain
8975     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8976     </p>
8977     </blockquote>
8978    
8979    
8980     <p>IS_DRUM -
8981     </p>
8982     <blockquote class="text">
8983     <p>either true or false, determines whether the
8984     instrument is a drumkit or a chromatic instrument
8985     </p>
8986     </blockquote>
8987    
8988    
8989     <p>PRODUCT -
8990     </p>
8991     <blockquote class="text">
8992     <p>The product title of the instrument.
8993     Note that the character string may contain
8994     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8995     </p>
8996     </blockquote>
8997    
8998    
8999     <p>ARTISTS -
9000     </p>
9001     <blockquote class="text">
9002     <p>Lists the artist names.
9003     Note that the character string may contain
9004     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9005     </p>
9006     </blockquote>
9007    
9008    
9009     <p>KEYWORDS -
9010     </p>
9011     <blockquote class="text">
9012     <p>Provides a list of keywords that refer to the instrument.
9013     Keywords are separated with semicolon and blank.
9014     Note that the character string may contain
9015     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9016     </p>
9017     </blockquote>
9018    
9019    
9020     </blockquote>
9021    
9022    
9023     </blockquote><p>
9024    
9025     </p>
9026     <p>The mentioned fields above don't have to be in particular order.
9027     </p>
9028     <p>Example:
9029     </p>
9030     <p>
9031     </p>
9032     <blockquote class="text">
9033     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9034     </p>
9035     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9036     </p>
9037     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9038     </p>
9039     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9040     </p>
9041     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9042     </p>
9043     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9044     </p>
9045     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9046     </p>
9047     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9048     </p>
9049     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9050     </p>
9051     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9052     </p>
9053     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9054     </p>
9055     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9056     </p>
9057     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9058     </p>
9059     <p>&nbsp;&nbsp;&nbsp;"."
9060     </p>
9061     </blockquote><p>
9062    
9063     </p>
9064     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9065     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9066     <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9067     Renaming an instrument</h3>
9068    
9069     <p>The front-end can alter the name of a specific
9070     instrument by sending the following command:
9071     </p>
9072     <p>
9073     </p>
9074     <blockquote class="text">
9075     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9076     </p>
9077     </blockquote><p>
9078    
9079     </p>
9080     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9081     &lt;name&gt; is the new name for that instrument.
9082     </p>
9083     <p>Possible Answers:
9084     </p>
9085     <p>
9086     </p>
9087     <blockquote class="text">
9088     <p>"OK" -
9089     </p>
9090     <blockquote class="text">
9091     <p>on success
9092     </p>
9093     </blockquote>
9094    
9095    
9096     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9097     </p>
9098     <blockquote class="text">
9099     <p>in case the given instrument does not exists,
9100     or if an instrument with name equal to the new
9101     name already exists.
9102     </p>
9103     </blockquote>
9104    
9105    
9106     </blockquote><p>
9107    
9108     </p>
9109     <p>Example:
9110     </p>
9111     <p>
9112     </p>
9113     <blockquote class="text">
9114     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9115     </p>
9116     <p>S: "OK"
9117     </p>
9118     </blockquote><p>
9119    
9120     </p>
9121     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9122     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9123     <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9124     Moving an instrument</h3>
9125    
9126     <p>The front-end can move a specific instrument to another directory by
9127     sending the following command:
9128     </p>
9129     <p>
9130     </p>
9131     <blockquote class="text">
9132     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9133     </p>
9134     </blockquote><p>
9135    
9136     </p>
9137     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9138     to move and &lt;dst&gt; is the directory where the instrument will
9139     be moved to.
9140     </p>
9141     <p>Possible Answers:
9142     </p>
9143     <p>
9144     </p>
9145     <blockquote class="text">
9146     <p>"OK" -
9147     </p>
9148     <blockquote class="text">
9149     <p>on success
9150     </p>
9151     </blockquote>
9152    
9153    
9154     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9155     </p>
9156     <blockquote class="text">
9157     <p>in case the given instrument does not exists,
9158     or if an instrument with name equal to the name of the
9159     specified instrument already exists in the destination
9160     directory.
9161     </p>
9162     </blockquote>
9163    
9164    
9165     </blockquote><p>
9166    
9167     </p>
9168     <p>Example:
9169     </p>
9170     <p>
9171     </p>
9172     <blockquote class="text">
9173     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9174     </p>
9175     <p>S: "OK"
9176     </p>
9177     </blockquote><p>
9178    
9179     </p>
9180     <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9181     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9182     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9183     Copying instruments</h3>
9184    
9185     <p>The front-end can copy a specific instrument to another directory by
9186     sending the following command:
9187     </p>
9188     <p>
9189     </p>
9190     <blockquote class="text">
9191     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9192     </p>
9193     </blockquote><p>
9194    
9195     </p>
9196     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9197     to copy and &lt;dst&gt; is the directory where the instrument will
9198     be copied to.
9199     </p>
9200     <p>Possible Answers:
9201     </p>
9202     <p>
9203     </p>
9204     <blockquote class="text">
9205     <p>"OK" -
9206     </p>
9207     <blockquote class="text">
9208     <p>on success
9209     </p>
9210     </blockquote>
9211    
9212    
9213     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9214     </p>
9215     <blockquote class="text">
9216     <p>in case the given instrument does not exists,
9217     or if an instrument with name equal to the name of the
9218     specified instrument already exists in the destination
9219     directory.
9220     </p>
9221     </blockquote>
9222    
9223    
9224     </blockquote><p>
9225    
9226     </p>
9227     <p>Example:
9228     </p>
9229     <p>
9230     </p>
9231     <blockquote class="text">
9232     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9233     </p>
9234     <p>S: "OK"
9235     </p>
9236     </blockquote><p>
9237    
9238     </p>
9239     <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9240     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9241     <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9242     Changing the description of instrument</h3>
9243    
9244     <p>The front-end can alter the description of a specific
9245     instrument by sending the following command:
9246     </p>
9247     <p>
9248     </p>
9249     <blockquote class="text">
9250     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9251     </p>
9252     </blockquote><p>
9253    
9254     </p>
9255     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9256     &lt;desc&gt; is the new description for the instrument
9257     (encapsulated into apostrophes, supporting escape sequences as described in chapter
9258     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9259     </p>
9260     <p>Possible Answers:
9261     </p>
9262     <p>
9263     </p>
9264     <blockquote class="text">
9265     <p>"OK" -
9266     </p>
9267     <blockquote class="text">
9268     <p>on success
9269     </p>
9270     </blockquote>
9271    
9272    
9273     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9274     </p>
9275     <blockquote class="text">
9276     <p>in case the given instrument does not exists.
9277     </p>
9278     </blockquote>
9279    
9280    
9281     </blockquote><p>
9282    
9283     </p>
9284     <p>Example:
9285     </p>
9286     <p>
9287     </p>
9288     <blockquote class="text">
9289     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9290     </p>
9291     <p>S: "OK"
9292     </p>
9293     </blockquote><p>
9294    
9295     </p>
9296     <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9297     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9298     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9299     Finding instruments</h3>
9300    
9301     <p>The front-end can search for instruments
9302     in specific directory by sending the following command:
9303     </p>
9304     <p>
9305     </p>
9306     <blockquote class="text">
9307     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9308     </p>
9309     </blockquote><p>
9310    
9311     </p>
9312     <p>Where &lt;dir&gt; should be replaced by the absolute path
9313     name of the directory to search in. If NON_RECURSIVE is specified, the
9314     directories located in subdirectories of the specified directory will not
9315     be searched. &lt;criteria-list&gt; is a list of search criterias
9316     in form of "key1=val1 key2=val2 ...". The following criterias are
9317     allowed:
9318     </p>
9319     <p>
9320    
9321     <p>NAME='&lt;search-string&gt;'
9322     </p>
9323     <blockquote class="text">
9324     <p>Restricts the search to instruments, which names
9325     satisfy the supplied search string (encapsulated into apostrophes,
9326     supporting escape sequences as described in chapter
9327     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9328     </p>
9329     </blockquote><p>
9330    
9331     </p>
9332    
9333    
9334     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9335     </p>
9336     <blockquote class="text">
9337     <p>Restricts the search to instruments, which
9338     size is in the specified range. If &lt;min&gt; is omitted,
9339     the search results are restricted to instruments with size less then
9340     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9341     search is restricted to instruments with size greater then
9342     or equal to &lt;min&gt;.
9343     </p>
9344     </blockquote><p>
9345    
9346     </p>
9347    
9348    
9349     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9350     </p>
9351     <blockquote class="text">
9352     <p>Restricts the search to instruments, which creation
9353     date satisfies the specified period, where &lt;date-after&gt;
9354     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9355     If &lt;date-after&gt; is omitted the search is restricted to
9356     instruments created before &lt;date-before&gt;. If
9357     &lt;date-before&gt; is omitted, the search is restricted
9358     to instruments created after &lt;date-after&gt;.
9359     </p>
9360     </blockquote><p>
9361    
9362     </p>
9363    
9364    
9365     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9366     </p>
9367     <blockquote class="text">
9368     <p>Restricts the search to instruments, which
9369     date of last modification satisfies the specified period, where
9370     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9371     format. If &lt;date-after&gt; is omitted the search is restricted to
9372     instruments, which are last modified before &lt;date-before&gt;. If
9373     &lt;date-before&gt; is omitted, the search is restricted to instruments,
9374     which are last modified after &lt;date-after&gt;.
9375     </p>
9376     </blockquote><p>
9377    
9378     </p>
9379    
9380    
9381     <p>DESCRIPTION='&lt;search-string&gt;'
9382     </p>
9383     <blockquote class="text">
9384     <p>Restricts the search to instruments with description
9385     that satisfies the supplied search string (encapsulated into apostrophes,
9386     supporting escape sequences as described in chapter
9387     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9388     </p>
9389     </blockquote><p>
9390    
9391     </p>
9392    
9393    
9394     <p>PRODUCT='&lt;search-string&gt;'
9395     </p>
9396     <blockquote class="text">
9397     <p>Restricts the search to instruments with product info
9398     that satisfies the supplied search string (encapsulated into apostrophes,
9399     supporting escape sequences as described in chapter
9400     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9401     </p>
9402     </blockquote><p>
9403    
9404     </p>
9405    
9406    
9407     <p>ARTISTS='&lt;search-string&gt;'
9408     </p>
9409     <blockquote class="text">
9410     <p>Restricts the search to instruments with artists info
9411     that satisfies the supplied search string (encapsulated into apostrophes,
9412     supporting escape sequences as described in chapter
9413     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9414     </p>
9415     </blockquote><p>
9416    
9417     </p>
9418    
9419    
9420     <p>KEYWORDS='&lt;search-string&gt;'
9421     </p>
9422     <blockquote class="text">
9423     <p>Restricts the search to instruments with keyword list
9424     that satisfies the supplied search string (encapsulated into apostrophes,
9425     supporting escape sequences as described in chapter
9426     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9427     </p>
9428     </blockquote><p>
9429    
9430     </p>
9431    
9432    
9433     <p>IS_DRUM=true | false
9434     </p>
9435     <blockquote class="text">
9436     <p>Either true or false. Restricts the search to
9437     drum kits or chromatic instruments.
9438     </p>
9439     </blockquote><p>
9440    
9441     </p>
9442    
9443    
9444     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9445     </p>
9446     <blockquote class="text">
9447     <p>Restricts the search to instruments of the supplied format families,
9448     where &lt;format-list&gt; is a comma separated list of format families.
9449     </p>
9450     </blockquote><p>
9451    
9452     </p>
9453    
9454    
9455     <p>Where &lt;search-string&gt; is either a regular expression, or a
9456     word list separated with spaces for OR search and with '+' for AND search.
9457     </p>
9458     <p>Possible Answers:
9459     </p>
9460     <p>
9461     </p>
9462     <blockquote class="text">
9463     <p>A comma separated list with the absolute path names (encapsulated into
9464     apostrophes) of all instruments in the specified directory that satisfy
9465     the supplied search criterias.
9466     </p>
9467     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9468     </p>
9469     <blockquote class="text">
9470     <p>if the given directory does not exist.
9471     </p>
9472     </blockquote>
9473    
9474    
9475     </blockquote><p>
9476    
9477     </p>
9478     <p>Example:
9479     </p>
9480     <p>
9481     </p>
9482     <blockquote class="text">
9483     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9484     </p>
9485     <p>S: "'/Piano Collection/Bosendorfer 290'"
9486     </p>
9487     </blockquote><p>
9488    
9489     </p>
9490     <p>
9491     </p>
9492     <blockquote class="text">
9493     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9494     </p>
9495     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9496     </p>
9497     </blockquote><p>
9498    
9499     </p>
9500     <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9501     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9502     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9503     Getting job status information</h3>
9504    
9505     <p>The front-end can ask for the current status of a
9506     particular database instruments job by sending the following command:
9507     </p>
9508     <p>
9509     </p>
9510     <blockquote class="text">
9511     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9512     </p>
9513     </blockquote><p>
9514    
9515     </p>
9516     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9517     of the job the front-end is interested in.
9518     </p>
9519     <p>Possible Answers:
9520     </p>
9521     <p>
9522     </p>
9523     <blockquote class="text">
9524     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9525     Each answer line begins with the settings category name
9526     followed by a colon and then a space character &lt;SP&gt; and finally
9527     the info character string to that setting category. At the
9528     moment the following categories are defined:
9529     </p>
9530     <p>
9531     </p>
9532     <blockquote class="text">
9533     <p>FILES_TOTAL -
9534     </p>
9535     <blockquote class="text">
9536     <p>The total number of files scheduled for scanning
9537     </p>
9538     </blockquote>
9539    
9540    
9541     <p>FILES_SCANNED -
9542     </p>
9543     <blockquote class="text">
9544     <p>The current number of scanned files
9545     </p>
9546     </blockquote>
9547    
9548    
9549     <p>SCANNING -
9550     </p>
9551     <blockquote class="text">
9552     <p>The absolute path name of the file which is currently
9553     being scanned
9554     </p>
9555     </blockquote>
9556    
9557    
9558     <p>STATUS -
9559     </p>
9560     <blockquote class="text">
9561     <p>An integer value between 0 and 100 indicating the
9562     scanning progress percentage of the file which is
9563     currently being scanned
9564     </p>
9565     </blockquote>
9566    
9567    
9568     </blockquote>
9569    
9570    
9571     </blockquote><p>
9572    
9573     </p>
9574     <p>The mentioned fields above don't have to be in particular order.
9575     </p>
9576     <p>Example:
9577     </p>
9578     <p>
9579     </p>
9580     <blockquote class="text">
9581     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9582     </p>
9583     <p>S: "FILES_TOTAL: 12"
9584     </p>
9585     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9586     </p>
9587     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9588     </p>
9589     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9590     </p>
9591     <p>&nbsp;&nbsp;&nbsp;"."
9592     </p>
9593     </blockquote><p>
9594    
9595     </p>
9596     <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9597     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9598     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9599     Formatting the instruments database</h3>
9600    
9601     <p>The front-end can remove all instruments and directories and re-create
9602     the instruments database structure (e.g., in case of a database corruption)
9603     by sending the following command:
9604     </p>
9605     <p>
9606     </p>
9607     <blockquote class="text">
9608     <p>FORMAT INSTRUMENTS_DB
9609     </p>
9610     </blockquote><p>
9611    
9612     </p>
9613     <p>Possible Answers:
9614     </p>
9615     <p>
9616     </p>
9617     <blockquote class="text">
9618     <p>"OK" -
9619     </p>
9620     <blockquote class="text">
9621     <p>on success
9622     </p>
9623     </blockquote>
9624    
9625    
9626     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9627     </p>
9628     <blockquote class="text">
9629     <p>If the formatting of the instruments database
9630     failed.
9631     </p>
9632     </blockquote>
9633    
9634    
9635     </blockquote><p>
9636    
9637     </p>
9638     <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9639     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9640     <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9641     Checking for lost instrument files</h3>
9642    
9643     <p>The front-end can retrieve the list of all instrument files in the instruments database
9644     that don't exist in the filesystem by sending the following command:
9645     </p>
9646     <p>
9647     </p>
9648     <blockquote class="text">
9649     <p>FIND LOST DB_INSTRUMENT_FILES
9650     </p>
9651     </blockquote><p>
9652    
9653     </p>
9654     <p>Possible Answers:
9655     </p>
9656     <p>
9657     </p>
9658     <blockquote class="text">
9659     <p>A comma separated list with the absolute path names
9660     (encapsulated into apostrophes) of all lost instrument files.
9661     </p>
9662     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9663     </p>
9664     <blockquote class="text">
9665     <p>in case it failed, providing an appropriate error code and error message.
9666     </p>
9667     </blockquote>
9668    
9669    
9670     </blockquote><p>
9671    
9672     </p>
9673     <p>Example:
9674     </p>
9675     <p>
9676     </p>
9677     <blockquote class="text">
9678     <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9679     </p>
9680     <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9681     </p>
9682     </blockquote><p>
9683    
9684     </p>
9685     <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9686     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9687     <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9688     Replacing an instrument file</h3>
9689    
9690     <p>The front-end can substitute all occurrences of an instrument file
9691     in the instruments database with a new one by sending the following command:
9692     </p>
9693     <p>
9694     </p>
9695     <blockquote class="text">
9696     <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9697     </p>
9698     </blockquote><p>
9699    
9700     </p>
9701     <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9702     to substitute with &lt;new_path&gt;.
9703     </p>
9704     <p>Possible Answers:
9705     </p>
9706     <p>
9707     </p>
9708     <blockquote class="text">
9709     <p>"OK" -
9710     </p>
9711     <blockquote class="text">
9712     <p>on success
9713     </p>
9714     </blockquote>
9715    
9716    
9717     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9718     </p>
9719     <blockquote class="text">
9720     <p>in case it failed, providing an appropriate error code and error message.
9721     </p>
9722     </blockquote>
9723    
9724    
9725     </blockquote><p>
9726    
9727     </p>
9728     <p>Example:
9729     </p>
9730     <p>
9731     </p>
9732     <blockquote class="text">
9733     <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9734     </p>
9735     <p>S: "OK"
9736     </p>
9737     </blockquote><p>
9738    
9739     </p>
9740     <a name="editing_instruments"></a><br /><hr />
9741     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9742     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9743     Editing Instruments</h3>
9744    
9745     <p>The sampler allows to edit instruments while playing with the
9746     sampler by spawning an external (3rd party) instrument editor
9747     application for a given instrument. The 3rd party instrument
9748     editor applications have to place a respective plugin DLL file
9749     into the sampler's plugins directory. The sampler will
9750     automatically try to load all plugin DLLs in that directory on
9751     startup and only on startup!
9752     </p>
9753     <p>At the moment there is only one command for this feature set,
9754     but this will most probably change in future.
9755     </p>
9756     <a name="EDIT INSTRUMENT"></a><br /><hr />
9757     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9758     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9759     Opening an appropriate instrument editor application</h3>
9760    
9761     <p>The front-end can request to open an appropriate instrument
9762     editor application by sending the following command:
9763     </p>
9764     <p>
9765     </p>
9766     <blockquote class="text">
9767     <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9768     </p>
9769     </blockquote><p>
9770    
9771     </p>
9772     <p>Where &lt;sampler-channel&gt; should be replaced by the
9773     number of the sampler channel as given by the
9774     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9775     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9776     command.
9777     </p>
9778     <p>The sampler will try to ask all registered instrument
9779     editors (or to be more specific: their sampler plugins)
9780     whether they are capable to handle the instrument on the
9781     given sampler channel. The sampler will simply use the first
9782     instrument editor application which replied with a positive
9783     answer and spawn that instrument editor application within
9784     the sampler's process and provide that application access
9785     to the instrument's data structures, so both applications
9786     can share and access the same instruments data at the same
9787     time, thus allowing to immediately hear changes with the
9788     sampler made by the instrument editor.
9789     </p>
9790     <p>Note: consequently instrument editors are always spawned
9791     locally on the same machine where the sampler is running
9792     on!
9793     </p>
9794     <p>Possible Answers:
9795     </p>
9796     <p>
9797     </p>
9798     <blockquote class="text">
9799     <p>"OK" -
9800     </p>
9801     <blockquote class="text">
9802     <p>when an appropriate instrument editor was
9803     launched
9804     </p>
9805     </blockquote>
9806    
9807    
9808     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9809     </p>
9810     <blockquote class="text">
9811     <p>when an appropriate instrument editor was
9812     launched, but there are noteworthy issues
9813     </p>
9814     </blockquote>
9815    
9816    
9817     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9818     </p>
9819     <blockquote class="text">
9820     <p>when an appropriate instrument editor
9821     could not be launched
9822     </p>
9823     </blockquote>
9824    
9825    
9826     </blockquote><p>
9827    
9828     </p>
9829     <p>Examples:
9830     </p>
9831     <p>
9832     </p>
9833     <blockquote class="text">
9834     <p>C: "EDIT CHANNEL INSTRUMENT 0"
9835     </p>
9836     <p>S: "OK"
9837     </p>
9838     </blockquote><p>
9839    
9840     </p>
9841     <a name="file_management"></a><br /><hr />
9842     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9843     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9844     Managing Files</h3>
9845    
9846     <p>You can query detailed informations about files located
9847     at the same system where the sampler instance is running on.
9848     Using this command set allows to retrieve file informations
9849     even remotely from another machine.
9850     </p>
9851     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9852     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9853     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9854     Retrieving amount of instruments of a file</h3>
9855    
9856     <p>The front-end can retrieve the amount of instruments
9857     within a given instrument file by sending the
9858     following command:
9859     </p>
9860     <p>
9861     </p>
9862     <blockquote class="text">
9863     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9864     </p>
9865     </blockquote><p>
9866    
9867     </p>
9868     <p>Where &lt;filename&gt; is the name of the instrument
9869     file (encapsulated into apostrophes, supporting escape
9870     sequences as described in chapter
9871     "<a class='info' href='#character_set'>Character Set and Escape
9872     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9873     </p>
9874     <p>The sampler will try to ask all sampler engines,
9875     whether they support the given file and ask the first
9876     engine with a positive answer for the amount of
9877     instruments.
9878     </p>
9879     <p>Possible Answers:
9880     </p>
9881     <p>
9882     </p>
9883     <blockquote class="text">
9884     <p>On success, the sampler will answer by
9885     returning the amount of instruments.
9886    
9887     </p>
9888     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9889     </p>
9890     <blockquote class="text">
9891     <p>if the file could not be handled
9892     </p>
9893     </blockquote>
9894    
9895    
9896     </blockquote><p>
9897    
9898     </p>
9899     <p>Examples:
9900     </p>
9901     <p>
9902     </p>
9903     <blockquote class="text">
9904     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9905     </p>
9906     <p>S: "10"
9907     </p>
9908     </blockquote><p>
9909    
9910     </p>
9911     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9912     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9913     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9914     Retrieving all instruments of a file</h3>
9915    
9916     <p>The front-end can retrieve a list of all instruments
9917     within a given instrument file by sending the
9918     following command:
9919     </p>
9920     <p>
9921     </p>
9922     <blockquote class="text">
9923     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9924     </p>
9925     </blockquote><p>
9926    
9927     </p>
9928     <p>Where &lt;filename&gt; is the name of the instrument
9929     file (encapsulated into apostrophes, supporting escape
9930     sequences as described in chapter
9931     "<a class='info' href='#character_set'>Character Set and Escape
9932     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9933     </p>
9934     <p>The sampler will try to ask all sampler engines,
9935     whether they support the given file and ask the first
9936     engine with a positive answer for a list of IDs for the
9937     instruments in the given file.
9938     </p>
9939     <p>Possible Answers:
9940     </p>
9941     <p>
9942     </p>
9943     <blockquote class="text">
9944     <p>On success, the sampler will answer by
9945     returning a comma separated list of
9946     instrument IDs.
9947    
9948     </p>
9949     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9950     </p>
9951     <blockquote class="text">
9952     <p>if the file could not be handled
9953     </p>
9954     </blockquote>
9955    
9956    
9957     </blockquote><p>
9958    
9959     </p>
9960     <p>Examples:
9961     </p>
9962     <p>
9963     </p>
9964     <blockquote class="text">
9965     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9966     </p>
9967     <p>S: "0,1,2,3,4,5,6,7,8,9"
9968     </p>
9969     </blockquote><p>
9970    
9971     </p>
9972     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9973     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9974     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9975     Retrieving informations about one instrument in a file</h3>
9976    
9977     <p>The front-end can retrieve detailed informations
9978     about a specific instrument within a given instrument
9979     file by sending the following command:
9980     </p>
9981     <p>
9982     </p>
9983     <blockquote class="text">
9984     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9985     &lt;instr-id&gt;
9986     </p>
9987     </blockquote><p>
9988    
9989     </p>
9990     <p>Where &lt;filename&gt; is the name of the instrument
9991     file (encapsulated into apostrophes, supporting escape
9992     sequences as described in chapter
9993     "<a class='info' href='#character_set'>Character Set and Escape
9994     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9995     instrument ID as returned by the
9996     <a class='info' href='#LIST FILE INSTRUMENTS'>"LIST FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving all instruments of a file</span><span>)</span></a> command.
9997     </p>
9998     <p>The sampler will try to ask all sampler engines,
9999     whether they support the given file and ask the first
10000     engine with a positive answer for informations about the
10001     specific instrument in the given file.
10002     </p>
10003     <p>Possible Answers:
10004     </p>
10005     <p>
10006     </p>
10007     <blockquote class="text">
10008     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10009     Each answer line begins with the settings category name
10010     followed by a colon and then a space character &lt;SP&gt; and finally
10011     the info character string to that setting category. At the
10012     moment the following categories are defined:
10013     </p>
10014     <p>
10015     </p>
10016     <blockquote class="text">
10017     <p>NAME -
10018     </p>
10019     <blockquote class="text">
10020     <p>name of the instrument as
10021     stored in the instrument file
10022     </p>
10023     </blockquote>
10024    
10025    
10026     <p>FORMAT_FAMILY -
10027     </p>
10028     <blockquote class="text">
10029     <p>name of the sampler format
10030     of the given instrument
10031     </p>
10032     </blockquote>
10033    
10034    
10035     <p>FORMAT_VERSION -
10036     </p>
10037     <blockquote class="text">
10038     <p>version of the sampler format
10039     the instrumen is stored as
10040     </p>
10041     </blockquote>
10042    
10043    
10044     <p>PRODUCT -
10045     </p>
10046     <blockquote class="text">
10047     <p>official product name of the
10048     instrument as stored in the file
10049    
10050     </p>
10051     </blockquote>
10052    
10053    
10054     <p>ARTISTS -
10055     </p>
10056     <blockquote class="text">
10057     <p>artists / sample library
10058     vendor of the instrument
10059     </p>
10060     </blockquote>
10061    
10062    
10063     <p>KEY_BINDINGS -
10064     </p>
10065     <blockquote class="text">
10066     <p>comma separated list of integer values representing
10067     the instrument's key mapping in the range between 0 .. 127,
10068     reflecting the analog meaning of the MIDI specification.
10069     </p>
10070     </blockquote>
10071    
10072    
10073     <p>KEYSWITCH_BINDINGS -
10074     </p>
10075     <blockquote class="text">
10076     <p>comma separated list of integer values representing
10077     the instrument's keyswitch mapping in the range between 0 .. 127,
10078     reflecting the analog meaning of the MIDI specification.
10079     </p>
10080     </blockquote>
10081    
10082    
10083     </blockquote>
10084    
10085    
10086     </blockquote><p>
10087    
10088     </p>
10089     <p>The mentioned fields above don't have to be in particular order.
10090     </p>
10091     <p>Example:
10092     </p>
10093     <p>
10094     </p>
10095     <blockquote class="text">
10096     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10097     </p>
10098     <p>S: "NAME: Lunatic Loops"
10099     </p>
10100     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10101     </p>
10102     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10103     </p>
10104     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10105     </p>
10106     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10107     </p>
10108     <p>&nbsp;&nbsp;&nbsp;"."
10109     </p>
10110     </blockquote><p>
10111    
10112     </p>
10113     <a name="effects"></a><br /><hr />
10114     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10115     <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10116     Managing Effects</h3>
10117    
10118     <p>Audio effects (e.g. reverb, delay, compression) can be
10119     applied to the audio signals generated by the sampler. The
10120     sampler usually provides a set of internal audio effects for
10121     this task. The exact set of effects depends on the availability
10122     of third party effect plugins installed on the system where the
10123     sampler runs on.
10124     </p>
10125     <p>At the moment only "send effects" are supported. Support for
10126     "insert effects" and "master effects" is planned to be added at
10127     a later point.
10128     </p>
10129     <p>The following commands allow to retrieve the set of internal
10130     effects available to the sampler, detailed informations about
10131     those effects and to create and destroy instances of such
10132     effects. After an instance of an effect is created, the effect
10133     instance can be inserted into the audio signal path of the
10134     sampler, e.g. as send effect.
10135     </p>
10136     <p>The sampler allows to create an arbitrary amount of so called
10137     send effect chains. Each effect chain can host an arbitrary
10138     amount of effect instances. The output of the first effect
10139     instance in an effect chain is fed to the input of the second
10140     effect instance of the chain and so on. So effects in one chain
10141     are processed sequentially. Send effect chains however are
10142     processed in parallel to other send effect chains. Audio signals
10143     of sampler channels are fed to send effects by creating FX sends
10144     to the respective sampler channel and assigning a destination
10145     send effect to that FX by using the
10146     <a class='info' href='#SET FX_SEND EFFECT'>"SET FX_SEND EFFECT"<span> (</span><span class='info'>Assigning destination effect to an effect send</span><span>)</span></a>
10147     command. The latter allows to route the FX send to the beginning
10148     of a send effect chain, as well as directly to any other
10149     position of the send effect chain.
10150     </p>
10151     <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10152     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10153     <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10154     Retrieve amount of available effects</h3>
10155    
10156     <p>The front-end can retrieve the amount of internal
10157     effects, available to the sampler by sending
10158     the following command:
10159     </p>
10160     <p>
10161     </p>
10162     <blockquote class="text">
10163     <p>GET AVAILABLE_EFFECTS
10164     </p>
10165     </blockquote><p>
10166    
10167     </p>
10168     <p>Possible Answers:
10169     </p>
10170     <p>
10171     </p>
10172     <blockquote class="text">
10173     <p>The sampler will answer by returning the current
10174     number of effects available to the sampler.
10175     </p>
10176     </blockquote><p>
10177    
10178     </p>
10179     <p>Examples:
10180     </p>
10181     <p>
10182     </p>
10183     <blockquote class="text">
10184     <p>C: "GET AVAILABLE_EFFECTS"
10185     </p>
10186     <p>S: "129"
10187     </p>
10188     </blockquote><p>
10189    
10190     </p>
10191     <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10192     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10193     <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10194     Get list of available effects</h3>
10195    
10196     <p>The set of available internal effects can change at
10197     runtime. The front-end can retrieve the list of internal
10198     effects, available to the sampler by sending the following
10199     command:
10200     </p>
10201     <p>
10202     </p>
10203     <blockquote class="text">
10204     <p>LIST AVAILABLE_EFFECTS
10205     </p>
10206     </blockquote><p>
10207    
10208     </p>
10209     <p>Possible Answers:
10210     </p>
10211     <p>
10212     </p>
10213     <blockquote class="text">
10214     <p>The sampler will answer by returning a comma
10215     separated list with numerical IDs of effects. Note:
10216     the numercial ID of an effect is generated by the
10217     sampler for the current moment. The numerical ID of
10218     the same effect can change at runtime, e.g. when the
10219     user requests a rescan of available effect plugins.
10220    
10221     </p>
10222     </blockquote><p>
10223    
10224     </p>
10225     <p>Example:
10226     </p>
10227     <p>
10228     </p>
10229     <blockquote class="text">
10230     <p>C: "LIST AVAILABLE_EFFECTS"
10231     </p>
10232     <p>S: "5,6,7,120,121,122,123,124"
10233     </p>
10234     </blockquote><p>
10235    
10236     </p>
10237     <a name="GET EFFECT INFO"></a><br /><hr />
10238     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10239     <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10240     Retrieving general information about an effect</h3>
10241    
10242     <p>The front-end can ask for general informations about an
10243     effect by sending the following command:
10244     </p>
10245     <p>
10246     </p>
10247     <blockquote class="text">
10248     <p>GET EFFECT INFO &lt;effect-index&gt;
10249     </p>
10250     </blockquote><p>
10251    
10252     </p>
10253     <p>Where &lt;effect-index&gt; is the numerical ID of an
10254     effect as returned by the
10255     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10256     command.
10257     </p>
10258     <p>Possible Answers:
10259     </p>
10260     <p>
10261     </p>
10262     <blockquote class="text">
10263     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10264     Each answer line begins with the effect information
10265     category name, followed by a colon and then a space
10266     character &lt;SP&gt; and finally the info character
10267     string to that effect information category. At the
10268     moment the following categories are defined:
10269     </p>
10270     <p>
10271     </p>
10272     <blockquote class="text">
10273     <p>SYSTEM -
10274     </p>
10275     <blockquote class="text">
10276     <p>name of the effect plugin system
10277     the effect is based on
10278     (e.g. "LADSPA")
10279     </p>
10280     </blockquote>
10281    
10282    
10283     <p>MODULE -
10284     </p>
10285     <blockquote class="text">
10286     <p>module of the effect plugin
10287     system that contains this effect,
10288     the module is usually the
10289     dynamic-linked library (DLL)
10290     filename of the effect plugin,
10291     including full path (note that this
10292     filename may contain
10293     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10294     </p>
10295     </blockquote>
10296    
10297    
10298     <p>NAME -
10299     </p>
10300     <blockquote class="text">
10301     <p>character string defining the
10302     unique name of the effect within its
10303     module (note that the character
10304     string may contain
10305     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10306     </p>
10307     </blockquote>
10308    
10309    
10310     <p>DESCRIPTION -
10311     </p>
10312     <blockquote class="text">
10313     <p>human readable name of the
10314     effect, intended to be displayed in
10315     user interfaces (note that the
10316     character string may contain
10317     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10318     </p>
10319     </blockquote>
10320    
10321    
10322     </blockquote>
10323    
10324    
10325     </blockquote><p>
10326    
10327     </p>
10328     <p>The mentioned fields above don't have to be in particular order.
10329     </p>
10330     <p>Example:
10331     </p>
10332     <p>
10333     </p>
10334     <blockquote class="text">
10335     <p>C: "GET EFFECT INFO 121"
10336     </p>
10337     <p>S: "SYSTEM: LADSPA"
10338     </p>
10339     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10340     </p>
10341     <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10342     </p>
10343     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10344     </p>
10345     <p>&nbsp;&nbsp;&nbsp;"."
10346     </p>
10347     </blockquote><p>
10348    
10349     </p>
10350     <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10351     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10352     <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10353     Creating an instance of an effect by its portable ID</h3>
10354    
10355     <p>The front-end can spawn an instance of the desired
10356     effect by sending the following command:
10357     </p>
10358     <p>
10359     </p>
10360     <blockquote class="text">
10361     <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10362     </p>
10363     </blockquote><p>
10364    
10365     </p>
10366     <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10367     &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10368     the "NAME" field as returned by the
10369     <a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
10370     command. The filename of argument &lt;module&gt; and the
10371     character string of argument &lt;effect-name&gt; may contain
10372     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10373     </p>
10374     <p>The sampler will try to load the requested effect and to
10375     create an instance of it. To allow loading the same effect
10376     on a different machine, probably even running a completely
10377     different operating system (e.g. Linux vs. Windows), the
10378     sampler tries to match &lt;module&gt; "softly". That means
10379     it first tries to find an effect that exactly matches the
10380     given &lt;module&gt; argument. If there is no exact match,
10381     the sampler will try to lower the restrictions on matching
10382     the &lt;module&gt; argument more and more, e.g. by ignoring
10383     upper / lower case differences and by ignoring the path of
10384     the DLL filename and file extension. If there is still no
10385     match at the end, the sampler will try to ignore the
10386     &lt;module&gt; argument completely and as a last resort
10387     search for an effect that only matches the given
10388     &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10389     </p>
10390     <p>Possible Answers:
10391     </p>
10392     <p>
10393     </p>
10394     <blockquote class="text">
10395     <p>"OK[&lt;effect-instance&gt;]" -
10396     </p>
10397     <blockquote class="text">
10398     <p>in case the effect instance was
10399     successfully created, where
10400     &lt;effect-instance&gt; is the numerical ID
10401     of the new effect instance
10402     </p>
10403     </blockquote>
10404    
10405    
10406     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10407     </p>
10408     <blockquote class="text">
10409     <p>in case the effect instance was spawned
10410     successfully, but there are noteworthy
10411     issue(s) related, providing an appropriate
10412     warning code and warning message
10413     </p>
10414     </blockquote>
10415    
10416    
10417     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10418     </p>
10419     <blockquote class="text">
10420     <p>if the effect could not be instantiated
10421     </p>
10422     </blockquote>
10423    
10424    
10425     </blockquote><p>
10426    
10427     </p>
10428     <p>Examples:
10429     </p>
10430     <p>
10431     </p>
10432     <blockquote class="text">
10433     <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10434     </p>
10435     <p>S: "OK[0]"
10436     </p>
10437     </blockquote><p>
10438    
10439     </p>
10440     <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10441     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10442     <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10443     Creating an instance of an effect by its numerical ID</h3>
10444    
10445     <p>The front-end can spawn an instance of the desired
10446     effect by sending the following command:
10447     </p>
10448     <p>
10449     </p>
10450     <blockquote class="text">
10451     <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10452     </p>
10453     </blockquote><p>
10454    
10455     </p>
10456     <p>Where &lt;effect-index&gt; is the numerical ID of the
10457     effect as returned by the
10458     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10459     command.
10460     </p>
10461     <p>The sampler will try to load the requested effect and to
10462     create an instance of it.
10463     </p>
10464     <p>Note: Since the numerical ID of a certain effect can
10465     change at any time, you should not use this command in
10466     LSCP files to restore a certain effect at a later time! To
10467     store a sampler session including all its effects, use the
10468     <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10469     version of "CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> instead! This
10470     allows to restore a sampler session with all its effects
10471     also on other machines, possibly even running a completely
10472     different operating system (e.g. Linux vs. Windows), with
10473     different plugin directories or plugin DLL names.
10474     </p>
10475     <p>Possible Answers:
10476     </p>
10477     <p>
10478     </p>
10479     <blockquote class="text">
10480     <p>"OK[&lt;effect-instance&gt;]" -
10481     </p>
10482     <blockquote class="text">
10483     <p>in case the effect instance was
10484     successfully created, where
10485     &lt;effect-instance&gt; is the numerical ID
10486     of the new effect instance
10487     </p>
10488     </blockquote>
10489    
10490    
10491     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10492     </p>
10493     <blockquote class="text">
10494     <p>in case the effect instance was spawned
10495     successfully, but there are noteworthy
10496     issue(s) related, providing an appropriate
10497     warning code and warning message
10498     </p>
10499     </blockquote>
10500    
10501    
10502     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10503     </p>
10504     <blockquote class="text">
10505     <p>if the effect could not be instantiated
10506     </p>
10507     </blockquote>
10508    
10509    
10510     </blockquote><p>
10511    
10512     </p>
10513     <p>Examples:
10514     </p>
10515     <p>
10516     </p>
10517     <blockquote class="text">
10518     <p>C: "CREATE EFFECT_INSTANCE 72"
10519     </p>
10520     <p>S: "OK[5]"
10521     </p>
10522     </blockquote><p>
10523    
10524     </p>
10525     <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10526     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10527     <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10528     Destroy an effect instance</h3>
10529    
10530     <p>The front-end can destroy an unusued effect instance and
10531     thus freeing it from memory by sending the following command:
10532     </p>
10533     <p>
10534     </p>
10535     <blockquote class="text">
10536     <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10537     </p>
10538     </blockquote><p>
10539    
10540     </p>
10541     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10542     effect instance as returned by the
10543     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
10544     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10545     command.
10546     </p>
10547     <p>The effect instance can only be destroyed if it's not
10548     used in any part of the sampler's audio signal path anymore.
10549     If the effect instance is still in use somewhere, trying to
10550     destroy the effect instance will result in an error
10551     message.
10552     </p>
10553     <p>Possible Answers:
10554     </p>
10555     <p>
10556     </p>
10557     <blockquote class="text">
10558     <p>"OK" -
10559     </p>
10560     <blockquote class="text">
10561     <p>in case the effect instance was successfully destroyed
10562     </p>
10563     </blockquote>
10564    
10565    
10566     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10567     </p>
10568     <blockquote class="text">
10569     <p>in case it failed, providing an appropriate error code and
10570     error message
10571     </p>
10572     </blockquote>
10573    
10574    
10575     </blockquote><p>
10576    
10577     </p>
10578     <p>Examples:
10579     </p>
10580     <p>
10581     </p>
10582     <blockquote class="text">
10583     <p>C: "DESTROY EFFECT_INSTANCE 5"
10584     </p>
10585     <p>S: "OK"
10586     </p>
10587     </blockquote><p>
10588    
10589     </p>
10590     <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10591     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10592     <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10593     Retrieve amount of effect instances</h3>
10594    
10595     <p>The front-end can retrieve the current amount of effect
10596     instances by sending the following command:
10597     </p>
10598     <p>
10599     </p>
10600     <blockquote class="text">
10601     <p>GET EFFECT_INSTANCES
10602     </p>
10603     </blockquote><p>
10604    
10605     </p>
10606     <p>Possible Answers:
10607     </p>
10608     <p>
10609     </p>
10610     <blockquote class="text">
10611     <p>The sampler will answer by returning the current
10612     number of effect instances created and not yet
10613     destroyed in the current sampler session.
10614     </p>
10615     </blockquote><p>
10616    
10617     </p>
10618     <p>Examples:
10619     </p>
10620     <p>
10621     </p>
10622     <blockquote class="text">
10623     <p>C: "GET EFFECT_INSTANCES"
10624     </p>
10625     <p>S: "14"
10626     </p>
10627     </blockquote><p>
10628    
10629     </p>
10630     <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
10631     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10632     <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
10633     Get list of effect instances</h3>
10634    
10635     <p>The front-end can retrieve the current list of effect
10636     instances by sending the following command:
10637     </p>
10638     <p>
10639     </p>
10640     <blockquote class="text">
10641     <p>LIST EFFECT_INSTANCES
10642     </p>
10643     </blockquote><p>
10644    
10645     </p>
10646     <p>Possible Answers:
10647     </p>
10648     <p>
10649     </p>
10650     <blockquote class="text">
10651     <p>The sampler will answer by returning a comma
10652     separated list with numerical IDs of effects
10653     instances.
10654    
10655     </p>
10656     </blockquote><p>
10657    
10658     </p>
10659     <p>Example:
10660     </p>
10661     <p>
10662     </p>
10663     <blockquote class="text">
10664     <p>C: "LIST EFFECT_INSTANCES"
10665     </p>
10666     <p>S: "9,11,14,15,16,17,25"
10667     </p>
10668     </blockquote><p>
10669    
10670     </p>
10671     <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
10672     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10673     <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
10674     Retrieving current information about an effect instance</h3>
10675    
10676     <p>The front-end can ask for the current informations about
10677     a particular effect instance by sending the following command:
10678     </p>
10679     <p>
10680     </p>
10681     <blockquote class="text">
10682     <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
10683     </p>
10684     </blockquote><p>
10685    
10686     </p>
10687     <p>Where &lt;effect-instance&gt; is the numerical ID of an
10688     effect instance as returned by the
10689     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
10690     or
10691     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10692     command.
10693     </p>
10694     <p>Possible Answers:
10695     </p>
10696     <p>
10697     </p>
10698     <blockquote class="text">
10699     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10700     Each answer line begins with the information
10701     category name, followed by a colon and then a space
10702     character &lt;SP&gt; and finally the info character
10703     string to that information category. At the
10704     moment the following categories are defined:
10705     </p>
10706     <p>
10707     </p>
10708     <blockquote class="text">
10709     <p>SYSTEM -
10710     </p>
10711     <blockquote class="text">
10712     <p>name of the effect plugin system
10713     the effect is based on
10714     (e.g. "LADSPA")
10715     </p>
10716     </blockquote>
10717    
10718    
10719     <p>MODULE -
10720     </p>
10721     <blockquote class="text">
10722     <p>module of the effect plugin
10723     system that contains this effect,
10724     the module is usually the
10725     dynamic-linked library (DLL)
10726     filename of the effect plugin,
10727     including full path (note that this
10728     filename may contain
10729     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10730     </p>
10731     </blockquote>
10732    
10733    
10734     <p>NAME -
10735     </p>
10736     <blockquote class="text">
10737     <p>character string defining the
10738     unique name of the effect within its
10739     module (note that the character
10740     string may contain
10741     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10742     </p>
10743     </blockquote>
10744    
10745    
10746     <p>DESCRIPTION -
10747     </p>
10748     <blockquote class="text">
10749     <p>human readable name of the
10750     effect, intended to be displayed in
10751     user interfaces (note that the
10752     character string may contain
10753     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10754     </p>
10755     </blockquote>
10756    
10757    
10758     <p>INPUT_CONTROLS -
10759     </p>
10760     <blockquote class="text">
10761     <p>amount of input controls the
10762     effect instance provides, to allow
10763     controlling the effect parameters in
10764     realtime
10765     </p>
10766     </blockquote>
10767    
10768    
10769     </blockquote>
10770    
10771    
10772     </blockquote><p>
10773    
10774     </p>
10775     <p>The mentioned fields above don't have to be in particular order.
10776     </p>
10777     <p>Example:
10778     </p>
10779     <p>
10780     </p>
10781     <blockquote class="text">
10782     <p>C: "GET EFFECT_INSTANCE INFO 3"
10783     </p>
10784     <p>S: "SYSTEM: LADSPA"
10785     </p>
10786     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
10787     </p>
10788     <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
10789     </p>
10790     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
10791     </p>
10792     <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
10793     </p>
10794     <p>&nbsp;&nbsp;&nbsp;"."
10795     </p>
10796     </blockquote><p>
10797    
10798     </p>
10799     <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
10800     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10801     <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
10802     Retrieving information about an effect parameter</h3>
10803    
10804     <p>Effects typically provide a certain set of effect
10805     parameters which can be altered by the user in realtime
10806     (e.g. depth of a reverb effect, duration of a delay effect,
10807     dry / wet signal ratio). Those controllable effect parameters
10808     are called "input controls". The front-end can ask for the
10809     current informations of an effect instance's input control
10810     by sending the following command:
10811     </p>
10812     <p>
10813     </p>
10814     <blockquote class="text">
10815     <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
10816     </p>
10817     </blockquote><p>
10818    
10819     </p>
10820     <p>Where &lt;effect-instance&gt; is the numerical ID of an
10821     effect instance as returned by the
10822     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
10823     or
10824     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10825     command and &lt;input-control&gt; is the index of the input
10826     control within the numerical bounds as returned by the
10827     "INPUT_CONTROLS" field of the
10828     <a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
10829     command.
10830     </p>
10831     <p>Possible Answers:
10832     </p>
10833     <p>
10834     </p>
10835     <blockquote class="text">
10836     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10837     Each answer line begins with the information
10838     category name, followed by a colon and then a space
10839     character &lt;SP&gt; and finally the info character
10840     string to that information category. There are
10841     information categories which are always returned,
10842     independent of the respective effect parameter and
10843     there are optional information categories
10844     which are only shown for certain effect parameters.
10845     At the moment the following categories are defined:
10846     </p>
10847     <p>
10848     </p>
10849     <blockquote class="text">
10850     <p>DESCRIPTION -
10851     </p>
10852     <blockquote class="text">
10853     <p>(always returned)
10854     human readable name of the
10855     effect parameter, intended to be
10856     displayed in user interfaces (note
10857     that the character string may
10858     contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10859     </p>
10860     </blockquote>
10861    
10862    
10863     <p>VALUE -
10864     </p>
10865     <blockquote class="text">
10866     <p>
10867     (always returned)
10868     current (optional dotted)
10869     floating point value of this effect
10870     parameter
10871     </p>
10872     </blockquote>
10873    
10874    
10875     <p>RANGE_MIN -
10876     </p>
10877     <blockquote class="text">
10878     <p>
10879     (optionally returned)
10880     minimum allowed value for this
10881     effect parameter
10882     </p>
10883     </blockquote>
10884    
10885    
10886     <p>RANGE_MAX -
10887     </p>
10888     <blockquote class="text">
10889     <p>
10890     (optionally returned)
10891     maximum allowed value for this
10892     effect parameter
10893     </p>
10894     </blockquote>
10895    
10896    
10897     <p>POSSIBILITIES -
10898     </p>
10899     <blockquote class="text">
10900     <p>
10901     (optionally returned)
10902     comma separated list of
10903     (optional dotted) floating point
10904     numbers, reflecting the exact set of
10905     possible values for this effect
10906     parameter
10907     </p>
10908     </blockquote>
10909    
10910    
10911     <p>DEFAULT -
10912     </p>
10913     <blockquote class="text">
10914     <p>
10915     (optionally returned)
10916     default value of this effect
10917     parameter
10918     </p>
10919     </blockquote>
10920    
10921    
10922     </blockquote>
10923    
10924    
10925     </blockquote><p>
10926    
10927     </p>
10928     <p>The mentioned fields above don't have to be in particular order.
10929     </p>
10930     <p>Example:
10931     </p>
10932     <p>
10933     </p>
10934     <blockquote class="text">
10935     <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
10936     </p>
10937     <p>S: "DESCRIPTION: Base delay (s)"
10938     </p>
10939     <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
10940     </p>
10941     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
10942     </p>
10943     <p>&nbsp;&nbsp;&nbsp;"."
10944     </p>
10945     </blockquote><p>
10946    
10947     </p>
10948     <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
10949     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10950     <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
10951     Altering an effect parameter</h3>
10952    
10953     <p>The front-end can alter the current value of an effect
10954     parameter by sending the following command:
10955     </p>
10956     <p>
10957     </p>
10958     <blockquote class="text">
10959     <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
10960     </p>
10961     </blockquote><p>
10962    
10963     </p>
10964     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10965     effect instance as returned by the
10966     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
10967     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10968     command, &lt;input-control&gt; is the index of the input
10969     control within the numerical bounds as returned by the
10970     "INPUT_CONTROLS" field of the
10971     <a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
10972     command and &lt;value&gt; is the new (optional dotted)
10973     floating point value for this effect parameter.
10974     </p>
10975     <p>Possible Answers:
10976     </p>
10977     <p>
10978     </p>
10979     <blockquote class="text">
10980     <p>"OK" -
10981     </p>
10982     <blockquote class="text">
10983     <p>in case the effect was altered successfully
10984     </p>
10985     </blockquote>
10986    
10987    
10988     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10989     </p>
10990     <blockquote class="text">
10991     <p>in case it failed, providing an appropriate error code and
10992     error message
10993     </p>
10994     </blockquote>
10995    
10996    
10997     </blockquote><p>
10998    
10999     </p>
11000     <p>Examples:
11001     </p>
11002     <p>
11003     </p>
11004     <blockquote class="text">
11005     <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11006     </p>
11007     <p>S: "OK"
11008     </p>
11009     </blockquote><p>
11010    
11011     </p>
11012     <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11013     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11014     <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11015     Retrieve amount of send effect chains</h3>
11016    
11017     <p>The front-end can retrieve the current amount of send
11018     effect chains of an audio output device by sending the
11019     following command:
11020     </p>
11021     <p>
11022     </p>
11023     <blockquote class="text">
11024     <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11025     </p>
11026     </blockquote><p>
11027    
11028     </p>
11029     <p>Where &lt;audio-device&gt; should be replaced by the
11030     numerical ID of the audio output device as given by the
11031     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11032     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11033     command.
11034     </p>
11035     <p>Possible Answers:
11036     </p>
11037     <p>
11038     </p>
11039     <blockquote class="text">
11040     <p>The sampler will answer by returning the current
11041     number of send effect chains of the supplied audio
11042     output device.
11043     </p>
11044     </blockquote><p>
11045    
11046     </p>
11047     <p>Examples:
11048     </p>
11049     <p>
11050     </p>
11051     <blockquote class="text">
11052     <p>C: "GET SEND_EFFECT_CHAINS 0"
11053     </p>
11054     <p>S: "4"
11055     </p>
11056     </blockquote><p>
11057    
11058     </p>
11059     <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11060     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11061     <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11062     Retrieve list of send effect chains</h3>
11063    
11064     <p>The front-end can retrieve the current list of send
11065     effect chains of an audio output device by sending the
11066     following command:
11067     </p>
11068     <p>
11069     </p>
11070     <blockquote class="text">
11071     <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11072     </p>
11073     </blockquote><p>
11074    
11075     </p>
11076     <p>Where &lt;audio-device&gt; should be replaced by the
11077     numerical ID of the audio output device as given by the
11078     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11079     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11080     command.
11081     </p>
11082     <p>Possible Answers:
11083     </p>
11084     <p>
11085     </p>
11086     <blockquote class="text">
11087     <p>The sampler will answer by returning a comma
11088     separated list with numerical IDs of send effect
11089     chains of the supplied audio output device.
11090    
11091     </p>
11092     </blockquote><p>
11093    
11094     </p>
11095     <p>Examples:
11096     </p>
11097     <p>
11098     </p>
11099     <blockquote class="text">
11100     <p>C: "LIST SEND_EFFECT_CHAINS 0"
11101     </p>
11102     <p>S: "3,4,7"
11103     </p>
11104     </blockquote><p>
11105    
11106     </p>
11107     <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11108     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11109     <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11110     Add send effect chain</h3>
11111    
11112     <p>The front-end can add a send effect chain by sending the
11113     following command:
11114     </p>
11115     <p>
11116     </p>
11117     <blockquote class="text">
11118     <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11119     </p>
11120     </blockquote><p>
11121    
11122     </p>
11123     <p>Where &lt;audio-device&gt; should be replaced by the
11124     numerical ID of the audio output device as given by the
11125     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11126     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11127     command.
11128     </p>
11129     <p>Possible Answers:
11130     </p>
11131     <p>
11132     </p>
11133     <blockquote class="text">
11134     <p>"OK[&lt;effect-chain&gt;]" -
11135     </p>
11136     <blockquote class="text">
11137     <p>in case the send effect chain was
11138     added successfully, where
11139     &lt;effect-chain&gt; is the numerical ID
11140     of the new send effect chain
11141     </p>
11142     </blockquote>
11143    
11144    
11145     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11146     </p>
11147     <blockquote class="text">
11148     <p>if the send effect chain could not be added
11149     </p>
11150     </blockquote>
11151    
11152    
11153     </blockquote><p>
11154    
11155     </p>
11156     <p>Examples:
11157     </p>
11158     <p>
11159     </p>
11160     <blockquote class="text">
11161     <p>C: "ADD SEND_EFFECT_CHAIN 0"
11162     </p>
11163     <p>S: "OK[2]"
11164     </p>
11165     </blockquote><p>
11166    
11167     </p>
11168     <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11169     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11170     <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11171     Remove send effect chain</h3>
11172    
11173     <p>The front-end can remove a send effect chain by sending
11174     the following command:
11175     </p>
11176     <p>
11177     </p>
11178     <blockquote class="text">
11179     <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11180     </p>
11181     </blockquote><p>
11182    
11183     </p>
11184     <p>Where &lt;audio-device&gt; should be replaced by the
11185     numerical ID of the audio output device as given by the
11186     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11187     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11188     command and &lt;effect-chain&gt; by the numerical ID as
11189     returned by the
11190     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11191     or
11192     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11193     command.
11194     </p>
11195     <p>Possible Answers:
11196     </p>
11197     <p>
11198     </p>
11199     <blockquote class="text">
11200     <p>"OK" -
11201     </p>
11202     <blockquote class="text">
11203     <p>in case the send effect chain was
11204     removed successfully
11205     </p>
11206     </blockquote>
11207    
11208    
11209     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11210     </p>
11211     <blockquote class="text">
11212     <p>if the send effect chain could not be removed
11213     </p>
11214     </blockquote>
11215    
11216    
11217     </blockquote><p>
11218    
11219     </p>
11220     <p>Examples:
11221     </p>
11222     <p>
11223     </p>
11224     <blockquote class="text">
11225     <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11226     </p>
11227     <p>S: "OK"
11228     </p>
11229     </blockquote><p>
11230    
11231     </p>
11232     <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11233     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11234     <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11235     Retrieving information about a send effect chain</h3>
11236    
11237     <p>The front-end can ask for informations of a send effect
11238     chain by sending the following command:
11239     </p>
11240     <p>
11241     </p>
11242     <blockquote class="text">
11243     <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11244     </p>
11245     </blockquote><p>
11246    
11247     </p>
11248     <p>Where &lt;audio-device&gt; should be replaced by the
11249     numerical ID of the audio output device as given by the
11250     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11251     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11252     command and &lt;effect-chain&gt; by the numerical ID as
11253     returned by the
11254     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11255     or
11256     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11257     command.
11258     </p>
11259     <p>Possible Answers:
11260     </p>
11261     <p>
11262     </p>
11263     <blockquote class="text">
11264     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11265     Each answer line begins with the information
11266     category name, followed by a colon and then a space
11267     character &lt;SP&gt; and finally the info character
11268     string to that information category.
11269     At the moment the following categories are defined:
11270     </p>
11271     <p>
11272     </p>
11273     <blockquote class="text">
11274     <p>EFFECT_COUNT -
11275     </p>
11276     <blockquote class="text">
11277     <p>amount of effects in this send
11278     effect chain
11279     </p>
11280     </blockquote>
11281    
11282    
11283     <p>EFFECT_SEQUENCE -
11284     </p>
11285     <blockquote class="text">
11286     <p>comma separated list of the
11287     numerical IDs of the effect
11288     instances in this send effect chain,
11289     in the order as they are procssed in
11290     the effect chain
11291     </p>
11292     </blockquote>
11293    
11294    
11295     </blockquote>
11296    
11297    
11298     </blockquote><p>
11299    
11300     </p>
11301     <p>The mentioned fields above don't have to be in particular order.
11302     </p>
11303     <p>Example:
11304     </p>
11305     <p>
11306     </p>
11307     <blockquote class="text">
11308     <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11309     </p>
11310     <p>S: "EFFECT_COUNT: 3"
11311     </p>
11312     <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11313     </p>
11314     <p>&nbsp;&nbsp;&nbsp;"."
11315     </p>
11316     </blockquote><p>
11317    
11318     </p>
11319     <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11320     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11321     <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11322     Append effect instance to a send effect chain</h3>
11323    
11324     <p>The front-end can add an unused effect instance to the
11325     end of a send effect chain by sending the following command:
11326     </p>
11327     <p>
11328     </p>
11329     <blockquote class="text">
11330     <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11331     </p>
11332     </blockquote><p>
11333    
11334     </p>
11335     <p>Where &lt;audio-device&gt; should be replaced by the
11336     numerical ID of the audio output device as given by the
11337     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11338     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11339     command and &lt;effect-chain&gt; by the numerical ID as
11340     returned by the
11341     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11342     or
11343     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11344     command and &lt;effect-instance&gt; as returned by the
11345     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11346     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11347     command.
11348     </p>
11349     <p>Only unused effect instances can be added to the effect
11350     chain. Trying to add an effect instance which is already in
11351     use somewhere in the audio signal path of the sampler will
11352     result in an error.
11353     </p>
11354     <p>Possible Answers:
11355     </p>
11356     <p>
11357     </p>
11358     <blockquote class="text">
11359     <p>"OK" -
11360     </p>
11361     <blockquote class="text">
11362     <p>in case the effect instance was
11363     added successfully to the chain
11364     </p>
11365     </blockquote>
11366    
11367    
11368     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11369     </p>
11370     <blockquote class="text">
11371     <p>if the effect instance could not be added
11372     </p>
11373     </blockquote>
11374    
11375    
11376     </blockquote><p>
11377    
11378     </p>
11379     <p>Examples:
11380     </p>
11381     <p>
11382     </p>
11383     <blockquote class="text">
11384     <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11385     </p>
11386     <p>S: "OK"
11387     </p>
11388     </blockquote><p>
11389    
11390     </p>
11391     <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11392     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11393     <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11394     Insert effect instance to a send effect chain</h3>
11395    
11396     <p>The front-end can add an unused effect instance to a
11397     certain position of a send effect chain by sending the
11398     following command:
11399     </p>
11400     <p>
11401     </p>
11402     <blockquote class="text">
11403     <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11404     </p>
11405     </blockquote><p>
11406    
11407     </p>
11408     <p>Where &lt;audio-device&gt; should be replaced by the
11409     numerical ID of the audio output device as given by the
11410     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11411     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11412     command, &lt;effect-chain&gt; by the numerical ID as
11413     returned by the
11414     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11415     or
11416     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11417     command, &lt;effect-instance&gt; as returned by the
11418     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11419     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11420     command and &lt;chain-pos&gt; the exact position of the
11421     effect chain where the supplied effect shall be inserted
11422     to.
11423     </p>
11424     <p>Only unused effect instances can be added to the effect
11425     chain. Trying to add an effect instance which is already in
11426     use somewhere in the audio signal path of the sampler will
11427     result in an error.
11428     </p>
11429     <p>Possible Answers:
11430     </p>
11431     <p>
11432     </p>
11433     <blockquote class="text">
11434     <p>"OK" -
11435     </p>
11436     <blockquote class="text">
11437     <p>in case the effect instance was
11438     added successfully to the chain
11439     </p>
11440     </blockquote>
11441    
11442    
11443     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11444     </p>
11445     <blockquote class="text">
11446     <p>if the effect instance could not be added
11447     </p>
11448     </blockquote>
11449    
11450    
11451     </blockquote><p>
11452    
11453     </p>
11454     <p>Examples:
11455     </p>
11456     <p>
11457     </p>
11458     <blockquote class="text">
11459     <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11460     </p>
11461     <p>S: "OK"
11462     </p>
11463     </blockquote><p>
11464    
11465     </p>
11466     <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11467     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11468     <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11469     Remove effect instance from send effect chain</h3>
11470    
11471     <p>The front-end can remove an effect instance from a
11472     certain position of a send effect chain by sending the
11473     following command:
11474     </p>
11475     <p>
11476     </p>
11477     <blockquote class="text">
11478     <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11479     </p>
11480     </blockquote><p>
11481    
11482     </p>
11483     <p>Where &lt;audio-device&gt; should be replaced by the
11484     numerical ID of the audio output device as given by the
11485     <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
11486     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
11487     command, &lt;effect-chain&gt; by the numerical ID as
11488     returned by the
11489     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11490     or
11491     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11492     command and &lt;chain-pos&gt; the exact position of the
11493     effect instance to be removed from the effect chain.
11494     </p>
11495     <p>Possible Answers:
11496     </p>
11497     <p>
11498     </p>
11499     <blockquote class="text">
11500     <p>"OK" -
11501     </p>
11502     <blockquote class="text">
11503     <p>in case the effect instance was
11504     removed successfully
11505     </p>
11506     </blockquote>
11507    
11508    
11509     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11510     </p>
11511     <blockquote class="text">
11512     <p>if the effect instance could not be removed
11513     </p>
11514     </blockquote>
11515    
11516    
11517     </blockquote><p>
11518    
11519     </p>
11520     <p>Examples:
11521     </p>
11522     <p>
11523     </p>
11524     <blockquote class="text">
11525     <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11526     </p>
11527     <p>S: "OK"
11528     </p>
11529     </blockquote><p>
11530    
11531     </p>
11532     <a name="command_syntax"></a><br /><hr />
11533     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11534     <a name="rfc.section.7"></a><h3>7.&nbsp;
11535     Command Syntax</h3>
11536    
11537     <p>The grammar of the control protocol as descibed in <a class='info' href='#control_commands'>Section&nbsp;6<span> (</span><span class='info'>Description for control commands</span><span>)</span></a>
11538     is defined below using Backus-Naur Form (BNF as described in <a class='info' href='#RFC2234'>[RFC2234]<span> (</span><span class='info'>Crocker, D. and P. Overell, &ldquo;Augmented BNF for Syntax Specifications,&rdquo; 1997.</span><span>)</span></a>)
11539     where applicable.
11540    
11541     </p>
11542     <p>input =
11543     </p>
11544     <blockquote class="text">
11545     <p>line LF
11546    
11547     </p>
11548     <p>/ line CR LF
11549    
11550     </p>
11551     </blockquote><p>
11552    
11553     </p>
11554     <p>line =
11555     </p>
11556     <blockquote class="text">
11557     <p>/* epsilon (empty line ignored) */
11558    
11559     </p>
11560     <p>/ comment
11561    
11562     </p>
11563     <p>/ command
11564    
11565     </p>
11566     <p>/ error
11567    
11568     </p>
11569     </blockquote><p>
11570    
11571     </p>
11572     <p>comment =
11573     </p>
11574     <blockquote class="text">
11575     <p>'#'
11576    
11577     </p>
11578     <p>/ comment '#'
11579    
11580     </p>
11581     <p>/ comment SP
11582    
11583     </p>
11584     <p>/ comment number
11585    
11586     </p>
11587     <p>/ comment string
11588    
11589     </p>
11590     </blockquote><p>
11591    
11592     </p>
11593     <p>command =
11594     </p>
11595     <blockquote class="text">
11596     <p>ADD SP add_instruction
11597    
11598     </p>
11599     <p>/ MAP SP map_instruction
11600    
11601     </p>
11602     <p>/ UNMAP SP unmap_instruction
11603    
11604     </p>
11605     <p>/ GET SP get_instruction
11606    
11607     </p>
11608     <p>/ CREATE SP create_instruction
11609    
11610     </p>
11611     <p>/ DESTROY SP destroy_instruction
11612    
11613     </p>
11614     <p>/ LIST SP list_instruction
11615    
11616     </p>
11617     <p>/ LOAD SP load_instruction
11618    
11619     </p>
11620     <p>/ REMOVE SP remove_instruction
11621    
11622     </p>
11623     <p>/ SET SP set_instruction
11624    
11625     </p>
11626     <p>/ SUBSCRIBE SP subscribe_event
11627    
11628     </p>
11629     <p>/ UNSUBSCRIBE SP unsubscribe_event
11630    
11631     </p>
11632     <p>/ RESET SP reset_instruction
11633    
11634     </p>
11635     <p>/ CLEAR SP clear_instruction
11636    
11637     </p>
11638     <p>/ FIND SP find_instruction
11639    
11640     </p>
11641     <p>/ MOVE SP move_instruction
11642    
11643     </p>
11644     <p>/ COPY SP copy_instruction
11645    
11646     </p>
11647     <p>/ EDIT SP edit_instruction
11648    
11649     </p>
11650     <p>/ FORMAT SP format_instruction
11651    
11652     </p>
11653     <p>/ SEND SP send_instruction
11654    
11655     </p>
11656     <p>/ APPEND SP append_instruction
11657    
11658     </p>
11659     <p>/ INSERT SP insert_instruction
11660    
11661     </p>
11662     <p>/ RESET
11663    
11664     </p>
11665     <p>/ QUIT
11666    
11667     </p>
11668     </blockquote><p>
11669    
11670     </p>
11671     <p>add_instruction =
11672     </p>
11673     <blockquote class="text">
11674     <p>CHANNEL
11675    
11676     </p>
11677     <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11678    
11679     </p>
11680     <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
11681    
11682     </p>
11683     <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11684    
11685     </p>
11686     <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
11687    
11688     </p>
11689     <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11690    
11691     </p>
11692     <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
11693    
11694     </p>
11695     <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
11696    
11697     </p>
11698     <p>/ DB_INSTRUMENTS SP db_path SP filename
11699    
11700     </p>
11701     <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
11702    
11703     </p>
11704     <p>/ MIDI_INSTRUMENT_MAP
11705    
11706     </p>
11707     <p>/ MIDI_INSTRUMENT_MAP SP map_name
11708    
11709     </p>
11710     <p>/ SEND_EFFECT_CHAIN SP device_index
11711    
11712     </p>
11713     </blockquote><p>
11714    
11715     </p>
11716     <p>subscribe_event =
11717     </p>
11718     <blockquote class="text">
11719     <p>AUDIO_OUTPUT_DEVICE_COUNT
11720    
11721     </p>
11722     <p>/ AUDIO_OUTPUT_DEVICE_INFO
11723    
11724     </p>
11725     <p>/ MIDI_INPUT_DEVICE_COUNT
11726    
11727     </p>
11728     <p>/ MIDI_INPUT_DEVICE_INFO
11729    
11730     </p>
11731     <p>/ CHANNEL_COUNT
11732    
11733     </p>
11734     <p>/ CHANNEL_MIDI
11735    
11736     </p>
11737     <p>/ DEVICE_MIDI
11738    
11739     </p>
11740     <p>/ VOICE_COUNT
11741    
11742     </p>
11743     <p>/ STREAM_COUNT
11744    
11745     </p>
11746     <p>/ BUFFER_FILL
11747    
11748     </p>
11749     <p>/ CHANNEL_INFO
11750    
11751     </p>
11752     <p>/ FX_SEND_COUNT
11753    
11754     </p>
11755     <p>/ FX_SEND_INFO
11756    
11757     </p>
11758     <p>/ MIDI_INSTRUMENT_MAP_COUNT
11759    
11760     </p>
11761     <p>/ MIDI_INSTRUMENT_MAP_INFO
11762    
11763     </p>
11764     <p>/ MIDI_INSTRUMENT_COUNT
11765    
11766     </p>
11767     <p>/ MIDI_INSTRUMENT_INFO
11768    
11769     </p>
11770     <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11771    
11772     </p>
11773     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11774    
11775     </p>
11776     <p>/ DB_INSTRUMENT_COUNT
11777    
11778     </p>
11779     <p>/ DB_INSTRUMENT_INFO
11780    
11781     </p>
11782     <p>/ DB_INSTRUMENTS_JOB_INFO
11783    
11784     </p>
11785     <p>/ MISCELLANEOUS
11786    
11787     </p>
11788     <p>/ TOTAL_STREAM_COUNT
11789    
11790     </p>
11791     <p>/ TOTAL_VOICE_COUNT
11792    
11793     </p>
11794     <p>/ GLOBAL_INFO
11795    
11796     </p>
11797     <p>/ EFFECT_INSTANCE_COUNT
11798    
11799     </p>
11800     <p>/ EFFECT_INSTANCE_INFO
11801    
11802     </p>
11803     <p>/ SEND_EFFECT_CHAIN_COUNT
11804    
11805     </p>
11806     <p>/ SEND_EFFECT_CHAIN_INFO
11807    
11808     </p>
11809     </blockquote><p>
11810    
11811     </p>
11812     <p>unsubscribe_event =
11813     </p>
11814     <blockquote class="text">
11815     <p>AUDIO_OUTPUT_DEVICE_COUNT
11816    
11817     </p>
11818     <p>/ AUDIO_OUTPUT_DEVICE_INFO
11819    
11820     </p>
11821     <p>/ MIDI_INPUT_DEVICE_COUNT
11822    
11823     </p>
11824     <p>/ MIDI_INPUT_DEVICE_INFO
11825    
11826     </p>
11827     <p>/ CHANNEL_COUNT
11828    
11829     </p>
11830     <p>/ CHANNEL_MIDI
11831    
11832     </p>
11833     <p>/ DEVICE_MIDI
11834    
11835     </p>
11836     <p>/ VOICE_COUNT
11837    
11838     </p>
11839     <p>/ STREAM_COUNT
11840    
11841     </p>
11842     <p>/ BUFFER_FILL
11843    
11844     </p>
11845     <p>/ CHANNEL_INFO
11846    
11847     </p>
11848     <p>/ FX_SEND_COUNT
11849    
11850     </p>
11851     <p>/ FX_SEND_INFO
11852    
11853     </p>
11854     <p>/ MIDI_INSTRUMENT_MAP_COUNT
11855    
11856     </p>
11857     <p>/ MIDI_INSTRUMENT_MAP_INFO
11858    
11859     </p>
11860     <p>/ MIDI_INSTRUMENT_COUNT
11861    
11862     </p>
11863     <p>/ MIDI_INSTRUMENT_INFO
11864    
11865     </p>
11866     <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11867    
11868     </p>
11869     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11870    
11871     </p>
11872     <p>/ DB_INSTRUMENT_COUNT
11873    
11874     </p>
11875     <p>/ DB_INSTRUMENT_INFO
11876    
11877     </p>
11878     <p>/ DB_INSTRUMENTS_JOB_INFO
11879    
11880     </p>
11881     <p>/ MISCELLANEOUS
11882    
11883     </p>
11884     <p>/ TOTAL_STREAM_COUNT
11885    
11886     </p>
11887     <p>/ TOTAL_VOICE_COUNT
11888    
11889     </p>
11890     <p>/ GLOBAL_INFO
11891    
11892     </p>
11893     <p>/ EFFECT_INSTANCE_COUNT
11894    
11895     </p>
11896     <p>/ EFFECT_INSTANCE_INFO
11897    
11898     </p>
11899     <p>/ SEND_EFFECT_CHAIN_COUNT
11900    
11901     </p>
11902     <p>/ SEND_EFFECT_CHAIN_INFO
11903    
11904     </p>
11905     </blockquote><p>
11906    
11907     </p>
11908     <p>map_instruction =
11909     </p>
11910     <blockquote class="text">
11911     <p>MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
11912    
11913     </p>
11914     <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
11915    
11916     </p>
11917     <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
11918    
11919     </p>
11920     <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name
11921    
11922     </p>
11923     </blockquote><p>
11924    
11925     </p>
11926     <p>unmap_instruction =
11927     </p>
11928     <blockquote class="text">
11929     <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
11930    
11931     </p>
11932     </blockquote><p>
11933    
11934     </p>
11935     <p>remove_instruction =
11936     </p>
11937     <blockquote class="text">
11938     <p>CHANNEL SP sampler_channel
11939    
11940     </p>
11941     <p>/ MIDI_INSTRUMENT_MAP SP midi_map
11942    
11943     </p>
11944     <p>/ MIDI_INSTRUMENT_MAP SP ALL
11945    
11946     </p>
11947     <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
11948    
11949     </p>
11950     <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
11951    
11952     </p>
11953     <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
11954    
11955     </p>
11956     <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
11957    
11958     </p>
11959     <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11960    
11961     </p>
11962     <p>/ DB_INSTRUMENT SP db_path
11963    
11964     </p>
11965     </blockquote><p>
11966    
11967     </p>
11968     <p>get_instruction =
11969     </p>
11970     <blockquote class="text">
11971     <p>AVAILABLE_ENGINES
11972    
11973     </p>
11974     <p>/ AVAILABLE_EFFECTS
11975    
11976     </p>
11977     <p>/ EFFECT_INSTANCES
11978    
11979     </p>
11980     <p>/ EFFECT SP INFO SP effect_index
11981    
11982     </p>
11983     <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
11984    
11985     </p>
11986     <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
11987    
11988     </p>
11989     <p>/ SEND_EFFECT_CHAINS SP device_index
11990    
11991     </p>
11992     <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
11993    
11994     </p>
11995     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
11996    
11997     </p>
11998     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
11999    
12000     </p>
12001     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12002    
12003     </p>
12004     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12005    
12006     </p>
12007     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12008    
12009     </p>
12010     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12011    
12012     </p>
12013     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12014    
12015     </p>
12016     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12017    
12018     </p>
12019     <p>/ AUDIO_OUTPUT_DEVICES
12020    
12021     </p>
12022     <p>/ MIDI_INPUT_DEVICES
12023    
12024     </p>
12025     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12026    
12027     </p>
12028     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12029    
12030     </p>
12031     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12032    
12033     </p>
12034     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12035    
12036     </p>
12037     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12038    
12039     </p>
12040     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12041    
12042     </p>
12043     <p>/ CHANNELS
12044    
12045     </p>
12046     <p>/ CHANNEL SP INFO SP sampler_channel
12047    
12048     </p>
12049     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12050    
12051     </p>
12052     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12053    
12054     </p>
12055     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12056    
12057     </p>
12058     <p>/ ENGINE SP INFO SP engine_name
12059    
12060     </p>
12061     <p>/ SERVER SP INFO
12062    
12063     </p>
12064     <p>/ TOTAL_STREAM_COUNT
12065    
12066     </p>
12067     <p>/ TOTAL_VOICE_COUNT
12068    
12069     </p>
12070     <p>/ TOTAL_VOICE_COUNT_MAX
12071    
12072     </p>
12073     <p>/ MIDI_INSTRUMENTS SP midi_map
12074    
12075     </p>
12076     <p>/ MIDI_INSTRUMENTS SP ALL
12077    
12078     </p>
12079     <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12080    
12081     </p>
12082     <p>/ MIDI_INSTRUMENT_MAPS
12083    
12084     </p>
12085     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12086    
12087     </p>
12088     <p>/ FX_SENDS SP sampler_channel
12089    
12090     </p>
12091     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12092    
12093     </p>
12094     <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12095    
12096     </p>
12097     <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12098    
12099     </p>
12100     <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12101    
12102     </p>
12103     <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12104    
12105     </p>
12106     <p>/ DB_INSTRUMENTS SP db_path
12107    
12108     </p>
12109     <p>/ DB_INSTRUMENT SP INFO SP db_path
12110    
12111     </p>
12112     <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12113    
12114     </p>
12115     <p>/ VOLUME
12116    
12117     </p>
12118     <p>/ VOICES
12119    
12120     </p>
12121     <p>/ STREAMS
12122    
12123     </p>
12124     <p>/ FILE SP INSTRUMENTS SP filename
12125    
12126     </p>
12127     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12128    
12129     </p>
12130     </blockquote><p>
12131    
12132     </p>
12133     <p>set_instruction =
12134     </p>
12135     <blockquote class="text">
12136     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12137    
12138     </p>
12139     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12140    
12141     </p>
12142     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12143    
12144     </p>
12145     <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12146    
12147     </p>
12148     <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12149    
12150     </p>
12151     <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12152    
12153     </p>
12154     <p>/ CHANNEL SP set_chan_instruction
12155    
12156     </p>
12157     <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12158    
12159     </p>
12160     <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12161    
12162     </p>
12163     <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12164    
12165     </p>
12166     <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12167    
12168     </p>
12169     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12170    
12171     </p>
12172     <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12173    
12174     </p>
12175     <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12176    
12177     </p>
12178     <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12179    
12180     </p>
12181     <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12182    
12183     </p>
12184     <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12185    
12186     </p>
12187     <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12188    
12189     </p>
12190     <p>/ ECHO SP boolean
12191    
12192     </p>
12193     <p>/ VOLUME SP volume_value
12194    
12195     </p>
12196     <p>/ VOICES SP number
12197    
12198     </p>
12199     <p>/ STREAMS SP number
12200    
12201     </p>
12202     </blockquote><p>
12203    
12204     </p>
12205     <p>create_instruction =
12206     </p>
12207     <blockquote class="text">
12208     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12209    
12210     </p>
12211     <p>/ AUDIO_OUTPUT_DEVICE SP string
12212    
12213     </p>
12214     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12215    
12216     </p>
12217     <p>/ MIDI_INPUT_DEVICE SP string
12218    
12219     </p>
12220     <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12221    
12222     </p>
12223     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12224    
12225     </p>
12226     <p>/ EFFECT_INSTANCE SP effect_index
12227    
12228     </p>
12229     <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12230    
12231     </p>
12232     </blockquote><p>
12233    
12234     </p>
12235     <p>reset_instruction =
12236     </p>
12237     <blockquote class="text">
12238     <p>CHANNEL SP sampler_channel
12239    
12240     </p>
12241     </blockquote><p>
12242    
12243     </p>
12244     <p>clear_instruction =
12245     </p>
12246     <blockquote class="text">
12247     <p>MIDI_INSTRUMENTS SP midi_map
12248    
12249     </p>
12250     <p>/ MIDI_INSTRUMENTS SP ALL
12251    
12252     </p>
12253     </blockquote><p>
12254    
12255     </p>
12256     <p>find_instruction =
12257     </p>
12258     <blockquote class="text">
12259     <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12260    
12261     </p>
12262     <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12263    
12264     </p>
12265     <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12266    
12267     </p>
12268     <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12269    
12270     </p>
12271     <p>/ LOST SP DB_INSTRUMENT_FILES
12272    
12273     </p>
12274     </blockquote><p>
12275    
12276     </p>
12277     <p>move_instruction =
12278     </p>
12279     <blockquote class="text">
12280     <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12281    
12282     </p>
12283     <p>/ DB_INSTRUMENT SP db_path SP db_path
12284    
12285     </p>
12286     </blockquote><p>
12287    
12288     </p>
12289     <p>copy_instruction =
12290     </p>
12291     <blockquote class="text">
12292     <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12293    
12294     </p>
12295     <p>/ DB_INSTRUMENT SP db_path SP db_path
12296    
12297     </p>
12298     </blockquote><p>
12299    
12300     </p>
12301     <p>destroy_instruction =
12302     </p>
12303     <blockquote class="text">
12304     <p>AUDIO_OUTPUT_DEVICE SP number
12305    
12306     </p>
12307     <p>/ MIDI_INPUT_DEVICE SP number
12308    
12309     </p>
12310     <p>/ FX_SEND SP sampler_channel SP fx_send_id
12311    
12312     </p>
12313     <p>/ EFFECT_INSTANCE SP number
12314    
12315     </p>
12316     </blockquote><p>
12317    
12318     </p>
12319     <p>load_instruction =
12320     </p>
12321     <blockquote class="text">
12322     <p>INSTRUMENT SP load_instr_args
12323    
12324     </p>
12325     <p>/ ENGINE SP load_engine_args
12326    
12327     </p>
12328     </blockquote><p>
12329    
12330     </p>
12331     <p>append_instruction =
12332     </p>
12333     <blockquote class="text">
12334     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12335    
12336     </p>
12337     </blockquote><p>
12338    
12339     </p>
12340     <p>insert_instruction =
12341     </p>
12342     <blockquote class="text">
12343     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12344    
12345     </p>
12346     </blockquote><p>
12347    
12348     </p>
12349     <p>set_chan_instruction =
12350     </p>
12351     <blockquote class="text">
12352     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12353    
12354     </p>
12355     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12356    
12357     </p>
12358     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12359    
12360     </p>
12361     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12362    
12363     </p>
12364     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12365    
12366     </p>
12367     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12368    
12369     </p>
12370     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12371    
12372     </p>
12373     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12374    
12375     </p>
12376     <p>/ VOLUME SP sampler_channel SP volume_value
12377    
12378     </p>
12379     <p>/ MUTE SP sampler_channel SP boolean
12380    
12381     </p>
12382     <p>/ SOLO SP sampler_channel SP boolean
12383    
12384     </p>
12385     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12386    
12387     </p>
12388     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12389    
12390     </p>
12391     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12392    
12393     </p>
12394     </blockquote><p>
12395    
12396     </p>
12397     <p>edit_instruction =
12398     </p>
12399     <blockquote class="text">
12400     <p>CHANNEL SP INSTRUMENT SP sampler_channel
12401    
12402     </p>
12403     </blockquote><p>
12404    
12405     </p>
12406     <p>format_instruction =
12407     </p>
12408     <blockquote class="text">
12409     <p>INSTRUMENTS_DB
12410    
12411     </p>
12412     </blockquote><p>
12413    
12414     </p>
12415     <p>modal_arg =
12416     </p>
12417     <blockquote class="text">
12418     <p>/* epsilon (empty argument) */
12419    
12420     </p>
12421     <p>/ NON_MODAL SP
12422    
12423     </p>
12424     </blockquote><p>
12425    
12426     </p>
12427     <p>key_val_list =
12428     </p>
12429     <blockquote class="text">
12430     <p>string '=' param_val_list
12431    
12432     </p>
12433     <p>/ key_val_list SP string '=' param_val_list
12434    
12435     </p>
12436     </blockquote><p>
12437    
12438     </p>
12439     <p>buffer_size_type =
12440     </p>
12441     <blockquote class="text">
12442     <p>BYTES
12443    
12444     </p>
12445     <p>/ PERCENTAGE
12446    
12447     </p>
12448     </blockquote><p>
12449    
12450     </p>
12451     <p>list_instruction =
12452     </p>
12453     <blockquote class="text">
12454     <p>AUDIO_OUTPUT_DEVICES
12455    
12456     </p>
12457     <p>/ MIDI_INPUT_DEVICES
12458    
12459     </p>
12460     <p>/ CHANNELS
12461    
12462     </p>
12463     <p>/ AVAILABLE_ENGINES
12464    
12465     </p>
12466     <p>/ AVAILABLE_EFFECTS
12467    
12468     </p>
12469     <p>/ EFFECT_INSTANCES
12470    
12471     </p>
12472     <p>/ SEND_EFFECT_CHAINS SP number
12473    
12474     </p>
12475     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12476    
12477     </p>
12478     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12479    
12480     </p>
12481     <p>/ MIDI_INSTRUMENTS SP midi_map
12482    
12483     </p>
12484     <p>/ MIDI_INSTRUMENTS SP ALL
12485    
12486     </p>
12487     <p>/ MIDI_INSTRUMENT_MAPS
12488    
12489     </p>
12490     <p>/ FX_SENDS SP sampler_channel
12491    
12492     </p>
12493     <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12494    
12495     </p>
12496     <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12497    
12498     </p>
12499     <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12500    
12501     </p>
12502     <p>/ DB_INSTRUMENTS SP db_path
12503    
12504     </p>
12505     <p>/ FILE SP INSTRUMENTS SP filename
12506    
12507     </p>
12508     </blockquote><p>
12509    
12510     </p>
12511     <p>send_instruction =
12512     </p>
12513     <blockquote class="text">
12514     <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12515    
12516     </p>
12517     </blockquote><p>
12518    
12519     </p>
12520     <p>load_instr_args =
12521     </p>
12522     <blockquote class="text">
12523     <p>filename SP instrument_index SP sampler_channel
12524    
12525     </p>
12526     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12527    
12528     </p>
12529     </blockquote><p>
12530    
12531     </p>
12532     <p>load_engine_args =
12533     </p>
12534     <blockquote class="text">
12535     <p>engine_name SP sampler_channel
12536    
12537     </p>
12538     </blockquote><p>
12539    
12540     </p>
12541     <p>instr_load_mode =
12542     </p>
12543     <blockquote class="text">
12544     <p>ON_DEMAND
12545    
12546     </p>
12547     <p>/ ON_DEMAND_HOLD
12548    
12549     </p>
12550     <p>/ PERSISTENT
12551    
12552     </p>
12553     </blockquote><p>
12554    
12555     </p>
12556     <p>effect_instance =
12557     </p>
12558     <blockquote class="text">
12559     <p>number
12560    
12561     </p>
12562     </blockquote><p>
12563    
12564     </p>
12565     <p>device_index =
12566     </p>
12567     <blockquote class="text">
12568     <p>number
12569    
12570     </p>
12571     </blockquote><p>
12572    
12573     </p>
12574     <p>audio_channel_index =
12575     </p>
12576     <blockquote class="text">
12577     <p>number
12578    
12579     </p>
12580     </blockquote><p>
12581    
12582     </p>
12583     <p>audio_output_type_name =
12584     </p>
12585     <blockquote class="text">
12586     <p>string
12587    
12588     </p>
12589     </blockquote><p>
12590    
12591     </p>
12592     <p>midi_input_port_index =
12593     </p>
12594     <blockquote class="text">
12595     <p>number
12596    
12597     </p>
12598     </blockquote><p>
12599    
12600     </p>
12601     <p>midi_input_channel_index =
12602     </p>
12603     <blockquote class="text">
12604     <p>number
12605    
12606     </p>
12607     <p>/ ALL
12608    
12609     </p>
12610     </blockquote><p>
12611    
12612     </p>
12613     <p>midi_input_type_name =
12614     </p>
12615     <blockquote class="text">
12616     <p>string
12617    
12618     </p>
12619     </blockquote><p>
12620    
12621     </p>
12622     <p>midi_map =
12623     </p>
12624     <blockquote class="text">
12625     <p>number
12626    
12627     </p>
12628     </blockquote><p>
12629    
12630     </p>
12631     <p>midi_bank =
12632     </p>
12633     <blockquote class="text">
12634     <p>number
12635    
12636     </p>
12637     </blockquote><p>
12638    
12639     </p>
12640     <p>midi_prog =
12641     </p>
12642     <blockquote class="text">
12643     <p>number
12644    
12645     </p>
12646     </blockquote><p>
12647    
12648     </p>
12649     <p>midi_ctrl =
12650     </p>
12651     <blockquote class="text">
12652     <p>number
12653    
12654     </p>
12655     </blockquote><p>
12656    
12657     </p>
12658     <p>volume_value =
12659     </p>
12660     <blockquote class="text">
12661     <p>dotnum
12662    
12663     </p>
12664     <p>/ number
12665    
12666     </p>
12667     </blockquote><p>
12668    
12669     </p>
12670     <p>control_value =
12671     </p>
12672     <blockquote class="text">
12673     <p>real
12674    
12675     </p>
12676     </blockquote><p>
12677    
12678     </p>
12679     <p>sampler_channel =
12680     </p>
12681     <blockquote class="text">
12682     <p>number
12683    
12684     </p>
12685     </blockquote><p>
12686    
12687     </p>
12688     <p>instrument_index =
12689     </p>
12690     <blockquote class="text">
12691     <p>number
12692    
12693     </p>
12694     </blockquote><p>
12695    
12696     </p>
12697     <p>fx_send_id =
12698     </p>
12699     <blockquote class="text">
12700     <p>number
12701    
12702     </p>
12703     </blockquote><p>
12704    
12705     </p>
12706     <p>engine_name =
12707     </p>
12708     <blockquote class="text">
12709     <p>string
12710    
12711     </p>
12712     </blockquote><p>
12713    
12714     </p>
12715     <p>filename =
12716     </p>
12717     <blockquote class="text">
12718     <p>path
12719    
12720     </p>
12721     </blockquote><p>
12722    
12723     </p>
12724     <p>db_path =
12725     </p>
12726     <blockquote class="text">
12727     <p>path
12728    
12729     </p>
12730     </blockquote><p>
12731    
12732     </p>
12733     <p>map_name =
12734     </p>
12735     <blockquote class="text">
12736     <p>stringval_escaped
12737    
12738     </p>
12739     </blockquote><p>
12740    
12741     </p>
12742     <p>entry_name =
12743     </p>
12744     <blockquote class="text">
12745     <p>stringval_escaped
12746    
12747     </p>
12748     </blockquote><p>
12749    
12750     </p>
12751     <p>fx_send_name =
12752     </p>
12753     <blockquote class="text">
12754     <p>stringval_escaped
12755    
12756     </p>
12757     </blockquote><p>
12758    
12759     </p>
12760     <p>effect_name =
12761     </p>
12762     <blockquote class="text">
12763     <p>stringval_escaped
12764    
12765     </p>
12766     </blockquote><p>
12767    
12768     </p>
12769     <p>effect_index =
12770     </p>
12771     <blockquote class="text">
12772     <p>number
12773    
12774     </p>
12775     </blockquote><p>
12776    
12777     </p>
12778     <p>effect_chain =
12779     </p>
12780     <blockquote class="text">
12781     <p>number
12782    
12783     </p>
12784     </blockquote><p>
12785    
12786     </p>
12787     <p>chain_pos =
12788     </p>
12789     <blockquote class="text">
12790     <p>number
12791    
12792     </p>
12793     </blockquote><p>
12794    
12795     </p>
12796     <p>input_control =
12797     </p>
12798     <blockquote class="text">
12799     <p>number
12800    
12801     </p>
12802     </blockquote><p>
12803    
12804     </p>
12805     <p>param_val_list =
12806     </p>
12807     <blockquote class="text">
12808     <p>param_val
12809    
12810     </p>
12811     <p>/ param_val_list','param_val
12812    
12813     </p>
12814     </blockquote><p>
12815    
12816     </p>
12817     <p>param_val =
12818     </p>
12819     <blockquote class="text">
12820     <p>string
12821    
12822     </p>
12823     <p>/ stringval
12824    
12825     </p>
12826     <p>/ number
12827    
12828     </p>
12829     <p>/ dotnum
12830    
12831     </p>
12832     </blockquote><p>
12833    
12834     </p>
12835     <p>query_val_list =
12836     </p>
12837     <blockquote class="text">
12838     <p>string '=' query_val
12839    
12840     </p>
12841     <p>/ query_val_list SP string '=' query_val
12842    
12843     </p>
12844     </blockquote><p>
12845    
12846     </p>
12847     <p>query_val =
12848     </p>
12849     <blockquote class="text">
12850     <p>text_escaped
12851    
12852     </p>
12853     <p>/ stringval_escaped
12854    
12855     </p>
12856     </blockquote><p>
12857    
12858     </p>
12859     <p>scan_mode =
12860     </p>
12861     <blockquote class="text">
12862     <p>RECURSIVE
12863    
12864     </p>
12865     <p>/ NON_RECURSIVE
12866    
12867     </p>
12868     <p>/ FLAT
12869    
12870     </p>
12871     </blockquote><p>
12872    
12873     </p>
12874     <p>effect_system =
12875     </p>
12876     <blockquote class="text">
12877     <p>string
12878    
12879     </p>
12880     </blockquote><p>
12881    
12882     </p>
12883     <p>module =
12884     </p>
12885     <blockquote class="text">
12886     <p>filename
12887    
12888     </p>
12889     </blockquote><p>
12890    
12891     </p>
12892     <a name="character_set"></a><br /><hr />
12893     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
12894     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
12895     Character Set and Escape Sequences</h3>
12896    
12897     <p>Older versions of this protocol up to and including v1.1 only
12898     supported the standard ASCII character set (ASCII code 0 - 127)
12899     <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>, all younger versions of this protocol
12900     however support the Extended ASCII character set (ASCII code
12901     0 - 255). The same group of younger protocols also support
12902     escape sequences, but only for certain, explicitly declared
12903     parts of the protocol. The supported escape sequences are
12904     defined as follows:
12905     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
12906     <col align="left"><col align="left">
12907     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
12908     <tr>
12909     <td align="left">\n</td>
12910     <td align="left">new line</td>
12911     </tr>
12912     <tr>
12913     <td align="left">\r</td>
12914     <td align="left">carriage return</td>
12915     </tr>
12916     <tr>
12917     <td align="left">\f</td>
12918     <td align="left">form feed</td>
12919     </tr>
12920     <tr>
12921     <td align="left">\t</td>
12922     <td align="left">horizontal tab</td>
12923     </tr>
12924     <tr>
12925     <td align="left">\v</td>
12926     <td align="left">vertical tab</td>
12927     </tr>
12928     <tr>
12929     <td align="left">\'</td>
12930     <td align="left">apostrophe</td>
12931     </tr>
12932     <tr>
12933     <td align="left">\"</td>
12934     <td align="left">quotation mark</td>
12935     </tr>
12936     <tr>
12937     <td align="left">\\</td>
12938     <td align="left">backslash</td>
12939     </tr>
12940     <tr>
12941     <td align="left">\OOO</td>
12942     <td align="left">three digit octal ASCII code of the character</td>
12943     </tr>
12944     <tr>
12945     <td align="left">\xHH</td>
12946     <td align="left">two digit hex ASCII code of the character</td>
12947     </tr>
12948     </table>
12949     <br clear="all" />
12950    
12951     <p>Notice: due to the transition of certain parts of the
12952     protocol which now support escape sequences, a slight backward
12953     incompatibility to protocols version v1.1 and younger has been
12954     introduced. The only difference is that in parts of the protocol
12955     where escape characters are now supported, a backslash characters
12956     MUST be escaped as well (that is as double backslash), whereas
12957     in the old versions a single backslash was sufficient.
12958     </p>
12959     <p>The following LSCP commands support escape sequences as part
12960     of their filename / path based arguments and / or may contain
12961     a filename / path with escape sequences in their response:
12962     </p>
12963     <blockquote class="text">
12964     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
12965     </p>
12966     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
12967     </p>
12968     <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
12969     </p>
12970     <p><a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
12971     </p>
12972     <p><a class='info' href='#ADD DB_INSTRUMENT_DIRECTORY'>"ADD DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Creating a new instrument directory</span><span>)</span></a>
12973     </p>
12974     <p><a class='info' href='#ADD DB_INSTRUMENTS'>"ADD DB_INSTRUMENTS"<span> (</span><span class='info'>Adding instruments to the instruments database</span><span>)</span></a>
12975     </p>
12976     <p><a class='info' href='#REMOVE DB_INSTRUMENT_DIRECTORY'>"REMOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Deleting an instrument directory</span><span>)</span></a>
12977     </p>
12978     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
12979     </p>
12980     <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORIES'>"GET DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Getting amount of instrument directories</span><span>)</span></a>
12981     </p>
12982     <p><a class='info' href='#LIST DB_INSTRUMENT_DIRECTORIES'>"LIST DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Listing all directories in specific directory</span><span>)</span></a>
12983     </p>
12984     <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
12985     </p>
12986     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
12987     </p>
12988     <p><a class='info' href='#LIST DB_INSTRUMENTS'>"LIST DB_INSTRUMENTS"<span> (</span><span class='info'>Listing all instruments in specific directory</span><span>)</span></a>
12989     </p>
12990     <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
12991     </p>
12992     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
12993     </p>
12994     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
12995     </p>
12996     <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
12997     </p>
12998     <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
12999     </p>
13000     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13001     </p>
13002     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13003     </p>
13004     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13005     </p>
13006     <p><a class='info' href='#MOVE DB_INSTRUMENT_DIRECTORY'>"MOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Moving an instrument directory</span><span>)</span></a>
13007     </p>
13008     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13009     </p>
13010     <p><a class='info' href='#COPY DB_INSTRUMENT_DIRECTORY'>"COPY DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Copying instrument directories</span><span>)</span></a>
13011     </p>
13012     <p><a class='info' href='#FIND LOST DB_INSTRUMENT_FILES'>"FIND LOST DB_INSTRUMENT_FILES"<span> (</span><span class='info'>Checking for lost instrument files</span><span>)</span></a>
13013     </p>
13014     <p><a class='info' href='#SET DB_INSTRUMENT FILE_PATH'>"SET DB_INSTRUMENT FILE_PATH"<span> (</span><span class='info'>Replacing an instrument file</span><span>)</span></a>
13015     </p>
13016     <p><a class='info' href='#GET FILE INSTRUMENTS'>"GET FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving amount of instruments of a file</span><span>)</span></a>
13017     </p>
13018     <p><a class='info' href='#LIST FILE INSTRUMENTS'>"LIST FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving all instruments of a file</span><span>)</span></a>
13019     </p>
13020     <p><a class='info' href='#GET FILE INSTRUMENT INFO'>"GET FILE INSTRUMENT INFO"<span> (</span><span class='info'>Retrieving informations about one instrument in a file</span><span>)</span></a>
13021     </p>
13022     <p><a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
13023     </p>
13024     <p><a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
13025     </p>
13026     <p><a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
13027     </p>
13028     </blockquote><p>
13029     Note that the forward slash character ('/') has a special meaning in
13030     filename / path based arguments: it acts as separator of the nodes in
13031     the path, thus if a directory- or filename includes a forward slash
13032     (not intended as path node separator), you MUST escape that slash
13033     either with the respective hex escape sequence ("\x2f") or with the
13034     respective octal escape sequence ("\057").
13035    
13036     </p>
13037     <p>
13038     Note for Windows: file path arguments in LSCP are expected
13039     to use forward slashes as directory node separator similar
13040     to Unix based operating systems. In contrast to Unix however
13041     a Windows typical drive character is expected to be
13042     prefixed to the path. That is an original Windows file path
13043     like "D:\Sounds\My.gig" would become in LSCP:
13044     "D:/Sounds/My.gig".
13045    
13046     </p>
13047     <p>
13048     The following LSCP commands even support escape sequences as
13049     part of at least one of their text-based arguments (i.e. entity name,
13050     description) and / or may contain escape sequences in at least one of
13051     their text-based fields in their response:
13052     </p>
13053     <blockquote class="text">
13054     <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
13055     </p>
13056     <p><a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>
13057     </p>
13058     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13059     </p>
13060     <p><a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
13061     </p>
13062     <p><a class='info' href='#GET FX_SEND INFO'>"GET FX_SEND INFO"<span> (</span><span class='info'>Getting effect send information</span><span>)</span></a>
13063     </p>
13064     <p><a class='info' href='#SET FX_SEND NAME'>"SET FX_SEND NAME"<span> (</span><span class='info'>Changing effect send's name</span><span>)</span></a>
13065     </p>
13066     <p><a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
13067     </p>
13068     <p><a class='info' href='#GET MIDI_INSTRUMENT_MAP INFO'>"GET MIDI_INSTRUMENT_MAP INFO"<span> (</span><span class='info'>Getting MIDI instrument map information</span><span>)</span></a>
13069     </p>
13070     <p><a class='info' href='#ADD MIDI_INSTRUMENT_MAP'>"ADD MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Create a new MIDI instrument map</span><span>)</span></a>
13071     </p>
13072     <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
13073     </p>
13074     <p><a class='info' href='#SET MIDI_INSTRUMENT_MAP NAME'>"SET MIDI_INSTRUMENT_MAP NAME"<span> (</span><span class='info'>Renaming a MIDI instrument map</span><span>)</span></a>
13075     </p>
13076     <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
13077     </p>
13078     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
13079     </p>
13080     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
13081     </p>
13082     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13083     </p>
13084     <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
13085     </p>
13086     <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
13087     </p>
13088     <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
13089     </p>
13090     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13091     </p>
13092     <p><a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
13093     </p>
13094     <p><a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
13095     </p>
13096     <p><a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
13097     </p>
13098     </blockquote><p>
13099     Please note that these lists are manually maintained. If you
13100     find a command that also supports escape sequences we forgot to
13101     mention here, please report it!
13102    
13103     </p>
13104     <a name="events"></a><br /><hr />
13105     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13106     <a name="rfc.section.8"></a><h3>8.&nbsp;
13107     Events</h3>
13108    
13109     <p>This chapter will describe all currently defined events supported by LinuxSampler.
13110     </p>
13111     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13112     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13113     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13114     Number of audio output devices changed</h3>
13115    
13116     <p>Client may want to be notified when the total number of audio output devices on the
13117     back-end changes by issuing the following command:
13118     </p>
13119     <p>
13120     </p>
13121     <blockquote class="text">
13122     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13123     </p>
13124     </blockquote><p>
13125    
13126     </p>
13127     <p>Server will start sending the following notification messages:
13128     </p>
13129     <p>
13130     </p>
13131     <blockquote class="text">
13132     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13133     </p>
13134     </blockquote><p>
13135    
13136     </p>
13137     <p>where &lt;devices&gt; will be replaced by the new number
13138     of audio output devices.
13139     </p>
13140     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13141     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13142     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13143     Audio output device's settings changed</h3>
13144    
13145     <p>Client may want to be notified when changes were made to audio output devices on the
13146     back-end by issuing the following command:
13147     </p>
13148     <p>
13149     </p>
13150     <blockquote class="text">
13151     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13152     </p>
13153     </blockquote><p>
13154    
13155     </p>
13156     <p>Server will start sending the following notification messages:
13157     </p>
13158     <p>
13159     </p>
13160     <blockquote class="text">
13161     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13162     </p>
13163     </blockquote><p>
13164    
13165     </p>
13166     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13167     which settings has been changed. The front-end will have to send
13168     the respective command to actually get the audio output device info. Because these messages
13169     will be triggered by LSCP commands issued by other clients rather than real
13170     time events happening on the server, it is believed that an empty notification
13171     message is sufficient here.
13172     </p>
13173     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13174     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13175     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13176     Number of MIDI input devices changed</h3>
13177    
13178     <p>Client may want to be notified when the total number of MIDI input devices on the
13179     back-end changes by issuing the following command:
13180     </p>
13181     <p>
13182     </p>
13183     <blockquote class="text">
13184     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13185     </p>
13186     </blockquote><p>
13187    
13188     </p>
13189     <p>Server will start sending the following notification messages:
13190     </p>
13191     <p>
13192     </p>
13193     <blockquote class="text">
13194     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13195     </p>
13196     </blockquote><p>
13197    
13198     </p>
13199     <p>where &lt;devices&gt; will be replaced by the new number
13200     of MIDI input devices.
13201     </p>
13202     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13203     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13204     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13205     MIDI input device's settings changed</h3>
13206    
13207     <p>Client may want to be notified when changes were made to MIDI input devices on the
13208     back-end by issuing the following command:
13209     </p>
13210     <p>
13211     </p>
13212     <blockquote class="text">
13213     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13214     </p>
13215     </blockquote><p>
13216    
13217     </p>
13218     <p>Server will start sending the following notification messages:
13219     </p>
13220     <p>
13221     </p>
13222     <blockquote class="text">
13223     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13224     </p>
13225     </blockquote><p>
13226    
13227     </p>
13228     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13229     which settings has been changed. The front-end will have to send
13230     the respective command to actually get the MIDI input device info. Because these messages
13231     will be triggered by LSCP commands issued by other clients rather than real
13232     time events happening on the server, it is believed that an empty notification
13233     message is sufficient here.
13234     </p>
13235     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13236     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13237     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13238     Number of sampler channels changed</h3>
13239    
13240     <p>Client may want to be notified when the total number of channels on the
13241     back-end changes by issuing the following command:
13242     </p>
13243     <p>
13244     </p>
13245     <blockquote class="text">
13246     <p>SUBSCRIBE CHANNEL_COUNT
13247     </p>
13248     </blockquote><p>
13249    
13250     </p>
13251     <p>Server will start sending the following notification messages:
13252     </p>
13253     <p>
13254     </p>
13255     <blockquote class="text">
13256     <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13257     </p>
13258     </blockquote><p>
13259    
13260     </p>
13261     <p>where &lt;channels&gt; will be replaced by the new number
13262     of sampler channels.
13263     </p>
13264     <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13265     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13266     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13267     MIDI data on a sampler channel arrived</h3>
13268    
13269     <p>Client may want to be notified when MIDI data arrive on sampler channels on
13270     back-end side, by issuing the following command:
13271     </p>
13272     <p>
13273     </p>
13274     <blockquote class="text">
13275     <p>SUBSCRIBE CHANNEL_MIDI
13276     </p>
13277     </blockquote><p>
13278    
13279     </p>
13280     <p>Server will start sending one of the the following notification messages:
13281     </p>
13282     <p>
13283     </p>
13284     <blockquote class="text">
13285     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13286     </p>
13287     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13288     </p>
13289     </blockquote><p>
13290    
13291     </p>
13292     <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13293     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13294     0 .. 127, reflecting the analog meaning of the MIDI specification.
13295    
13296     </p>
13297     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13298     delivered by this mechanism! With other words: events could be lost at any time!
13299     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13300     thread unaffected by this feature.
13301     </p>
13302     <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13303     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13304     <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13305     MIDI data on a MIDI input device arrived</h3>
13306    
13307     <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13308     </p>
13309     <p>
13310     </p>
13311     <blockquote class="text">
13312     <p>SUBSCRIBE DEVICE_MIDI
13313     </p>
13314     </blockquote><p>
13315    
13316     </p>
13317     <p>Server will start sending one of the the following notification messages:
13318     </p>
13319     <p>
13320     </p>
13321     <blockquote class="text">
13322     <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13323     </p>
13324     <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13325     </p>
13326     </blockquote><p>
13327    
13328     </p>
13329     <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13330     by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13331     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13332     0 .. 127, reflecting the analog meaning of the MIDI specification.
13333    
13334     </p>
13335     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13336     delivered by this mechanism! With other words: events could be lost at any time!
13337     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13338     thread unaffected by this feature.
13339     </p>
13340     <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13341     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13342     <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13343     Number of active voices changed</h3>
13344    
13345     <p>Client may want to be notified when the number of voices on the
13346     back-end changes by issuing the following command:
13347     </p>
13348     <p>
13349     </p>
13350     <blockquote class="text">
13351     <p>SUBSCRIBE VOICE_COUNT
13352     </p>
13353     </blockquote><p>
13354    
13355     </p>
13356     <p>Server will start sending the following notification messages:
13357     </p>
13358     <p>
13359     </p>
13360     <blockquote class="text">
13361     <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13362     </p>
13363     </blockquote><p>
13364    
13365     </p>
13366     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13367     voice count change occurred and &lt;voices&gt; by the new number of
13368     active voices on that channel.
13369     </p>
13370     <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13371     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13372     <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13373     Number of active disk streams changed</h3>
13374    
13375     <p>Client may want to be notified when the number of streams on the back-end
13376     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13377     </p>
13378     <p>
13379     </p>
13380     <blockquote class="text">
13381     <p>SUBSCRIBE STREAM_COUNT
13382     </p>
13383     </blockquote><p>
13384    
13385     </p>
13386     <p>Server will start sending the following notification messages:
13387     </p>
13388     <p>
13389     </p>
13390     <blockquote class="text">
13391     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13392     </p>
13393     </blockquote><p>
13394    
13395     </p>
13396     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13397     stream count change occurred and &lt;streams&gt; by the new number of
13398     active disk streams on that channel.
13399     </p>
13400     <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13401     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13402     <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13403     Disk stream buffer fill state changed</h3>
13404    
13405     <p>Client may want to be notified when the buffer fill state of a disk stream
13406     on the back-end changes by issuing the following command:
13407     </p>
13408     <p>
13409     </p>
13410     <blockquote class="text">
13411     <p>SUBSCRIBE BUFFER_FILL
13412     </p>
13413     </blockquote><p>
13414    
13415     </p>
13416     <p>Server will start sending the following notification messages:
13417     </p>
13418     <p>
13419     </p>
13420     <blockquote class="text">
13421     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13422     </p>
13423     </blockquote><p>
13424    
13425     </p>
13426     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13427     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13428     buffer fill data for this channel as described in <a class='info' href='#GET CHANNEL BUFFER_FILL'>Section&nbsp;6.4.13<span> (</span><span class='info'>Current fill state of disk stream buffers</span><span>)</span></a>
13429     as if the <a class='info' href='#GET CHANNEL BUFFER_FILL'>"GET CHANNEL BUFFER_FILL PERCENTAGE"<span> (</span><span class='info'>Current fill state of disk stream buffers</span><span>)</span></a> command was issued on this channel.
13430     </p>
13431     <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13432     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13433     <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13434     Channel information changed</h3>
13435    
13436     <p>Client may want to be notified when changes were made to sampler channels on the
13437     back-end by issuing the following command:
13438     </p>
13439     <p>
13440     </p>
13441     <blockquote class="text">
13442     <p>SUBSCRIBE CHANNEL_INFO
13443     </p>
13444     </blockquote><p>
13445    
13446     </p>
13447     <p>Server will start sending the following notification messages:
13448     </p>
13449     <p>
13450     </p>
13451     <blockquote class="text">
13452     <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13453     </p>
13454     </blockquote><p>
13455    
13456     </p>
13457     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13458     channel info change occurred. The front-end will have to send
13459     the respective command to actually get the channel info. Because these messages
13460     will be triggered by LSCP commands issued by other clients rather than real
13461     time events happening on the server, it is believed that an empty notification
13462     message is sufficient here.
13463     </p>
13464     <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13465     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13466     <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13467     Number of effect sends changed</h3>
13468    
13469     <p>Client may want to be notified when the number of effect sends on
13470     a particular sampler channel is changed by issuing the following command:
13471     </p>
13472     <p>
13473     </p>
13474     <blockquote class="text">
13475     <p>SUBSCRIBE FX_SEND_COUNT
13476     </p>
13477     </blockquote><p>
13478    
13479     </p>
13480     <p>Server will start sending the following notification messages:
13481     </p>
13482     <p>
13483     </p>
13484     <blockquote class="text">
13485     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13486     </p>
13487     </blockquote><p>
13488    
13489     </p>
13490     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13491     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13492     be replaced by the new number of effect sends on that channel.
13493     </p>
13494     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13495     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13496     <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13497     Effect send information changed</h3>
13498    
13499     <p>Client may want to be notified when changes were made to effect sends on a
13500     a particular sampler channel by issuing the following command:
13501     </p>
13502     <p>
13503     </p>
13504     <blockquote class="text">
13505     <p>SUBSCRIBE FX_SEND_INFO
13506     </p>
13507     </blockquote><p>
13508    
13509     </p>
13510     <p>Server will start sending the following notification messages:
13511     </p>
13512     <p>
13513     </p>
13514     <blockquote class="text">
13515     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13516     </p>
13517     </blockquote><p>
13518    
13519     </p>
13520     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13521     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13522     be replaced by the numerical ID of the changed effect send.
13523     </p>
13524     <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13525     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13526     <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13527     Total number of active voices changed</h3>
13528    
13529     <p>Client may want to be notified when the total number of voices on the
13530     back-end changes by issuing the following command:
13531     </p>
13532     <p>
13533     </p>
13534     <blockquote class="text">
13535     <p>SUBSCRIBE TOTAL_VOICE_COUNT
13536     </p>
13537     </blockquote><p>
13538    
13539     </p>
13540     <p>Server will start sending the following notification messages:
13541     </p>
13542     <p>
13543     </p>
13544     <blockquote class="text">
13545     <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13546     </p>
13547     </blockquote><p>
13548    
13549     </p>
13550     <p>where &lt;voices&gt; will be replaced by the new number of
13551     all currently active voices.
13552     </p>
13553     <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13554     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13555     <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13556     Total number of active disk streams changed</h3>
13557    
13558     <p>Client may want to be notified when the total number of disk streams on the
13559     back-end changes by issuing the following command:
13560     </p>
13561     <p>
13562     </p>
13563     <blockquote class="text">
13564     <p>SUBSCRIBE TOTAL_STREAM_COUNT
13565     </p>
13566     </blockquote><p>
13567    
13568     </p>
13569     <p>Server will start sending the following notification messages:
13570     </p>
13571     <p>
13572     </p>
13573     <blockquote class="text">
13574     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13575     </p>
13576     </blockquote><p>
13577    
13578     </p>
13579     <p>where &lt;streams&gt; will be replaced by the new number of
13580     all currently active disk streams.
13581     </p>
13582     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13583     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13584     <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13585     Number of MIDI instrument maps changed</h3>
13586    
13587     <p>Client may want to be notified when the number of MIDI instrument maps on the
13588     back-end changes by issuing the following command:
13589     </p>
13590     <p>
13591     </p>
13592     <blockquote class="text">
13593     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
13594     </p>
13595     </blockquote><p>
13596    
13597     </p>
13598     <p>Server will start sending the following notification messages:
13599     </p>
13600     <p>
13601     </p>
13602     <blockquote class="text">
13603     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
13604     </p>
13605     </blockquote><p>
13606    
13607     </p>
13608     <p>where &lt;maps&gt; will be replaced by the new number
13609     of MIDI instrument maps.
13610     </p>
13611     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
13612     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13613     <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
13614     MIDI instrument map information changed</h3>
13615    
13616     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
13617     back-end by issuing the following command:
13618     </p>
13619     <p>
13620     </p>
13621     <blockquote class="text">
13622     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
13623     </p>
13624     </blockquote><p>
13625    
13626     </p>
13627     <p>Server will start sending the following notification messages:
13628     </p>
13629     <p>
13630     </p>
13631     <blockquote class="text">
13632     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
13633     </p>
13634     </blockquote><p>
13635    
13636     </p>
13637     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13638     for which information changes occurred. The front-end will have to send
13639     the respective command to actually get the MIDI instrument map info. Because these messages
13640     will be triggered by LSCP commands issued by other clients rather than real
13641     time events happening on the server, it is believed that an empty notification
13642     message is sufficient here.
13643     </p>
13644     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
13645     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13646     <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
13647     Number of MIDI instruments changed</h3>
13648    
13649     <p>Client may want to be notified when the number of MIDI instrument maps on the
13650     back-end changes by issuing the following command:
13651     </p>
13652     <p>
13653     </p>
13654     <blockquote class="text">
13655     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
13656     </p>
13657     </blockquote><p>
13658    
13659     </p>
13660     <p>Server will start sending the following notification messages:
13661     </p>
13662     <p>
13663     </p>
13664     <blockquote class="text">
13665     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
13666     </p>
13667     </blockquote><p>
13668    
13669     </p>
13670     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
13671     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
13672     the new number of MIDI instruments in the specified map.
13673     </p>
13674     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
13675     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13676     <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
13677     MIDI instrument information changed</h3>
13678    
13679     <p>Client may want to be notified when changes were made to MIDI instruments on the
13680     back-end by issuing the following command:
13681     </p>
13682     <p>
13683     </p>
13684     <blockquote class="text">
13685     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
13686     </p>
13687     </blockquote><p>
13688    
13689     </p>
13690     <p>Server will start sending the following notification messages:
13691     </p>
13692     <p>
13693     </p>
13694     <blockquote class="text">
13695     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
13696     </p>
13697     </blockquote><p>
13698    
13699     </p>
13700     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13701     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
13702     the location of the changed MIDI instrument in the map. The front-end will have to send
13703     the respective command to actually get the MIDI instrument info. Because these messages
13704     will be triggered by LSCP commands issued by other clients rather than real
13705     time events happening on the server, it is believed that an empty notification
13706     message is sufficient here.
13707     </p>
13708     <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
13709     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13710     <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
13711     Global settings changed</h3>
13712    
13713     <p>Client may want to be notified when changes to the global settings
13714     of the sampler were made by issuing the following command:
13715     </p>
13716     <p>
13717     </p>
13718     <blockquote class="text">
13719     <p>SUBSCRIBE GLOBAL_INFO
13720     </p>
13721     </blockquote><p>
13722    
13723     </p>
13724     <p>Server will start sending the following types of notification messages:
13725     </p>
13726     <p>
13727     </p>
13728     <blockquote class="text">
13729     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
13730     golbal volume of the sampler is changed, where &lt;volume&gt; will be
13731     replaced by the optional dotted floating point value, reflecting the
13732     new global volume parameter.
13733     </p>
13734     </blockquote><p>
13735     </p>
13736     <blockquote class="text">
13737     <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
13738     golbal limit of the sampler for maximum voices is changed, where
13739     &lt;max-voices&gt; will be an integer value, reflecting the
13740     new global voice limit parameter.
13741     </p>
13742     </blockquote><p>
13743     </p>
13744     <blockquote class="text">
13745     <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
13746     golbal limit of the sampler for maximum disk streams is changed, where
13747     &lt;max-streams&gt; will be an integer value, reflecting the
13748     new global disk streams limit parameter.
13749     </p>
13750     </blockquote><p>
13751    
13752     </p>
13753     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
13754     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13755     <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
13756     Number of database instrument directories changed</h3>
13757    
13758     <p>Client may want to be notified when the number of instrument
13759     directories in a particular directory in the instruments database
13760     is changed by issuing the following command:
13761     </p>
13762     <p>
13763     </p>
13764     <blockquote class="text">
13765     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
13766     </p>
13767     </blockquote><p>
13768    
13769     </p>
13770     <p>Server will start sending the following notification messages:
13771     </p>
13772     <p>
13773     </p>
13774     <blockquote class="text">
13775     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
13776     </p>
13777     </blockquote><p>
13778    
13779     </p>
13780     <p>where &lt;dir-path&gt; will be replaced by the absolute path
13781     name of the directory in the instruments database,
13782     in which the number of directories is changed.
13783     </p>
13784     <p>Note that when a non-empty directory is removed, this event
13785     is not sent for the subdirectories in that directory.
13786     </p>
13787     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
13788     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13789     <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
13790     Database instrument directory information changed</h3>
13791    
13792     <p>Client may want to be notified when changes were made to directories
13793     in the instruments database by issuing the following command:
13794     </p>
13795     <p>
13796     </p>
13797     <blockquote class="text">
13798     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
13799     </p>
13800     </blockquote><p>
13801    
13802     </p>
13803     <p>Server will start sending the following notification messages:
13804     </p>
13805     <p>
13806     </p>
13807     <blockquote class="text">
13808     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
13809     </p>
13810     </blockquote><p>
13811    
13812     </p>
13813     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
13814     of the directory, for which information changes occurred. The front-end will have to send
13815     the respective command to actually get the updated directory info. Because these messages
13816     will be triggered by LSCP commands issued by other clients rather than real
13817     time events happening on the server, it is believed that an empty notification
13818     message is sufficient here.
13819     </p>
13820     <p>
13821     </p>
13822     <blockquote class="text">
13823     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
13824     </p>
13825     </blockquote><p>
13826    
13827     </p>
13828     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
13829     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13830     the new name of the directory, encapsulated into apostrophes.
13831     </p>
13832     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
13833     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13834     <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
13835     Number of database instruments changed</h3>
13836    
13837     <p>Client may want to be notified when the number of instruments
13838     in a particular directory in the instruments database
13839     is changed by issuing the following command:
13840     </p>
13841     <p>
13842     </p>
13843     <blockquote class="text">
13844     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
13845     </p>
13846     </blockquote><p>
13847    
13848     </p>
13849     <p>Server will start sending the following notification messages:
13850     </p>
13851     <p>
13852     </p>
13853     <blockquote class="text">
13854     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
13855     </p>
13856     </blockquote><p>
13857    
13858     </p>
13859     <p>where &lt;dir-path&gt; will be replaced by the absolute path
13860     name of the directory in the instruments database,
13861     in which the number of instruments is changed.
13862     </p>
13863     <p>Note that when a non-empty directory is removed, this event
13864     is not sent for the instruments in that directory.
13865     </p>
13866     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
13867     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13868     <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
13869     Database instrument information changed</h3>
13870    
13871     <p>Client may want to be notified when changes were made to instruments
13872     in the instruments database by issuing the following command:
13873     </p>
13874     <p>
13875     </p>
13876     <blockquote class="text">
13877     <p>SUBSCRIBE DB_INSTRUMENT_INFO
13878     </p>
13879     </blockquote><p>
13880    
13881     </p>
13882     <p>Server will start sending the following notification messages:
13883     </p>
13884     <p>
13885     </p>
13886     <blockquote class="text">
13887     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
13888     </p>
13889     </blockquote><p>
13890    
13891     </p>
13892     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
13893     of the instrument, which settings are changed. The front-end will have to send
13894     the respective command to actually get the updated directory info. Because these messages
13895     will be triggered by LSCP commands issued by other clients rather than real
13896     time events happening on the server, it is believed that an empty notification
13897     message is sufficient here.
13898     </p>
13899     <p>
13900     </p>
13901     <blockquote class="text">
13902     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
13903     </p>
13904     </blockquote><p>
13905    
13906     </p>
13907     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
13908     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13909     the new name of the instrument, encapsulated into apostrophes.
13910     </p>
13911     <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
13912     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13913     <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
13914     Database job status information changed</h3>
13915    
13916     <p>Client may want to be notified when the status of particular database
13917     instruments job is changed by issuing the following command:
13918     </p>
13919     <p>
13920     </p>
13921     <blockquote class="text">
13922     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
13923     </p>
13924     </blockquote><p>
13925    
13926     </p>
13927     <p>Server will start sending the following notification messages:
13928     </p>
13929     <p>
13930     </p>
13931     <blockquote class="text">
13932     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
13933     </p>
13934     </blockquote><p>
13935    
13936     </p>
13937     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
13938     which status is changed. The front-end will have to send the respective
13939     command to actually get the status info. Because these messages
13940     will be triggered by LSCP commands issued by other clients rather than real
13941     time events happening on the server, it is believed that an empty notification
13942     message is sufficient here.
13943     </p>
13944     <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
13945     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13946     <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
13947     Number of effect instances changed</h3>
13948    
13949     <p>Client may want to be notified when the number of effect instances
13950     is changed by issuing the following command:
13951     </p>
13952     <p>
13953     </p>
13954     <blockquote class="text">
13955     <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
13956     </p>
13957     </blockquote><p>
13958    
13959     </p>
13960     <p>Server will start sending the following notification messages:
13961     </p>
13962     <p>
13963     </p>
13964     <blockquote class="text">
13965     <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
13966     </p>
13967     </blockquote><p>
13968    
13969     </p>
13970     <p>where &lt;instances&gt; will be replaced by the new number
13971     of effect instances.
13972     </p>
13973     <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
13974     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13975     <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
13976     Effect instance information changed</h3>
13977    
13978     <p>Client may want to be notified when changes were made to effect instances
13979     on the back-end by issuing the following command:
13980     </p>
13981     <p>
13982     </p>
13983     <blockquote class="text">
13984     <p>SUBSCRIBE EFFECT_INSTANCE_INFO
13985     </p>
13986     </blockquote><p>
13987    
13988     </p>
13989     <p>Server will start sending the following notification messages:
13990     </p>
13991     <p>
13992     </p>
13993     <blockquote class="text">
13994     <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
13995     </p>
13996     </blockquote><p>
13997    
13998     </p>
13999     <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14000     of the effect instance.
14001     </p>
14002     <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14003     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14004     <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14005     Number of send effect chains changed</h3>
14006    
14007     <p>Client may want to be notified when the number of send effect chains
14008     is changed by issuing the following command:
14009     </p>
14010     <p>
14011     </p>
14012     <blockquote class="text">
14013     <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14014     </p>
14015     </blockquote><p>
14016    
14017     </p>
14018     <p>Server will start sending the following notification messages:
14019     </p>
14020     <p>
14021     </p>
14022     <blockquote class="text">
14023     <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14024     </p>
14025     </blockquote><p>
14026    
14027     </p>
14028     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14029     output device, in which the number of send effect chains is changed and
14030     &lt;chains&gt; will be replaced by the new number of send effect chains.
14031     </p>
14032     <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14033     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14034     <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14035     Send effect chain information changed</h3>
14036    
14037     <p>Client may want to be notified when changes were made to send effect chains
14038     on the back-end by issuing the following command:
14039     </p>
14040     <p>
14041     </p>
14042     <blockquote class="text">
14043     <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14044     </p>
14045     </blockquote><p>
14046    
14047     </p>
14048     <p>Server will start sending the following notification messages:
14049     </p>
14050     <p>
14051     </p>
14052     <blockquote class="text">
14053     <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14054     Notifies that the number of effect instances in a particular send effect chain
14055     is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14056     output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14057     by the numerical ID of the send effect chain in which the number of effect instances
14058     has changed and &lt;instances&gt; will be replaced by the new number
14059     of effect instances in the specified send effect chain.
14060     </p>
14061     </blockquote><p>
14062    
14063     </p>
14064     <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14065     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14066     <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14067     Miscellaneous and debugging events</h3>
14068    
14069     <p>Client may want to be notified of miscellaneous and debugging events occurring at
14070     the server by issuing the following command:
14071     </p>
14072     <p>
14073     </p>
14074     <blockquote class="text">
14075     <p>SUBSCRIBE MISCELLANEOUS
14076     </p>
14077     </blockquote><p>
14078    
14079     </p>
14080     <p>Server will start sending the following notification messages:
14081     </p>
14082     <p>
14083     </p>
14084     <blockquote class="text">
14085     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14086     </p>
14087     </blockquote><p>
14088    
14089     </p>
14090     <p>where &lt;string&gt; will be replaced by whatever data server
14091     wants to send to the client. Client MAY display this data to the
14092     user AS IS to facilitate debugging.
14093     </p>
14094     <a name="anchor14"></a><br /><hr />
14095     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14096     <a name="rfc.section.9"></a><h3>9.&nbsp;
14097     Security Considerations</h3>
14098    
14099     <p>As there is so far no method of authentication and authorization
14100     defined and so not required for a client applications to succeed to
14101     connect, running LinuxSampler might be a security risk for the host
14102     system the LinuxSampler instance is running on.
14103     </p>
14104     <a name="anchor15"></a><br /><hr />
14105     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14106     <a name="rfc.section.10"></a><h3>10.&nbsp;
14107     Acknowledgments</h3>
14108    
14109     <p>This document has benefited greatly from the comments of the
14110     following people, discussed on the LinuxSampler developer's mailing
14111     list:
14112     </p>
14113     <p>
14114     </p>
14115     <blockquote class="text">
14116     <p>Rui Nuno Capela
14117     </p>
14118     <p>Vladimir Senkov
14119     </p>
14120     <p>Mark Knecht
14121     </p>
14122     <p>Grigor Iliev
14123     </p>
14124     </blockquote><p>
14125    
14126     </p>
14127     <a name="rfc.references1"></a><br /><hr />
14128     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14129     <h3>11.&nbsp;References</h3>
14130     <table width="99%" border="0">
14131     <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14132     <td class="author-text">UCLA, &ldquo;<a href="http://tools.ietf.org/html/rfc20">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
14133     <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14134     <td class="author-text">Bradner, S., &ldquo;<a href="http://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
14135     <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14136     <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="http://tools.ietf.org/html/rfc2234">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
14137     <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14138     <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="http://tools.ietf.org/html/rfc793">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
14139     </table>
14140    
14141     <a name="rfc.authors"></a><br /><hr />
14142     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14143     <h3>Author's Address</h3>
14144     <table width="99%" border="0" cellpadding="0" cellspacing="0">
14145     <tr><td class="author-text">&nbsp;</td>
14146     <td class="author-text">C.
14147     Schoenebeck</td></tr>
14148     <tr><td class="author-text">&nbsp;</td>
14149     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
14150     <tr><td class="author-text">&nbsp;</td>
14151     <td class="author-text">Max-Planck-Str. 39</td></tr>
14152     <tr><td class="author-text">&nbsp;</td>
14153     <td class="author-text">74081 Heilbronn</td></tr>
14154     <tr><td class="author-text">&nbsp;</td>
14155     <td class="author-text">Germany</td></tr>
14156     <tr><td class="author" align="right">Email:&nbsp;</td>
14157     <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
14158     </table>
14159     <a name="rfc.copyright"></a><br /><hr />
14160     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14161     <h3>Full Copyright Statement</h3>
14162     <p class='copyright'>
14163     Copyright &copy; The IETF Trust (2011).</p>
14164     <p class='copyright'>
14165     This document is subject to the rights,
14166     licenses and restrictions contained in BCP&nbsp;78,
14167     and except as set forth therein,
14168     the authors retain all their rights.</p>
14169     <p class='copyright'>
14170     This document and the information contained herein are provided
14171     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14172     THE ORGANIZATION HE/SHE REPRESENTS
14173     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14174     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14175     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14176     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14177     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14178     PURPOSE.</p>
14179     <h3>Intellectual Property</h3>
14180     <p class='copyright'>
14181     The IETF takes no position regarding the validity or scope of any
14182     Intellectual Property Rights or other rights that might be claimed
14183     to pertain to the implementation or use of the technology
14184     described in this document or the extent to which any license
14185     under such rights might or might not be available; nor does it
14186     represent that it has made any independent effort to identify any
14187     such rights.
14188     Information on the procedures with respect to
14189     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14190     <p class='copyright'>
14191     Copies of IPR disclosures made to the IETF Secretariat and any
14192     assurances of licenses to be made available,
14193     or the result of an attempt made to obtain a general license or
14194     permission for the use of such proprietary rights by implementers or
14195     users of this specification can be obtained from the IETF on-line IPR
14196     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14197     <p class='copyright'>
14198     The IETF invites any interested party to bring to its attention
14199     any copyrights,
14200     patents or patent applications,
14201     or other
14202     proprietary rights that may cover technology that may be required
14203     to implement this standard.
14204     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14205     </body></html>

  ViewVC Help
Powered by ViewVC