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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1556 - (hide annotations) (download) (as text)
Thu Dec 6 01:46:03 2007 UTC (16 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 410947 byte(s)
- commited LSCP 1.3 specs of the next upcoming LS release

1 schoenebeck 1556 <!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.32 (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: June 7, 2008</td><td class="header">December 5, 2007</td></tr>
149     </table></td></tr></table>
150     <h1><br />LinuxSampler Control Protocol<br />LSCP 1.3</h1>
151    
152     <h3>Status of this Memo</h3>
153     <p>
154     By submitting this Internet-Draft,
155     each author represents that any applicable patent or other IPR claims of which
156     he or she is aware have been or will be disclosed,
157     and any of which he or she becomes aware will be disclosed,
158     in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
159     <p>
160     Internet-Drafts are working documents of the Internet Engineering
161     Task Force (IETF), its areas, and its working groups.
162     Note that other groups may also distribute working documents as
163     Internet-Drafts.</p>
164     <p>
165     Internet-Drafts are draft documents valid for a maximum of six months
166     and may be updated, replaced, or obsoleted by other documents at any time.
167     It is inappropriate to use Internet-Drafts as reference material or to cite
168     them other than as &ldquo;work in progress.&rdquo;</p>
169     <p>
170     The list of current Internet-Drafts can be accessed at
171     <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
172     <p>
173     The list of Internet-Draft Shadow Directories can be accessed at
174     <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
175     <p>
176     This Internet-Draft will expire on June 7, 2008.</p>
177    
178     <h3>Copyright Notice</h3>
179     <p>
180     Copyright &copy; The IETF Trust (2007).</p>
181    
182     <h3>Abstract</h3>
183    
184     <p>The LinuxSampler Control Protocol (LSCP) is an
185     application-level protocol primarily intended for local and
186     remote controlling the LinuxSampler backend application, which is a
187     sophisticated server-like console application essentially playing
188     back audio samples and manipulating the samples in real time to
189     certain extent.
190     </p><a name="toc"></a><br /><hr />
191     <h3>Table of Contents</h3>
192     <p class="toc">
193     <a href="#anchor1">1.</a>&nbsp;
194     Requirements notation<br />
195     <a href="#LSCP versioning">2.</a>&nbsp;
196     Versioning of this specification<br />
197     <a href="#anchor2">3.</a>&nbsp;
198     Introduction<br />
199     <a href="#anchor3">4.</a>&nbsp;
200     Focus of this protocol<br />
201     <a href="#anchor4">5.</a>&nbsp;
202     Communication Overview<br />
203     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204     Request/response communication method<br />
205     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206     Result format<br />
207     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208     Subscribe/notify communication method<br />
209     <a href="#control_commands">6.</a>&nbsp;
210     Description for control commands<br />
211     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212     Ignored lines and comments<br />
213     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214     Configuring audio drivers<br />
215     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216     Getting amount of available audio output drivers<br />
217     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218     Getting all available audio output drivers<br />
219     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220     Getting information about a specific audio
221     output driver<br />
222     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223     Getting information about specific audio
224     output driver parameter<br />
225     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226     Creating an audio output device<br />
227     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228     Destroying an audio output device<br />
229     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230     Getting all created audio output device count<br />
231     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232     Getting all created audio output device list<br />
233     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234     Getting current settings of an audio output device<br />
235     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236     Changing settings of audio output devices<br />
237     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238     Getting information about an audio channel<br />
239     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240     Getting information about specific audio channel parameter<br />
241     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242     Changing settings of audio output channels<br />
243     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244     Configuring MIDI input drivers<br />
245     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246     Getting amount of available MIDI input drivers<br />
247     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248     Getting all available MIDI input drivers<br />
249     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250     Getting information about a specific MIDI input driver<br />
251     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252     Getting information about specific MIDI input driver parameter<br />
253     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254     Creating a MIDI input device<br />
255     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256     Destroying a MIDI input device<br />
257     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258     Getting all created MIDI input device count<br />
259     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260     Getting all created MIDI input device list<br />
261     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262     Getting current settings of a MIDI input device<br />
263     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264     Changing settings of MIDI input devices<br />
265     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266     Getting information about a MIDI port<br />
267     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268     Getting information about specific MIDI port parameter<br />
269     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270     Changing settings of MIDI input ports<br />
271     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272     Configuring sampler channels<br />
273     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274     Loading an instrument<br />
275     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276     Loading a sampler engine<br />
277     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278     Getting all created sampler channel count<br />
279     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280     Getting all created sampler channel list<br />
281     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282     Adding a new sampler channel<br />
283     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284     Removing a sampler channel<br />
285     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286     Getting amount of available engines<br />
287     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288     Getting all available engines<br />
289     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290     Getting information about an engine<br />
291     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292     Getting sampler channel information<br />
293     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294     Current number of active voices<br />
295     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296     Current number of active disk streams<br />
297     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298     Current fill state of disk stream buffers<br />
299     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300     Setting audio output device<br />
301     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302     Setting audio output type<br />
303     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304     Setting audio output channel<br />
305     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306     Setting MIDI input device<br />
307     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308     Setting MIDI input type<br />
309     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310     Setting MIDI input port<br />
311     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312     Setting MIDI input channel<br />
313     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314     Setting channel volume<br />
315     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316     Muting a sampler channel<br />
317     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318     Soloing a sampler channel<br />
319     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
320     Assigning a MIDI instrument map to a sampler channel<br />
321     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
322     Adding an effect send to a sampler channel<br />
323     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
324     Removing an effect send from a sampler channel<br />
325     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
326     Getting amount of effect sends on a sampler channel<br />
327     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
328     Listing all effect sends on a sampler channel<br />
329     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
330     Getting effect send information<br />
331     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
332     Changing effect send's name<br />
333     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
334     Altering effect send's audio routing<br />
335     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336     Altering effect send's MIDI controller<br />
337     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338     Altering effect send's send level<br />
339     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.34.</a>&nbsp;
340     Resetting a sampler channel<br />
341     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
342     Controlling connection<br />
343     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
344     Register front-end for receiving event messages<br />
345     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
346     Unregister front-end for not receiving event messages<br />
347     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
348     Enable or disable echo of commands<br />
349     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
350     Close client connection<br />
351     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
352     Global commands<br />
353     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
354     Current number of active voices<br />
355     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
356     Maximum amount of active voices<br />
357     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
358     Current number of active disk streams<br />
359     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
360     Reset sampler<br />
361     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
362     General sampler informations<br />
363     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
364     Getting global volume attenuation<br />
365     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
366     Setting global volume attenuation<br />
367     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
368     MIDI Instrument Mapping<br />
369     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
370     Create a new MIDI instrument map<br />
371     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
372     Delete one particular or all MIDI instrument maps<br />
373     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
374     Get amount of existing MIDI instrument maps<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
376     Getting all created MIDI instrument maps<br />
377     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
378     Getting MIDI instrument map information<br />
379     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
380     Renaming a MIDI instrument map<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
382     Create or replace a MIDI instrument map entry<br />
383     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
384     Getting ammount of MIDI instrument map entries<br />
385     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
386     Getting indeces of all entries of a MIDI instrument map<br />
387     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
388     Remove an entry from the MIDI instrument map<br />
389     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
390     Get current settings of MIDI instrument map entry<br />
391     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
392     Clear MIDI instrument map<br />
393     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
394     Managing Instruments Database<br />
395     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
396     Creating a new instrument directory<br />
397     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
398     Deleting an instrument directory<br />
399     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
400     Getting amount of instrument directories<br />
401     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
402     Listing all directories in specific directory<br />
403     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
404     Getting instrument directory information<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
406     Renaming an instrument directory<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
408     Moving an instrument directory<br />
409     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
410     Copying instrument directories<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
412     Changing the description of directory<br />
413     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
414     Finding directories<br />
415     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
416     Adding instruments to the instruments database<br />
417     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
418     Removing an instrument<br />
419     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
420     Getting amount of instruments<br />
421     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
422     Listing all instruments in specific directory<br />
423     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
424     Getting instrument information<br />
425     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
426     Renaming an instrument<br />
427     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
428     Moving an instrument<br />
429     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
430     Copying instruments<br />
431     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
432     Changing the description of instrument<br />
433     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
434     Finding instruments<br />
435     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
436     Getting job status information<br />
437     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
438     Formatting the instruments database<br />
439     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
440     Editing Instruments<br />
441     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
442     Opening an appropriate instrument editor application<br />
443     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
444     Managing Files<br />
445     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
446     Retrieving amount of instruments of a file<br />
447     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
448     Retrieving all instruments of a file<br />
449     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
450     Retrieving informations about one instrument in a file<br />
451     <a href="#command_syntax">7.</a>&nbsp;
452     Command Syntax<br />
453     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
454     Character Set and Escape Sequences<br />
455     <a href="#events">8.</a>&nbsp;
456     Events<br />
457     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
458     Number of audio output devices changed<br />
459     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
460     Audio output device's settings changed<br />
461     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
462     Number of MIDI input devices changed<br />
463     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
464     MIDI input device's settings changed<br />
465     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
466     Number of sampler channels changed<br />
467     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.6.</a>&nbsp;
468     Number of active voices changed<br />
469     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.7.</a>&nbsp;
470     Number of active disk streams changed<br />
471     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.8.</a>&nbsp;
472     Disk stream buffer fill state changed<br />
473     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.9.</a>&nbsp;
474     Channel information changed<br />
475     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.10.</a>&nbsp;
476     Number of effect sends changed<br />
477     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.11.</a>&nbsp;
478     Effect send information changed<br />
479     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.12.</a>&nbsp;
480     Total number of active voices changed<br />
481     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.13.</a>&nbsp;
482     Total number of active disk streams changed<br />
483     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.14.</a>&nbsp;
484     Number of MIDI instrument maps changed<br />
485     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.15.</a>&nbsp;
486     MIDI instrument map information changed<br />
487     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.16.</a>&nbsp;
488     Number of MIDI instruments changed<br />
489     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.17.</a>&nbsp;
490     MIDI instrument information changed<br />
491     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.18.</a>&nbsp;
492     Global settings changed<br />
493     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.19.</a>&nbsp;
494     Number of database instrument directories changed<br />
495     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.20.</a>&nbsp;
496     Database instrument directory information changed<br />
497     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.21.</a>&nbsp;
498     Number of database instruments changed<br />
499     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.22.</a>&nbsp;
500     Database instrument information changed<br />
501     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.23.</a>&nbsp;
502     Database job status information changed<br />
503     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.24.</a>&nbsp;
504     Miscellaneous and debugging events<br />
505     <a href="#anchor14">9.</a>&nbsp;
506     Security Considerations<br />
507     <a href="#anchor15">10.</a>&nbsp;
508     Acknowledgments<br />
509     <a href="#rfc.references1">11.</a>&nbsp;
510     References<br />
511     <a href="#rfc.authors">&#167;</a>&nbsp;
512     Author's Address<br />
513     <a href="#rfc.copyright">&#167;</a>&nbsp;
514     Intellectual Property and Copyright Statements<br />
515     </p>
516     <br clear="all" />
517    
518     <a name="anchor1"></a><br /><hr />
519     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
520     <a name="rfc.section.1"></a><h3>1.&nbsp;
521     Requirements notation</h3>
522    
523     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
524     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
525     and "OPTIONAL" in this document are to be interpreted as
526     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>.
527     </p>
528     <p>This protocol is always case-sensitive if not explicitly
529     claimed the opposite.
530     </p>
531     <p>In examples, "C:" and "S:" indicate lines sent by the client
532     (front-end) and server (LinuxSampler) respectively. Lines in
533     examples must be interpreted as every line being CRLF
534     terminated (carriage return character followed by line feed
535     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>),
536     thus the following example:
537     </p>
538     <p>
539     </p>
540     <blockquote class="text">
541     <p>C: "some line"
542     </p>
543     <p>&nbsp;&nbsp;&nbsp;"another line"
544     </p>
545     </blockquote><p>
546    
547     </p>
548     <p>must actually be interpreted as client sending the following
549     message:
550     </p>
551     <p>
552     </p>
553     <blockquote class="text">
554     <p>"some line&lt;CR&gt;&lt;LF&gt;another
555     line&lt;CR&gt;&lt;LF&gt;"
556     </p>
557     </blockquote><p>
558    
559     </p>
560     <p>where &lt;CR&gt; symbolizes the carriage return character and
561     &lt;LF&gt; the line feed character as defined in the ASCII
562     standard.
563     </p>
564     <p>Due to technical reasons, messages can arbitrary be
565     fragmented, means the following example:
566     </p>
567     <p>
568     </p>
569     <blockquote class="text">
570     <p>S: "abcd"
571     </p>
572     </blockquote><p>
573    
574     </p>
575     <p>could also happen to be sent in three messages like in the
576     following sequence scenario:
577     </p>
578     <p>
579     </p>
580     <ul class="text">
581     <li>server sending message "a"
582     </li>
583     <li>followed by a delay (pause) with
584     arbitrary duration
585     </li>
586     <li>followed by server sending message
587     "bcd&lt;CR&gt;"
588     </li>
589     <li>again followed by a delay (pause) with arbitrary
590     duration
591     </li>
592     <li>followed by server sending the message
593     "&lt;LF&gt;"
594     </li>
595     </ul><p>
596    
597     </p>
598     <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
599     return and line feed characters respectively.
600     </p>
601     <a name="LSCP versioning"></a><br /><hr />
602     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
603     <a name="rfc.section.2"></a><h3>2.&nbsp;
604     Versioning of this specification</h3>
605    
606     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
607     release of the LSCP specification will be tagged with a unique version
608     tuple. The version tuple consists at least of a major and minor version
609     number like:
610    
611     </p>
612     <p>
613     </p>
614     <blockquote class="text">
615     <p>"1.2"
616     </p>
617     </blockquote><p>
618    
619     </p>
620     <p>
621     In this example the major version number would be "1" and the minor
622     version number would be "2". Note that the version tuple might also
623     have more than two elements. The major version number defines a
624     group of backward compatible versions. That means a frontend is
625     compatible to the connected sampler if and only if the LSCP versions
626     to which each of the two parties complies to, match both of the
627     following rules:
628    
629     </p>
630     <p>Compatibility:
631     </p>
632     <p>
633     </p>
634     <ol class="text">
635     <li>The frontend's LSCP major version and the sampler's LSCP
636     major version are exactly equal.
637     </li>
638     <li>The frontend's LSCP minor version is less or equal than
639     the sampler's LSCP minor version.
640     </li>
641     </ol><p>
642    
643     </p>
644     <p>
645     Compatibility can only be claimed if both rules are true.
646     The frontend can use the
647     <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
648     get the version of the LSCP specification the sampler complies with.
649    
650     </p>
651     <a name="anchor2"></a><br /><hr />
652     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
653     <a name="rfc.section.3"></a><h3>3.&nbsp;
654     Introduction</h3>
655    
656     <p>LinuxSampler is a so called software sampler application
657     capable to playback audio samples from a computer's Random
658     Access Memory (RAM) as well as directly streaming it from disk.
659     LinuxSampler is designed to be modular. It provides several so
660     called "sampler engines" where each engine is specialized for a
661     certain purpose. LinuxSampler has virtual channels which will be
662     referred in this document as "sampler channels". The channels
663     are in such way virtual as they can be connected to an
664     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
665     sampler channel 17 could be connected to an ALSA sequencer
666     device 64:0 and listening to MIDI channel 1 there). Each sampler
667     channel will be associated with an instance of one of the available
668     sampler engines (e.g. GigEngine, DLSEngine). The audio output of
669     each sampler channel can be routed to an arbitrary audio output
670     method (ALSA / JACK) and an arbitrary audio output channel
671     there.
672     </p>
673     <a name="anchor3"></a><br /><hr />
674     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
675     <a name="rfc.section.4"></a><h3>4.&nbsp;
676     Focus of this protocol</h3>
677    
678     <p>Main focus of this protocol is to provide a way to configure
679     a running LinuxSampler instance and to retrieve information
680     about it. The focus of this protocol is not to provide a way to
681     control synthesis parameters or even to trigger or release
682     notes. Or in other words; the focus are those functionalities
683     which are not covered by MIDI or which may at most be handled
684     via MIDI System Exclusive Messages.
685     </p>
686     <a name="anchor4"></a><br /><hr />
687     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
688     <a name="rfc.section.5"></a><h3>5.&nbsp;
689     Communication Overview</h3>
690    
691     <p>There are two distinct methods of communication between a
692     running instance of LinuxSampler and one or more control
693     applications, so called "front-ends": a simple request/response
694     communication method used by the clients to give commands to the
695     server as well as to inquire about server's status and a
696     subscribe/notify communication method used by the client to
697     subscribe to and receive notifications of certain events as they
698     happen on the server. The latter needs more effort to be
699     implemented in the front-end application. The two communication
700     methods will be described next.
701     </p>
702     <a name="anchor5"></a><br /><hr />
703     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
704     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
705     Request/response communication method</h3>
706    
707     <p>This simple communication method is based on
708     <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
709     front-end application establishes a TCP connection to the
710     LinuxSampler instance on a certain host system. Then the
711     front-end application will send certain ASCII based commands
712     as defined in this document (every command line must be CRLF
713     terminated - see "Conventions used in this document" at the
714     beginning of this document) and the LinuxSampler application
715     will response after a certain process time with an
716     appropriate ASCII based answer, also as defined in this
717     document. So this TCP communication is simply based on query
718     and answer paradigm. That way LinuxSampler is only able to
719     answer on queries from front-ends, but not able to
720     automatically send messages to the client if it's not asked
721     to. The fronted should not reconnect to LinuxSampler for
722     every single command, instead it should keep the connection
723     established and simply resend message(s) for subsequent
724     commands. To keep information in the front-end up-to-date
725     the front-end has to periodically send new requests to get
726     the current information from the LinuxSampler instance. This
727     is often referred to as "polling". While polling is simple
728     to implement and may be OK to use in some cases, there may
729     be disadvantages to polling such as network traffic overhead
730     and information being out of date.
731     It is possible for a client or several clients to open more
732     than one connection to the server at the same time. It is
733     also possible to send more than one request to the server
734     at the same time but if those requests are sent over the
735     same connection server MUST execute them sequentially. Upon
736     executing a request server will produce a result set and
737     send it to the client. Each and every request made by the
738     client MUST result in a result set being sent back to the
739     client. No other data other than a result set may be sent by
740     a server to a client. No result set may be sent to a client
741     without the client sending request to the server first. On
742     any particular connection, result sets MUST be sent in their
743     entirety without being interrupted by other result sets. If
744     several requests got queued up at the server they MUST be
745     processed in the order they were received and result sets
746     MUST be sent back in the same order.
747     </p>
748     <a name="anchor6"></a><br /><hr />
749     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
750     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
751     Result format</h3>
752    
753     <p>Result set could be one of the following types:
754     </p>
755     <p>
756     </p>
757     <ol class="text">
758     <li>Normal
759     </li>
760     <li>Warning
761     </li>
762     <li>Error
763     </li>
764     </ol><p>
765    
766     </p>
767     <p>Warning and Error result sets MUST be single line and
768     have the following format:
769     </p>
770     <p>
771     </p>
772     <ul class="text">
773     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
774     </li>
775     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
776     </li>
777     </ul><p>
778    
779     </p>
780     <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
781     numeric unique identifiers of the warning or error and
782     &lt;warning-message&gt; and &lt;error-message&gt; are
783     human readable descriptions of the warning or error
784     respectively.
785     </p>
786     <p>Examples:
787     </p>
788     <p>
789     </p>
790     <blockquote class="text">
791     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
792     </p>
793     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
794     </p>
795     </blockquote><p>
796    
797     </p>
798     <p>
799     </p>
800     <blockquote class="text">
801     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
802     </p>
803     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
804     </p>
805     </blockquote><p>
806    
807     </p>
808     <p>
809     </p>
810     <blockquote class="text">
811     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
812     </p>
813     <p>S: "ERR:9:There is no audio output device with index 123456."
814     </p>
815     </blockquote><p>
816    
817     </p>
818     <p>Normal result sets could be:
819     </p>
820     <p>
821     </p>
822     <ol class="text">
823     <li>Empty
824     </li>
825     <li>Single line
826     </li>
827     <li>Multi-line
828     </li>
829     </ol><p>
830    
831     </p>
832     <p> Empty result set is issued when the server only
833     needed to acknowledge the fact that the request was
834     received and it was processed successfully and no
835     additional information is available. This result set has
836     the following format:
837     </p>
838     <p>
839     </p>
840     <blockquote class="text">
841     <p>"OK"
842     </p>
843     </blockquote><p>
844    
845     </p>
846     <p>Example:
847     </p>
848     <p>
849     </p>
850     <blockquote class="text">
851     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
852     </p>
853     <p>S: "OK"
854     </p>
855     </blockquote><p>
856    
857     </p>
858     <p>Single line result sets are command specific. One
859     example of a single line result set is an empty line.
860     Multi-line result sets are command specific and may
861     include one or more lines of information. They MUST
862     always end with the following line:
863     </p>
864     <p>
865     </p>
866     <blockquote class="text">
867     <p>"."
868     </p>
869     </blockquote><p>
870    
871     </p>
872     <p>Example:
873     </p>
874     <p>
875     </p>
876     <blockquote class="text">
877     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
878     </p>
879     <p>S: "DRIVER: ALSA"
880     </p>
881     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
882     </p>
883     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
884     </p>
885     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
886     </p>
887     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
888     </p>
889     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
890     </p>
891     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
892     </p>
893     <p>&nbsp;&nbsp;&nbsp;"."
894     </p>
895     </blockquote><p>
896    
897     </p>
898     <p>In addition to above mentioned formats, warnings and
899     empty result sets MAY be indexed. In this case, they
900     have the following formats respectively:
901     </p>
902     <p>
903     </p>
904     <ul class="text">
905     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
906     </li>
907     <li>"OK[&lt;index&gt;]"
908     </li>
909     </ul><p>
910    
911     </p>
912     <p>where &lt;index&gt; is command specific and is used
913     to indicate channel number that the result set was
914     related to or other integer value.
915     </p>
916     <p>Each line of the result set MUST end with
917     &lt;CRLF&gt;.
918     </p>
919     <p>Examples:
920     </p>
921     <p>
922     </p>
923     <blockquote class="text">
924     <p>C: "ADD CHANNEL"
925     </p>
926     <p>S: "OK[12]"
927     </p>
928     </blockquote><p>
929    
930     </p>
931     <p>
932     </p>
933     <blockquote class="text">
934     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
935     </p>
936     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
937     </p>
938     </blockquote><p>
939    
940     </p>
941     <a name="anchor7"></a><br /><hr />
942     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
943     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
944     Subscribe/notify communication method</h3>
945    
946     <p>This more sophisticated communication method is actually
947     only an extension of the simple request/response
948     communication method. The front-end still uses a TCP
949     connection and sends the same commands on the TCP
950     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
951     commands that allow a client to tell the server that it is
952     interested in receiving notifications about certain events
953     as they happen on the server. The SUBSCRIBE command has the
954     following syntax:
955     </p>
956     <p>
957     </p>
958     <blockquote class="text">
959     <p>SUBSCRIBE &lt;event-id&gt;
960     </p>
961     </blockquote><p>
962    
963     </p>
964     <p>where &lt;event-id&gt; will be replaced by the respective
965     event that client wants to subscribe to. Upon receiving such
966     request, server SHOULD respond with OK and start sending
967     EVENT notifications when a given even has occurred to the
968     front-end when an event has occurred. It MAY be possible
969     certain events may be sent before OK response during real
970     time nature of their generation. Event messages have the
971     following format:
972     </p>
973     <p>
974     </p>
975     <blockquote class="text">
976     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
977     </p>
978     </blockquote><p>
979    
980     </p>
981     <p>where &lt;event-id&gt; uniquely identifies the event that
982     has occurred and &lt;custom-event-data&gt; is event
983     specific.
984     </p>
985     <p>Several rules must be followed by the server when
986     generating events:
987     </p>
988     <p>
989     </p>
990     <ol class="text">
991     <li>Events MUST NOT be sent to any client who has not
992     issued an appropriate SUBSCRIBE command.
993     </li>
994     <li>Events MUST only be sent using the same
995     connection that was used to subscribe to them.
996     </li>
997     <li>When response is being sent to the client, event
998     MUST be inserted in the stream before or after the
999     response, but NOT in the middle. Same is true about
1000     the response. It should never be inserted in the
1001     middle of the event message as well as any other
1002     response.
1003     </li>
1004     </ol><p>
1005    
1006     </p>
1007     <p>If the client is not interested in a particular event
1008     anymore it MAY issue UNSUBSCRIBE command using the following
1009     syntax:
1010     </p>
1011     <p>
1012     </p>
1013     <blockquote class="text">
1014     <p>UNSUBSCRIBE &lt;event-id&gt;
1015     </p>
1016     </blockquote><p>
1017    
1018     </p>
1019     <p>where &lt;event-id&gt; will be replace by the respective
1020     event that client is no longer interested in receiving. For
1021     a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1022     </p>
1023     <p>Example: the fill states of disk stream buffers have
1024     changed on sampler channel 4 and the LinuxSampler instance
1025     will react by sending the following message to all clients
1026     who subscribed to this event:
1027     </p>
1028     <p>
1029     </p>
1030     <blockquote class="text">
1031     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1032     </p>
1033     </blockquote><p>
1034    
1035     </p>
1036     <p>Which means there are currently three active streams on
1037     sampler channel 4, where the stream with ID "35" is filled
1038     by 62%, stream with ID 33 is filled by 80% and stream with
1039     ID 37 is filled by 98%.
1040     </p>
1041     <p>Clients may choose to open more than one connection to
1042     the server and use some connections to receive notifications
1043     while using other connections to issue commands to the
1044     back-end. This is entirely legal and up to the
1045     implementation. This does not change the protocol in any way
1046     and no special restrictions exist on the server to allow or
1047     disallow this or to track what connections belong to what
1048     front-ends. Server will listen on a single port, accept
1049     multiple connections and support protocol described in this
1050     specification in it's entirety on this single port on each
1051     connection that it accepted.
1052     </p>
1053     <p>Due to the fact that TCP is used for this communication,
1054     dead peers will be detected automatically by the OS TCP
1055     stack. While it may take a while to detect dead peers if no
1056     traffic is being sent from server to client (TCP keep-alive
1057     timer is set to 2 hours on many OSes) it will not be an
1058     issue here as when notifications are sent by the server,
1059     dead client will be detected quickly.
1060     </p>
1061     <p>When connection is closed for any reason server MUST
1062     forget all subscriptions that were made on this connection.
1063     If client reconnects it MUST resubscribe to all events that
1064     it wants to receive.
1065     </p>
1066     <a name="control_commands"></a><br /><hr />
1067     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1068     <a name="rfc.section.6"></a><h3>6.&nbsp;
1069     Description for control commands</h3>
1070    
1071     <p>This chapter will describe the available control commands
1072     that can be sent on the TCP connection in detail. Some certain
1073     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>
1074     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
1075     multiple-line responses. In this case LinuxSampler signals the
1076     end of the response by a "." (single dot) line.
1077     </p>
1078     <a name="anchor8"></a><br /><hr />
1079     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1080     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1081     Ignored lines and comments</h3>
1082    
1083     <p>White lines, that is lines which only contain space and
1084     tabulator characters, and lines that start with a "#"
1085     character are ignored, thus it's possible for example to
1086     group commands and to place comments in a LSCP script
1087     file.
1088     </p>
1089     <a name="anchor9"></a><br /><hr />
1090     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1091     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1092     Configuring audio drivers</h3>
1093    
1094     <p>Instances of drivers in LinuxSampler are called devices.
1095     You can use multiple audio devices simultaneously, e.g. to
1096     output the sound of one sampler channel using the ALSA audio
1097     output driver, and on another sampler channel you might want
1098     to use the JACK audio output driver. For particular audio
1099     output systems it's also possible to create several devices
1100     of the same audio output driver, e.g. two separate ALSA
1101     audio output devices for using two different sound cards at
1102     the same time. This chapter describes all commands to
1103     configure LinuxSampler's audio output devices and their
1104     parameters.
1105     </p>
1106     <p>Instead of defining commands and parameters for each
1107     driver individually, all possible parameters, their meanings
1108     and possible values have to be obtained at runtime. This
1109     makes the protocol a bit abstract, but has the advantage,
1110     that front-ends can be written independently of what drivers
1111     are currently implemented and what parameters these drivers
1112     are actually offering. This means front-ends can even handle
1113     drivers which are implemented somewhere in future without
1114     modifying the front-end at all.
1115     </p>
1116     <p>Note: examples in this chapter showing particular
1117     parameters of drivers are not meant as specification of the
1118     drivers' parameters. Driver implementations in LinuxSampler
1119     might have complete different parameter names and meanings
1120     than shown in these examples or might change in future, so
1121     these examples are only meant for showing how to retrieve
1122     what parameters drivers are offering, how to retrieve their
1123     possible values, etc.
1124     </p>
1125     <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1126     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1127     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1128     Getting amount of available audio output drivers</h3>
1129    
1130     <p>Use the following command to get the number of
1131     audio output drivers currently available for the
1132     LinuxSampler instance:
1133     </p>
1134     <p>
1135     </p>
1136     <blockquote class="text">
1137     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1138     </p>
1139     </blockquote><p>
1140    
1141     </p>
1142     <p>Possible Answers:
1143     </p>
1144     <p>
1145     </p>
1146     <blockquote class="text">
1147     <p>LinuxSampler will answer by sending the
1148     number of audio output drivers.
1149     </p>
1150     </blockquote><p>
1151    
1152     </p>
1153     <p>Example:
1154     </p>
1155     <p>
1156     </p>
1157     <blockquote class="text">
1158     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1159     </p>
1160     <p>S: "2"
1161     </p>
1162     </blockquote><p>
1163    
1164     </p>
1165     <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1166     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1167     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1168     Getting all available audio output drivers</h3>
1169    
1170     <p>Use the following command to list all audio output
1171     drivers currently available for the LinuxSampler
1172     instance:
1173     </p>
1174     <p>
1175     </p>
1176     <blockquote class="text">
1177     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1178     </p>
1179     </blockquote><p>
1180    
1181     </p>
1182     <p>Possible Answers:
1183     </p>
1184     <p>
1185     </p>
1186     <blockquote class="text">
1187     <p>LinuxSampler will answer by sending comma
1188     separated character strings, each symbolizing an
1189     audio output driver.
1190     </p>
1191     </blockquote><p>
1192    
1193     </p>
1194     <p>Example:
1195     </p>
1196     <p>
1197     </p>
1198     <blockquote class="text">
1199     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1200     </p>
1201     <p>S: "ALSA,JACK"
1202     </p>
1203     </blockquote><p>
1204    
1205     </p>
1206     <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1207     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1208     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1209     Getting information about a specific audio
1210     output driver</h3>
1211    
1212     <p>Use the following command to get detailed information
1213     about a specific audio output driver:
1214     </p>
1215     <p>
1216     </p>
1217     <blockquote class="text">
1218     <p>GET AUDIO_OUTPUT_DRIVER INFO
1219     &lt;audio-output-driver&gt;
1220     </p>
1221     </blockquote><p>
1222    
1223     </p>
1224     <p>Where &lt;audio-output-driver&gt; is the name of the
1225     audio output driver, returned by the
1226     <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.
1227     </p>
1228     <p>Possible Answers:
1229     </p>
1230     <p>
1231     </p>
1232     <blockquote class="text">
1233     <p>LinuxSampler will answer by sending a
1234     &lt;CRLF&gt; separated list. Each answer line
1235     begins with the information category name
1236     followed by a colon and then a space character
1237     &lt;SP&gt; and finally the info character string
1238     to that info category. At the moment the
1239     following information categories are
1240     defined:
1241     </p>
1242     <p>
1243     </p>
1244     <blockquote class="text">
1245     <p>DESCRIPTION -
1246     </p>
1247     <blockquote class="text">
1248     <p> character string describing the
1249     audio output driver
1250     </p>
1251     </blockquote>
1252    
1253    
1254     <p>VERSION -
1255     </p>
1256     <blockquote class="text">
1257     <p>character string reflecting the
1258     driver's version
1259     </p>
1260     </blockquote>
1261    
1262    
1263     <p>PARAMETERS -
1264     </p>
1265     <blockquote class="text">
1266     <p>comma separated list of all
1267     parameters available for the given
1268     audio output driver, at least
1269     parameters 'channels', 'samplerate'
1270     and 'active' are offered by all audio
1271     output drivers
1272     </p>
1273     </blockquote>
1274    
1275    
1276     </blockquote>
1277    
1278    
1279     <p>The mentioned fields above don't have to be
1280     in particular order.
1281     </p>
1282     </blockquote><p>
1283    
1284     </p>
1285     <p>Example:
1286     </p>
1287     <p>
1288     </p>
1289     <blockquote class="text">
1290     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1291     </p>
1292     <p>S: "DESCRIPTION: Advanced Linux Sound
1293     Architecture"
1294     </p>
1295     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1296     </p>
1297     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1298     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1299     FRAGMENTSIZE,CARD"
1300     </p>
1301     <p>&nbsp;&nbsp;&nbsp;"."
1302     </p>
1303     </blockquote><p>
1304    
1305     </p>
1306     <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1307     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1308     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1309     Getting information about specific audio
1310     output driver parameter</h3>
1311    
1312     <p>Use the following command to get detailed information
1313     about a specific audio output driver parameter:
1314     </p>
1315     <p>
1316     </p>
1317     <blockquote class="text">
1318     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1319     </p>
1320     </blockquote><p>
1321    
1322     </p>
1323     <p>Where &lt;audio&gt; is the name of the audio output
1324     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,
1325     &lt;prm&gt; a specific parameter name for which information should be
1326     obtained (as returned by the
1327     <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
1328     &lt;deplist&gt; is an optional list of parameters on which the sought
1329     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1330     pairs in form of "key1=val1 key2=val2 ...", where character string values
1331     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1332     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1333     the front-end application can simply put all parameters into &lt;deplist&gt;
1334     with the values already selected by the user.
1335     </p>
1336     <p>Possible Answers:
1337     </p>
1338     <p>
1339     </p>
1340     <blockquote class="text">
1341     <p>LinuxSampler will answer by sending a
1342     &lt;CRLF&gt; separated list.
1343     Each answer line begins with the information category name
1344     followed by a colon and then a space character &lt;SP&gt; and
1345     finally
1346     the info character string to that info category. There are
1347     information which is always returned, independently of the
1348     given driver parameter and there are optional information
1349     which is only shown dependently to given driver parameter. At
1350     the moment the following information categories are defined:
1351     </p>
1352     </blockquote><p>
1353    
1354     </p>
1355     <p>
1356     </p>
1357     <blockquote class="text">
1358     <p>TYPE -
1359     </p>
1360     <blockquote class="text">
1361     <p>either "BOOL" for boolean value(s) or
1362     "INT" for integer
1363     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1364     character string(s)
1365     (always returned, no matter which driver parameter)
1366     </p>
1367     </blockquote>
1368    
1369    
1370     <p>DESCRIPTION -
1371     </p>
1372     <blockquote class="text">
1373     <p>arbitrary text describing the purpose of the parameter
1374     (always returned, no matter which driver parameter)
1375     </p>
1376     </blockquote>
1377    
1378    
1379     <p>MANDATORY -
1380     </p>
1381     <blockquote class="text">
1382     <p>either true or false, defines if this parameter must be
1383     given when the device is to be created with the
1384     <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>
1385     command (always returned, no matter which driver parameter)
1386     </p>
1387     </blockquote>
1388    
1389    
1390     <p>FIX -
1391     </p>
1392     <blockquote class="text">
1393     <p>either true or false, if false then this parameter can
1394     be changed at any time, once the device is created by
1395     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>
1396     command (always returned, no matter which driver parameter)
1397     </p>
1398     </blockquote>
1399    
1400    
1401     <p>MULTIPLICITY -
1402     </p>
1403     <blockquote class="text">
1404     <p>either true or false, defines if this parameter allows
1405     only one value or a list of values, where true means
1406     multiple values and false only a single value allowed
1407     (always returned, no matter which driver parameter)
1408     </p>
1409     </blockquote>
1410    
1411    
1412     <p>DEPENDS -
1413     </p>
1414     <blockquote class="text">
1415     <p>comma separated list of parameters this parameter depends
1416     on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1417     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1418     listed parameters, for example assuming that an audio
1419     driver (like the ALSA driver) offers parameters 'card'
1420     and 'samplerate' then parameter 'samplerate' would
1421     depend on 'card' because the possible values for
1422     'samplerate' depends on the sound card which can be
1423     chosen by the 'card' parameter
1424     (optionally returned, dependent to driver parameter)
1425     </p>
1426     </blockquote>
1427    
1428    
1429     <p>DEFAULT -
1430     </p>
1431     <blockquote class="text">
1432     <p>reflects the default value for this parameter which is
1433     used when the device is created and not explicitly
1434     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,
1435     in case of MULTIPLCITY=true, this is a comma separated
1436     list, that's why character strings are encapsulated into
1437     apostrophes (')
1438     (optionally returned, dependent to driver parameter)
1439     </p>
1440     </blockquote>
1441    
1442    
1443     <p>RANGE_MIN -
1444     </p>
1445     <blockquote class="text">
1446     <p>defines lower limit of the allowed value range for this
1447     parameter, can be an integer value as well as a dotted
1448     number, this parameter is often used in conjunction
1449     with RANGE_MAX, but may also appear without
1450     (optionally returned, dependent to driver parameter)
1451     </p>
1452     </blockquote>
1453    
1454    
1455     <p>RANGE_MAX -
1456     </p>
1457     <blockquote class="text">
1458     <p>defines upper limit of the allowed value range for this
1459     parameter, can be an integer value as well as a dotted
1460     number, this parameter is often used in conjunction with
1461     RANGE_MIN, but may also appear without
1462     (optionally returned, dependent to driver parameter)
1463     </p>
1464     </blockquote>
1465    
1466    
1467     <p>POSSIBILITIES -
1468     </p>
1469     <blockquote class="text">
1470     <p>comma separated list of possible values for this
1471     parameter, character strings are encapsulated into
1472     apostrophes
1473     (optionally returned, dependent to driver parameter)
1474     </p>
1475     </blockquote>
1476    
1477    
1478     </blockquote><p>
1479    
1480     </p>
1481     <p>The mentioned fields above don't have to be in particular order.
1482     </p>
1483     <p>Examples:
1484     </p>
1485     <p>
1486     </p>
1487     <blockquote class="text">
1488     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1489     </p>
1490     <p>S: "DESCRIPTION: sound card to be used"
1491     </p>
1492     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1493     </p>
1494     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1495     </p>
1496     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1497     </p>
1498     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1499     </p>
1500     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1501     </p>
1502     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1503     </p>
1504     <p>&nbsp;&nbsp;&nbsp;"."
1505     </p>
1506     </blockquote><p>
1507    
1508     </p>
1509     <p>
1510     </p>
1511     <blockquote class="text">
1512     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1513     </p>
1514     <p>S: "DESCRIPTION: output sample rate in Hz"
1515     </p>
1516     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1517     </p>
1518     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1519     </p>
1520     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1521     </p>
1522     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1523     </p>
1524     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1525     </p>
1526     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1527     </p>
1528     <p>&nbsp;&nbsp;&nbsp;"."
1529     </p>
1530     </blockquote><p>
1531    
1532     </p>
1533     <p>
1534     </p>
1535     <blockquote class="text">
1536     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1537     </p>
1538     <p>S: "DESCRIPTION: output sample rate in Hz"
1539     </p>
1540     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1541     </p>
1542     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1543     </p>
1544     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1545     </p>
1546     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1547     </p>
1548     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1549     </p>
1550     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1551     </p>
1552     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1553     </p>
1554     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1555     </p>
1556     <p>&nbsp;&nbsp;&nbsp;"."
1557     </p>
1558     </blockquote><p>
1559    
1560     </p>
1561     <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1562     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1563     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1564     Creating an audio output device</h3>
1565    
1566     <p>Use the following command to create a new audio output device for the desired audio output system:
1567     </p>
1568     <p>
1569     </p>
1570     <blockquote class="text">
1571     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1572     </p>
1573     </blockquote><p>
1574    
1575     </p>
1576     <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1577     output system as returned by the
1578     <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>
1579     command and &lt;param-list&gt; by an optional list of driver
1580     specific parameters in form of "key1=val1 key2=val2 ...", where
1581     character string values should be encapsulated into apostrophes (').
1582     Note that there might be drivers which require parameter(s) to be
1583     given with this command. Use the previously described commands in
1584     this chapter to get this information.
1585     </p>
1586     <p>Possible Answers:
1587     </p>
1588     <p>
1589     </p>
1590     <blockquote class="text">
1591     <p>"OK[&lt;device-id&gt;]" -
1592     </p>
1593     <blockquote class="text">
1594     <p>in case the device was successfully created, where
1595     &lt;device-id&gt; is the numerical ID of the new device
1596     </p>
1597     </blockquote>
1598    
1599    
1600     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1601     </p>
1602     <blockquote class="text">
1603     <p>in case the device was created successfully, where
1604     &lt;device-id&gt; is the numerical ID of the new device, but there
1605     are noteworthy issue(s) related (e.g. sound card doesn't
1606     support given hardware parameters and the driver is using
1607     fall-back values), providing an appropriate warning code and
1608     warning message
1609     </p>
1610     </blockquote>
1611    
1612    
1613     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1614     </p>
1615     <blockquote class="text">
1616     <p>in case it failed, providing an appropriate error code and error message
1617     </p>
1618     </blockquote>
1619    
1620    
1621     </blockquote><p>
1622    
1623     </p>
1624     <p>Examples:
1625     </p>
1626     <p>
1627     </p>
1628     <blockquote class="text">
1629     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1630     </p>
1631     <p>S: "OK[0]"
1632     </p>
1633     </blockquote><p>
1634    
1635     </p>
1636     <p>
1637     </p>
1638     <blockquote class="text">
1639     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1640     </p>
1641     <p>S: "OK[1]"
1642     </p>
1643     </blockquote><p>
1644    
1645     </p>
1646     <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1647     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1648     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1649     Destroying an audio output device</h3>
1650    
1651     <p>Use the following command to destroy a created output device:
1652     </p>
1653     <p>
1654     </p>
1655     <blockquote class="text">
1656     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1657     </p>
1658     </blockquote><p>
1659    
1660     </p>
1661     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1662     audio output device as given by the
1663     <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>
1664     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>
1665     command.
1666     </p>
1667     <p>Possible Answers:
1668     </p>
1669     <p>
1670     </p>
1671     <blockquote class="text">
1672     <p>"OK" -
1673     </p>
1674     <blockquote class="text">
1675     <p>in case the device was successfully destroyed
1676     </p>
1677     </blockquote>
1678    
1679    
1680     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1681     </p>
1682     <blockquote class="text">
1683     <p>in case the device was destroyed successfully, but there are
1684     noteworthy issue(s) related (e.g. an audio over ethernet
1685     driver was unloaded but the other host might not be
1686     informed about this situation), providing an appropriate
1687     warning code and warning message
1688     </p>
1689     </blockquote>
1690    
1691    
1692     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1693     </p>
1694     <blockquote class="text">
1695     <p>in case it failed, providing an appropriate error code and
1696     error message
1697     </p>
1698     </blockquote>
1699    
1700    
1701     </blockquote><p>
1702    
1703     </p>
1704     <p>Example:
1705     </p>
1706     <p>
1707     </p>
1708     <blockquote class="text">
1709     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1710     </p>
1711     <p>S: "OK"
1712     </p>
1713     </blockquote><p>
1714    
1715     </p>
1716     <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1717     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1718     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1719     Getting all created audio output device count</h3>
1720    
1721     <p>Use the following command to count all created audio output devices:
1722     </p>
1723     <p>
1724     </p>
1725     <blockquote class="text">
1726     <p>GET AUDIO_OUTPUT_DEVICES
1727     </p>
1728     </blockquote><p>
1729    
1730     </p>
1731     <p>Possible Answers:
1732     </p>
1733     <p>
1734     </p>
1735     <blockquote class="text">
1736     <p>LinuxSampler will answer by sending the current number of all
1737     audio output devices.
1738     </p>
1739     </blockquote><p>
1740    
1741     </p>
1742     <p>Example:
1743     </p>
1744     <p>
1745     </p>
1746     <blockquote class="text">
1747     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1748     </p>
1749     <p>S: "4"
1750     </p>
1751     </blockquote><p>
1752    
1753     </p>
1754     <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1755     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1756     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1757     Getting all created audio output device list</h3>
1758    
1759     <p>Use the following command to list all created audio output devices:
1760     </p>
1761     <p>
1762     </p>
1763     <blockquote class="text">
1764     <p>LIST AUDIO_OUTPUT_DEVICES
1765     </p>
1766     </blockquote><p>
1767    
1768     </p>
1769     <p>Possible Answers:
1770     </p>
1771     <p>
1772     </p>
1773     <blockquote class="text">
1774     <p>LinuxSampler will answer by sending a comma separated list with
1775     the numerical IDs of all audio output devices.
1776     </p>
1777     </blockquote><p>
1778    
1779     </p>
1780     <p>Example:
1781     </p>
1782     <p>
1783     </p>
1784     <blockquote class="text">
1785     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1786     </p>
1787     <p>S: "0,1,4,5"
1788     </p>
1789     </blockquote><p>
1790    
1791     </p>
1792     <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1793     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1794     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1795     Getting current settings of an audio output device</h3>
1796    
1797     <p>Use the following command to get current settings of a specific, created audio output device:
1798     </p>
1799     <p>
1800     </p>
1801     <blockquote class="text">
1802     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1803     </p>
1804     </blockquote><p>
1805    
1806     </p>
1807     <p>Where &lt;device-id&gt; should be replaced by numerical ID
1808     of the audio output device as e.g. returned by the
1809     <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.
1810     </p>
1811     <p>Possible Answers:
1812     </p>
1813     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1814     Each answer line begins with the information category name
1815     followed by a colon and then a space character &lt;SP&gt; and finally
1816     the info character string to that info category. As some
1817     parameters might allow multiple values, character strings are
1818     encapsulated into apostrophes ('). At the moment the following
1819     information categories are defined (independently of device):
1820     </p>
1821     <p>
1822     </p>
1823     <blockquote class="text">
1824     <p>DRIVER -
1825     </p>
1826     <blockquote class="text">
1827     <p>identifier of the used audio output driver, as also
1828     returned by the
1829     <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>
1830     command
1831     </p>
1832     </blockquote>
1833    
1834    
1835     <p>CHANNELS -
1836     </p>
1837     <blockquote class="text">
1838     <p>amount of audio output channels this device currently
1839     offers
1840     </p>
1841     </blockquote>
1842    
1843    
1844     <p>SAMPLERATE -
1845     </p>
1846     <blockquote class="text">
1847     <p>playback sample rate the device uses
1848     </p>
1849     </blockquote>
1850    
1851    
1852     <p>ACTIVE -
1853     </p>
1854     <blockquote class="text">
1855     <p>either true or false, if false then the audio device is
1856     inactive and doesn't output any sound, nor do the
1857     sampler channels connected to this audio device render
1858     any audio
1859     </p>
1860     </blockquote>
1861    
1862    
1863     </blockquote><p>
1864    
1865     </p>
1866     <p>The mentioned fields above don't have to be in particular
1867     order. The fields above are only those fields which are
1868     returned by all audio output devices. Every audio output driver
1869     might have its own, additional driver specific parameters (see
1870     <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>)
1871     which are also returned by this command.
1872     </p>
1873     <p>Example:
1874     </p>
1875     <p>
1876     </p>
1877     <blockquote class="text">
1878     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1879     </p>
1880     <p>S: "DRIVER: ALSA"
1881     </p>
1882     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1883     </p>
1884     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1885     </p>
1886     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1887     </p>
1888     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1889     </p>
1890     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1891     </p>
1892     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1893     </p>
1894     <p>&nbsp;&nbsp;&nbsp;"."
1895     </p>
1896     </blockquote><p>
1897    
1898     </p>
1899     <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1900     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1901     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1902     Changing settings of audio output devices</h3>
1903    
1904     <p>Use the following command to alter a specific setting of a created audio output device:
1905     </p>
1906     <p>
1907     </p>
1908     <blockquote class="text">
1909     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1910     </p>
1911     </blockquote><p>
1912    
1913     </p>
1914     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1915     audio output device as given by the
1916     <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>
1917     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>
1918     command, &lt;key&gt; by the name of the parameter to change
1919     and &lt;value&gt; by the new value for this parameter.
1920     </p>
1921     <p>Possible Answers:
1922     </p>
1923     <p>
1924     </p>
1925     <blockquote class="text">
1926     <p>"OK" -
1927     </p>
1928     <blockquote class="text">
1929     <p>in case setting was successfully changed
1930     </p>
1931     </blockquote>
1932    
1933    
1934     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1935     </p>
1936     <blockquote class="text">
1937     <p>in case setting was changed successfully, but there are
1938     noteworthy issue(s) related, providing an appropriate
1939     warning code and warning message
1940     </p>
1941     </blockquote>
1942    
1943    
1944     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1945     </p>
1946     <blockquote class="text">
1947     <p>in case it failed, providing an appropriate error code and
1948     error message
1949     </p>
1950     </blockquote>
1951    
1952    
1953     </blockquote><p>
1954    
1955     </p>
1956     <p>Example:
1957     </p>
1958     <p>
1959     </p>
1960     <blockquote class="text">
1961     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1962     </p>
1963     <p>S: "OK"
1964     </p>
1965     </blockquote><p>
1966    
1967     </p>
1968     <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1969     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1970     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1971     Getting information about an audio channel</h3>
1972    
1973     <p>Use the following command to get information about an audio channel:
1974     </p>
1975     <p>
1976     </p>
1977     <blockquote class="text">
1978     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1979     </p>
1980     </blockquote><p>
1981    
1982     </p>
1983     <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1984     <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>
1985     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>
1986     command and &lt;audio-chan&gt; the audio channel number.
1987     </p>
1988     <p>Possible Answers:
1989     </p>
1990     <p>
1991     </p>
1992     <blockquote class="text">
1993     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1994     Each answer line begins with the information category name
1995     followed by a colon and then a space character &lt;SP&gt; and finally
1996     the info character string to that info category. At the moment
1997     the following information categories are defined:
1998     </p>
1999     <p>
2000     </p>
2001     <blockquote class="text">
2002     <p>NAME -
2003     </p>
2004     <blockquote class="text">
2005     <p>arbitrary character string naming the channel, which
2006     doesn't have to be unique (always returned by all audio channels)
2007     </p>
2008     </blockquote>
2009    
2010    
2011     <p>IS_MIX_CHANNEL -
2012     </p>
2013     <blockquote class="text">
2014     <p>either true or false, a mix-channel is not a real,
2015     independent audio channel, but a virtual channel which
2016     is mixed to another real channel, this mechanism is
2017     needed for sampler engines which need more audio
2018     channels than the used audio system might be able to offer
2019     (always returned by all audio channels)
2020     </p>
2021     </blockquote>
2022    
2023    
2024     <p>MIX_CHANNEL_DESTINATION -
2025     </p>
2026     <blockquote class="text">
2027     <p>numerical ID (positive integer including 0)
2028     which reflects the real audio channel (of the same audio
2029     output device) this mix channel refers to, means where
2030     the audio signal actually will be routed / added to
2031     (only returned in case the audio channel is mix channel)
2032     </p>
2033     </blockquote>
2034    
2035    
2036     </blockquote>
2037    
2038    
2039     </blockquote><p>
2040    
2041     </p>
2042     <p>The mentioned fields above don't have to be in particular
2043     order. The fields above are only those fields which are
2044     generally returned for the described cases by all audio
2045     channels regardless of the audio driver. Every audio channel
2046     might have its own, additional driver and channel specific
2047     parameters.
2048     </p>
2049     <p>Examples:
2050     </p>
2051     <p>
2052     </p>
2053     <blockquote class="text">
2054     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2055     </p>
2056     <p>S: "NAME: studio monitor left"
2057     </p>
2058     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2059     </p>
2060     <p>&nbsp;&nbsp;&nbsp;"."
2061     </p>
2062     </blockquote><p>
2063    
2064     </p>
2065     <p>
2066     </p>
2067     <blockquote class="text">
2068     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2069     </p>
2070     <p>S: "NAME: studio monitor right"
2071     </p>
2072     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2073     </p>
2074     <p>&nbsp;&nbsp;&nbsp;"."
2075     </p>
2076     </blockquote><p>
2077    
2078     </p>
2079     <p>
2080     </p>
2081     <blockquote class="text">
2082     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2083     </p>
2084     <p>S: "NAME: studio monitor left"
2085     </p>
2086     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2087     </p>
2088     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2089     </p>
2090     <p>&nbsp;&nbsp;&nbsp;"."
2091     </p>
2092     </blockquote><p>
2093    
2094     </p>
2095     <p>
2096     </p>
2097     <blockquote class="text">
2098     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2099     </p>
2100     <p>S: "NAME: 'ardour (left)'"
2101     </p>
2102     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2103     </p>
2104     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2105     </p>
2106     <p>&nbsp;&nbsp;&nbsp;"."
2107     </p>
2108     </blockquote><p>
2109    
2110     </p>
2111     <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2112     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2113     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2114     Getting information about specific audio channel parameter</h3>
2115    
2116     <p>Use the following command to get detailed information about specific audio channel parameter:
2117     </p>
2118     <p>
2119     </p>
2120     <blockquote class="text">
2121     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2122     </p>
2123     </blockquote><p>
2124    
2125     </p>
2126     <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2127     <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>
2128     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>
2129     command, &lt;chan&gt; the audio channel number
2130     and &lt;param&gt; a specific channel parameter name for which information should
2131     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).
2132     </p>
2133     <p>Possible Answers:
2134     </p>
2135     <p>
2136     </p>
2137     <blockquote class="text">
2138     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2139     Each answer line begins with the information category name
2140     followed by a colon and then a space character &lt;SP&gt; and finally
2141     the info character string to that info category. There are
2142     information which is always returned, independently of the
2143     given channel parameter and there is optional information
2144     which is only shown dependently to the given audio channel. At
2145     the moment the following information categories are defined:
2146     </p>
2147     <p>
2148     </p>
2149     <blockquote class="text">
2150     <p>TYPE -
2151     </p>
2152     <blockquote class="text">
2153     <p>either "BOOL" for boolean value(s) or "INT" for integer
2154     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2155     character string(s)
2156     (always returned)
2157     </p>
2158     </blockquote>
2159    
2160    
2161     <p>DESCRIPTION -
2162     </p>
2163     <blockquote class="text">
2164     <p>arbitrary text describing the purpose of the parameter (always returned)
2165     </p>
2166     </blockquote>
2167    
2168    
2169     <p>FIX -
2170     </p>
2171     <blockquote class="text">
2172     <p>either true or false, if true then this parameter is
2173     read only, thus cannot be altered
2174     (always returned)
2175     </p>
2176     </blockquote>
2177    
2178    
2179     <p>MULTIPLICITY -
2180     </p>
2181     <blockquote class="text">
2182     <p>either true or false, defines if this parameter allows
2183     only one value or a list of values, where true means
2184     multiple values and false only a single value allowed
2185     (always returned)
2186     </p>
2187     </blockquote>
2188    
2189    
2190     <p>RANGE_MIN -
2191     </p>
2192     <blockquote class="text">
2193     <p>defines lower limit of the allowed value range for this
2194     parameter, can be an integer value as well as a dotted
2195     number, usually used in conjunction with 'RANGE_MAX',
2196     but may also appear without
2197     (optionally returned, dependent to driver and channel
2198     parameter)
2199     </p>
2200     </blockquote>
2201    
2202    
2203     <p>RANGE_MAX -
2204     </p>
2205     <blockquote class="text">
2206     <p>defines upper limit of the allowed value range for this
2207     parameter, can be an integer value as well as a dotted
2208     number, usually used in conjunction with 'RANGE_MIN',
2209     but may also appear without
2210     (optionally returned, dependent to driver and channel
2211     parameter)
2212     </p>
2213     </blockquote>
2214    
2215    
2216     <p>POSSIBILITIES -
2217     </p>
2218     <blockquote class="text">
2219     <p>comma separated list of possible values for this
2220     parameter, character strings are encapsulated into
2221     apostrophes
2222     (optionally returned, dependent to driver and channel
2223     parameter)
2224     </p>
2225     </blockquote>
2226    
2227    
2228     </blockquote>
2229    
2230    
2231     <p>The mentioned fields above don't have to be in particular order.
2232     </p>
2233     </blockquote><p>
2234    
2235     </p>
2236     <p>Example:
2237     </p>
2238     <p>
2239     </p>
2240     <blockquote class="text">
2241     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2242     </p>
2243     <p>S: "DESCRIPTION: bindings to other JACK clients"
2244     </p>
2245     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2246     </p>
2247     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2248     </p>
2249     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2250     </p>
2251     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2252     </p>
2253     <p>&nbsp;&nbsp;&nbsp;"."
2254     </p>
2255     </blockquote><p>
2256    
2257     </p>
2258     <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2259     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2260     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2261     Changing settings of audio output channels</h3>
2262    
2263     <p>Use the following command to alter a specific setting of an audio output channel:
2264     </p>
2265     <p>
2266     </p>
2267     <blockquote class="text">
2268     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2269     </p>
2270     </blockquote><p>
2271    
2272     </p>
2273     <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2274     <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>
2275     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>
2276     command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2277     parameter to change and &lt;value&gt; by the new value for this parameter.
2278     </p>
2279     <p>Possible Answers:
2280     </p>
2281     <p>
2282     </p>
2283     <blockquote class="text">
2284     <p>"OK" -
2285     </p>
2286     <blockquote class="text">
2287     <p>in case setting was successfully changed
2288     </p>
2289     </blockquote>
2290    
2291    
2292     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2293     </p>
2294     <blockquote class="text">
2295     <p>in case setting was changed successfully, but there are
2296     noteworthy issue(s) related, providing an appropriate
2297     warning code and warning message
2298     </p>
2299     </blockquote>
2300    
2301    
2302     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2303     </p>
2304     <blockquote class="text">
2305     <p>in case it failed, providing an appropriate error code and
2306     error message
2307     </p>
2308     </blockquote>
2309    
2310    
2311     </blockquote><p>
2312    
2313     </p>
2314     <p>Example:
2315     </p>
2316     <p>
2317     </p>
2318     <blockquote class="text">
2319     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2320     </p>
2321     <p>S: "OK"
2322     </p>
2323     </blockquote><p>
2324    
2325     </p>
2326     <p>
2327     </p>
2328     <blockquote class="text">
2329     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2330     </p>
2331     <p>S: "OK"
2332     </p>
2333     </blockquote><p>
2334    
2335     </p>
2336     <a name="anchor10"></a><br /><hr />
2337     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2338     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2339     Configuring MIDI input drivers</h3>
2340    
2341     <p>Instances of drivers in LinuxSampler are called devices. You can use
2342     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2343     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2344     channel. For particular MIDI input systems it's also possible to create
2345     several devices of the same MIDI input type. This chapter describes all
2346     commands to configure LinuxSampler's MIDI input devices and their parameters.
2347     </p>
2348     <p>Instead of defining commands and parameters for each driver individually,
2349     all possible parameters, their meanings and possible values have to be obtained
2350     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2351     front-ends can be written independently of what drivers are currently implemented
2352     and what parameters these drivers are actually offering. This means front-ends can
2353     even handle drivers which are implemented somewhere in future without modifying
2354     the front-end at all.
2355     </p>
2356     <p>Commands for configuring MIDI input devices are pretty much the same as the
2357     commands for configuring audio output drivers, already described in the last
2358     chapter.
2359     </p>
2360     <p>Note: examples in this chapter showing particular parameters of drivers are
2361     not meant as specification of the drivers' parameters. Driver implementations in
2362     LinuxSampler might have complete different parameter names and meanings than shown
2363     in these examples or might change in future, so these examples are only meant for
2364     showing how to retrieve what parameters drivers are offering, how to retrieve their
2365     possible values, etc.
2366     </p>
2367     <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2368     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2369     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2370     Getting amount of available MIDI input drivers</h3>
2371    
2372     <p>Use the following command to get the number of
2373     MIDI input drivers currently available for the
2374     LinuxSampler instance:
2375     </p>
2376     <p>
2377     </p>
2378     <blockquote class="text">
2379     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2380     </p>
2381     </blockquote><p>
2382    
2383     </p>
2384     <p>Possible Answers:
2385     </p>
2386     <p>
2387     </p>
2388     <blockquote class="text">
2389     <p>LinuxSampler will answer by sending the
2390     number of available MIDI input drivers.
2391     </p>
2392     </blockquote><p>
2393    
2394     </p>
2395     <p>Example:
2396     </p>
2397     <p>
2398     </p>
2399     <blockquote class="text">
2400     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2401     </p>
2402     <p>S: "2"
2403     </p>
2404     </blockquote><p>
2405    
2406     </p>
2407     <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2408     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2409     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2410     Getting all available MIDI input drivers</h3>
2411    
2412     <p>Use the following command to list all MIDI input drivers currently available
2413     for the LinuxSampler instance:
2414     </p>
2415     <p>
2416     </p>
2417     <blockquote class="text">
2418     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2419     </p>
2420     </blockquote><p>
2421    
2422     </p>
2423     <p>Possible Answers:
2424     </p>
2425     <p>
2426     </p>
2427     <blockquote class="text">
2428     <p>LinuxSampler will answer by sending comma separated character
2429     strings, each symbolizing a MIDI input driver.
2430     </p>
2431     </blockquote><p>
2432    
2433     </p>
2434     <p>Example:
2435     </p>
2436     <p>
2437     </p>
2438     <blockquote class="text">
2439     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2440     </p>
2441     <p>S: "ALSA,JACK"
2442     </p>
2443     </blockquote><p>
2444    
2445     </p>
2446     <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2447     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2448     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2449     Getting information about a specific MIDI input driver</h3>
2450    
2451     <p>Use the following command to get detailed information about a specific MIDI input driver:
2452     </p>
2453     <p>
2454     </p>
2455     <blockquote class="text">
2456     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2457     </p>
2458     </blockquote><p>
2459    
2460     </p>
2461     <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2462     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.
2463     </p>
2464     <p>Possible Answers:
2465     </p>
2466     <p>
2467     </p>
2468     <blockquote class="text">
2469     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2470     Each answer line begins with the information category name
2471     followed by a colon and then a space character &lt;SP&gt; and finally
2472     the info character string to that info category. At the moment
2473     the following information categories are defined:
2474     </p>
2475     <p>
2476     </p>
2477     <blockquote class="text">
2478     <p>DESCRIPTION -
2479     </p>
2480     <blockquote class="text">
2481     <p>arbitrary description text about the MIDI input driver
2482     </p>
2483     </blockquote>
2484    
2485    
2486     <p>VERSION -
2487     </p>
2488     <blockquote class="text">
2489     <p>arbitrary character string regarding the driver's version
2490     </p>
2491     </blockquote>
2492    
2493    
2494     <p>PARAMETERS -
2495     </p>
2496     <blockquote class="text">
2497     <p>comma separated list of all parameters available for the given MIDI input driver
2498     </p>
2499     </blockquote>
2500    
2501    
2502     </blockquote>
2503    
2504    
2505     <p>The mentioned fields above don't have to be in particular order.
2506     </p>
2507     </blockquote><p>
2508    
2509     </p>
2510     <p>Example:
2511     </p>
2512     <p>
2513     </p>
2514     <blockquote class="text">
2515     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2516     </p>
2517     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2518     </p>
2519     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2520     </p>
2521     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2522     </p>
2523     <p>&nbsp;&nbsp;&nbsp;"."
2524     </p>
2525     </blockquote><p>
2526    
2527     </p>
2528     <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2529     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2530     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2531     Getting information about specific MIDI input driver parameter</h3>
2532    
2533     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2534     </p>
2535     <p>
2536     </p>
2537     <blockquote class="text">
2538     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2539     </p>
2540     </blockquote><p>
2541    
2542     </p>
2543     <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2544     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
2545     parameter name for which information should be obtained (as returned by the
2546     <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
2547     of parameters on which the sought parameter &lt;param&gt; depends on,
2548     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2549     where character string values are encapsulated into apostrophes ('). Arguments
2550     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2551     will be ignored, means the front-end application can simply put all parameters
2552     in &lt;deplist&gt; with the values selected by the user.
2553     </p>
2554     <p>Possible Answers:
2555     </p>
2556     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2557     Each answer line begins with the information category name
2558     followed by a colon and then a space character &lt;SP> and finally
2559     the info character string to that info category. There is
2560     information which is always returned, independent of the
2561     given driver parameter and there is optional information
2562     which is only shown dependent to given driver parameter. At
2563     the moment the following information categories are defined:
2564     </p>
2565     <p>
2566     </p>
2567     <blockquote class="text">
2568     <p>TYPE -
2569     </p>
2570     <blockquote class="text">
2571     <p>either "BOOL" for boolean value(s) or "INT" for integer
2572     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2573     character string(s)
2574     (always returned, no matter which driver parameter)
2575     </p>
2576     </blockquote>
2577    
2578    
2579     <p>DESCRIPTION -
2580     </p>
2581     <blockquote class="text">
2582     <p>arbitrary text describing the purpose of the parameter
2583     (always returned, no matter which driver parameter)
2584     </p>
2585     </blockquote>
2586    
2587    
2588     <p>MANDATORY -
2589     </p>
2590     <blockquote class="text">
2591     <p>either true or false, defines if this parameter must be
2592     given when the device is to be created with the
2593     <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
2594     (always returned, no matter which driver parameter)
2595     </p>
2596     </blockquote>
2597    
2598    
2599     <p>FIX -
2600     </p>
2601     <blockquote class="text">
2602     <p>either true or false, if false then this parameter can
2603     be changed at any time, once the device is created by
2604     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
2605     (always returned, no matter which driver parameter)
2606     </p>
2607     </blockquote>
2608    
2609    
2610     <p>MULTIPLICITY -
2611     </p>
2612     <blockquote class="text">
2613     <p>either true or false, defines if this parameter allows
2614     only one value or a list of values, where true means
2615     multiple values and false only a single value allowed
2616     (always returned, no matter which driver parameter)
2617     </p>
2618     </blockquote>
2619    
2620    
2621     <p>DEPENDS -
2622     </p>
2623     <blockquote class="text">
2624     <p>comma separated list of parameters this parameter depends
2625     on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2626     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2627     listed parameters, for example assuming that an audio
2628     driver (like the ALSA driver) offers parameters 'card'
2629     and 'samplerate' then parameter 'samplerate' would
2630     depend on 'card' because the possible values for
2631     'samplerate' depends on the sound card which can be
2632     chosen by the 'card' parameter
2633     (optionally returned, dependent to driver parameter)
2634     </p>
2635     </blockquote>
2636    
2637    
2638     <p>DEFAULT -
2639     </p>
2640     <blockquote class="text">
2641     <p>reflects the default value for this parameter which is
2642     used when the device is created and not explicitly
2643     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,
2644     in case of MULTIPLCITY=true, this is a comma separated
2645     list, that's why character strings are encapsulated into
2646     apostrophes (')
2647     (optionally returned, dependent to driver parameter)
2648     </p>
2649     </blockquote>
2650    
2651    
2652     <p>RANGE_MIN -
2653     </p>
2654     <blockquote class="text">
2655     <p>defines lower limit of the allowed value range for this
2656     parameter, can be an integer value as well as a dotted
2657     number, this parameter is often used in conjunction
2658     with RANGE_MAX, but may also appear without
2659     (optionally returned, dependent to driver parameter)
2660     </p>
2661     </blockquote>
2662    
2663    
2664     <p>RANGE_MAX -
2665     </p>
2666     <blockquote class="text">
2667     <p>defines upper limit of the allowed value range for this
2668     parameter, can be an integer value as well as a dotted
2669     number, this parameter is often used in conjunction with
2670     RANGE_MIN, but may also appear without
2671     (optionally returned, dependent to driver parameter)
2672     </p>
2673     </blockquote>
2674    
2675    
2676     <p>POSSIBILITIES -
2677     </p>
2678     <blockquote class="text">
2679     <p>comma separated list of possible values for this
2680     parameter, character strings are encapsulated into
2681     apostrophes
2682     (optionally returned, dependent to driver parameter)
2683     </p>
2684     </blockquote>
2685    
2686    
2687     </blockquote><p>
2688    
2689     </p>
2690     <p>The mentioned fields above don't have to be in particular order.
2691     </p>
2692     <p>Example:
2693     </p>
2694     <p>
2695     </p>
2696     <blockquote class="text">
2697     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2698     </p>
2699     <p>S: "DESCRIPTION: Whether device is enabled"
2700     </p>
2701     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2702     </p>
2703     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2704     </p>
2705     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2706     </p>
2707     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2708     </p>
2709     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2710     </p>
2711     <p>&nbsp;&nbsp;&nbsp;"."
2712     </p>
2713     </blockquote><p>
2714    
2715     </p>
2716     <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2717     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2718     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2719     Creating a MIDI input device</h3>
2720    
2721     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2722     </p>
2723     <p>
2724     </p>
2725     <blockquote class="text">
2726     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2727     </p>
2728     </blockquote><p>
2729    
2730     </p>
2731     <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2732     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
2733     optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2734     character string values should be encapsulated into apostrophes (').
2735     Note that there might be drivers which require parameter(s) to be
2736     given with this command. Use the previously described commands in
2737     this chapter to get that information.
2738     </p>
2739     <p>Possible Answers:
2740     </p>
2741     <p>
2742     </p>
2743     <blockquote class="text">
2744     <p>"OK[&lt;device-id&gt;]" -
2745     </p>
2746     <blockquote class="text">
2747     <p>in case the device was successfully created, where
2748     &lt;device-id&gt; is the numerical ID of the new device
2749     </p>
2750     </blockquote>
2751    
2752    
2753     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2754     </p>
2755     <blockquote class="text">
2756     <p>in case the driver was loaded successfully, where
2757     &lt;device-id&gt; is the numerical ID of the new device, but
2758     there are noteworthy issue(s) related, providing an
2759     appropriate warning code and warning message
2760     </p>
2761     </blockquote>
2762    
2763    
2764     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2765     </p>
2766     <blockquote class="text">
2767     <p>in case it failed, providing an appropriate error code and error message
2768     </p>
2769     </blockquote>
2770    
2771    
2772     </blockquote><p>
2773    
2774     </p>
2775     <p>Example:
2776     </p>
2777     <p>
2778     </p>
2779     <blockquote class="text">
2780     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2781     </p>
2782     <p>S: "OK[0]"
2783     </p>
2784     </blockquote><p>
2785    
2786     </p>
2787     <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2788     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2789     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2790     Destroying a MIDI input device</h3>
2791    
2792     <p>Use the following command to destroy a created MIDI input device:
2793     </p>
2794     <p>
2795     </p>
2796     <blockquote class="text">
2797     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2798     </p>
2799     </blockquote><p>
2800    
2801     </p>
2802     <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2803     <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>
2804     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>
2805     command.
2806     </p>
2807     <p>Possible Answers:
2808     </p>
2809     <p>
2810     </p>
2811     <blockquote class="text">
2812     <p>"OK" -
2813     </p>
2814     <blockquote class="text">
2815     <p>in case the device was successfully destroyed
2816     </p>
2817     </blockquote>
2818    
2819    
2820     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2821     </p>
2822     <blockquote class="text">
2823     <p>in case the device was destroyed, but there are noteworthy
2824     issue(s) related, providing an appropriate warning code and
2825     warning message
2826     </p>
2827     </blockquote>
2828    
2829    
2830     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831     </p>
2832     <blockquote class="text">
2833     <p>in case it failed, providing an appropriate error code and error message
2834     </p>
2835     </blockquote>
2836    
2837    
2838     </blockquote><p>
2839    
2840     </p>
2841     <p>Example:
2842     </p>
2843     <p>
2844     </p>
2845     <blockquote class="text">
2846     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2847     </p>
2848     <p>S: "OK"
2849     </p>
2850     </blockquote><p>
2851    
2852     </p>
2853     <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2854     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2855     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2856     Getting all created MIDI input device count</h3>
2857    
2858     <p>Use the following command to count all created MIDI input devices:
2859     </p>
2860     <p>
2861     </p>
2862     <blockquote class="text">
2863     <p>GET MIDI_INPUT_DEVICES
2864     </p>
2865     </blockquote><p>
2866    
2867     </p>
2868     <p>Possible Answers:
2869     </p>
2870     <p>
2871     </p>
2872     <blockquote class="text">
2873     <p>LinuxSampler will answer by sending the current number of all
2874     MIDI input devices.
2875     </p>
2876     </blockquote><p>
2877    
2878     </p>
2879     <p>Example:
2880     </p>
2881     <p>
2882     </p>
2883     <blockquote class="text">
2884     <p>C: "GET MIDI_INPUT_DEVICES"
2885     </p>
2886     <p>S: "3"
2887     </p>
2888     </blockquote><p>
2889    
2890     </p>
2891     <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2892     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2893     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2894     Getting all created MIDI input device list</h3>
2895    
2896     <p>Use the following command to list all created MIDI input devices:
2897     </p>
2898     <p>
2899     </p>
2900     <blockquote class="text">
2901     <p>LIST MIDI_INPUT_DEVICES
2902     </p>
2903     </blockquote><p>
2904    
2905     </p>
2906     <p>Possible Answers:
2907     </p>
2908     <p>
2909     </p>
2910     <blockquote class="text">
2911     <p>LinuxSampler will answer by sending a comma separated list
2912     with the numerical Ids of all created MIDI input devices.
2913     </p>
2914     </blockquote><p>
2915    
2916     </p>
2917     <p>Examples:
2918     </p>
2919     <p>
2920     </p>
2921     <blockquote class="text">
2922     <p>C: "LIST MIDI_INPUT_DEVICES"
2923     </p>
2924     <p>S: "0,1,2"
2925     </p>
2926     </blockquote><p>
2927    
2928     </p>
2929     <p>
2930     </p>
2931     <blockquote class="text">
2932     <p>C: "LIST MIDI_INPUT_DEVICES"
2933     </p>
2934     <p>S: "1,3"
2935     </p>
2936     </blockquote><p>
2937    
2938     </p>
2939     <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2940     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2941     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2942     Getting current settings of a MIDI input device</h3>
2943    
2944     <p>Use the following command to get current settings of a specific, created MIDI input device:
2945     </p>
2946     <p>
2947     </p>
2948     <blockquote class="text">
2949     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2950     </p>
2951     </blockquote><p>
2952    
2953     </p>
2954     <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2955     <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>
2956     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>
2957     command.
2958     </p>
2959     <p>Possible Answers:
2960     </p>
2961     <p>
2962     </p>
2963     <blockquote class="text">
2964     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2965     Each answer line begins with the information category name
2966     followed by a colon and then a space character &lt;SP&gt; and finally
2967     the info character string to that info category. As some
2968     parameters might allow multiple values, character strings are
2969     encapsulated into apostrophes ('). At the moment the following
2970     information categories are defined (independent of driver):
2971     </p>
2972     <p>
2973     </p>
2974     <blockquote class="text">
2975     <p>DRIVER -
2976     </p>
2977     <blockquote class="text">
2978     <p>identifier of the used MIDI input driver, as e.g.
2979     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>
2980     command
2981     </p>
2982     </blockquote>
2983    
2984    
2985     </blockquote>
2986    
2987     <blockquote class="text">
2988     <p>ACTIVE -
2989     </p>
2990     <blockquote class="text">
2991     <p>either true or false, if false then the MIDI device is
2992     inactive and doesn't listen to any incoming MIDI events
2993     and thus doesn't forward them to connected sampler
2994     channels
2995     </p>
2996     </blockquote>
2997    
2998    
2999     </blockquote>
3000    
3001    
3002     </blockquote><p>
3003    
3004     </p>
3005     <p>The mentioned fields above don't have to be in particular
3006     order. The fields above are only those fields which are
3007     returned by all MIDI input devices. Every MIDI input driver
3008     might have its own, additional driver specific parameters (see
3009     <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
3010     by this command.
3011     </p>
3012     <p>Example:
3013     </p>
3014     <p>
3015     </p>
3016     <blockquote class="text">
3017     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3018     </p>
3019     <p>S: "DRIVER: ALSA"
3020     </p>
3021     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3022     </p>
3023     <p>&nbsp;&nbsp;&nbsp;"."
3024     </p>
3025     </blockquote><p>
3026    
3027     </p>
3028     <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3029     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3030     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3031     Changing settings of MIDI input devices</h3>
3032    
3033     <p>Use the following command to alter a specific setting of a created MIDI input device:
3034     </p>
3035     <p>
3036     </p>
3037     <blockquote class="text">
3038     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3039     </p>
3040     </blockquote><p>
3041    
3042     </p>
3043     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3044     MIDI input device as returned by the
3045     <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>
3046     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>
3047     command, &lt;key&gt; by the name of the parameter to change and
3048     &lt;value&gt; by the new value for this parameter.
3049     </p>
3050     <p>Possible Answers:
3051     </p>
3052     <p>
3053     </p>
3054     <blockquote class="text">
3055     <p>"OK" -
3056     </p>
3057     <blockquote class="text">
3058     <p>in case setting was successfully changed
3059     </p>
3060     </blockquote>
3061    
3062    
3063     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3064     </p>
3065     <blockquote class="text">
3066     <p>in case setting was changed successfully, but there are
3067     noteworthy issue(s) related, providing an appropriate
3068     warning code and warning message
3069     </p>
3070     </blockquote>
3071    
3072    
3073     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3074     </p>
3075     <blockquote class="text">
3076     <p>in case it failed, providing an appropriate error code and error message
3077     </p>
3078     </blockquote>
3079    
3080    
3081     </blockquote><p>
3082    
3083     </p>
3084     <p>Example:
3085     </p>
3086     <p>
3087     </p>
3088     <blockquote class="text">
3089     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3090     </p>
3091     <p>S: "OK"
3092     </p>
3093     </blockquote><p>
3094    
3095     </p>
3096     <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3097     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3098     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3099     Getting information about a MIDI port</h3>
3100    
3101     <p>Use the following command to get information about a MIDI port:
3102     </p>
3103     <p>
3104     </p>
3105     <blockquote class="text">
3106     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3107     </p>
3108     </blockquote><p>
3109    
3110     </p>
3111     <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3112     <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>
3113     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>
3114     command and &lt;midi-port&gt; the MIDI input port number.
3115     </p>
3116     <p>Possible Answers:
3117     </p>
3118     <p>
3119     </p>
3120     <blockquote class="text">
3121     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3122     Each answer line begins with the information category name
3123     followed by a colon and then a space character &lt;SP&gt; and finally
3124     the info character string to that info category. At the moment
3125     the following information categories are defined:
3126     </p>
3127     <p>NAME -
3128     </p>
3129     <blockquote class="text">
3130     <p>arbitrary character string naming the port
3131     </p>
3132     </blockquote>
3133    
3134    
3135     </blockquote><p>
3136    
3137     </p>
3138     <p>The field above is only the one which is returned by all MIDI
3139     ports regardless of the MIDI driver and port. Every MIDI port
3140     might have its own, additional driver and port specific
3141     parameters.
3142     </p>
3143     <p>Example:
3144     </p>
3145     <p>
3146     </p>
3147     <blockquote class="text">
3148     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3149     </p>
3150     <p>S: "NAME: 'Masterkeyboard'"
3151     </p>
3152     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3153     </p>
3154     <p>&nbsp;&nbsp;&nbsp;"."
3155     </p>
3156     </blockquote><p>
3157    
3158     </p>
3159     <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3160     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3161     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3162     Getting information about specific MIDI port parameter</h3>
3163    
3164     <p>Use the following command to get detailed information about specific MIDI port parameter:
3165     </p>
3166     <p>
3167     </p>
3168     <blockquote class="text">
3169     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3170     </p>
3171     </blockquote><p>
3172    
3173     </p>
3174     <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3175     <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>
3176     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>
3177     command, &lt;port&gt; the MIDI port number and
3178     &lt;param&gt; a specific port parameter name for which information should be
3179     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).
3180     </p>
3181     <p>Possible Answers:
3182     </p>
3183     <p>
3184     </p>
3185     <blockquote class="text">
3186     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3187     Each answer line begins with the information category name
3188     followed by a colon and then a space character &lt;SP&gt; and finally
3189     the info character string to that info category. There is
3190     information which is always returned, independently of the
3191     given channel parameter and there is optional information
3192     which are only shown dependently to the given MIDI port. At the
3193     moment the following information categories are defined:
3194     </p>
3195     <p>TYPE -
3196     </p>
3197     <blockquote class="text">
3198     <p>either "BOOL" for boolean value(s) or "INT" for integer
3199     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3200     character string(s)
3201     (always returned)
3202     </p>
3203     </blockquote>
3204    
3205    
3206     <p>DESCRIPTION -
3207     </p>
3208     <blockquote class="text">
3209     <p>arbitrary text describing the purpose of the parameter
3210     (always returned)
3211     </p>
3212     </blockquote>
3213    
3214    
3215     <p>FIX -
3216     </p>
3217     <blockquote class="text">
3218     <p>either true or false, if true then this parameter is
3219     read only, thus cannot be altered
3220     (always returned)
3221     </p>
3222     </blockquote>
3223    
3224    
3225     <p>MULTIPLICITY -
3226     </p>
3227     <blockquote class="text">
3228     <p>either true or false, defines if this parameter allows
3229     only one value or a list of values, where true means
3230     multiple values and false only a single value allowed
3231     (always returned)
3232     </p>
3233     </blockquote>
3234    
3235    
3236     <p>RANGE_MIN -
3237     </p>
3238     <blockquote class="text">
3239     <p>defines lower limit of the allowed value range for this
3240     parameter, can be an integer value as well as a dotted
3241     number, this parameter is usually used in conjunction
3242     with 'RANGE_MAX' but may also appear without
3243     (optionally returned, dependent to driver and port
3244     parameter)
3245     </p>
3246     </blockquote>
3247    
3248    
3249     <p>RANGE_MAX -
3250     </p>
3251     <blockquote class="text">
3252     <p>defines upper limit of the allowed value range for this
3253     parameter, can be an integer value as well as a dotted
3254     number, this parameter is usually used in conjunction
3255     with 'RANGE_MIN' but may also appear without
3256     (optionally returned, dependent to driver and port
3257     parameter)
3258     </p>
3259     </blockquote>
3260    
3261    
3262     <p>POSSIBILITIES -
3263     </p>
3264     <blockquote class="text">
3265     <p>comma separated list of possible values for this
3266     parameter, character strings are encapsulated into
3267     apostrophes
3268     (optionally returned, dependent to device and port
3269     parameter)
3270     </p>
3271     </blockquote>
3272    
3273    
3274     </blockquote><p>
3275    
3276     </p>
3277     <p>The mentioned fields above don't have to be in particular order.
3278     </p>
3279     <p>Example:
3280     </p>
3281     <p>
3282     </p>
3283     <blockquote class="text">
3284     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3285     </p>
3286     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3287     </p>
3288     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3289     </p>
3290     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3291     </p>
3292     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3293     </p>
3294     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3295     </p>
3296     <p>&nbsp;&nbsp;&nbsp;"."
3297     </p>
3298     </blockquote><p>
3299    
3300     </p>
3301     <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3302     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3303     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3304     Changing settings of MIDI input ports</h3>
3305    
3306     <p>Use the following command to alter a specific setting of a MIDI input port:
3307     </p>
3308     <p>
3309     </p>
3310     <blockquote class="text">
3311     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3312     </p>
3313     </blockquote><p>
3314    
3315     </p>
3316     <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3317     MIDI device as returned by the
3318     <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>
3319     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>
3320     command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3321     the parameter to change and &lt;value&gt; by the new value for this
3322     parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3323     for specifying no value for parameters allowing a list of values.
3324     </p>
3325     <p>Possible Answers:
3326     </p>
3327     <p>
3328     </p>
3329     <blockquote class="text">
3330     <p>"OK" -
3331     </p>
3332     <blockquote class="text">
3333     <p>in case setting was successfully changed
3334     </p>
3335     </blockquote>
3336    
3337    
3338     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3339     </p>
3340     <blockquote class="text">
3341     <p>in case setting was changed successfully, but there are
3342     noteworthy issue(s) related, providing an appropriate
3343     warning code and warning message
3344     </p>
3345     </blockquote>
3346    
3347    
3348     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3349     </p>
3350     <blockquote class="text">
3351     <p>in case it failed, providing an appropriate error code and error message
3352     </p>
3353     </blockquote>
3354    
3355    
3356     </blockquote><p>
3357    
3358     </p>
3359     <p>Example:
3360     </p>
3361     <p>
3362     </p>
3363     <blockquote class="text">
3364     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3365     </p>
3366     <p>S: "OK"
3367     </p>
3368     </blockquote><p>
3369    
3370     </p>
3371     <p>
3372     </p>
3373     <blockquote class="text">
3374     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3375     </p>
3376     <p>S: "OK"
3377     </p>
3378     </blockquote><p>
3379    
3380     </p>
3381     <a name="anchor11"></a><br /><hr />
3382     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3383     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3384     Configuring sampler channels</h3>
3385    
3386     <p>The following commands describe how to add and remove sampler channels, associate a
3387     sampler channel with a sampler engine, load instruments and connect sampler channels to
3388     MIDI and audio devices.
3389     </p>
3390     <a name="LOAD INSTRUMENT"></a><br /><hr />
3391     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3392     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3393     Loading an instrument</h3>
3394    
3395     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3396     </p>
3397     <p>
3398     </p>
3399     <blockquote class="text">
3400     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3401     </p>
3402     </blockquote><p>
3403    
3404     </p>
3405     <p>Where &lt;filename&gt; is the name of the instrument file on the
3406     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3407     instrument in the instrument file and &lt;sampler-channel> is the
3408     number of the sampler channel the instrument should be assigned to.
3409     Each sampler channel can only have one instrument.
3410     </p>
3411     <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3412     escape characters for special characters (see chapter
3413     "<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>"
3414     for details) and accordingly backslash characters in the filename
3415     MUST now be escaped as well!
3416     </p>
3417     <p>The difference between regular and NON_MODAL versions of the command
3418     is that the regular command returns OK only after the instrument has been
3419     fully loaded and the channel is ready to be used while NON_MODAL version
3420     returns immediately and a background process is launched to load the instrument
3421     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>
3422     command can be used to obtain loading
3423     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3424     such as making sure that the file could be read and it is of a proper format
3425     and SHOULD return ERR and SHOULD not launch the background process should any
3426     errors be detected at that point.
3427     </p>
3428     <p>Possible Answers:
3429     </p>
3430     <p>
3431     </p>
3432     <blockquote class="text">
3433     <p>"OK" -
3434     </p>
3435     <blockquote class="text">
3436     <p>in case the instrument was successfully loaded
3437     </p>
3438     </blockquote>
3439    
3440    
3441     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3442     </p>
3443     <blockquote class="text">
3444     <p>in case the instrument was loaded successfully, but there
3445     are noteworthy issue(s) related (e.g. Engine doesn't support
3446     one or more patch parameters provided by the loaded
3447     instrument file), providing an appropriate warning code and
3448     warning message
3449     </p>
3450     </blockquote>
3451    
3452    
3453     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3454     </p>
3455     <blockquote class="text">
3456     <p>in case it failed, providing an appropriate error code and error message
3457     </p>
3458     </blockquote>
3459    
3460    
3461     </blockquote><p>
3462    
3463     </p>
3464     <p>Example (Unix):
3465     </p>
3466     <p>
3467     </p>
3468     <blockquote class="text">
3469     <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3470     </p>
3471     <p>S: OK
3472     </p>
3473     </blockquote><p>
3474    
3475     </p>
3476     <p>Example (Windows):
3477     </p>
3478     <p>
3479     </p>
3480     <blockquote class="text">
3481     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3482     </p>
3483     <p>S: OK
3484     </p>
3485     </blockquote><p>
3486    
3487     </p>
3488     <a name="LOAD ENGINE"></a><br /><hr />
3489     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3490     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3491     Loading a sampler engine</h3>
3492    
3493     <p>A sampler engine type can be associated to a specific sampler
3494     channel by the following command:
3495     </p>
3496     <p>
3497     </p>
3498     <blockquote class="text">
3499     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3500     </p>
3501     </blockquote><p>
3502    
3503     </p>
3504     <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3505     <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;
3506     the sampler channel as returned by the
3507     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3508     <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
3509     the engine type should be assigned to. This command should be issued
3510     after adding a new sampler channel and before any other control
3511     commands on the new sampler channel. It can also be used to change
3512     the engine type of a sampler channel. This command has (currently) no
3513     way to define or force if a new engine instance should be created and
3514     assigned to the given sampler channel or if an already existing
3515     instance of that engine type, shared with other sampler channels,
3516     should be used.
3517     </p>
3518     <p>Possible Answers:
3519     </p>
3520     <p>
3521     </p>
3522     <blockquote class="text">
3523     <p>"OK" -
3524     </p>
3525     <blockquote class="text">
3526     <p>in case the engine was successfully deployed
3527     </p>
3528     </blockquote>
3529    
3530    
3531     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3532     </p>
3533     <blockquote class="text">
3534     <p>in case the engine was deployed successfully, but there
3535     are noteworthy issue(s) related, providing an appropriate
3536     warning code and warning message
3537     </p>
3538     </blockquote>
3539    
3540    
3541     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3542     </p>
3543     <blockquote class="text">
3544     <p>in case it failed, providing an appropriate error code and
3545     error message
3546     </p>
3547     </blockquote>
3548    
3549    
3550     </blockquote><p>
3551    
3552     </p>
3553     <p>Example:
3554     </p>
3555     <p>
3556     </p>
3557     <blockquote class="text">
3558     <p>
3559     </p>
3560     </blockquote><p>
3561    
3562     </p>
3563     <a name="GET CHANNELS"></a><br /><hr />
3564     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3565     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3566     Getting all created sampler channel count</h3>
3567    
3568     <p>The number of sampler channels can change on runtime. To get the
3569     current amount of sampler channels, the front-end can send the
3570     following command:
3571     </p>
3572     <p>
3573     </p>
3574     <blockquote class="text">
3575     <p>GET CHANNELS
3576     </p>
3577     </blockquote><p>
3578    
3579     </p>
3580     <p>Possible Answers:
3581     </p>
3582     <p>
3583     </p>
3584     <blockquote class="text">
3585     <p>LinuxSampler will answer by returning the current number of sampler channels.
3586     </p>
3587     </blockquote><p>
3588    
3589     </p>
3590     <p>Example:
3591     </p>
3592     <p>
3593     </p>
3594     <blockquote class="text">
3595     <p>C: "GET CHANNELS"
3596     </p>
3597     <p>S: "12"
3598     </p>
3599     </blockquote><p>
3600    
3601     </p>
3602     <a name="LIST CHANNELS"></a><br /><hr />
3603     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3604     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3605     Getting all created sampler channel list</h3>
3606    
3607     <p>The number of sampler channels can change on runtime. To get the
3608     current list of sampler channels, the front-end can send the
3609     following command:
3610     </p>
3611     <p>
3612     </p>
3613     <blockquote class="text">
3614     <p>LIST CHANNELS
3615     </p>
3616     </blockquote><p>
3617    
3618     </p>
3619     <p>Possible Answers:
3620     </p>
3621     <p>
3622     </p>
3623     <blockquote class="text">
3624     <p>LinuxSampler will answer by returning a comma separated list
3625     with all sampler channels numerical IDs.
3626     </p>
3627     </blockquote><p>
3628    
3629     </p>
3630     <p>Example:
3631     </p>
3632     <p>
3633     </p>
3634     <blockquote class="text">
3635     <p>C: "LIST CHANNELS"
3636     </p>
3637     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3638     </p>
3639     </blockquote><p>
3640    
3641     </p>
3642     <a name="ADD CHANNEL"></a><br /><hr />
3643     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3644     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3645     Adding a new sampler channel</h3>
3646    
3647     <p>A new sampler channel can be added to the end of the sampler
3648     channel list by sending the following command:
3649     </p>
3650     <p>
3651     </p>
3652     <blockquote class="text">
3653     <p>ADD CHANNEL
3654     </p>
3655     </blockquote><p>
3656    
3657     </p>
3658     <p>This will increment the sampler channel count by one and the new
3659     sampler channel will be appended to the end of the sampler channel
3660     list. The front-end should send the respective, related commands
3661     right after to e.g. load an engine, load an instrument and setting
3662     input, output method and eventually other commands to initialize
3663     the new channel. The front-end should use the sampler channel
3664     returned by the answer of this command to perform the previously
3665     recommended commands, to avoid race conditions e.g. with other
3666     front-ends that might also have sent an "ADD CHANNEL" command.
3667     </p>
3668     <p>Possible Answers:
3669     </p>
3670     <p>
3671     </p>
3672     <blockquote class="text">
3673     <p>"OK[&lt;sampler-channel&gt;]" -
3674     </p>
3675     <blockquote class="text">
3676     <p>in case a new sampler channel could be added, where
3677     &lt;sampler-channel&gt; reflects the channel number of the new
3678     created sampler channel which should be used to set up
3679     the sampler channel by sending subsequent initialization
3680     commands
3681     </p>
3682     </blockquote>
3683    
3684    
3685     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3686     </p>
3687     <blockquote class="text">
3688     <p>in case a new channel was added successfully, but there are
3689     noteworthy issue(s) related, providing an appropriate
3690     warning code and warning message
3691     </p>
3692     </blockquote>
3693    
3694    
3695     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3696     </p>
3697     <blockquote class="text">
3698     <p>in case it failed, providing an appropriate error code and
3699     error message
3700     </p>
3701     </blockquote>
3702    
3703    
3704     </blockquote><p>
3705    
3706     </p>
3707     <p>Example:
3708     </p>
3709     <p>
3710     </p>
3711     <blockquote class="text">
3712     <p>
3713     </p>
3714     </blockquote><p>
3715    
3716     </p>
3717     <a name="REMOVE CHANNEL"></a><br /><hr />
3718     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3719     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3720     Removing a sampler channel</h3>
3721    
3722     <p>A sampler channel can be removed by sending the following command:
3723     </p>
3724     <p>
3725     </p>
3726     <blockquote class="text">
3727     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3728     </p>
3729     </blockquote><p>
3730    
3731     </p>
3732     <p>Where &lt;sampler-channel&gt; should be replaced by the
3733     number of the sampler channel as given by the
3734     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3735     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3736     command. The channel numbers of all subsequent sampler channels
3737     remain the same.
3738     </p>
3739     <p>Possible Answers:
3740     </p>
3741     <p>
3742     </p>
3743     <blockquote class="text">
3744     <p>"OK" -
3745     </p>
3746     <blockquote class="text">
3747     <p>in case the given sampler channel could be removed
3748     </p>
3749     </blockquote>
3750    
3751    
3752     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3753     </p>
3754     <blockquote class="text">
3755     <p>in case the given channel was removed, but there are
3756     noteworthy issue(s) related, providing an appropriate
3757     warning code and warning message
3758     </p>
3759     </blockquote>
3760    
3761    
3762     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3763     </p>
3764     <blockquote class="text">
3765     <p>in case it failed, providing an appropriate error code and
3766     error message
3767     </p>
3768     </blockquote>
3769    
3770    
3771     </blockquote><p>
3772    
3773     </p>
3774     <p>Example:
3775     </p>
3776     <p>
3777     </p>
3778     <blockquote class="text">
3779     <p>
3780     </p>
3781     </blockquote><p>
3782    
3783     </p>
3784     <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3785     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3786     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3787     Getting amount of available engines</h3>
3788    
3789     <p>The front-end can ask for the number of available engines by sending the following command:
3790     </p>
3791     <p>
3792     </p>
3793     <blockquote class="text">
3794     <p>GET AVAILABLE_ENGINES
3795     </p>
3796     </blockquote><p>
3797    
3798     </p>
3799     <p>Possible Answers:
3800     </p>
3801     <p>
3802     </p>
3803     <blockquote class="text">
3804     <p>LinuxSampler will answer by sending the number of available engines.
3805     </p>
3806     </blockquote><p>
3807    
3808     </p>
3809     <p>Example:
3810     </p>
3811     <p>
3812     </p>
3813     <blockquote class="text">
3814     <p>C: "GET AVAILABLE_ENGINES"
3815     </p>
3816     <p>S: "4"
3817     </p>
3818     </blockquote><p>
3819    
3820     </p>
3821     <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3822     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3823     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3824     Getting all available engines</h3>
3825    
3826     <p>The front-end can ask for a list of all available engines by sending the following command:
3827     </p>
3828     <p>
3829     </p>
3830     <blockquote class="text">
3831     <p>LIST AVAILABLE_ENGINES
3832     </p>
3833     </blockquote><p>
3834    
3835     </p>
3836     <p>Possible Answers:
3837     </p>
3838     <p>
3839     </p>
3840     <blockquote class="text">
3841     <p>LinuxSampler will answer by sending a comma separated list
3842     of the engines' names encapsulated into apostrophes (').
3843     Engine names can consist of lower and upper cases,
3844     digits and underlines ("_" character).
3845     </p>
3846     </blockquote><p>
3847    
3848     </p>
3849     <p>Example:
3850     </p>
3851     <p>
3852     </p>
3853     <blockquote class="text">
3854     <p>C: "LIST AVAILABLE_ENGINES"
3855     </p>
3856     <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3857     </p>
3858     </blockquote><p>
3859    
3860     </p>
3861     <a name="GET ENGINE INFO"></a><br /><hr />
3862     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3863     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3864     Getting information about an engine</h3>
3865    
3866     <p>The front-end can ask for information about a specific engine by
3867     sending the following command:
3868     </p>
3869     <p>
3870     </p>
3871     <blockquote class="text">
3872     <p>GET ENGINE INFO &lt;engine-name&gt;
3873     </p>
3874     </blockquote><p>
3875    
3876     </p>
3877     <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3878     <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3879     </p>
3880     <p>Possible Answers:
3881     </p>
3882     <p>
3883     </p>
3884     <blockquote class="text">
3885     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3886     Each answer line begins with the information category name
3887     followed by a colon and then a space character &lt;SP&gt; and finally
3888     the info character string to that info category. At the moment
3889     the following categories are defined:
3890     </p>
3891     <p>
3892     </p>
3893     <blockquote class="text">
3894     <p>DESCRIPTION -
3895     </p>
3896     <blockquote class="text">
3897     <p>arbitrary description text about the engine
3898     (note that the character string may contain
3899     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3900     </p>
3901     </blockquote>
3902    
3903    
3904     <p>VERSION -
3905     </p>
3906     <blockquote class="text">
3907     <p>arbitrary character string regarding the engine's version
3908     </p>
3909     </blockquote>
3910    
3911    
3912     </blockquote>
3913    
3914    
3915     </blockquote><p>
3916    
3917     </p>
3918     <p>The mentioned fields above don't have to be in particular order.
3919     </p>
3920     <p>Example:
3921     </p>
3922     <p>
3923     </p>
3924     <blockquote class="text">
3925     <p>C: "GET ENGINE INFO JoesCustomEngine"
3926     </p>
3927     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3928     </p>
3929     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3930     </p>
3931     <p>&nbsp;&nbsp;&nbsp;"."
3932     </p>
3933     </blockquote><p>
3934    
3935     </p>
3936     <a name="GET CHANNEL INFO"></a><br /><hr />
3937     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3938     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3939     Getting sampler channel information</h3>
3940    
3941     <p>The front-end can ask for the current settings of a sampler channel
3942     by sending the following command:
3943     </p>
3944     <p>
3945     </p>
3946     <blockquote class="text">
3947     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3948     </p>
3949     </blockquote><p>
3950    
3951     </p>
3952     <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3953     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>
3954     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.
3955     </p>
3956     <p>Possible Answers:
3957     </p>
3958     <p>
3959     </p>
3960     <blockquote class="text">
3961     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3962     Each answer line begins with the settings category name
3963     followed by a colon and then a space character &lt;SP&gt; and finally
3964     the info character string to that setting category. At the
3965     moment the following categories are defined:
3966     </p>
3967     <p>
3968     </p>
3969     <blockquote class="text">
3970     <p>ENGINE_NAME -
3971     </p>
3972     <blockquote class="text">
3973     <p>name of the engine that is associated with the sampler
3974     channel, "NONE" if there's no engine associated yet for
3975     this sampler channel
3976     </p>
3977     </blockquote>
3978    
3979    
3980     <p>AUDIO_OUTPUT_DEVICE -
3981     </p>
3982     <blockquote class="text">
3983     <p>numerical ID of the audio output device which is
3984     currently connected to this sampler channel to output
3985     the audio signal, "NONE" if there's no device
3986     connected to this sampler channel
3987     </p>
3988     </blockquote>
3989    
3990    
3991     <p>AUDIO_OUTPUT_CHANNELS -
3992     </p>
3993     <blockquote class="text">
3994     <p>number of output channels the sampler channel offers
3995     (dependent to used sampler engine and loaded instrument)
3996     </p>
3997     </blockquote>
3998    
3999    
4000     <p>AUDIO_OUTPUT_ROUTING -
4001     </p>
4002     <blockquote class="text">
4003     <p>comma separated list which reflects to which audio
4004     channel of the selected audio output device each
4005     sampler output channel is routed to, e.g. "0,3" would
4006     mean the engine's output channel 0 is routed to channel
4007     0 of the audio output device and the engine's output
4008     channel 1 is routed to the channel 3 of the audio
4009     output device
4010     </p>
4011     </blockquote>
4012    
4013    
4014     <p>INSTRUMENT_FILE -
4015     </p>
4016     <blockquote class="text">
4017     <p>the file name of the loaded instrument, "NONE" if
4018     there's no instrument yet loaded for this sampler
4019     channel (note: since LSCP 1.2 this path may contain
4020     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4021     </p>
4022     </blockquote>
4023    
4024    
4025     <p>INSTRUMENT_NR -
4026     </p>
4027     <blockquote class="text">
4028     <p>the instrument index number of the loaded instrument
4029     </p>
4030     </blockquote>
4031    
4032    
4033     <p>INSTRUMENT_NAME -
4034     </p>
4035     <blockquote class="text">
4036     <p>the instrument name of the loaded instrument
4037     (note: since LSCP 1.2 this character string may contain
4038     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4039     </p>
4040     </blockquote>
4041    
4042    
4043     <p>INSTRUMENT_STATUS -
4044     </p>
4045     <blockquote class="text">
4046     <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4047     value indicates a loading exception. Value of 100 indicates that the instrument is fully
4048     loaded.
4049     </p>
4050     </blockquote>
4051    
4052    
4053     <p>MIDI_INPUT_DEVICE -
4054     </p>
4055     <blockquote class="text">
4056     <p>numerical ID of the MIDI input device which is
4057     currently connected to this sampler channel to deliver
4058     MIDI input commands, "NONE" if there's no device
4059     connected to this sampler channel
4060     </p>
4061     </blockquote>
4062    
4063    
4064     <p>MIDI_INPUT_PORT -
4065     </p>
4066     <blockquote class="text">
4067     <p>port number of the MIDI input device
4068     </p>
4069     </blockquote>
4070    
4071    
4072     <p>MIDI_INPUT_CHANNEL -
4073     </p>
4074     <blockquote class="text">
4075     <p>the MIDI input channel number this sampler channel
4076     should listen to or "ALL" to listen on all MIDI channels
4077     </p>
4078     </blockquote>
4079    
4080    
4081     <p>VOLUME -
4082     </p>
4083     <blockquote class="text">
4084     <p>optionally dotted number for the channel volume factor
4085     (where a value &lt; 1.0 means attenuation and a value >
4086     1.0 means amplification)
4087     </p>
4088     </blockquote>
4089    
4090    
4091     <p>MUTE -
4092     </p>
4093     <blockquote class="text">
4094     <p>Determines whether the channel is muted, "true" if the
4095     channel is muted, "false" if the channel is not muted, and
4096     "MUTED_BY_SOLO" if the channel is muted because of the
4097     presence of a solo channel and will be unmuted when
4098     there are no solo channels left
4099     </p>
4100     </blockquote>
4101    
4102    
4103     <p>SOLO -
4104     </p>
4105     <blockquote class="text">
4106     <p>Determines whether this is a solo channel, "true" if
4107     the channel is a solo channel; "false" otherwise
4108     </p>
4109     </blockquote>
4110    
4111    
4112     <p>MIDI_INSTRUMENT_MAP -
4113     </p>
4114     <blockquote class="text">
4115     <p>Determines to which MIDI instrument map this sampler
4116     channel is assigned to. Read chapter
4117     <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>
4118     for a list of possible values.
4119     </p>
4120     </blockquote>
4121    
4122    
4123     </blockquote>
4124    
4125    
4126     </blockquote><p>
4127    
4128     </p>
4129     <p>The mentioned fields above don't have to be in particular order.
4130     </p>
4131     <p>Example:
4132     </p>
4133     <p>
4134     </p>
4135     <blockquote class="text">
4136     <p>C: "GET CHANNEL INFO 34"
4137     </p>
4138     <p>S: "ENGINE_NAME: GigEngine"
4139     </p>
4140     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4141     </p>
4142     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4143     </p>
4144     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4145     </p>
4146     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4147     </p>
4148     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4149     </p>
4150     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4151     </p>
4152     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4153     </p>
4154     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4155     </p>
4156     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4157     </p>
4158     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4159     </p>
4160     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4161     </p>
4162     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4163     </p>
4164     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4165     </p>
4166     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4167     </p>
4168     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4169     </p>
4170     <p>&nbsp;&nbsp;&nbsp;"."
4171     </p>
4172     </blockquote><p>
4173    
4174     </p>
4175     <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4176     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4177     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4178     Current number of active voices</h3>
4179    
4180     <p>The front-end can ask for the current number of active voices on a
4181     sampler channel by sending the following command:
4182     </p>
4183     <p>
4184     </p>
4185     <blockquote class="text">
4186     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4187     </p>
4188     </blockquote><p>
4189    
4190     </p>
4191     <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4192     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>
4193     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.
4194     </p>
4195     <p>Possible Answers:
4196     </p>
4197     <p>
4198     </p>
4199     <blockquote class="text">
4200     <p>LinuxSampler will answer by returning the number of active
4201     voices on that channel.
4202     </p>
4203     </blockquote><p>
4204    
4205     </p>
4206     <p>Example:
4207     </p>
4208     <p>
4209     </p>
4210     <blockquote class="text">
4211     <p>
4212     </p>
4213     </blockquote><p>
4214    
4215     </p>
4216     <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4217     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4218     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4219     Current number of active disk streams</h3>
4220    
4221     <p>The front-end can ask for the current number of active disk streams
4222     on a sampler channel by sending the following command:
4223     </p>
4224     <p>
4225     </p>
4226     <blockquote class="text">
4227     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4228     </p>
4229     </blockquote><p>
4230    
4231     </p>
4232     <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4233     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>
4234     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.
4235     </p>
4236     <p>Possible Answers:
4237     </p>
4238     <p>
4239     </p>
4240     <blockquote class="text">
4241     <p>LinuxSampler will answer by returning the number of active
4242     disk streams on that channel in case the engine supports disk
4243     streaming, if the engine doesn't support disk streaming it will
4244     return "NA" for not available.
4245     </p>
4246     </blockquote><p>
4247    
4248     </p>
4249     <p>Example:
4250     </p>
4251     <p>
4252     </p>
4253     <blockquote class="text">
4254     <p>
4255     </p>
4256     </blockquote><p>
4257    
4258     </p>
4259     <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4260     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4261     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4262     Current fill state of disk stream buffers</h3>
4263    
4264     <p>The front-end can ask for the current fill state of all disk streams
4265     on a sampler channel by sending the following command:
4266     </p>
4267     <p>
4268     </p>
4269     <blockquote class="text">
4270     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4271     </p>
4272     </blockquote><p>
4273    
4274     </p>
4275     <p>to get the fill state in bytes or
4276     </p>
4277     <p>
4278     </p>
4279     <blockquote class="text">
4280     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4281     </p>
4282     </blockquote><p>
4283    
4284     </p>
4285     <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4286     sampler channel number the front-end is interested in
4287     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>
4288     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.
4289     </p>
4290     <p>Possible Answers:
4291     </p>
4292     <p>
4293     </p>
4294     <blockquote class="text">
4295     <p>LinuxSampler will either answer by returning a comma separated
4296     string with the fill state of all disk stream buffers on that
4297     channel or an empty line if there are no active disk streams or
4298     "NA" for *not available* in case the engine which is deployed
4299     doesn't support disk streaming. Each entry in the answer list
4300     will begin with the stream's ID in brackets followed by the
4301     numerical representation of the fill size (either in bytes or
4302     percentage). Note: due to efficiency reasons the fill states in
4303     the response are not in particular order, thus the front-end has
4304     to sort them by itself if necessary.
4305     </p>
4306     </blockquote><p>
4307    
4308     </p>
4309     <p>Examples:
4310     </p>
4311     <p>
4312     </p>
4313     <blockquote class="text">
4314     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4315     </p>
4316     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4317     </p>
4318     </blockquote><p>
4319    
4320     </p>
4321     <blockquote class="text">
4322     <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4323     </p>
4324     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4325     </p>
4326     </blockquote><p>
4327    
4328     </p>
4329     <blockquote class="text">
4330     <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4331     </p>
4332     <p>S: ""
4333     </p>
4334     </blockquote><p>
4335    
4336     </p>
4337     <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4338     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4339     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4340     Setting audio output device</h3>
4341    
4342     <p>The front-end can set the audio output device on a specific sampler
4343     channel by sending the following command:
4344     </p>
4345     <p>
4346     </p>
4347     <blockquote class="text">
4348     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4349     </p>
4350     </blockquote><p>
4351    
4352     </p>
4353     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4354     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>
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 and
4356     &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4357     <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>
4358     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>
4359     command.
4360     </p>
4361     <p>Possible Answers:
4362     </p>
4363     <p>
4364     </p>
4365     <blockquote class="text">
4366     <p>"OK" -
4367     </p>
4368     <blockquote class="text">
4369     <p>on success
4370     </p>
4371     </blockquote>
4372    
4373    
4374     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4375     </p>
4376     <blockquote class="text">
4377     <p>if audio output device was set, but there are noteworthy
4378     issue(s) related, providing an appropriate warning code and
4379     warning message
4380     </p>
4381     </blockquote>
4382    
4383    
4384     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4385     </p>
4386     <blockquote class="text">
4387     <p>in case it failed, providing an appropriate error code and error message
4388     </p>
4389     </blockquote>
4390    
4391    
4392     </blockquote><p>
4393    
4394     </p>
4395     <p>Examples:
4396     </p>
4397     <p>
4398     </p>
4399     <blockquote class="text">
4400     <p>
4401     </p>
4402     </blockquote><p>
4403    
4404     </p>
4405     <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4406     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4407     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4408     Setting audio output type</h3>
4409    
4410     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4411     </p>
4412     <p>The front-end can alter the audio output type on a specific sampler
4413     channel by sending the following command:
4414     </p>
4415     <p>
4416     </p>
4417     <blockquote class="text">
4418     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4419     </p>
4420     </blockquote><p>
4421    
4422     </p>
4423     <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4424     &lt;sampler-channel&gt; is the respective sampler channel number.
4425     </p>
4426     <p>Possible Answers:
4427     </p>
4428     <p>
4429     </p>
4430     <blockquote class="text">
4431     <p>"OK" -
4432     </p>
4433     <blockquote class="text">
4434     <p>on success
4435     </p>
4436     </blockquote>
4437    
4438    
4439     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4440     </p>
4441     <blockquote class="text">
4442     <p>if audio output type was set, but there are noteworthy
4443     issue(s) related, providing an appropriate warning code and
4444     warning message
4445     </p>
4446     </blockquote>
4447    
4448    
4449     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4450     </p>
4451     <blockquote class="text">
4452     <p>in case it failed, providing an appropriate error code and error message
4453     </p>
4454     </blockquote>
4455    
4456    
4457     </blockquote><p>
4458    
4459     </p>
4460     <p>Examples:
4461     </p>
4462     <p>
4463     </p>
4464     <blockquote class="text">
4465     <p>
4466     </p>
4467     </blockquote><p>
4468    
4469     </p>
4470     <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4471     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4472     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4473     Setting audio output channel</h3>
4474    
4475     <p>The front-end can alter the audio output channel on a specific
4476     sampler channel by sending the following command:
4477     </p>
4478     <p>
4479     </p>
4480     <blockquote class="text">
4481     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4482     </p>
4483     </blockquote><p>
4484    
4485     </p>
4486     <p>Where &lt;sampler-chan&gt; is the sampler channel number
4487     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>
4488     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
4489     numerical ID of the sampler channel's audio output channel which should be
4490     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4491     output device where &lt;audio-out&gt; should be routed to.
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 channel 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 MIDI_INPUT_DEVICE"></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.17"></a><h3>6.4.17.&nbsp;
4540     Setting MIDI input device</h3>
4541    
4542     <p>The front-end can set the MIDI input device on a specific sampler
4543     channel by sending the following command:
4544     </p>
4545     <p>
4546     </p>
4547     <blockquote class="text">
4548     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4549     </p>
4550     </blockquote><p>
4551    
4552     </p>
4553     <p>Where &lt;sampler-channel&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
4556     and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4557     <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>
4558     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.
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 MIDI input device 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_TYPE"></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.18"></a><h3>6.4.18.&nbsp;
4607     Setting MIDI input type</h3>
4608    
4609     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4610     </p>
4611     <p>The front-end can alter the MIDI input type on a specific sampler
4612     channel by sending the following command:
4613     </p>
4614     <p>
4615     </p>
4616     <blockquote class="text">
4617     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4618     </p>
4619     </blockquote><p>
4620    
4621     </p>
4622     <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4623     &lt;sampler-channel&gt; is the respective sampler channel number.
4624     </p>
4625     <p>Possible Answers:
4626     </p>
4627     <p>
4628     </p>
4629     <blockquote class="text">
4630     <p>"OK" -
4631     </p>
4632     <blockquote class="text">
4633     <p>on success
4634     </p>
4635     </blockquote>
4636    
4637    
4638     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4639     </p>
4640     <blockquote class="text">
4641     <p>if MIDI input type was set, but there are noteworthy
4642     issue(s) related, providing an appropriate warning code and
4643     warning message
4644     </p>
4645     </blockquote>
4646    
4647    
4648     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4649     </p>
4650     <blockquote class="text">
4651     <p>in case it failed, providing an appropriate error code and error message
4652     </p>
4653     </blockquote>
4654    
4655    
4656     </blockquote><p>
4657    
4658     </p>
4659     <p>Examples:
4660     </p>
4661     <p>
4662     </p>
4663     <blockquote class="text">
4664     <p>
4665     </p>
4666     </blockquote><p>
4667    
4668     </p>
4669     <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4670     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4671     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4672     Setting MIDI input port</h3>
4673    
4674     <p>The front-end can alter the MIDI input port on a specific sampler
4675     channel by sending the following command:
4676     </p>
4677     <p>
4678     </p>
4679     <blockquote class="text">
4680     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4681     </p>
4682     </blockquote><p>
4683    
4684     </p>
4685     <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4686     MIDI input device connected to the sampler channel given by
4687     &lt;sampler-channel&gt;.
4688     </p>
4689     <p>Possible Answers:
4690     </p>
4691     <p>
4692     </p>
4693     <blockquote class="text">
4694     <p>"OK" -
4695     </p>
4696     <blockquote class="text">
4697     <p>on success
4698     </p>
4699     </blockquote>
4700    
4701    
4702     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4703     </p>
4704     <blockquote class="text">
4705     <p>if MIDI input port was set, but there are noteworthy
4706     issue(s) related, providing an appropriate warning code and
4707     warning message
4708     </p>
4709     </blockquote>
4710    
4711    
4712     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4713     </p>
4714     <blockquote class="text">
4715     <p>in case it failed, providing an appropriate error code and error message
4716     </p>
4717     </blockquote>
4718    
4719    
4720     </blockquote><p>
4721    
4722     </p>
4723     <p>Examples:
4724     </p>
4725     <p>
4726     </p>
4727     <blockquote class="text">
4728     <p>
4729     </p>
4730     </blockquote><p>
4731    
4732     </p>
4733     <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4734     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4735     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4736     Setting MIDI input channel</h3>
4737    
4738     <p>The front-end can alter the MIDI channel a sampler channel should
4739     listen to by sending the following command:
4740     </p>
4741     <p>
4742     </p>
4743     <blockquote class="text">
4744     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4745     </p>
4746     </blockquote><p>
4747    
4748     </p>
4749     <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4750     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4751     channels.
4752     </p>
4753     <p>Possible Answers:
4754     </p>
4755     <p>
4756     </p>
4757     <blockquote class="text">
4758     <p>"OK" -
4759     </p>
4760     <blockquote class="text">
4761     <p>on success
4762     </p>
4763     </blockquote>
4764    
4765    
4766     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4767     </p>
4768     <blockquote class="text">
4769     <p>if MIDI input channel was set, but there are noteworthy
4770     issue(s) related, providing an appropriate warning code and
4771     warning message
4772     </p>
4773     </blockquote>
4774    
4775    
4776     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4777     </p>
4778     <blockquote class="text">
4779     <p>in case it failed, providing an appropriate error code and error message
4780     </p>
4781     </blockquote>
4782    
4783    
4784     </blockquote><p>
4785    
4786     </p>
4787     <p>Examples:
4788     </p>
4789     <p>
4790     </p>
4791     <blockquote class="text">
4792     <p>
4793     </p>
4794     </blockquote><p>
4795    
4796     </p>
4797     <a name="SET CHANNEL VOLUME"></a><br /><hr />
4798     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4799     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4800     Setting channel volume</h3>
4801    
4802     <p>The front-end can alter the volume of a sampler channel by sending
4803     the following command:
4804     </p>
4805     <p>
4806     </p>
4807     <blockquote class="text">
4808     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4809     </p>
4810     </blockquote><p>
4811    
4812     </p>
4813     <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4814     smaller than 1.0 means attenuation, whereas a value greater than
4815     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4816     channel where this volume factor should be set.
4817     </p>
4818     <p>Possible Answers:
4819     </p>
4820     <p>
4821     </p>
4822     <blockquote class="text">
4823     <p>"OK" -
4824     </p>
4825     <blockquote class="text">
4826     <p>on success
4827     </p>
4828     </blockquote>
4829    
4830    
4831     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4832     </p>
4833     <blockquote class="text">
4834     <p>if channel volume was set, but there are noteworthy
4835     issue(s) related, providing an appropriate warning code and
4836     warning message
4837     </p>
4838     </blockquote>
4839    
4840    
4841     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4842     </p>
4843     <blockquote class="text">
4844     <p>in case it failed, providing an appropriate error code and error message
4845     </p>
4846     </blockquote>
4847    
4848    
4849     </blockquote><p>
4850    
4851     </p>
4852     <p>Examples:
4853     </p>
4854     <p>
4855     </p>
4856     <blockquote class="text">
4857     <p>
4858     </p>
4859     </blockquote><p>
4860    
4861     </p>
4862     <a name="SET CHANNEL MUTE"></a><br /><hr />
4863     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4864     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4865     Muting a sampler channel</h3>
4866    
4867     <p>The front-end can mute/unmute a specific sampler
4868     channel by sending the following command:
4869     </p>
4870     <p>
4871     </p>
4872     <blockquote class="text">
4873     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4874     </p>
4875     </blockquote><p>
4876    
4877     </p>
4878     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4879     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>
4880     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
4881     &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4882     to unmute the channel.
4883     </p>
4884     <p>Possible Answers:
4885     </p>
4886     <p>
4887     </p>
4888     <blockquote class="text">
4889     <p>"OK" -
4890     </p>
4891     <blockquote class="text">
4892     <p>on success
4893     </p>
4894     </blockquote>
4895    
4896    
4897     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4898     </p>
4899     <blockquote class="text">
4900     <p>if the channel was muted/unmuted, but there are noteworthy
4901     issue(s) related, providing an appropriate warning code and
4902     warning message
4903     </p>
4904     </blockquote>
4905    
4906    
4907     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4908     </p>
4909     <blockquote class="text">
4910     <p>in case it failed, providing an appropriate error code and error message
4911     </p>
4912     </blockquote>
4913    
4914    
4915     </blockquote><p>
4916    
4917     </p>
4918     <p>Examples:
4919     </p>
4920     <p>
4921     </p>
4922     <blockquote class="text">
4923     <p>
4924     </p>
4925     </blockquote><p>
4926    
4927     </p>
4928     <a name="SET CHANNEL SOLO"></a><br /><hr />
4929     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4930     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4931     Soloing a sampler channel</h3>
4932    
4933     <p>The front-end can solo/unsolo a specific sampler channel
4934     by sending the following command:
4935     </p>
4936     <p>
4937     </p>
4938     <blockquote class="text">
4939     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4940     </p>
4941     </blockquote><p>
4942    
4943     </p>
4944     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4945     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>
4946     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
4947     &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4948     to unsolo the channel.
4949     </p>
4950     <p>Possible Answers:
4951     </p>
4952     <p>
4953     </p>
4954     <blockquote class="text">
4955     <p>"OK" -
4956     </p>
4957     <blockquote class="text">
4958     <p>on success
4959     </p>
4960     </blockquote>
4961    
4962    
4963     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4964     </p>
4965     <blockquote class="text">
4966     <p>if the channel was soloed/unsoloed, but there are noteworthy
4967     issue(s) related, providing an appropriate warning code and
4968     warning message
4969     </p>
4970     </blockquote>
4971    
4972    
4973     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4974     </p>
4975     <blockquote class="text">
4976     <p>in case it failed, providing an appropriate error code and error message
4977     </p>
4978     </blockquote>
4979    
4980    
4981     </blockquote><p>
4982    
4983     </p>
4984     <p>Examples:
4985     </p>
4986     <p>
4987     </p>
4988     <blockquote class="text">
4989     <p>
4990     </p>
4991     </blockquote><p>
4992    
4993     </p>
4994     <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4995     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4996     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4997     Assigning a MIDI instrument map to a sampler channel</h3>
4998    
4999     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5000     by sending the following command:
5001     </p>
5002     <p>
5003     </p>
5004     <blockquote class="text">
5005     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5006     </p>
5007     </blockquote><p>
5008    
5009     </p>
5010     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5011     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>
5012     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
5013     &lt;map&gt; can have the following possibilites:
5014     </p>
5015     <p>
5016     </p>
5017     <blockquote class="text">
5018     <p>"NONE" -
5019     </p>
5020     <blockquote class="text">
5021     <p>This is the default setting. In this case
5022     the sampler channel is not assigned any MIDI
5023     instrument map and thus will ignore all MIDI
5024     program change messages.
5025     </p>
5026     </blockquote>
5027    
5028    
5029     <p>"DEFAULT" -
5030     </p>
5031     <blockquote class="text">
5032     <p>The sampler channel will always use the
5033     default MIDI instrument map to handle MIDI
5034     program change messages.
5035     </p>
5036     </blockquote>
5037    
5038    
5039     <p>numeric ID -
5040     </p>
5041     <blockquote class="text">
5042     <p>You can assign a specific MIDI instrument map
5043     by replacing &lt;map&gt; with the respective numeric
5044     ID of the MIDI instrument map as returned by the
5045     <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>
5046     command. Once that map will be deleted, the sampler
5047     channel would fall back to "NONE".
5048     </p>
5049     </blockquote>
5050    
5051    
5052     </blockquote><p>
5053    
5054     </p>
5055     <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>
5056     for details regarding MIDI instrument mapping.
5057     </p>
5058     <p>Possible Answers:
5059     </p>
5060     <p>
5061     </p>
5062     <blockquote class="text">
5063     <p>"OK" -
5064     </p>
5065     <blockquote class="text">
5066     <p>on success
5067     </p>
5068     </blockquote>
5069    
5070    
5071     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5072     </p>
5073     <blockquote class="text">
5074     <p>in case it failed, providing an appropriate error code and error message
5075     </p>
5076     </blockquote>
5077    
5078    
5079     </blockquote><p>
5080    
5081     </p>
5082     <p>Examples:
5083     </p>
5084     <p>
5085     </p>
5086     <blockquote class="text">
5087     <p>
5088     </p>
5089     </blockquote><p>
5090    
5091     </p>
5092     <a name="CREATE FX_SEND"></a><br /><hr />
5093     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5094     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5095     Adding an effect send to a sampler channel</h3>
5096    
5097     <p>The front-end can create an additional effect send on a specific sampler channel
5098     by sending the following command:
5099     </p>
5100     <p>
5101     </p>
5102     <blockquote class="text">
5103     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5104     </p>
5105     </blockquote><p>
5106    
5107     </p>
5108     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5109     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>
5110     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
5111     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5112     is a number between 0..127 defining the MIDI controller which can alter the
5113     effect send level and &lt;name&gt; is an optional argument defining a name
5114     for the effect send entity. The name does not have to be unique, but MUST be
5115     encapsulated into apostrophes and supports escape sequences as described in chapter
5116     "<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>".
5117     </p>
5118     <p>By default, that is as initial routing, the effect send's audio channels
5119     are automatically routed to the last audio channels of the sampler channel's
5120     audio output device, that way you can i.e. first increase the amount of audio
5121     channels on the audio output device for having dedicated effect send output
5122     channels and when "CREATE FX_SEND" is called, those channels will automatically
5123     be picked. You can alter the destination channels however with
5124     <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>.
5125    
5126     </p>
5127     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5128     sends on a sampler channel will decrease runtime performance, because for implementing channel
5129     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5130     the voices and route the audio signal afterwards to the master outputs and effect send
5131     outputs (along with their respective effect send levels). A sampler channel without effect
5132     sends however can mix its voices directly into the audio output devices's audio buffers
5133     and is thus faster.
5134    
5135     </p>
5136     <p>Possible Answers:
5137     </p>
5138     <p>
5139     </p>
5140     <blockquote class="text">
5141     <p>"OK[&lt;fx-send-id&gt;]" -
5142     </p>
5143     <blockquote class="text">
5144     <p>in case a new effect send could be added to the
5145     sampler channel, where &lt;fx-send-id&gt; reflects the
5146     unique ID of the newly created effect send entity
5147     </p>
5148     </blockquote>
5149    
5150    
5151     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5152     </p>
5153     <blockquote class="text">
5154     <p>when a new effect send could not be added, i.e.
5155     due to invalid parameters
5156     </p>
5157     </blockquote>
5158    
5159    
5160     </blockquote><p>
5161    
5162     </p>
5163     <p>Examples:
5164     </p>
5165     <p>
5166     </p>
5167     <blockquote class="text">
5168     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5169     </p>
5170     <p>S: "OK[0]"
5171     </p>
5172     </blockquote><p>
5173    
5174     </p>
5175     <p>
5176     </p>
5177     <blockquote class="text">
5178     <p>C: "CREATE FX_SEND 0 93"
5179     </p>
5180     <p>S: "OK[1]"
5181     </p>
5182     </blockquote><p>
5183    
5184     </p>
5185     <a name="DESTROY FX_SEND"></a><br /><hr />
5186     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5187     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5188     Removing an effect send from a sampler channel</h3>
5189    
5190     <p>The front-end can remove an existing effect send on a specific sampler channel
5191     by sending the following command:
5192     </p>
5193     <p>
5194     </p>
5195     <blockquote class="text">
5196     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5197     </p>
5198     </blockquote><p>
5199    
5200     </p>
5201     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5202     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>
5203     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
5204     sampler channel from which the effect send should be removed from and
5205     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5206     <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>
5207     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.
5208     </p>
5209     <p>Possible Answers:
5210     </p>
5211     <p>
5212     </p>
5213     <blockquote class="text">
5214     <p>"OK" -
5215     </p>
5216     <blockquote class="text">
5217     <p>on success
5218     </p>
5219     </blockquote>
5220    
5221    
5222     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5223     </p>
5224     <blockquote class="text">
5225     <p>in case it failed, providing an appropriate error code and
5226     error message
5227     </p>
5228     </blockquote>
5229    
5230    
5231     </blockquote><p>
5232    
5233     </p>
5234     <p>Example:
5235     </p>
5236     <p>
5237     </p>
5238     <blockquote class="text">
5239     <p>C: "DESTROY FX_SEND 0 0"
5240     </p>
5241     <p>S: "OK"
5242     </p>
5243     </blockquote><p>
5244    
5245     </p>
5246     <a name="GET FX_SENDS"></a><br /><hr />
5247     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5248     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5249     Getting amount of effect sends on a sampler channel</h3>
5250    
5251     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5252     by sending the following command:
5253     </p>
5254     <p>
5255     </p>
5256     <blockquote class="text">
5257     <p>GET FX_SENDS &lt;sampler-channel&gt;
5258     </p>
5259     </blockquote><p>
5260    
5261     </p>
5262     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5263     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>
5264     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.
5265     </p>
5266     <p>Possible Answers:
5267     </p>
5268     <p>
5269     </p>
5270     <blockquote class="text">
5271     <p>The sampler will answer by returning the number of effect
5272     sends on the given sampler channel.
5273     </p>
5274     </blockquote><p>
5275    
5276     </p>
5277     <p>Example:
5278     </p>
5279     <p>
5280     </p>
5281     <blockquote class="text">
5282     <p>C: "GET FX_SENDS 0"
5283     </p>
5284     <p>S: "2"
5285     </p>
5286     </blockquote><p>
5287    
5288     </p>
5289     <a name="LIST FX_SENDS"></a><br /><hr />
5290     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5291     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5292     Listing all effect sends on a sampler channel</h3>
5293    
5294     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5295     by sending the following command:
5296     </p>
5297     <p>
5298     </p>
5299     <blockquote class="text">
5300     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5301     </p>
5302     </blockquote><p>
5303    
5304     </p>
5305     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5306     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>
5307     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.
5308     </p>
5309     <p>Possible Answers:
5310     </p>
5311     <p>
5312     </p>
5313     <blockquote class="text">
5314     <p>The sampler will answer by returning a comma separated list
5315     with all effect sends' numerical IDs on the given sampler
5316     channel.
5317     </p>
5318     </blockquote><p>
5319    
5320     </p>
5321     <p>Examples:
5322     </p>
5323     <p>
5324     </p>
5325     <blockquote class="text">
5326     <p>C: "LIST FX_SENDS 0"
5327     </p>
5328     <p>S: "0,1"
5329     </p>
5330     </blockquote><p>
5331    
5332     </p>
5333     <p>
5334     </p>
5335     <blockquote class="text">
5336     <p>C: "LIST FX_SENDS 1"
5337     </p>
5338     <p>S: ""
5339     </p>
5340     </blockquote><p>
5341    
5342     </p>
5343     <a name="GET FX_SEND INFO"></a><br /><hr />
5344     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5345     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5346     Getting effect send information</h3>
5347    
5348     <p>The front-end can ask for the current settings of an effect send entity
5349     by sending the following command:
5350     </p>
5351     <p>
5352     </p>
5353     <blockquote class="text">
5354     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5355     </p>
5356     </blockquote><p>
5357    
5358     </p>
5359     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5360     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>
5361     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
5362     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5363     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>
5364     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.
5365    
5366     </p>
5367     <p>Possible Answers:
5368     </p>
5369     <p>
5370     </p>
5371     <blockquote class="text">
5372     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5373     Each answer line begins with the settings category name
5374     followed by a colon and then a space character &lt;SP&gt; and finally
5375     the info character string to that setting category. At the
5376     moment the following categories are defined:
5377     </p>
5378     <p>
5379     </p>
5380     <blockquote class="text">
5381     <p>NAME -
5382     </p>
5383     <blockquote class="text">
5384     <p>name of the effect send entity
5385     (note that this character string may contain
5386     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5387     </p>
5388     </blockquote>
5389    
5390    
5391     <p>MIDI_CONTROLLER -
5392     </p>
5393     <blockquote class="text">
5394     <p>a value between 0 and 127 reflecting the MIDI controller
5395     which is able to modify the effect send's send level
5396     </p>
5397     </blockquote>
5398    
5399    
5400     <p>LEVEL -
5401     </p>
5402     <blockquote class="text">
5403     <p>optionally dotted number reflecting the effect send's
5404     current send level (where a value &lt; 1.0 means attenuation
5405     and a value > 1.0 means amplification)
5406     </p>
5407     </blockquote>
5408    
5409    
5410     <p>AUDIO_OUTPUT_ROUTING -
5411     </p>
5412     <blockquote class="text">
5413     <p>comma separated list which reflects to which audio
5414     channel of the selected audio output device each
5415     effect send output channel is routed to, e.g. "0,3" would
5416     mean the effect send's output channel 0 is routed to channel
5417     0 of the audio output device and the effect send's output
5418     channel 1 is routed to the channel 3 of the audio
5419     output device (see
5420     <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>
5421     for details)
5422     </p>
5423     </blockquote>
5424    
5425    
5426     </blockquote>
5427    
5428    
5429     </blockquote><p>
5430    
5431     </p>
5432     <p>The mentioned fields above don't have to be in particular order.
5433     </p>
5434     <p>Example:
5435     </p>
5436     <p>
5437     </p>
5438     <blockquote class="text">
5439     <p>C: "GET FX_SEND INFO 0 0"
5440     </p>
5441     <p>S: "NAME: Reverb Send"
5442     </p>
5443     <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5444     </p>
5445     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5446     </p>
5447     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5448     </p>
5449     <p>&nbsp;&nbsp;&nbsp;"."
5450     </p>
5451     </blockquote><p>
5452    
5453     </p>
5454     <a name="SET FX_SEND NAME"></a><br /><hr />
5455     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5456     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5457     Changing effect send's name</h3>
5458    
5459     <p>The front-end can alter the current name of an effect
5460     send entity by sending the following command:
5461     </p>
5462     <p>
5463     </p>
5464     <blockquote class="text">
5465     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5466     </p>
5467     </blockquote><p>
5468    
5469     </p>
5470     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5471     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>
5472     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,
5473     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5474     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>
5475     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
5476     &lt;name&gt; is the new name of the effect send entity, which
5477     does not have to be unique (name MUST be encapsulated into apostrophes
5478     and supports escape sequences as described in chapter
5479     "<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>").
5480    
5481     </p>
5482     <p>Possible Answers:
5483     </p>
5484     <p>
5485     </p>
5486     <blockquote class="text">
5487     <p>"OK" -
5488     </p>
5489     <blockquote class="text">
5490     <p>on success
5491     </p>
5492     </blockquote>
5493    
5494    
5495     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5496     </p>
5497     <blockquote class="text">
5498     <p>in case it failed, providing an appropriate error code and error message
5499     </p>
5500     </blockquote>
5501    
5502    
5503     </blockquote><p>
5504    
5505     </p>
5506     <p>Example:
5507     </p>
5508     <p>
5509     </p>
5510     <blockquote class="text">
5511     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5512     </p>
5513     <p>S: "OK"
5514     </p>
5515     </blockquote><p>
5516    
5517     </p>
5518     <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5519     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5520     <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5521     Altering effect send's audio routing</h3>
5522    
5523     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5524     sampler channel by sending the following command:
5525     </p>
5526     <p>
5527     </p>
5528     <blockquote class="text">
5529     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5530     </p>
5531     </blockquote><p>
5532    
5533     </p>
5534     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5535     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>
5536     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,
5537     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5538     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>
5539     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,
5540     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5541     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5542     the audio channel of the selected audio output device where &lt;audio-src&gt;
5543     should be routed to.
5544     </p>
5545     <p>Note that effect sends can only route audio to the same audio output
5546     device as assigned to the effect send's sampler channel. Also note that an
5547     effect send entity does always have exactly as much audio channels as its
5548     sampler channel. So if the sampler channel is stereo, the effect send does
5549     have two audio channels as well. Also keep in mind that the amount of audio
5550     channels on a sampler channel might be dependant not only to the deployed
5551     sampler engine on the sampler channel, but also dependant to the instrument
5552     currently loaded. However you can (effectively) turn an i.e. stereo effect
5553     send into a mono one by simply altering its audio routing appropriately.
5554     </p>
5555     <p>Possible Answers:
5556     </p>
5557     <p>
5558     </p>
5559     <blockquote class="text">
5560     <p>"OK" -
5561     </p>
5562     <blockquote class="text">
5563     <p>on success
5564     </p>
5565     </blockquote>
5566    
5567    
5568     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5569     </p>
5570     <blockquote class="text">
5571     <p>if audio output channel was set, but there are noteworthy
5572     issue(s) related, providing an appropriate warning code and
5573     warning message
5574     </p>
5575     </blockquote>
5576    
5577    
5578     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5579     </p>
5580     <blockquote class="text">
5581     <p>in case it failed, providing an appropriate error code and error message
5582     </p>
5583     </blockquote>
5584    
5585    
5586     </blockquote><p>
5587    
5588     </p>
5589     <p>Example:
5590     </p>
5591     <p>
5592     </p>
5593     <blockquote class="text">
5594     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5595     </p>
5596     <p>S: "OK"
5597     </p>
5598     </blockquote><p>
5599    
5600     </p>
5601     <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5602     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5603     <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5604     Altering effect send's MIDI controller</h3>
5605    
5606     <p>The front-end can alter the MIDI controller of an effect
5607     send entity by sending the following command:
5608     </p>
5609     <p>
5610     </p>
5611     <blockquote class="text">
5612     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5613     </p>
5614     </blockquote><p>
5615    
5616     </p>
5617     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5618     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>
5619     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,
5620     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5621     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>
5622     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
5623     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5624     able to modify the effect send's send level.
5625     </p>
5626     <p>Possible Answers:
5627     </p>
5628     <p>
5629     </p>
5630     <blockquote class="text">
5631     <p>"OK" -
5632     </p>
5633     <blockquote class="text">
5634     <p>on success
5635     </p>
5636     </blockquote>
5637    
5638    
5639     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5640     </p>
5641     <blockquote class="text">
5642     <p>if MIDI controller was set, but there are noteworthy
5643     issue(s) related, providing an appropriate warning code and
5644     warning message
5645     </p>
5646     </blockquote>
5647    
5648    
5649     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5650     </p>
5651     <blockquote class="text">
5652     <p>in case it failed, providing an appropriate error code and error message
5653     </p>
5654     </blockquote>
5655    
5656    
5657     </blockquote><p>
5658    
5659     </p>
5660     <p>Example:
5661     </p>
5662     <p>
5663     </p>
5664     <blockquote class="text">
5665     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5666     </p>
5667     <p>S: "OK"
5668     </p>
5669     </blockquote><p>
5670    
5671     </p>
5672     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5673     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5674     <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5675     Altering effect send's send level</h3>
5676    
5677     <p>The front-end can alter the current send level of an effect
5678     send entity by sending the following command:
5679     </p>
5680     <p>
5681     </p>
5682     <blockquote class="text">
5683     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5684     </p>
5685     </blockquote><p>
5686    
5687     </p>
5688     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5689     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>
5690     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,
5691     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5692     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>
5693     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
5694     &lt;volume&gt; is an optionally dotted positive number (a value
5695     smaller than 1.0 means attenuation, whereas a value greater than
5696     1.0 means amplification) reflecting the new send level.
5697     </p>
5698     <p>Possible Answers:
5699     </p>
5700     <p>
5701     </p>
5702     <blockquote class="text">
5703     <p>"OK" -
5704     </p>
5705     <blockquote class="text">
5706     <p>on success
5707     </p>
5708     </blockquote>
5709    
5710    
5711     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5712     </p>
5713     <blockquote class="text">
5714     <p>if new send level was set, but there are noteworthy
5715     issue(s) related, providing an appropriate warning code and
5716     warning message
5717     </p>
5718     </blockquote>
5719    
5720    
5721     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5722     </p>
5723     <blockquote class="text">
5724     <p>in case it failed, providing an appropriate error code and error message
5725     </p>
5726     </blockquote>
5727    
5728    
5729     </blockquote><p>
5730    
5731     </p>
5732     <p>Example:
5733     </p>
5734     <p>
5735     </p>
5736     <blockquote class="text">
5737     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5738     </p>
5739     <p>S: "OK"
5740     </p>
5741     </blockquote><p>
5742    
5743     </p>
5744     <a name="RESET CHANNEL"></a><br /><hr />
5745     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5746     <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5747     Resetting a sampler channel</h3>
5748    
5749     <p>The front-end can reset a particular sampler channel by sending the following command:
5750     </p>
5751     <p>
5752     </p>
5753     <blockquote class="text">
5754     <p>RESET CHANNEL &lt;sampler-channel&gt;
5755     </p>
5756     </blockquote><p>
5757    
5758     </p>
5759     <p>
5760     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5761     This will cause the engine on that sampler channel, its voices and
5762     eventually disk streams and all control and status variables to be
5763     reset.
5764     </p>
5765     <p>Possible Answers:
5766     </p>
5767     <p>
5768     </p>
5769     <blockquote class="text">
5770     <p>"OK" -
5771     </p>
5772     <blockquote class="text">
5773     <p>on success
5774     </p>
5775     </blockquote>
5776    
5777    
5778     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5779     </p>
5780     <blockquote class="text">
5781     <p>if channel was reset, but there are noteworthy issue(s)
5782     related, providing an appropriate warning code and warning
5783     message
5784     </p>
5785     </blockquote>
5786    
5787    
5788     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5789     </p>
5790     <blockquote class="text">
5791     <p>in case it failed, providing an appropriate error code and
5792     error message
5793     </p>
5794     </blockquote>
5795    
5796    
5797     </blockquote><p>
5798    
5799     </p>
5800     <p>Examples:
5801     </p>
5802     <p>
5803     </p>
5804     <blockquote class="text">
5805     <p>
5806     </p>
5807     </blockquote><p>
5808    
5809     </p>
5810     <a name="anchor12"></a><br /><hr />
5811     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5812     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5813     Controlling connection</h3>
5814    
5815     <p>The following commands are used to control the connection to LinuxSampler.
5816     </p>
5817     <a name="SUBSCRIBE"></a><br /><hr />
5818     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5819     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5820     Register front-end for receiving event messages</h3>
5821    
5822     <p>The front-end can register itself to the LinuxSampler application to
5823     be informed about noteworthy events by sending this command:
5824     </p>
5825     <p>
5826     </p>
5827     <blockquote class="text">
5828     <p>SUBSCRIBE &lt;event-id&gt;
5829     </p>
5830     </blockquote><p>
5831    
5832     </p>
5833     <p>where &lt;event-id&gt; will be replaced by the respective event that
5834     client wants to subscribe to.
5835     </p>
5836     <p>Possible Answers:
5837     </p>
5838     <p>
5839     </p>
5840     <blockquote class="text">
5841     <p>"OK" -
5842     </p>
5843     <blockquote class="text">
5844     <p>on success
5845     </p>
5846     </blockquote>
5847    
5848    
5849     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5850     </p>
5851     <blockquote class="text">
5852     <p>if registration succeeded, but there are noteworthy
5853     issue(s) related, providing an appropriate warning code and
5854     warning message
5855     </p>
5856     </blockquote>
5857    
5858    
5859     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5860     </p>
5861     <blockquote class="text">
5862     <p>in case it failed, providing an appropriate error code and
5863     error message
5864     </p>
5865     </blockquote>
5866    
5867    
5868     </blockquote><p>
5869    
5870     </p>
5871     <p>Examples:
5872     </p>
5873     <p>
5874     </p>
5875     <blockquote class="text">
5876     <p>
5877     </p>
5878     </blockquote><p>
5879    
5880     </p>
5881     <a name="UNSUBSCRIBE"></a><br /><hr />
5882     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5883     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5884     Unregister front-end for not receiving event messages</h3>
5885    
5886     <p>The front-end can unregister itself if it doesn't want to receive event
5887     messages anymore by sending the following command:
5888     </p>
5889     <p>
5890     </p>
5891     <blockquote class="text">
5892     <p>UNSUBSCRIBE &lt;event-id&gt;
5893     </p>
5894     </blockquote><p>
5895    
5896     </p>
5897     <p>Where &lt;event-id&gt; will be replaced by the respective event that
5898     client doesn't want to receive anymore.
5899     </p>
5900     <p>Possible Answers:
5901     </p>
5902     <p>
5903     </p>
5904     <blockquote class="text">
5905     <p>"OK" -
5906     </p>
5907     <blockquote class="text">
5908     <p>on success
5909     </p>
5910     </blockquote>
5911    
5912    
5913     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5914     </p>
5915     <blockquote class="text">
5916     <p>if unregistration succeeded, but there are noteworthy
5917     issue(s) related, providing an appropriate warning code and
5918     warning message
5919     </p>
5920     </blockquote>
5921    
5922    
5923     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5924     </p>
5925     <blockquote class="text">
5926     <p>in case it failed, providing an appropriate error code and
5927     error message
5928     </p>
5929     </blockquote>
5930    
5931    
5932     </blockquote><p>
5933    
5934     </p>
5935     <p>Examples:
5936     </p>
5937     <p>
5938     </p>
5939     <blockquote class="text">
5940     <p>
5941     </p>
5942     </blockquote><p>
5943    
5944     </p>
5945     <a name="SET ECHO"></a><br /><hr />
5946     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5947     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5948     Enable or disable echo of commands</h3>
5949    
5950     <p>To enable or disable back sending of commands to the client the following command can be used:
5951     </p>
5952     <p>
5953     </p>
5954     <blockquote class="text">
5955     <p>SET ECHO &lt;value&gt;
5956     </p>
5957     </blockquote><p>
5958    
5959     </p>
5960     <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5961     or "0" to disable echo mode. When echo mode is enabled, all
5962     commands send to LinuxSampler will be immediately send back and
5963     after this echo the actual response to the command will be
5964     returned. Echo mode will only be altered for the client connection
5965     that issued the "SET ECHO" command, not globally for all client
5966     connections.
5967     </p>
5968     <p>Possible Answers:
5969     </p>
5970     <p>
5971     </p>
5972     <blockquote class="text">
5973     <p>"OK" -
5974     </p>
5975     <blockquote class="text">
5976     <p>usually
5977     </p>
5978     </blockquote>
5979    
5980    
5981     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5982     </p>
5983     <blockquote class="text">
5984     <p>on syntax error, e.g. non boolean value
5985     </p>
5986     </blockquote>
5987    
5988    
5989     </blockquote><p>
5990    
5991     </p>
5992     <p>Examples:
5993     </p>
5994     <p>
5995     </p>
5996     <blockquote class="text">
5997     <p>
5998     </p>
5999     </blockquote><p>
6000    
6001     </p>
6002     <a name="QUIT"></a><br /><hr />
6003     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6004     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6005     Close client connection</h3>
6006    
6007     <p>The client can close its network connection to LinuxSampler by sending the following command:
6008     </p>
6009     <p>
6010     </p>
6011     <blockquote class="text">
6012     <p>QUIT
6013     </p>
6014     </blockquote><p>
6015    
6016     </p>
6017     <p>This is probably more interesting for manual telnet connections to
6018     LinuxSampler than really useful for a front-end implementation.
6019     </p>
6020     <a name="anchor13"></a><br /><hr />
6021     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6022     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6023     Global commands</h3>
6024    
6025     <p>The following commands have global impact on the sampler.
6026     </p>
6027     <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6028     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6029     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6030     Current number of active voices</h3>
6031    
6032     <p>The front-end can ask for the current number of active voices on
6033     the sampler by sending the following command:
6034     </p>
6035     <p>
6036     </p>
6037     <blockquote class="text">
6038     <p>GET TOTAL_VOICE_COUNT
6039     </p>
6040     </blockquote><p>
6041    
6042     </p>
6043     <p>Possible Answers:
6044     </p>
6045     <p>
6046     </p>
6047     <blockquote class="text">
6048     <p>LinuxSampler will answer by returning the number of all active
6049     voices on the sampler.
6050     </p>
6051     </blockquote><p>
6052    
6053     </p>
6054     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6055     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6056     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6057     Maximum amount of active voices</h3>
6058    
6059     <p>The front-end can ask for the maximum number of active voices
6060     by sending the following command:
6061     </p>
6062     <p>
6063     </p>
6064     <blockquote class="text">
6065     <p>GET TOTAL_VOICE_COUNT_MAX
6066     </p>
6067     </blockquote><p>
6068    
6069     </p>
6070     <p>Possible Answers:
6071     </p>
6072     <p>
6073     </p>
6074     <blockquote class="text">
6075     <p>LinuxSampler will answer by returning the maximum number
6076     of active voices.
6077     </p>
6078     </blockquote><p>
6079    
6080     </p>
6081     <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6082     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6083     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6084     Current number of active disk streams</h3>
6085    
6086     <p>The front-end can ask for the current number of active disk streams on
6087     the sampler by sending the following command:
6088     </p>
6089     <p>
6090     </p>
6091     <blockquote class="text">
6092     <p>GET TOTAL_STREAM_COUNT
6093     </p>
6094     </blockquote><p>
6095    
6096     </p>
6097     <p>Possible Answers:
6098     </p>
6099     <p>
6100     </p>
6101     <blockquote class="text">
6102     <p>LinuxSampler will answer by returning the number of all active
6103     disk streams on the sampler.
6104     </p>
6105     </blockquote><p>
6106    
6107     </p>
6108     <a name="RESET"></a><br /><hr />
6109     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6110     <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6111     Reset sampler</h3>
6112    
6113     <p>The front-end can reset the whole sampler by sending the following command:
6114     </p>
6115     <p>
6116     </p>
6117     <blockquote class="text">
6118     <p>RESET
6119     </p>
6120     </blockquote><p>
6121    
6122     </p>
6123     <p>Possible Answers:
6124     </p>
6125     <p>
6126     </p>
6127     <blockquote class="text">
6128     <p>"OK" -
6129     </p>
6130     <blockquote class="text">
6131     <p>always
6132     </p>
6133     </blockquote>
6134    
6135    
6136     </blockquote><p>
6137    
6138     </p>
6139     <p>Examples:
6140     </p>
6141     <p>
6142     </p>
6143     <blockquote class="text">
6144     <p>
6145     </p>
6146     </blockquote><p>
6147    
6148     </p>
6149     <a name="GET SERVER INFO"></a><br /><hr />
6150     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6151     <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6152     General sampler informations</h3>
6153    
6154     <p>The client can ask for general informations about the LinuxSampler
6155     instance by sending the following command:
6156     </p>
6157     <p>
6158     </p>
6159     <blockquote class="text">
6160     <p>GET SERVER INFO
6161     </p>
6162     </blockquote><p>
6163    
6164     </p>
6165     <p>Possible Answers:
6166     </p>
6167     <p>
6168     </p>
6169     <blockquote class="text">
6170     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6171     Each answer line begins with the information category name
6172     followed by a colon and then a space character &lt;SP&gt; and finally
6173     the info character string to that information category. At the
6174     moment the following categories are defined:
6175    
6176     </p>
6177     <p>
6178     </p>
6179     <blockquote class="text">
6180     <p>DESCRIPTION -
6181     </p>
6182     <blockquote class="text">
6183     <p>arbitrary textual description about the sampler
6184     (note that the character string may contain
6185     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6186     </p>
6187     </blockquote>
6188    
6189    
6190     <p>VERSION -
6191     </p>
6192     <blockquote class="text">
6193     <p>version of the sampler
6194     </p>
6195     </blockquote>
6196    
6197    
6198     <p>PROTOCOL_VERSION -
6199     </p>
6200     <blockquote class="text">
6201     <p>version of the LSCP specification the sampler
6202     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)
6203     </p>
6204     </blockquote>
6205    
6206    
6207     <p>INSTRUMENTS_DB_SUPPORT -
6208     </p>
6209     <blockquote class="text">
6210     <p>either yes or no, specifies whether the
6211     sampler is build with instruments database support.
6212     </p>
6213     </blockquote>
6214    
6215    
6216     </blockquote>
6217    
6218    
6219     </blockquote><p>
6220    
6221     </p>
6222     <p>The mentioned fields above don't have to be in particular order.
6223     Other fields might be added in future.
6224     </p>
6225     <a name="GET VOLUME"></a><br /><hr />
6226     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6227     <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6228     Getting global volume attenuation</h3>
6229    
6230     <p>The client can ask for the current global sampler-wide volume
6231     attenuation by sending the following command:
6232     </p>
6233     <p>
6234     </p>
6235     <blockquote class="text">
6236     <p>GET VOLUME
6237     </p>
6238     </blockquote><p>
6239    
6240     </p>
6241     <p>Possible Answers:
6242     </p>
6243     <p>
6244     </p>
6245     <blockquote class="text">
6246     <p>The sampler will always answer by returning the optional
6247     dotted floating point coefficient, reflecting the current
6248     global volume attenuation.
6249    
6250     </p>
6251     </blockquote><p>
6252    
6253     </p>
6254     <p>Note: it is up to the respective sampler engine whether to obey
6255     that global volume parameter or not, but in general all engines SHOULD
6256     use this parameter.
6257     </p>
6258     <a name="SET VOLUME"></a><br /><hr />
6259     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6260     <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6261     Setting global volume attenuation</h3>
6262    
6263     <p>The client can alter the current global sampler-wide volume
6264     attenuation by sending the following command:
6265     </p>
6266     <p>
6267     </p>
6268     <blockquote class="text">
6269     <p>SET VOLUME &lt;volume&gt;
6270     </p>
6271     </blockquote><p>
6272    
6273     </p>
6274     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6275     floating point value, reflecting the new global volume parameter.
6276     This value might usually be in the range between 0.0 and 1.0, that
6277     is for attenuating the overall volume.
6278     </p>
6279     <p>Possible Answers:
6280     </p>
6281     <p>
6282     </p>
6283     <blockquote class="text">
6284     <p>"OK" -
6285     </p>
6286     <blockquote class="text">
6287     <p>on success
6288     </p>
6289     </blockquote>
6290    
6291    
6292     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6293     </p>
6294     <blockquote class="text">
6295     <p>if the global volume was set, but there are noteworthy
6296     issue(s) related, providing an appropriate warning code and
6297     warning message
6298     </p>
6299     </blockquote>
6300    
6301    
6302     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6303     </p>
6304     <blockquote class="text">
6305     <p>in case it failed, providing an appropriate error code and error message
6306     </p>
6307     </blockquote>
6308    
6309    
6310     </blockquote><p>
6311    
6312     </p>
6313     <a name="MIDI Instrument Mapping"></a><br /><hr />
6314     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6315     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6316     MIDI Instrument Mapping</h3>
6317    
6318     <p>The MIDI protocol provides a way to switch between instruments
6319     by sending so called MIDI bank select and MIDI program change
6320     messages which are essentially just numbers. The following commands
6321     allow to actually map arbitrary MIDI bank select / program change
6322     numbers with real instruments.
6323     </p>
6324     <p>The sampler allows to manage an arbitrary amount of MIDI
6325     instrument maps which define which instrument to load on
6326     which MIDI program change message.
6327     </p>
6328     <p>By default, that is when the sampler is launched, there is no
6329     map, thus the sampler will simply ignore all program change
6330     messages. The front-end has to explicitly create at least one
6331     map, add entries to the map and tell the respective sampler
6332     channel(s) which MIDI instrument map to use, so the sampler
6333     knows how to react on a given program change message on the
6334     respective sampler channel, that is by switching to the
6335     respectively defined engine type and loading the respective
6336     instrument. See command
6337     <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>
6338     for how to assign a MIDI instrument map to a sampler channel.
6339     </p>
6340     <p>Also note per MIDI specification a bank select message does not
6341     cause to switch to another instrument. Instead when receiving a
6342     bank select message the bank value will be stored and a subsequent
6343     program change message (which may occur at any time) will finally
6344     cause the sampler to switch to the respective instrument as
6345     reflected by the current MIDI instrument map.
6346     </p>
6347     <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6348     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6349     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6350     Create a new MIDI instrument map</h3>
6351    
6352     <p>The front-end can add a new MIDI instrument map by sending
6353     the following command:
6354     </p>
6355     <p>
6356     </p>
6357     <blockquote class="text">
6358     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6359     </p>
6360     </blockquote><p>
6361    
6362     </p>
6363     <p>Where &lt;name&gt; is an optional argument allowing to
6364     assign a custom name to the new map. MIDI instrument Map
6365     names do not have to be unique, but MUST be encapsulated
6366     into apostrophes and support escape sequences as described
6367     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>".
6368    
6369     </p>
6370     <p>Possible Answers:
6371     </p>
6372     <p>
6373     </p>
6374     <blockquote class="text">
6375     <p>"OK[&lt;map&gt;]" -
6376     </p>
6377     <blockquote class="text">
6378     <p>in case a new MIDI instrument map could
6379     be added, where &lt;map&gt; reflects the
6380     unique ID of the newly created MIDI
6381     instrument map
6382     </p>
6383     </blockquote>
6384    
6385    
6386     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6387     </p>
6388     <blockquote class="text">
6389     <p>when a new map could not be created, which
6390     might never occur in practice
6391     </p>
6392     </blockquote>
6393    
6394    
6395     </blockquote><p>
6396    
6397     </p>
6398     <p>Examples:
6399     </p>
6400     <p>
6401     </p>
6402     <blockquote class="text">
6403     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6404     </p>
6405     <p>S: "OK[0]"
6406     </p>
6407     </blockquote><p>
6408    
6409     </p>
6410     <p>
6411     </p>
6412     <blockquote class="text">
6413     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6414     </p>
6415     <p>S: "OK[1]"
6416     </p>
6417     </blockquote><p>
6418    
6419     </p>
6420     <p>
6421     </p>
6422     <blockquote class="text">
6423     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6424     </p>
6425     <p>S: "OK[5]"
6426     </p>
6427     </blockquote><p>
6428    
6429     </p>
6430     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6431     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6432     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6433     Delete one particular or all MIDI instrument maps</h3>
6434    
6435     <p>The front-end can delete a particular MIDI instrument map
6436     by sending the following command:
6437     </p>
6438     <p>
6439     </p>
6440     <blockquote class="text">
6441     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6442     </p>
6443     </blockquote><p>
6444    
6445     </p>
6446     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6447     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>
6448     command.
6449     </p>
6450     <p>The front-end can delete all MIDI instrument maps by
6451     sending the following command:
6452     </p>
6453     <p>
6454     </p>
6455     <blockquote class="text">
6456     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
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>in case the map(s) could be deleted
6470     </p>
6471     </blockquote>
6472    
6473    
6474     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6475     </p>
6476     <blockquote class="text">
6477     <p>when the given map does not exist
6478     </p>
6479     </blockquote>
6480    
6481    
6482     </blockquote><p>
6483    
6484     </p>
6485     <p>Examples:
6486     </p>
6487     <p>
6488     </p>
6489     <blockquote class="text">
6490     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6491     </p>
6492     <p>S: "OK"
6493     </p>
6494     </blockquote><p>
6495    
6496     </p>
6497     <p>
6498     </p>
6499     <blockquote class="text">
6500     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6501     </p>
6502     <p>S: "OK"
6503     </p>
6504     </blockquote><p>
6505    
6506     </p>
6507     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6508     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6509     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6510     Get amount of existing MIDI instrument maps</h3>
6511    
6512     <p>The front-end can retrieve the current amount of MIDI
6513     instrument maps by sending the following command:
6514     </p>
6515     <p>
6516     </p>
6517     <blockquote class="text">
6518     <p>GET MIDI_INSTRUMENT_MAPS
6519     </p>
6520     </blockquote><p>
6521    
6522     </p>
6523     <p>Possible Answers:
6524     </p>
6525     <p>
6526     </p>
6527     <blockquote class="text">
6528     <p>The sampler will answer by returning the current
6529     number of MIDI instrument maps.
6530     </p>
6531     </blockquote><p>
6532    
6533     </p>
6534     <p>Example:
6535     </p>
6536     <p>
6537     </p>
6538     <blockquote class="text">
6539     <p>C: "GET MIDI_INSTRUMENT_MAPS"
6540     </p>
6541     <p>S: "2"
6542     </p>
6543     </blockquote><p>
6544    
6545     </p>
6546     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6547     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6548     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6549     Getting all created MIDI instrument maps</h3>
6550    
6551     <p>The number of MIDI instrument maps can change on runtime. To get the
6552     current list of MIDI instrument maps, the front-end can send the
6553     following command:
6554     </p>
6555     <p>
6556     </p>
6557     <blockquote class="text">
6558     <p>LIST MIDI_INSTRUMENT_MAPS
6559     </p>
6560     </blockquote><p>
6561    
6562     </p>
6563     <p>Possible Answers:
6564     </p>
6565     <p>
6566     </p>
6567     <blockquote class="text">
6568     <p>The sampler will answer by returning a comma separated list
6569     with all MIDI instrument maps' numerical IDs.
6570     </p>
6571     </blockquote><p>
6572    
6573     </p>
6574     <p>Example:
6575     </p>
6576     <p>
6577     </p>
6578     <blockquote class="text">
6579     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6580     </p>
6581     <p>S: "0,1,5,12"
6582     </p>
6583     </blockquote><p>
6584    
6585     </p>
6586     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6587     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6588     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6589     Getting MIDI instrument map information</h3>
6590    
6591     <p>The front-end can ask for the current settings of a MIDI
6592     instrument map by sending the following command:
6593     </p>
6594     <p>
6595     </p>
6596     <blockquote class="text">
6597     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6598     </p>
6599     </blockquote><p>
6600    
6601     </p>
6602     <p>Where &lt;map&gt; is the numerical ID of the map the
6603     front-end is interested in as returned by the
6604     <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>
6605     command.
6606     </p>
6607     <p>Possible Answers:
6608     </p>
6609     <p>
6610     </p>
6611     <blockquote class="text">
6612     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6613     Each answer line begins with the settings category name
6614     followed by a colon and then a space character &lt;SP&gt; and finally
6615     the info character string to that setting category. At the
6616     moment the following categories are defined:
6617     </p>
6618     <p>
6619     </p>
6620     <blockquote class="text">
6621     <p>NAME -
6622     </p>
6623     <blockquote class="text">
6624     <p>custom name of the given map,
6625     which does not have to be unique
6626     (note that this character string may contain
6627     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6628     </p>
6629     </blockquote>
6630    
6631    
6632     <p>DEFAULT -
6633     </p>
6634     <blockquote class="text">
6635     <p>either true or false,
6636     defines whether this map is the default map
6637     </p>
6638     </blockquote>
6639    
6640    
6641     </blockquote>
6642    
6643    
6644     </blockquote><p>
6645    
6646     </p>
6647     <p>The mentioned fields above don't have to be in particular order.
6648     </p>
6649     <p>Example:
6650     </p>
6651     <p>
6652     </p>
6653     <blockquote class="text">
6654     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6655     </p>
6656     <p>S: "NAME: Standard Map"
6657     </p>
6658     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6659     </p>
6660     <p>&nbsp;&nbsp;&nbsp;"."
6661     </p>
6662     </blockquote><p>
6663    
6664     </p>
6665     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6666     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6667     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6668     Renaming a MIDI instrument map</h3>
6669    
6670     <p>The front-end can alter the custom name of a MIDI
6671     instrument map by sending the following command:
6672     </p>
6673     <p>
6674     </p>
6675     <blockquote class="text">
6676     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6677     </p>
6678     </blockquote><p>
6679    
6680     </p>
6681     <p>Where &lt;map&gt; is the numerical ID of the map and
6682     &lt;name&gt; the new custom name of the map, which does not
6683     have to be unique (name MUST be encapsulated into apostrophes
6684     and supports escape sequences as described in chapter
6685     "<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>").
6686    
6687     </p>
6688     <p>Possible Answers:
6689     </p>
6690     <p>
6691     </p>
6692     <blockquote class="text">
6693     <p>"OK" -
6694     </p>
6695     <blockquote class="text">
6696     <p>on success
6697     </p>
6698     </blockquote>
6699    
6700    
6701     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6702     </p>
6703     <blockquote class="text">
6704     <p>in case the given map does not exist
6705     </p>
6706     </blockquote>
6707    
6708    
6709     </blockquote><p>
6710    
6711     </p>
6712     <p>Example:
6713     </p>
6714     <p>
6715     </p>
6716     <blockquote class="text">
6717     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6718     </p>
6719     <p>S: "OK"
6720     </p>
6721     </blockquote><p>
6722    
6723     </p>
6724     <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6725     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6726     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6727     Create or replace a MIDI instrument map entry</h3>
6728    
6729     <p>The front-end can create a new or replace an existing entry
6730     in a sampler's MIDI instrument map by sending the following
6731     command:
6732     </p>
6733     <p>
6734     </p>
6735     <blockquote class="text">
6736     <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6737     &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6738     &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6739     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6740     </p>
6741     </blockquote><p>
6742    
6743     </p>
6744     <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6745     &lt;midi_bank&gt; is an integer value between
6746     0..16383 reflecting the MIDI bank select index,
6747     &lt;midi_prog&gt; an
6748     integer value between 0..127 reflecting the MIDI program change
6749     index, &lt;engine_name&gt; a sampler engine name as returned by
6750     the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6751     command (not encapsulated into apostrophes), &lt;filename&gt; the name
6752     of the instrument's file to be deployed (encapsulated into apostrophes,
6753     supporting escape sequences as described in chapter
6754     "<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>"),
6755     &lt;instrument_index&gt; the index (integer value) of the instrument
6756     within the given file, &lt;volume_value&gt; reflects the master
6757     volume of the instrument as optionally dotted number (where a
6758     value &lt; 1.0 means attenuation and a value > 1.0 means
6759     amplification). This parameter easily allows to adjust the
6760     volume of all intruments within a custom instrument map
6761     without having to adjust their instrument files. The
6762     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6763     time of the instrument, that is when the instrument should
6764     be loaded, when freed and has exactly the following
6765     possibilities:
6766     </p>
6767     <p>
6768     </p>
6769     <blockquote class="text">
6770     <p>"ON_DEMAND" -
6771     </p>
6772     <blockquote class="text">
6773     <p>The instrument will be loaded when needed,
6774     that is when demanded by at least one sampler
6775     channel. It will immediately be freed from memory
6776     when not needed by any sampler channel anymore.
6777     </p>
6778     </blockquote>
6779    
6780    
6781     <p>"ON_DEMAND_HOLD" -
6782     </p>
6783     <blockquote class="text">
6784     <p>The instrument will be loaded when needed,
6785     that is when demanded by at least one sampler
6786     channel. It will be kept in memory even when
6787     not needed by any sampler channel anymore.
6788     Instruments with this mode are only freed
6789     when the sampler is reset or all mapping
6790     entries with this mode (and respective
6791     instrument) are explicitly changed to
6792     "ON_DEMAND" and no sampler channel is using
6793     the instrument anymore.
6794     </p>
6795     </blockquote>
6796    
6797    
6798     <p>"PERSISTENT" -
6799     </p>
6800     <blockquote class="text">
6801     <p>The instrument will immediately be loaded
6802     into memory when this mapping
6803     command is sent and the instrument is kept all
6804     the time. Instruments with this mode are
6805     only freed when the sampler is reset or all
6806     mapping entries with this mode (and
6807     respective instrument) are explicitly
6808     changed to "ON_DEMAND" and no sampler
6809     channel is using the instrument anymore.
6810     </p>
6811     </blockquote>
6812    
6813    
6814     <p>not supplied -
6815     </p>
6816     <blockquote class="text">
6817     <p>In case there is no &lt;instr_load_mode&gt;
6818     argument given, it will be up to the
6819     InstrumentManager to decide which mode to use.
6820     Usually it will use "ON_DEMAND" if an entry
6821     for the given instrument does not exist in
6822     the InstrumentManager's list yet, otherwise
6823     if an entry already exists, it will simply
6824     stick with the mode currently reflected by
6825     the already existing entry, that is it will
6826     not change the mode.
6827     </p>
6828     </blockquote>
6829    
6830    
6831     </blockquote><p>
6832    
6833     </p>
6834     <p>
6835     The &lt;instr_load_mode&gt; argument thus allows to define an
6836     appropriate strategy (low memory consumption vs. fast
6837     instrument switching) for each instrument individually. Note, the
6838     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6839     "PERSISTENT" have to be supported by the respective sampler engine
6840     (which is technically the case when the engine provides an
6841     InstrumentManager for its format). If this is not the case the
6842     argument will automatically fall back to the default value
6843     "ON_DEMAND". Also the load mode of one instrument may
6844     automatically change the laod mode of other instrument(s), i.e.
6845     because the instruments are part of the same file and the
6846     engine does not allow a way to manage load modes for them
6847     individually. Due to this, in case the frontend shows the
6848     load modes of entries, the frontend should retrieve the actual
6849     mode by i.e. sending
6850     <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>
6851     command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6852     (encapsulated into apostrophes, supporting escape sequences as described in chapter
6853     "<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
6854     mapping entry, useful for frontends for displaying an appropriate name for
6855     mapped instruments (using
6856     <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>).
6857    
6858     </p>
6859     <p>
6860     By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6861     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6862     however causes the respective "MAP MIDI_INSTRUMENT" command to return
6863     immediately, that is to let the sampler establish the mapping in the
6864     background. So this argument might be especially useful for mappings with
6865     a "PERSISTENT" type, because these have to load the respective instruments
6866     immediately and might thus block for a very long time. It is recommended
6867     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6868     because it has the following drawbacks: as "NON_MODAL" instructions return
6869     immediately, they may not necessarily return an error i.e. when the given
6870     instrument file turns out to be corrupt, beside that subsequent commands
6871     in a LSCP instruction sequence might fail, because mandatory mappings are
6872     not yet completed.
6873    
6874     </p>
6875     <p>Possible Answers:
6876     </p>
6877     <p>
6878     </p>
6879     <blockquote class="text">
6880     <p>"OK" -
6881     </p>
6882     <blockquote class="text">
6883     <p>usually
6884     </p>
6885     </blockquote>
6886    
6887    
6888     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6889     </p>
6890     <blockquote class="text">
6891     <p>when the given map or engine does not exist or a value
6892     is out of range
6893     </p>
6894     </blockquote>
6895    
6896    
6897     </blockquote><p>
6898    
6899     </p>
6900     <p>Examples:
6901     </p>
6902     <p>
6903     </p>
6904     <blockquote class="text">
6905     <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6906     </p>
6907     <p>S: "OK"
6908     </p>
6909     </blockquote><p>
6910    
6911     </p>
6912     <p>
6913     </p>
6914     <blockquote class="text">
6915     <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6916     </p>
6917     <p>S: "OK"
6918     </p>
6919     </blockquote><p>
6920    
6921     </p>
6922     <p>
6923     </p>
6924     <blockquote class="text">
6925     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6926     </p>
6927     <p>S: "OK"
6928     </p>
6929     <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6930     </p>
6931     <p>S: "OK"
6932     </p>
6933     </blockquote><p>
6934    
6935     </p>
6936     <p>
6937     </p>
6938     <blockquote class="text">
6939     <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6940     </p>
6941     <p>S: "OK"
6942     </p>
6943     </blockquote><p>
6944    
6945     </p>
6946     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6947     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6948     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6949     Getting ammount of MIDI instrument map entries</h3>
6950    
6951     <p>The front-end can query the amount of currently existing
6952     entries in a MIDI instrument map by sending the following
6953     command:
6954     </p>
6955     <p>
6956     </p>
6957     <blockquote class="text">
6958     <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6959     </p>
6960     </blockquote><p>
6961    
6962     </p>
6963     <p>The front-end can query the amount of currently existing
6964     entries in all MIDI instrument maps by sending the following
6965     command:
6966     </p>
6967     <p>
6968     </p>
6969     <blockquote class="text">
6970     <p>GET MIDI_INSTRUMENTS ALL
6971     </p>
6972     </blockquote><p>
6973    
6974     </p>
6975     <p>Possible Answers:
6976     </p>
6977     <p>
6978     </p>
6979     <blockquote class="text">
6980     <p>The sampler will answer by sending the current number of
6981     entries in the MIDI instrument map(s).
6982     </p>
6983     </blockquote><p>
6984    
6985     </p>
6986     <p>Example:
6987     </p>
6988     <p>
6989     </p>
6990     <blockquote class="text">
6991     <p>C: "GET MIDI_INSTRUMENTS 0"
6992     </p>
6993     <p>S: "234"
6994     </p>
6995     </blockquote><p>
6996    
6997     </p>
6998     <p>
6999     </p>
7000     <blockquote class="text">
7001     <p>C: "GET MIDI_INSTRUMENTS ALL"
7002     </p>
7003     <p>S: "954"
7004     </p>
7005     </blockquote><p>
7006    
7007     </p>
7008     <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7009     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7010     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7011     Getting indeces of all entries of a MIDI instrument map</h3>
7012    
7013     <p>The front-end can query a list of all currently existing
7014     entries in a certain MIDI instrument map by sending the following
7015     command:
7016     </p>
7017     <p>
7018     </p>
7019     <blockquote class="text">
7020     <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7021     </p>
7022     </blockquote><p>
7023    
7024     </p>
7025     <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7026     </p>
7027     <p>The front-end can query a list of all currently existing
7028     entries of all MIDI instrument maps by sending the following
7029     command:
7030     </p>
7031     <p>
7032     </p>
7033     <blockquote class="text">
7034     <p>LIST MIDI_INSTRUMENTS ALL
7035     </p>
7036     </blockquote><p>
7037    
7038     </p>
7039     <p>Possible Answers:
7040     </p>
7041     <p>
7042     </p>
7043     <blockquote class="text">
7044     <p>The sampler will answer by sending a comma separated
7045     list of map ID - MIDI bank - MIDI program triples, where
7046     each triple is encapsulated into curly braces. The
7047     list is returned in one single line. Each triple
7048     just reflects the key of the respective map entry,
7049     thus subsequent
7050     <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>
7051     command(s) are necessary to retrieve detailed informations
7052     about each entry.
7053     </p>
7054     </blockquote><p>
7055    
7056     </p>
7057     <p>Example:
7058     </p>
7059     <p>
7060     </p>
7061     <blockquote class="text">
7062     <p>C: "LIST MIDI_INSTRUMENTS 0"
7063     </p>
7064     <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7065     </p>
7066     </blockquote><p>
7067    
7068     </p>
7069     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7070     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7071     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7072     Remove an entry from the MIDI instrument map</h3>
7073    
7074     <p>The front-end can delete an entry from a MIDI instrument
7075     map by sending the following command:
7076     </p>
7077     <p>
7078     </p>
7079     <blockquote class="text">
7080     <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7081     </p>
7082     </blockquote><p>
7083    
7084     </p>
7085     <p>
7086     Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7087     &lt;midi_bank&gt; is an integer value between 0..16383
7088     reflecting the MIDI bank value and
7089     &lt;midi_prog&gt; an integer value between
7090     0..127 reflecting the MIDI program value of the map's entrie's key
7091     index triple.
7092    
7093     </p>
7094     <p>Possible Answers:
7095     </p>
7096     <p>
7097     </p>
7098     <blockquote class="text">
7099     <p>"OK" -
7100     </p>
7101     <blockquote class="text">
7102     <p>usually
7103     </p>
7104     </blockquote>
7105    
7106    
7107     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7108     </p>
7109     <blockquote class="text">
7110     <p>when index out of bounds
7111     </p>
7112     </blockquote>
7113    
7114    
7115     </blockquote><p>
7116    
7117     </p>
7118     <p>Example:
7119     </p>
7120     <p>
7121     </p>
7122     <blockquote class="text">
7123     <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7124     </p>
7125     <p>S: "OK"
7126     </p>
7127     </blockquote><p>
7128    
7129     </p>
7130     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7131     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7132     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7133     Get current settings of MIDI instrument map entry</h3>
7134    
7135     <p>The front-end can retrieve the current settings of a certain
7136     instrument map entry by sending the following command:
7137     </p>
7138     <p>
7139     </p>
7140     <blockquote class="text">
7141     <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7142     </p>
7143     </blockquote><p>
7144    
7145     </p>
7146     <p>
7147     Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7148     &lt;midi_bank&gt; is an integer value between 0..16383
7149     reflecting the MIDI bank value, &lt;midi_bank&gt;
7150     and &lt;midi_prog&gt; an integer value between
7151     0..127 reflecting the MIDI program value of the map's entrie's key
7152     index triple.
7153    
7154     </p>
7155     <p>Possible Answers:
7156     </p>
7157     <p>
7158     </p>
7159     <blockquote class="text">
7160     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7161     separated list. Each answer line begins with the
7162     information category name followed by a colon and then
7163     a space character &lt;SP&gt; and finally the info
7164     character string to that info category. At the moment
7165     the following categories are defined:
7166     </p>
7167     <p>"NAME" -
7168     </p>
7169     <blockquote class="text">
7170     <p>Name for this MIDI instrument map entry (if defined).
7171     This name shall be used by frontends for displaying a
7172     name for this mapped instrument. It can be set and
7173     changed with the
7174     <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>
7175     command and does not have to be unique.
7176     (note that this character string may contain
7177     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7178     </p>
7179     </blockquote>
7180    
7181    
7182     <p>"ENGINE_NAME" -
7183     </p>
7184     <blockquote class="text">
7185     <p>Name of the engine to be deployed for this
7186     instrument.
7187     </p>
7188     </blockquote>
7189    
7190    
7191     <p>"INSTRUMENT_FILE" -
7192     </p>
7193     <blockquote class="text">
7194     <p>File name of the instrument
7195     (note that this path may contain
7196     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7197     </p>
7198     </blockquote>
7199    
7200    
7201     <p>"INSTRUMENT_NR" -
7202     </p>
7203     <blockquote class="text">
7204     <p>Index of the instrument within the file.
7205     </p>
7206     </blockquote>
7207    
7208    
7209     <p>"INSTRUMENT_NAME" -
7210     </p>
7211     <blockquote class="text">
7212     <p>Name of the loaded instrument as reflected by its file.
7213     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7214     cannot be changed (note that this character string may contain
7215     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7216     </p>
7217     </blockquote>
7218    
7219    
7220     <p>"LOAD_MODE" -
7221     </p>
7222     <blockquote class="text">
7223     <p>Life time of instrument
7224     (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).
7225     </p>
7226     </blockquote>
7227    
7228    
7229     <p>"VOLUME" -
7230     </p>
7231     <blockquote class="text">
7232     <p>master volume of the instrument as optionally
7233     dotted number (where a value &lt; 1.0 means attenuation
7234     and a value > 1.0 means amplification)
7235     </p>
7236     </blockquote>
7237    
7238    
7239     <p>The mentioned fields above don't have to be in particular order.
7240     </p>
7241     </blockquote><p>
7242    
7243     </p>
7244     <p>Example:
7245     </p>
7246     <p>
7247     </p>
7248     <blockquote class="text">
7249     <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7250     </p>
7251     <p>S: "NAME: Drums for Foo Song"
7252     </p>
7253     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7254     </p>
7255     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7256     </p>
7257     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7258     </p>
7259     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7260     </p>
7261     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7262     </p>
7263     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7264     </p>
7265     <p>&nbsp;&nbsp;&nbsp;"."
7266     </p>
7267     </blockquote><p>
7268    
7269     </p>
7270     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7271     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7272     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7273     Clear MIDI instrument map</h3>
7274    
7275     <p>The front-end can clear a whole MIDI instrument map, that
7276     is delete all its entries by sending the following command:
7277     </p>
7278     <p>
7279     </p>
7280     <blockquote class="text">
7281     <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7282     </p>
7283     </blockquote><p>
7284    
7285     </p>
7286     <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7287     </p>
7288     <p>The front-end can clear all MIDI instrument maps, that
7289     is delete all entries of all maps by sending the following
7290     command:
7291     </p>
7292     <p>
7293     </p>
7294     <blockquote class="text">
7295     <p>CLEAR MIDI_INSTRUMENTS ALL
7296     </p>
7297     </blockquote><p>
7298    
7299     </p>
7300     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7301     maps, only their entries, thus the map's settings like
7302     custom name will be preservevd.
7303     </p>
7304     <p>Possible Answers:
7305     </p>
7306     <p>
7307     </p>
7308     <blockquote class="text">
7309     <p>"OK" -
7310     </p>
7311     <blockquote class="text">
7312     <p>always
7313     </p>
7314     </blockquote>
7315    
7316    
7317     </blockquote><p>
7318    
7319     </p>
7320     <p>Examples:
7321     </p>
7322     <p>
7323     </p>
7324     <blockquote class="text">
7325     <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7326     </p>
7327     <p>S: "OK"
7328     </p>
7329     </blockquote><p>
7330    
7331     </p>
7332     <p>
7333     </p>
7334     <blockquote class="text">
7335     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7336     </p>
7337     <p>S: "OK"
7338     </p>
7339     </blockquote><p>
7340    
7341     </p>
7342     <a name="Managing Instruments Database"></a><br /><hr />
7343     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7344     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7345     Managing Instruments Database</h3>
7346    
7347     <p>The following commands describe how to use and manage
7348     the instruments database.
7349     </p>
7350     <p>Notice:
7351     </p>
7352     <p>
7353     </p>
7354     <blockquote class="text">
7355     <p>All command arguments representing a path or
7356     instrument/directory name support escape sequences as described in chapter
7357     "<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>".
7358    
7359     </p>
7360     <p>All occurrences of a forward slash in instrument and directory
7361     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7362    
7363     </p>
7364     </blockquote><p>
7365    
7366     </p>
7367     <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7368     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7369     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7370     Creating a new instrument directory</h3>
7371    
7372     <p>The front-end can add a new instrument directory to the
7373     instruments database by sending the following command:
7374     </p>
7375     <p>
7376     </p>
7377     <blockquote class="text">
7378     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7379     </p>
7380     </blockquote><p>
7381    
7382     </p>
7383     <p>Where &lt;dir&gt; is the absolute path name of the directory
7384     to be created (encapsulated into apostrophes).
7385     </p>
7386     <p>Possible Answers:
7387     </p>
7388     <p>
7389     </p>
7390     <blockquote class="text">
7391     <p>"OK" -
7392     </p>
7393     <blockquote class="text">
7394     <p>on success
7395     </p>
7396     </blockquote>
7397    
7398    
7399     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7400     </p>
7401     <blockquote class="text">
7402     <p>when the directory could not be created, which
7403     can happen if the directory already exists or the
7404     name contains not allowed symbols
7405     </p>
7406     </blockquote>
7407    
7408    
7409     </blockquote><p>
7410    
7411     </p>
7412     <p>Examples:
7413     </p>
7414     <p>
7415     </p>
7416     <blockquote class="text">
7417     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7418     </p>
7419     <p>S: "OK"
7420     </p>
7421     </blockquote><p>
7422    
7423     </p>
7424     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7425     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7426     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7427     Deleting an instrument directory</h3>
7428    
7429     <p>The front-end can delete a particular instrument directory
7430     from the instruments database by sending the following command:
7431     </p>
7432     <p>
7433     </p>
7434     <blockquote class="text">
7435     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7436     </p>
7437     </blockquote><p>
7438    
7439     </p>
7440     <p>Where &lt;dir&gt; is the absolute path name of the directory
7441     to delete. The optional FORCE argument can be used to
7442     force the deletion of a non-empty directory and all its content.
7443     </p>
7444     <p>Possible Answers:
7445     </p>
7446     <p>
7447     </p>
7448     <blockquote class="text">
7449     <p>"OK" -
7450     </p>
7451     <blockquote class="text">
7452     <p>if the directory is deleted successfully
7453     </p>
7454     </blockquote>
7455    
7456    
7457     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7458     </p>
7459     <blockquote class="text">
7460     <p>if the given directory does not exist, or
7461     if trying to delete a non-empty directory,
7462     without using the FORCE argument.
7463     </p>
7464     </blockquote>
7465    
7466    
7467     </blockquote><p>
7468    
7469     </p>
7470     <p>Examples:
7471     </p>
7472     <p>
7473     </p>
7474     <blockquote class="text">
7475     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7476     </p>
7477     <p>S: "OK"
7478     </p>
7479     </blockquote><p>
7480    
7481     </p>
7482     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7483     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7484     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7485     Getting amount of instrument directories</h3>
7486    
7487     <p>The front-end can retrieve the current amount of
7488     directories in a specific directory by sending the following command:
7489     </p>
7490     <p>
7491     </p>
7492     <blockquote class="text">
7493     <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7494     </p>
7495     </blockquote><p>
7496    
7497     </p>
7498     <p>Where &lt;dir&gt; should be replaced by the absolute path
7499     name of the directory. If RECURSIVE is specified, the number of
7500     all directories, including those located in subdirectories of the
7501     specified directory, will be returned.
7502     </p>
7503     <p>Possible Answers:
7504     </p>
7505     <p>
7506     </p>
7507     <blockquote class="text">
7508     <p>The current number of instrument directories
7509     in the specified directory.
7510     </p>
7511     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7512     </p>
7513     <blockquote class="text">
7514     <p>if the given directory does not exist.
7515     </p>
7516     </blockquote>
7517    
7518    
7519     </blockquote><p>
7520    
7521     </p>
7522     <p>Example:
7523     </p>
7524     <p>
7525     </p>
7526     <blockquote class="text">
7527     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7528     </p>
7529     <p>S: "2"
7530     </p>
7531     </blockquote><p>
7532    
7533     </p>
7534     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7535     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7536     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7537     Listing all directories in specific directory</h3>
7538    
7539     <p>The front-end can retrieve the current list of directories
7540     in specific directory by sending the following command:
7541     </p>
7542     <p>
7543     </p>
7544     <blockquote class="text">
7545     <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7546     </p>
7547     </blockquote><p>
7548    
7549     </p>
7550     <p>Where &lt;dir&gt; should be replaced by the absolute path
7551     name of the directory. If RECURSIVE is specified, the absolute path names
7552     of all directories, including those located in subdirectories of the
7553     specified directory, will be returned.
7554     </p>
7555     <p>Possible Answers:
7556     </p>
7557     <p>
7558     </p>
7559     <blockquote class="text">
7560     <p>A comma separated list of all instrument directories
7561     (encapsulated into apostrophes) in the specified directory.
7562     </p>
7563     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7564     </p>
7565     <blockquote class="text">
7566     <p>if the given directory does not exist.
7567     </p>
7568     </blockquote>
7569    
7570    
7571     </blockquote><p>
7572    
7573     </p>
7574     <p>Example:
7575     </p>
7576     <p>
7577     </p>
7578     <blockquote class="text">
7579     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7580     </p>
7581     <p>S: "'Piano Collection','Percussion Collection'"
7582     </p>
7583     </blockquote><p>
7584    
7585     </p>
7586     <p>
7587     </p>
7588     <blockquote class="text">
7589     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7590     </p>
7591     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7592     </p>
7593     </blockquote><p>
7594    
7595     </p>
7596     <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7597     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7598     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7599     Getting instrument directory information</h3>
7600    
7601     <p>The front-end can ask for the current settings of an
7602     instrument directory by sending the following command:
7603     </p>
7604     <p>
7605     </p>
7606     <blockquote class="text">
7607     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7608     </p>
7609     </blockquote><p>
7610    
7611     </p>
7612     <p>Where &lt;dir&gt; should be replaced by the absolute path
7613     name of the directory the front-end is interested in.
7614     </p>
7615     <p>Possible Answers:
7616     </p>
7617     <p>
7618     </p>
7619     <blockquote class="text">
7620     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7621     Each answer line begins with the settings category name
7622     followed by a colon and then a space character &lt;SP&gt; and finally
7623     the info character string to that setting category. At the
7624     moment the following categories are defined:
7625     </p>
7626     <p>
7627     </p>
7628     <blockquote class="text">
7629     <p>DESCRIPTION -
7630     </p>
7631     <blockquote class="text">
7632     <p>A brief description of the directory content.
7633     Note that the character string may contain
7634     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7635     </p>
7636     </blockquote>
7637    
7638    
7639     <p>CREATED -
7640     </p>
7641     <blockquote class="text">
7642     <p>The creation date and time of the directory,
7643     represented in "YYYY-MM-DD HH:MM:SS" format
7644     </p>
7645     </blockquote>
7646    
7647    
7648     <p>MODIFIED -
7649     </p>
7650     <blockquote class="text">
7651     <p>The date and time of the last modification of the
7652     directory, represented in "YYYY-MM-DD HH:MM:SS" format
7653     </p>
7654     </blockquote>
7655    
7656    
7657     </blockquote>
7658    
7659    
7660     </blockquote><p>
7661    
7662     </p>
7663     <p>The mentioned fields above don't have to be in particular order.
7664     </p>
7665     <p>Example:
7666     </p>
7667     <p>
7668     </p>
7669     <blockquote class="text">
7670     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7671     </p>
7672     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7673     </p>
7674     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7675     </p>
7676     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7677     </p>
7678     <p>&nbsp;&nbsp;&nbsp;"."
7679     </p>
7680     </blockquote><p>
7681    
7682     </p>
7683     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7684     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7685     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7686     Renaming an instrument directory</h3>
7687    
7688     <p>The front-end can alter the name of a specific
7689     instrument directory by sending the following command:
7690     </p>
7691     <p>
7692     </p>
7693     <blockquote class="text">
7694     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7695     </p>
7696     </blockquote><p>
7697    
7698     </p>
7699     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7700     &lt;name&gt; is the new name for that directory.
7701     </p>
7702     <p>Possible Answers:
7703     </p>
7704     <p>
7705     </p>
7706     <blockquote class="text">
7707     <p>"OK" -
7708     </p>
7709     <blockquote class="text">
7710     <p>on success
7711     </p>
7712     </blockquote>
7713    
7714    
7715     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7716     </p>
7717     <blockquote class="text">
7718     <p>in case the given directory does not exists,
7719     or if a directory with name equal to the new
7720     name already exists.
7721     </p>
7722     </blockquote>
7723    
7724    
7725     </blockquote><p>
7726    
7727     </p>
7728     <p>Example:
7729     </p>
7730     <p>
7731     </p>
7732     <blockquote class="text">
7733     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7734     </p>
7735     <p>S: "OK"
7736     </p>
7737     </blockquote><p>
7738    
7739     </p>
7740     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7741     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7742     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7743     Moving an instrument directory</h3>
7744    
7745     <p>The front-end can move a specific
7746     instrument directory by sending the following command:
7747     </p>
7748     <p>
7749     </p>
7750     <blockquote class="text">
7751     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7752     </p>
7753     </blockquote><p>
7754    
7755     </p>
7756     <p>Where &lt;dir&gt; is the absolute path name of the directory
7757     to move and &lt;dst&gt; is the location where the directory will
7758     be moved to.
7759     </p>
7760     <p>Possible Answers:
7761     </p>
7762     <p>
7763     </p>
7764     <blockquote class="text">
7765     <p>"OK" -
7766     </p>
7767     <blockquote class="text">
7768     <p>on success
7769     </p>
7770     </blockquote>
7771    
7772    
7773     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7774     </p>
7775     <blockquote class="text">
7776     <p>in case a given directory does not exists,
7777     or if a directory with name equal to the name
7778     of the specified directory already exists in
7779     the destination directory. Error is also thrown
7780     when trying to move a directory to a subdirectory
7781     of itself.
7782     </p>
7783     </blockquote>
7784    
7785    
7786     </blockquote><p>
7787    
7788     </p>
7789     <p>Example:
7790     </p>
7791     <p>
7792     </p>
7793     <blockquote class="text">
7794     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7795     </p>
7796     <p>S: "OK"
7797     </p>
7798     </blockquote><p>
7799    
7800     </p>
7801     <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7802     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7803     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7804     Copying instrument directories</h3>
7805    
7806     <p>The front-end can copy a specific
7807     instrument directory by sending the following command:
7808     </p>
7809     <p>
7810     </p>
7811     <blockquote class="text">
7812     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7813     </p>
7814     </blockquote><p>
7815    
7816     </p>
7817     <p>Where &lt;dir&gt; is the absolute path name of the directory
7818     to copy and &lt;dst&gt; is the location where the directory will
7819     be copied to.
7820     </p>
7821     <p>Possible Answers:
7822     </p>
7823     <p>
7824     </p>
7825     <blockquote class="text">
7826     <p>"OK" -
7827     </p>
7828     <blockquote class="text">
7829     <p>on success
7830     </p>
7831     </blockquote>
7832    
7833    
7834     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7835     </p>
7836     <blockquote class="text">
7837     <p>in case a given directory does not exists,
7838     or if a directory with name equal to the name
7839     of the specified directory already exists in
7840     the destination directory. Error is also thrown
7841     when trying to copy a directory to a subdirectory
7842     of itself.
7843     </p>
7844     </blockquote>
7845    
7846    
7847     </blockquote><p>
7848    
7849     </p>
7850     <p>Example:
7851     </p>
7852     <p>
7853     </p>
7854     <blockquote class="text">
7855     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7856     </p>
7857     <p>S: "OK"
7858     </p>
7859     </blockquote><p>
7860    
7861     </p>
7862     <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7863     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7864     <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7865     Changing the description of directory</h3>
7866    
7867     <p>The front-end can alter the description of a specific
7868     instrument directory by sending the following command:
7869     </p>
7870     <p>
7871     </p>
7872     <blockquote class="text">
7873     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7874     </p>
7875     </blockquote><p>
7876    
7877     </p>
7878     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7879     &lt;desc&gt; is the new description for the directory
7880     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7881     "<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>").
7882     </p>
7883     <p>Possible Answers:
7884     </p>
7885     <p>
7886     </p>
7887     <blockquote class="text">
7888     <p>"OK" -
7889     </p>
7890     <blockquote class="text">
7891     <p>on success
7892     </p>
7893     </blockquote>
7894    
7895    
7896     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7897     </p>
7898     <blockquote class="text">
7899     <p>in case the given directory does not exists.
7900     </p>
7901     </blockquote>
7902    
7903    
7904     </blockquote><p>
7905    
7906     </p>
7907     <p>Example:
7908     </p>
7909     <p>
7910     </p>
7911     <blockquote class="text">
7912     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7913     </p>
7914     <p>S: "OK"
7915     </p>
7916     </blockquote><p>
7917    
7918     </p>
7919     <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7920     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7921     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7922     Finding directories</h3>
7923    
7924     <p>The front-end can search for directories
7925     in specific directory by sending the following command:
7926     </p>
7927     <p>
7928     </p>
7929     <blockquote class="text">
7930     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7931     </p>
7932     </blockquote><p>
7933    
7934     </p>
7935     <p>Where &lt;dir&gt; should be replaced by the absolute path
7936     name of the directory to search in. If NON_RECURSIVE is specified, the
7937     directories located in subdirectories of the specified directory will not
7938     be searched. &lt;criteria-list&gt; is a list of search criterias
7939     in form of "key1=val1 key2=val2 ...". The following criterias are
7940     allowed:
7941     </p>
7942     <p>
7943    
7944     <p>NAME='&lt;search-string&gt;'
7945     </p>
7946     <blockquote class="text">
7947     <p>Restricts the search to directories, which names
7948     satisfy the supplied search string (encapsulated into apostrophes,
7949     supporting escape sequences as described in chapter
7950     "<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>").
7951     </p>
7952     </blockquote><p>
7953    
7954     </p>
7955    
7956    
7957     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7958     </p>
7959     <blockquote class="text">
7960     <p>Restricts the search to directories, which creation
7961     date satisfies the specified period, where &lt;date-after&gt;
7962     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7963     If &lt;date-after&gt; is omitted the search is restricted to
7964     directories created before &lt;date-before&gt;. If
7965     &lt;date-before&gt; is omitted, the search is restricted
7966     to directories created after &lt;date-after&gt;.
7967     </p>
7968     </blockquote><p>
7969    
7970     </p>
7971    
7972    
7973     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7974     </p>
7975     <blockquote class="text">
7976     <p>Restricts the search to directories, which
7977     date of last modification satisfies the specified period, where
7978     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7979     format. If &lt;date-after&gt; is omitted the search is restricted to
7980     directories, which are last modified before &lt;date-before&gt;. If
7981     &lt;date-before&gt; is omitted, the search is restricted to directories,
7982     which are last modified after &lt;date-after&gt;.
7983     </p>
7984     </blockquote><p>
7985    
7986     </p>
7987    
7988    
7989     <p>DESCRIPTION='&lt;search-string&gt;'
7990     </p>
7991     <blockquote class="text">
7992     <p>Restricts the search to directories with description
7993     that satisfies the supplied search string
7994     (encapsulated into apostrophes, supporting escape
7995     sequences as described in chapter
7996     "<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>").
7997     </p>
7998     </blockquote><p>
7999    
8000     </p>
8001    
8002    
8003     <p>Where &lt;search-string&gt; is either a regular expression, or a
8004     word list separated with spaces for OR search and with '+' for AND search.
8005     </p>
8006     <p>Possible Answers:
8007     </p>
8008     <p>
8009     </p>
8010     <blockquote class="text">
8011     <p>A comma separated list with the absolute path names (encapsulated into
8012     apostrophes) of all directories in the specified directory that satisfy
8013     the supplied search criterias.
8014     </p>
8015     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8016     </p>
8017     <blockquote class="text">
8018     <p>if the given directory does not exist.
8019     </p>
8020     </blockquote>
8021    
8022    
8023     </blockquote><p>
8024    
8025     </p>
8026     <p>Example:
8027     </p>
8028     <p>
8029     </p>
8030     <blockquote class="text">
8031     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8032     </p>
8033     <p>S: "'/Piano Collection'"
8034     </p>
8035     </blockquote><p>
8036    
8037     </p>
8038     <p>
8039     </p>
8040     <blockquote class="text">
8041     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8042     </p>
8043     <p>S: "'/Piano Collection','/Percussions'"
8044     </p>
8045     </blockquote><p>
8046    
8047     </p>
8048     <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8049     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8050     <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8051     Adding instruments to the instruments database</h3>
8052    
8053     <p>The front-end can add one or more instruments
8054     to the instruments database by sending the following command:
8055     </p>
8056     <p>
8057     </p>
8058     <blockquote class="text">
8059     <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8060     </p>
8061     </blockquote><p>
8062    
8063     </p>
8064     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8065     (encapsulated into apostrophes) in the instruments database in which
8066     only the new instruments (that are not already in the database) will
8067     be added, &lt;file_path&gt; is the absolute path name of a file or
8068     directory in the file system (encapsulated into apostrophes). In case
8069     an instrument file is supplied, only the instruments in the specified
8070     file will be added to the instruments database. If the optional
8071     &lt;instr_index&gt; (the index of the instrument within the given file)
8072     is supplied too, then only the specified instrument will be added.
8073     In case a directory is supplied, the instruments in that directory
8074     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8075     when a directory is provided as &lt;file_path&gt; and specifies how the
8076     scanning will be done and has exactly the following possibilities:
8077     </p>
8078     <p>
8079     </p>
8080     <blockquote class="text">
8081     <p>"RECURSIVE" -
8082     </p>
8083     <blockquote class="text">
8084     <p>All instruments will be processed, including those
8085     in the subdirectories, and the respective subdirectory
8086     tree structure will be recreated in the instruments
8087     database
8088     </p>
8089     </blockquote>
8090    
8091    
8092     <p>"NON_RECURSIVE" -
8093     </p>
8094     <blockquote class="text">
8095     <p>Only the instruments in the specified directory
8096     will be added, the instruments in the subdirectories
8097     will not be processed.
8098     </p>
8099     </blockquote>
8100    
8101    
8102     <p>"FLAT" -
8103     </p>
8104     <blockquote class="text">
8105     <p>All instruments will be processed, including those
8106     in the subdirectories, but the respective subdirectory
8107     structure will not be recreated in the instruments
8108     database. All instruments will be added directly in
8109     the specified database directory.
8110     </p>
8111     </blockquote>
8112    
8113    
8114     </blockquote><p>
8115    
8116     </p>
8117     <p>The difference between regular and NON_MODAL versions of the command
8118     is that the regular command returns when the scanning is finished
8119     while NON_MODAL version returns immediately and a background process is launched.
8120     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>
8121     command can be used to monitor the scanning progress.
8122     </p>
8123     <p>Possible Answers:
8124     </p>
8125     <p>
8126     </p>
8127     <blockquote class="text">
8128     <p>"OK" -
8129     </p>
8130     <blockquote class="text">
8131     <p>on success when NON_MODAL is not supplied
8132     </p>
8133     </blockquote>
8134    
8135    
8136     <p>"OK[&lt;job-id&gt;]" -
8137     </p>
8138     <blockquote class="text">
8139     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8140     is a numerical ID used to obtain status information about the job progress.
8141     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>
8142    
8143     </p>
8144     </blockquote>
8145    
8146    
8147     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8148     </p>
8149     <blockquote class="text">
8150     <p>if an invalid path is specified.
8151     </p>
8152     </blockquote>
8153    
8154    
8155     </blockquote><p>
8156    
8157     </p>
8158     <p>Examples:
8159     </p>
8160     <p>
8161     </p>
8162     <blockquote class="text">
8163     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8164     </p>
8165     <p>S: "OK"
8166     </p>
8167     </blockquote><p>
8168    
8169     </p>
8170     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8171     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8172     <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8173     Removing an instrument</h3>
8174    
8175     <p>The front-end can remove a particular instrument
8176     from the instruments database by sending the following command:
8177     </p>
8178     <p>
8179     </p>
8180     <blockquote class="text">
8181     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8182     </p>
8183     </blockquote><p>
8184    
8185     </p>
8186     <p>Where &lt;instr_path&gt; is the absolute path name
8187     (in the instruments database) of the instrument to remove.
8188     </p>
8189     <p>Possible Answers:
8190     </p>
8191     <p>
8192     </p>
8193     <blockquote class="text">
8194     <p>"OK" -
8195     </p>
8196     <blockquote class="text">
8197     <p>if the instrument is removed successfully
8198     </p>
8199     </blockquote>
8200    
8201    
8202     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8203     </p>
8204     <blockquote class="text">
8205     <p>if the given path does not exist or
8206     is a directory.
8207     </p>
8208     </blockquote>
8209    
8210    
8211     </blockquote><p>
8212    
8213     </p>
8214     <p>Examples:
8215     </p>
8216     <p>
8217     </p>
8218     <blockquote class="text">
8219     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8220     </p>
8221     <p>S: "OK"
8222     </p>
8223     </blockquote><p>
8224    
8225     </p>
8226     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8227     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8228     <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8229     Getting amount of instruments</h3>
8230    
8231     <p>The front-end can retrieve the current amount of
8232     instruments in a specific directory by sending the following command:
8233     </p>
8234     <p>
8235     </p>
8236     <blockquote class="text">
8237     <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8238     </p>
8239     </blockquote><p>
8240    
8241     </p>
8242     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8243     of the directory. If RECURSIVE is specified, the number of all
8244     instruments, including those located in subdirectories of the
8245     specified directory, will be returned.
8246     </p>
8247     <p>Possible Answers:
8248     </p>
8249     <p>
8250     </p>
8251     <blockquote class="text">
8252     <p>The current number of instruments
8253     in the specified directory.
8254     </p>
8255     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8256     </p>
8257     <blockquote class="text">
8258     <p>if the given directory does not exist.
8259     </p>
8260     </blockquote>
8261    
8262    
8263     </blockquote><p>
8264    
8265     </p>
8266     <p>Example:
8267     </p>
8268     <p>
8269     </p>
8270     <blockquote class="text">
8271     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8272     </p>
8273     <p>S: "2"
8274     </p>
8275     </blockquote><p>
8276    
8277     </p>
8278     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8279     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8280     <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8281     Listing all instruments in specific directory</h3>
8282    
8283     <p>The front-end can retrieve the current list of instruments
8284     in specific directory by sending the following command:
8285     </p>
8286     <p>
8287     </p>
8288     <blockquote class="text">
8289     <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8290     </p>
8291     </blockquote><p>
8292    
8293     </p>
8294     <p>Where &lt;dir&gt; should be replaced by the absolute path
8295     name of the directory. If RECURSIVE is specified, the absolute path
8296     names of all instruments, including those located in subdirectories
8297     of the specified directory, will be returned.
8298     </p>
8299     <p>Possible Answers:
8300     </p>
8301     <p>
8302     </p>
8303     <blockquote class="text">
8304     <p>A comma separated list of all instruments
8305     (encapsulated into apostrophes) in the specified directory.
8306     </p>
8307     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8308     </p>
8309     <blockquote class="text">
8310     <p>if the given directory does not exist.
8311     </p>
8312     </blockquote>
8313    
8314    
8315     </blockquote><p>
8316    
8317     </p>
8318     <p>Example:
8319     </p>
8320     <p>
8321     </p>
8322     <blockquote class="text">
8323     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8324     </p>
8325     <p>S: "'Bosendorfer 290','Steinway D'"
8326     </p>
8327     </blockquote><p>
8328    
8329     </p>
8330     <p>
8331     </p>
8332     <blockquote class="text">
8333     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8334     </p>
8335     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8336     </p>
8337     </blockquote><p>
8338    
8339     </p>
8340     <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8341     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8342     <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8343     Getting instrument information</h3>
8344    
8345     <p>The front-end can ask for the current settings of an
8346     instrument by sending the following command:
8347     </p>
8348     <p>
8349     </p>
8350     <blockquote class="text">
8351     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8352     </p>
8353     </blockquote><p>
8354    
8355     </p>
8356     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8357     name of the instrument the front-end is interested in.
8358     </p>
8359     <p>Possible Answers:
8360     </p>
8361     <p>
8362     </p>
8363     <blockquote class="text">
8364     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8365     Each answer line begins with the settings category name
8366     followed by a colon and then a space character &lt;SP&gt; and finally
8367     the info character string to that setting category. At the
8368     moment the following categories are defined:
8369     </p>
8370     <p>
8371     </p>
8372     <blockquote class="text">
8373     <p>INSTRUMENT_FILE -
8374     </p>
8375     <blockquote class="text">
8376     <p>File name of the instrument.
8377     Note that the character string may contain
8378     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8379     </p>
8380     </blockquote>
8381    
8382    
8383     <p>INSTRUMENT_NR -
8384     </p>
8385     <blockquote class="text">
8386     <p>Index of the instrument within the file.
8387     </p>
8388     </blockquote>
8389    
8390    
8391     <p>FORMAT_FAMILY -
8392     </p>
8393     <blockquote class="text">
8394     <p>The format family of the instrument.
8395     </p>
8396     </blockquote>
8397    
8398    
8399     <p>FORMAT_VERSION -
8400     </p>
8401     <blockquote class="text">
8402     <p>The format version of the instrument.
8403     </p>
8404     </blockquote>
8405    
8406    
8407     <p>SIZE -
8408     </p>
8409     <blockquote class="text">
8410     <p>The size of the instrument in bytes.
8411     </p>
8412     </blockquote>
8413    
8414    
8415     <p>CREATED -
8416     </p>
8417     <blockquote class="text">
8418     <p>The date and time when the instrument is added
8419     in the instruments database, represented in
8420     "YYYY-MM-DD HH:MM:SS" format
8421     </p>
8422     </blockquote>
8423    
8424    
8425     <p>MODIFIED -
8426     </p>
8427     <blockquote class="text">
8428     <p>The date and time of the last modification of the
8429     instrument's database settings, represented in
8430     "YYYY-MM-DD HH:MM:SS" format
8431     </p>
8432     </blockquote>
8433    
8434    
8435     <p>DESCRIPTION -
8436     </p>
8437     <blockquote class="text">
8438     <p>A brief description of the instrument.
8439     Note that the character string may contain
8440     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8441     </p>
8442     </blockquote>
8443    
8444    
8445     <p>IS_DRUM -
8446     </p>
8447     <blockquote class="text">
8448     <p>either true or false, determines whether the
8449     instrument is a drumkit or a chromatic instrument
8450     </p>
8451     </blockquote>
8452    
8453    
8454     <p>PRODUCT -
8455     </p>
8456     <blockquote class="text">
8457     <p>The product title of the instrument.
8458     Note that the character string may contain
8459     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8460     </p>
8461     </blockquote>
8462    
8463    
8464     <p>ARTISTS -
8465     </p>
8466     <blockquote class="text">
8467     <p>Lists the artist names.
8468     Note that the character string may contain
8469     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8470     </p>
8471     </blockquote>
8472    
8473    
8474     <p>KEYWORDS -
8475     </p>
8476     <blockquote class="text">
8477     <p>Provides a list of keywords that refer to the instrument.
8478     Keywords are separated with semicolon and blank.
8479     Note that the character string may contain
8480     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8481     </p>
8482     </blockquote>
8483    
8484    
8485     </blockquote>
8486    
8487    
8488     </blockquote><p>
8489    
8490     </p>
8491     <p>The mentioned fields above don't have to be in particular order.
8492     </p>
8493     <p>Example:
8494     </p>
8495     <p>
8496     </p>
8497     <blockquote class="text">
8498     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8499     </p>
8500     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8501     </p>
8502     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8503     </p>
8504     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8505     </p>
8506     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8507     </p>
8508     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8509     </p>
8510     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8511     </p>
8512     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8513     </p>
8514     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8515     </p>
8516     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8517     </p>
8518     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8519     </p>
8520     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8521     </p>
8522     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8523     </p>
8524     <p>&nbsp;&nbsp;&nbsp;"."
8525     </p>
8526     </blockquote><p>
8527    
8528     </p>
8529     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8530     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8531     <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8532     Renaming an instrument</h3>
8533    
8534     <p>The front-end can alter the name of a specific
8535     instrument by sending the following command:
8536     </p>
8537     <p>
8538     </p>
8539     <blockquote class="text">
8540     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8541     </p>
8542     </blockquote><p>
8543    
8544     </p>
8545     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8546     &lt;name&gt; is the new name for that instrument.
8547     </p>
8548     <p>Possible Answers:
8549     </p>
8550     <p>
8551     </p>
8552     <blockquote class="text">
8553     <p>"OK" -
8554     </p>
8555     <blockquote class="text">
8556     <p>on success
8557     </p>
8558     </blockquote>
8559    
8560    
8561     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8562     </p>
8563     <blockquote class="text">
8564     <p>in case the given instrument does not exists,
8565     or if an instrument with name equal to the new
8566     name already exists.
8567     </p>
8568     </blockquote>
8569    
8570    
8571     </blockquote><p>
8572    
8573     </p>
8574     <p>Example:
8575     </p>
8576     <p>
8577     </p>
8578     <blockquote class="text">
8579     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8580     </p>
8581     <p>S: "OK"
8582     </p>
8583     </blockquote><p>
8584    
8585     </p>
8586     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8587     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8588     <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8589     Moving an instrument</h3>
8590    
8591     <p>The front-end can move a specific instrument to another directory by
8592     sending the following command:
8593     </p>
8594     <p>
8595     </p>
8596     <blockquote class="text">
8597     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8598     </p>
8599     </blockquote><p>
8600    
8601     </p>
8602     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8603     to move and &lt;dst&gt; is the directory where the instrument will
8604     be moved to.
8605     </p>
8606     <p>Possible Answers:
8607     </p>
8608     <p>
8609     </p>
8610     <blockquote class="text">
8611     <p>"OK" -
8612     </p>
8613     <blockquote class="text">
8614     <p>on success
8615     </p>
8616     </blockquote>
8617    
8618    
8619     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8620     </p>
8621     <blockquote class="text">
8622     <p>in case the given instrument does not exists,
8623     or if an instrument with name equal to the name of the
8624     specified instrument already exists in the destination
8625     directory.
8626     </p>
8627     </blockquote>
8628    
8629    
8630     </blockquote><p>
8631    
8632     </p>
8633     <p>Example:
8634     </p>
8635     <p>
8636     </p>
8637     <blockquote class="text">
8638     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8639     </p>
8640     <p>S: "OK"
8641     </p>
8642     </blockquote><p>
8643    
8644     </p>
8645     <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8646     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8647     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8648     Copying instruments</h3>
8649    
8650     <p>The front-end can copy a specific instrument to another directory by
8651     sending the following command:
8652     </p>
8653     <p>
8654     </p>
8655     <blockquote class="text">
8656     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8657     </p>
8658     </blockquote><p>
8659    
8660     </p>
8661     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8662     to copy and &lt;dst&gt; is the directory where the instrument will
8663     be copied to.
8664     </p>
8665     <p>Possible Answers:
8666     </p>
8667     <p>
8668     </p>
8669     <blockquote class="text">
8670     <p>"OK" -
8671     </p>
8672     <blockquote class="text">
8673     <p>on success
8674     </p>
8675     </blockquote>
8676    
8677    
8678     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8679     </p>
8680     <blockquote class="text">
8681     <p>in case the given instrument does not exists,
8682     or if an instrument with name equal to the name of the
8683     specified instrument already exists in the destination
8684     directory.
8685     </p>
8686     </blockquote>
8687    
8688    
8689     </blockquote><p>
8690    
8691     </p>
8692     <p>Example:
8693     </p>
8694     <p>
8695     </p>
8696     <blockquote class="text">
8697     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8698     </p>
8699     <p>S: "OK"
8700     </p>
8701     </blockquote><p>
8702    
8703     </p>
8704     <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8705     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8706     <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8707     Changing the description of instrument</h3>
8708    
8709     <p>The front-end can alter the description of a specific
8710     instrument by sending the following command:
8711     </p>
8712     <p>
8713     </p>
8714     <blockquote class="text">
8715     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8716     </p>
8717     </blockquote><p>
8718    
8719     </p>
8720     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8721     &lt;desc&gt; is the new description for the instrument
8722     (encapsulated into apostrophes, supporting escape sequences as described in chapter
8723     "<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>").
8724     </p>
8725     <p>Possible Answers:
8726     </p>
8727     <p>
8728     </p>
8729     <blockquote class="text">
8730     <p>"OK" -
8731     </p>
8732     <blockquote class="text">
8733     <p>on success
8734     </p>
8735     </blockquote>
8736    
8737    
8738     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8739     </p>
8740     <blockquote class="text">
8741     <p>in case the given instrument does not exists.
8742     </p>
8743     </blockquote>
8744    
8745    
8746     </blockquote><p>
8747    
8748     </p>
8749     <p>Example:
8750     </p>
8751     <p>
8752     </p>
8753     <blockquote class="text">
8754     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8755     </p>
8756     <p>S: "OK"
8757     </p>
8758     </blockquote><p>
8759    
8760     </p>
8761     <a name="FIND 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.20"></a><h3>6.8.20.&nbsp;
8764     Finding instruments</h3>
8765    
8766     <p>The front-end can search for instruments
8767     in specific directory by sending the following command:
8768     </p>
8769     <p>
8770     </p>
8771     <blockquote class="text">
8772     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8773     </p>
8774     </blockquote><p>
8775    
8776     </p>
8777     <p>Where &lt;dir&gt; should be replaced by the absolute path
8778     name of the directory to search in. If NON_RECURSIVE is specified, the
8779     directories located in subdirectories of the specified directory will not
8780     be searched. &lt;criteria-list&gt; is a list of search criterias
8781     in form of "key1=val1 key2=val2 ...". The following criterias are
8782     allowed:
8783     </p>
8784     <p>
8785    
8786     <p>NAME='&lt;search-string&gt;'
8787     </p>
8788     <blockquote class="text">
8789     <p>Restricts the search to instruments, which names
8790     satisfy the supplied search string (encapsulated into apostrophes,
8791     supporting escape sequences as described in chapter
8792     "<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>").
8793     </p>
8794     </blockquote><p>
8795    
8796     </p>
8797    
8798    
8799     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8800     </p>
8801     <blockquote class="text">
8802     <p>Restricts the search to instruments, which
8803     size is in the specified range. If &lt;min&gt; is omitted,
8804     the search results are restricted to instruments with size less then
8805     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8806     search is restricted to instruments with size greater then
8807     or equal to &lt;min&gt;.
8808     </p>
8809     </blockquote><p>
8810    
8811     </p>
8812    
8813    
8814     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8815     </p>
8816     <blockquote class="text">
8817     <p>Restricts the search to instruments, which creation
8818     date satisfies the specified period, where &lt;date-after&gt;
8819     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8820     If &lt;date-after&gt; is omitted the search is restricted to
8821     instruments created before &lt;date-before&gt;. If
8822     &lt;date-before&gt; is omitted, the search is restricted
8823     to instruments created after &lt;date-after&gt;.
8824     </p>
8825     </blockquote><p>
8826    
8827     </p>
8828    
8829    
8830     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8831     </p>
8832     <blockquote class="text">
8833     <p>Restricts the search to instruments, which
8834     date of last modification satisfies the specified period, where
8835     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8836     format. If &lt;date-after&gt; is omitted the search is restricted to
8837     instruments, which are last modified before &lt;date-before&gt;. If
8838     &lt;date-before&gt; is omitted, the search is restricted to instruments,
8839     which are last modified after &lt;date-after&gt;.
8840     </p>
8841     </blockquote><p>
8842    
8843     </p>
8844    
8845    
8846     <p>DESCRIPTION='&lt;search-string&gt;'
8847     </p>
8848     <blockquote class="text">
8849     <p>Restricts the search to instruments with description
8850     that satisfies the supplied search string (encapsulated into apostrophes,
8851     supporting escape sequences as described in chapter
8852     "<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>").
8853     </p>
8854     </blockquote><p>
8855    
8856     </p>
8857    
8858    
8859     <p>PRODUCT='&lt;search-string&gt;'
8860     </p>
8861     <blockquote class="text">
8862     <p>Restricts the search to instruments with product info
8863     that satisfies the supplied search string (encapsulated into apostrophes,
8864     supporting escape sequences as described in chapter
8865     "<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>").
8866     </p>
8867     </blockquote><p>
8868    
8869     </p>
8870    
8871    
8872     <p>ARTISTS='&lt;search-string&gt;'
8873     </p>
8874     <blockquote class="text">
8875     <p>Restricts the search to instruments with artists info
8876     that satisfies the supplied search string (encapsulated into apostrophes,
8877     supporting escape sequences as described in chapter
8878     "<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>").
8879     </p>
8880     </blockquote><p>
8881    
8882     </p>
8883    
8884    
8885     <p>KEYWORDS='&lt;search-string&gt;'
8886     </p>
8887     <blockquote class="text">
8888     <p>Restricts the search to instruments with keyword list
8889     that satisfies the supplied search string (encapsulated into apostrophes,
8890     supporting escape sequences as described in chapter
8891     "<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>").
8892     </p>
8893     </blockquote><p>
8894    
8895     </p>
8896    
8897    
8898     <p>IS_DRUM=true | false
8899     </p>
8900     <blockquote class="text">
8901     <p>Either true or false. Restricts the search to
8902     drum kits or chromatic instruments.
8903     </p>
8904     </blockquote><p>
8905    
8906     </p>
8907    
8908    
8909     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8910     </p>
8911     <blockquote class="text">
8912     <p>Restricts the search to instruments of the supplied format families,
8913     where &lt;format-list&gt; is a comma separated list of format families.
8914     </p>
8915     </blockquote><p>
8916    
8917     </p>
8918    
8919    
8920     <p>Where &lt;search-string&gt; is either a regular expression, or a
8921     word list separated with spaces for OR search and with '+' for AND search.
8922     </p>
8923     <p>Possible Answers:
8924     </p>
8925     <p>
8926     </p>
8927     <blockquote class="text">
8928     <p>A comma separated list with the absolute path names (encapsulated into
8929     apostrophes) of all instruments in the specified directory that satisfy
8930     the supplied search criterias.
8931     </p>
8932     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8933     </p>
8934     <blockquote class="text">
8935     <p>if the given directory does not exist.
8936     </p>
8937     </blockquote>
8938    
8939    
8940     </blockquote><p>
8941    
8942     </p>
8943     <p>Example:
8944     </p>
8945     <p>
8946     </p>
8947     <blockquote class="text">
8948     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8949     </p>
8950     <p>S: "'/Piano Collection/Bosendorfer 290'"
8951     </p>
8952     </blockquote><p>
8953    
8954     </p>
8955     <p>
8956     </p>
8957     <blockquote class="text">
8958     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8959     </p>
8960     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8961     </p>
8962     </blockquote><p>
8963    
8964     </p>
8965     <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
8966     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8967     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
8968     Getting job status information</h3>
8969    
8970     <p>The front-end can ask for the current status of a
8971     particular database instruments job by sending the following command:
8972     </p>
8973     <p>
8974     </p>
8975     <blockquote class="text">
8976     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
8977     </p>
8978     </blockquote><p>
8979    
8980     </p>
8981     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
8982     of the job the front-end is interested in.
8983     </p>
8984     <p>Possible Answers:
8985     </p>
8986     <p>
8987     </p>
8988     <blockquote class="text">
8989     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8990     Each answer line begins with the settings category name
8991     followed by a colon and then a space character &lt;SP&gt; and finally
8992     the info character string to that setting category. At the
8993     moment the following categories are defined:
8994     </p>
8995     <p>
8996     </p>
8997     <blockquote class="text">
8998     <p>FILES_TOTAL -
8999     </p>
9000     <blockquote class="text">
9001     <p>The total number of files scheduled for scanning
9002     </p>
9003     </blockquote>
9004    
9005    
9006     <p>FILES_SCANNED -
9007     </p>
9008     <blockquote class="text">
9009     <p>The current number of scanned files
9010     </p>
9011     </blockquote>
9012    
9013    
9014     <p>SCANNING -
9015     </p>
9016     <blockquote class="text">
9017     <p>The absolute path name of the file which is currently
9018     being scanned
9019     </p>
9020     </blockquote>
9021    
9022    
9023     <p>STATUS -
9024     </p>
9025     <blockquote class="text">
9026     <p>An integer value between 0 and 100 indicating the
9027     scanning progress percentage of the file which is
9028     currently being scanned
9029     </p>
9030     </blockquote>
9031    
9032    
9033     </blockquote>
9034    
9035    
9036     </blockquote><p>
9037    
9038     </p>
9039     <p>The mentioned fields above don't have to be in particular order.
9040     </p>
9041     <p>Example:
9042     </p>
9043     <p>
9044     </p>
9045     <blockquote class="text">
9046     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9047     </p>
9048     <p>S: "FILES_TOTAL: 12"
9049     </p>
9050     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9051     </p>
9052     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9053     </p>
9054     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9055     </p>
9056     <p>&nbsp;&nbsp;&nbsp;"."
9057     </p>
9058     </blockquote><p>
9059    
9060     </p>
9061     <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9062     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9063     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9064     Formatting the instruments database</h3>
9065    
9066     <p>The front-end can remove all instruments and directories and re-create
9067     the instruments database structure (e.g., in case of a database corruption)
9068     by sending the following command:
9069     </p>
9070     <p>
9071     </p>
9072     <blockquote class="text">
9073     <p>FORMAT INSTRUMENTS_DB
9074     </p>
9075     </blockquote><p>
9076    
9077     </p>
9078     <p>Possible Answers:
9079     </p>
9080     <p>
9081     </p>
9082     <blockquote class="text">
9083     <p>"OK" -
9084     </p>
9085     <blockquote class="text">
9086     <p>on success
9087     </p>
9088     </blockquote>
9089    
9090    
9091     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9092     </p>
9093     <blockquote class="text">
9094     <p>If the formatting of the instruments database
9095     failed.
9096     </p>
9097     </blockquote>
9098    
9099    
9100     </blockquote><p>
9101    
9102     </p>
9103     <a name="editing_instruments"></a><br /><hr />
9104     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9105     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9106     Editing Instruments</h3>
9107    
9108     <p>The sampler allows to edit instruments while playing with the
9109     sampler by spawning an external (3rd party) instrument editor
9110     application for a given instrument. The 3rd party instrument
9111     editor applications have to place a respective plugin DLL file
9112     into the sampler's plugins directory. The sampler will
9113     automatically try to load all plugin DLLs in that directory on
9114     startup and only on startup!
9115     </p>
9116     <p>At the moment there is only one command for this feature set,
9117     but this will most probably change in future.
9118     </p>
9119     <a name="EDIT INSTRUMENT"></a><br /><hr />
9120     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9121     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9122     Opening an appropriate instrument editor application</h3>
9123    
9124     <p>The front-end can request to open an appropriate instrument
9125     editor application by sending the following command:
9126     </p>
9127     <p>
9128     </p>
9129     <blockquote class="text">
9130     <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9131     </p>
9132     </blockquote><p>
9133    
9134     </p>
9135     <p>Where &lt;sampler-channel&gt; should be replaced by the
9136     number of the sampler channel as given by the
9137     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9138     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9139     command.
9140     </p>
9141     <p>The sampler will try to ask all registered instrument
9142     editors (or to be more specific: their sampler plugins)
9143     whether they are capable to handle the instrument on the
9144     given sampler channel. The sampler will simply use the first
9145     instrument editor application which replied with a positive
9146     answer and spawn that instrument editor application within
9147     the sampler's process and provide that application access
9148     to the instrument's data structures, so both applications
9149     can share and access the same instruments data at the same
9150     time, thus allowing to immediately hear changes with the
9151     sampler made by the instrument editor.
9152     </p>
9153     <p>Note: consequently instrument editors are always spawned
9154     locally on the same machine where the sampler is running
9155     on!
9156     </p>
9157     <p>Possible Answers:
9158     </p>
9159     <p>
9160     </p>
9161     <blockquote class="text">
9162     <p>"OK" -
9163     </p>
9164     <blockquote class="text">
9165     <p>when an appropriate instrument editor was
9166     launched
9167     </p>
9168     </blockquote>
9169    
9170    
9171     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9172     </p>
9173     <blockquote class="text">
9174     <p>when an appropriate instrument editor was
9175     launched, but there are noteworthy issues
9176     </p>
9177     </blockquote>
9178    
9179    
9180     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9181     </p>
9182     <blockquote class="text">
9183     <p>when an appropriate instrument editor
9184     could not be launched
9185     </p>
9186     </blockquote>
9187    
9188    
9189     </blockquote><p>
9190    
9191     </p>
9192     <p>Examples:
9193     </p>
9194     <p>
9195     </p>
9196     <blockquote class="text">
9197     <p>C: "EDIT CHANNEL INSTRUMENT 0"
9198     </p>
9199     <p>S: "OK"
9200     </p>
9201     </blockquote><p>
9202    
9203     </p>
9204     <a name="file_management"></a><br /><hr />
9205     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9206     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9207     Managing Files</h3>
9208    
9209     <p>You can query detailed informations about files located
9210     at the same system where the sampler instance is running on.
9211     Using this command set allows to retrieve file informations
9212     even remotely from another machine.
9213     </p>
9214     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9215     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9216     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9217     Retrieving amount of instruments of a file</h3>
9218    
9219     <p>The front-end can retrieve the amount of instruments
9220     within a given instrument file by sending the
9221     following command:
9222     </p>
9223     <p>
9224     </p>
9225     <blockquote class="text">
9226     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9227     </p>
9228     </blockquote><p>
9229    
9230     </p>
9231     <p>Where &lt;filename&gt; is the name of the instrument
9232     file (encapsulated into apostrophes, supporting escape
9233     sequences as described in chapter
9234     "<a class='info' href='#character_set'>Character Set and Escape
9235     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9236     </p>
9237     <p>The sampler will try to ask all sampler engines,
9238     whether they support the given file and ask the first
9239     engine with a positive answer for the amount of
9240     instruments.
9241     </p>
9242     <p>Possible Answers:
9243     </p>
9244     <p>
9245     </p>
9246     <blockquote class="text">
9247     <p>On success, the sampler will answer by
9248     returning the amount of instruments.
9249    
9250     </p>
9251     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9252     </p>
9253     <blockquote class="text">
9254     <p>if the file could not be handled
9255     </p>
9256     </blockquote>
9257    
9258    
9259     </blockquote><p>
9260    
9261     </p>
9262     <p>Examples:
9263     </p>
9264     <p>
9265     </p>
9266     <blockquote class="text">
9267     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9268     </p>
9269     <p>S: "10"
9270     </p>
9271     </blockquote><p>
9272    
9273     </p>
9274     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9275     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9276     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9277     Retrieving all instruments of a file</h3>
9278    
9279     <p>The front-end can retrieve a list of all instruments
9280     within a given instrument file by sending the
9281     following command:
9282     </p>
9283     <p>
9284     </p>
9285     <blockquote class="text">
9286     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9287     </p>
9288     </blockquote><p>
9289    
9290     </p>
9291     <p>Where &lt;filename&gt; is the name of the instrument
9292     file (encapsulated into apostrophes, supporting escape
9293     sequences as described in chapter
9294     "<a class='info' href='#character_set'>Character Set and Escape
9295     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9296     </p>
9297     <p>The sampler will try to ask all sampler engines,
9298     whether they support the given file and ask the first
9299     engine with a positive answer for a list of IDs for the
9300     instruments in the given file.
9301     </p>
9302     <p>Possible Answers:
9303     </p>
9304     <p>
9305     </p>
9306     <blockquote class="text">
9307     <p>On success, the sampler will answer by
9308     returning a comma separated list of
9309     instrument IDs.
9310    
9311     </p>
9312     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9313     </p>
9314     <blockquote class="text">
9315     <p>if the file could not be handled
9316     </p>
9317     </blockquote>
9318    
9319    
9320     </blockquote><p>
9321    
9322     </p>
9323     <p>Examples:
9324     </p>
9325     <p>
9326     </p>
9327     <blockquote class="text">
9328     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9329     </p>
9330     <p>S: "0,1,2,3,4,5,6,7,8,9"
9331     </p>
9332     </blockquote><p>
9333    
9334     </p>
9335     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9336     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9337     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9338     Retrieving informations about one instrument in a file</h3>
9339    
9340     <p>The front-end can retrieve detailed informations
9341     about a specific instrument within a given instrument
9342     file by sending the following command:
9343     </p>
9344     <p>
9345     </p>
9346     <blockquote class="text">
9347     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9348     &lt;instr-id&gt;
9349     </p>
9350     </blockquote><p>
9351    
9352     </p>
9353     <p>Where &lt;filename&gt; is the name of the instrument
9354     file (encapsulated into apostrophes, supporting escape
9355     sequences as described in chapter
9356     "<a class='info' href='#character_set'>Character Set and Escape
9357     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9358     instrument ID as returned by the
9359     <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.
9360     </p>
9361     <p>The sampler will try to ask all sampler engines,
9362     whether they support the given file and ask the first
9363     engine with a positive answer for informations about the
9364     specific instrument in the given file.
9365     </p>
9366     <p>Possible Answers:
9367     </p>
9368     <p>
9369     </p>
9370     <blockquote class="text">
9371     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9372     Each answer line begins with the settings category name
9373     followed by a colon and then a space character &lt;SP&gt; and finally
9374     the info character string to that setting category. At the
9375     moment the following categories are defined:
9376     </p>
9377     <p>
9378     </p>
9379     <blockquote class="text">
9380     <p>NAME -
9381     </p>
9382     <blockquote class="text">
9383     <p>name of the instrument as
9384     stored in the instrument file
9385     </p>
9386     </blockquote>
9387    
9388    
9389     <p>FORMAT_FAMILY -
9390     </p>
9391     <blockquote class="text">
9392     <p>name of the sampler format
9393     of the given instrument
9394     </p>
9395     </blockquote>
9396    
9397    
9398     <p>FORMAT_VERSION -
9399     </p>
9400     <blockquote class="text">
9401     <p>version of the sampler format
9402     the instrumen is stored as
9403     </p>
9404     </blockquote>
9405    
9406    
9407     <p>PRODUCT -
9408     </p>
9409     <blockquote class="text">
9410     <p>official product name of the
9411     instrument as stored in the file
9412    
9413     </p>
9414     </blockquote>
9415    
9416    
9417     <p>ARTISTS -
9418     </p>
9419     <blockquote class="text">
9420     <p>artists / sample library
9421     vendor of the instrument
9422     </p>
9423     </blockquote>
9424    
9425    
9426     </blockquote>
9427    
9428    
9429     </blockquote><p>
9430    
9431     </p>
9432     <p>The mentioned fields above don't have to be in particular order.
9433     </p>
9434     <p>Example:
9435     </p>
9436     <p>
9437     </p>
9438     <blockquote class="text">
9439     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
9440     </p>
9441     <p>S: "NAME: Lunatic Loops"
9442     </p>
9443     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9444     </p>
9445     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
9446     </p>
9447     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
9448     </p>
9449     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
9450     </p>
9451     <p>&nbsp;&nbsp;&nbsp;"."
9452     </p>
9453     </blockquote><p>
9454    
9455     </p>
9456     <a name="command_syntax"></a><br /><hr />
9457     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9458     <a name="rfc.section.7"></a><h3>7.&nbsp;
9459     Command Syntax</h3>
9460    
9461     <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>
9462     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>)
9463     where applicable.
9464    
9465     </p>
9466     <p>input =
9467     </p>
9468     <blockquote class="text">
9469     <p>line LF
9470    
9471     </p>
9472     <p>/ line CR LF
9473    
9474     </p>
9475     </blockquote><p>
9476    
9477     </p>
9478     <p>line =
9479     </p>
9480     <blockquote class="text">
9481     <p>/* epsilon (empty line ignored) */
9482    
9483     </p>
9484     <p>/ comment
9485    
9486     </p>
9487     <p>/ command
9488    
9489     </p>
9490     <p>/ error
9491    
9492     </p>
9493     </blockquote><p>
9494    
9495     </p>
9496     <p>comment =
9497     </p>
9498     <blockquote class="text">
9499     <p>'#'
9500    
9501     </p>
9502     <p>/ comment '#'
9503    
9504     </p>
9505     <p>/ comment SP
9506    
9507     </p>
9508     <p>/ comment number
9509    
9510     </p>
9511     <p>/ comment string
9512    
9513     </p>
9514     </blockquote><p>
9515    
9516     </p>
9517     <p>command =
9518     </p>
9519     <blockquote class="text">
9520     <p>ADD SP add_instruction
9521    
9522     </p>
9523     <p>/ MAP SP map_instruction
9524    
9525     </p>
9526     <p>/ UNMAP SP unmap_instruction
9527    
9528     </p>
9529     <p>/ GET SP get_instruction
9530    
9531     </p>
9532     <p>/ CREATE SP create_instruction
9533    
9534     </p>
9535     <p>/ DESTROY SP destroy_instruction
9536    
9537     </p>
9538     <p>/ LIST SP list_instruction
9539    
9540     </p>
9541     <p>/ LOAD SP load_instruction
9542    
9543     </p>
9544     <p>/ REMOVE SP remove_instruction
9545    
9546     </p>
9547     <p>/ SET SP set_instruction
9548    
9549     </p>
9550     <p>/ SUBSCRIBE SP subscribe_event
9551    
9552     </p>
9553     <p>/ UNSUBSCRIBE SP unsubscribe_event
9554    
9555     </p>
9556     <p>/ RESET SP reset_instruction
9557    
9558     </p>
9559     <p>/ CLEAR SP clear_instruction
9560    
9561     </p>
9562     <p>/ FIND SP find_instruction
9563    
9564     </p>
9565     <p>/ MOVE SP move_instruction
9566    
9567     </p>
9568     <p>/ COPY SP copy_instruction
9569    
9570     </p>
9571     <p>/ EDIT SP edit_instruction
9572    
9573     </p>
9574     <p>/ FORMAT SP format_instruction
9575    
9576     </p>
9577     <p>/ RESET
9578    
9579     </p>
9580     <p>/ QUIT
9581    
9582     </p>
9583     </blockquote><p>
9584    
9585     </p>
9586     <p>add_instruction =
9587     </p>
9588     <blockquote class="text">
9589     <p>CHANNEL
9590    
9591     </p>
9592     <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9593    
9594     </p>
9595     <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9596    
9597     </p>
9598     <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9599    
9600     </p>
9601     <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9602    
9603     </p>
9604     <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9605    
9606     </p>
9607     <p>/ DB_INSTRUMENTS SP db_path SP filename
9608    
9609     </p>
9610     <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9611    
9612     </p>
9613     <p>/ MIDI_INSTRUMENT_MAP
9614    
9615     </p>
9616     <p>/ MIDI_INSTRUMENT_MAP SP map_name
9617    
9618     </p>
9619     </blockquote><p>
9620    
9621     </p>
9622     <p>subscribe_event =
9623     </p>
9624     <blockquote class="text">
9625     <p>AUDIO_OUTPUT_DEVICE_COUNT
9626    
9627     </p>
9628     <p>/ AUDIO_OUTPUT_DEVICE_INFO
9629    
9630     </p>
9631     <p>/ MIDI_INPUT_DEVICE_COUNT
9632    
9633     </p>
9634     <p>/ MIDI_INPUT_DEVICE_INFO
9635    
9636     </p>
9637     <p>/ CHANNEL_COUNT
9638    
9639     </p>
9640     <p>/ VOICE_COUNT
9641    
9642     </p>
9643     <p>/ STREAM_COUNT
9644    
9645     </p>
9646     <p>/ BUFFER_FILL
9647    
9648     </p>
9649     <p>/ CHANNEL_INFO
9650    
9651     </p>
9652     <p>/ FX_SEND_COUNT
9653    
9654     </p>
9655     <p>/ FX_SEND_INFO
9656    
9657     </p>
9658     <p>/ MIDI_INSTRUMENT_MAP_COUNT
9659    
9660     </p>
9661     <p>/ MIDI_INSTRUMENT_MAP_INFO
9662    
9663     </p>
9664     <p>/ MIDI_INSTRUMENT_COUNT
9665    
9666     </p>
9667     <p>/ MIDI_INSTRUMENT_INFO
9668    
9669     </p>
9670     <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9671    
9672     </p>
9673     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9674    
9675     </p>
9676     <p>/ DB_INSTRUMENT_COUNT
9677    
9678     </p>
9679     <p>/ DB_INSTRUMENT_INFO
9680    
9681     </p>
9682     <p>/ DB_INSTRUMENTS_JOB_INFO
9683    
9684     </p>
9685     <p>/ MISCELLANEOUS
9686    
9687     </p>
9688     <p>/ TOTAL_STREAM_COUNT
9689    
9690     </p>
9691     <p>/ TOTAL_VOICE_COUNT
9692    
9693     </p>
9694     <p>/ GLOBAL_INFO
9695    
9696     </p>
9697     </blockquote><p>
9698    
9699     </p>
9700     <p>unsubscribe_event =
9701     </p>
9702     <blockquote class="text">
9703     <p>AUDIO_OUTPUT_DEVICE_COUNT
9704    
9705     </p>
9706     <p>/ AUDIO_OUTPUT_DEVICE_INFO
9707    
9708     </p>
9709     <p>/ MIDI_INPUT_DEVICE_COUNT
9710    
9711     </p>
9712     <p>/ MIDI_INPUT_DEVICE_INFO
9713    
9714     </p>
9715     <p>/ CHANNEL_COUNT
9716    
9717     </p>
9718     <p>/ VOICE_COUNT
9719    
9720     </p>
9721     <p>/ STREAM_COUNT
9722    
9723     </p>
9724     <p>/ BUFFER_FILL
9725    
9726     </p>
9727     <p>/ CHANNEL_INFO
9728    
9729     </p>
9730     <p>/ FX_SEND_COUNT
9731    
9732     </p>
9733     <p>/ FX_SEND_INFO
9734    
9735     </p>
9736     <p>/ MIDI_INSTRUMENT_MAP_COUNT
9737    
9738     </p>
9739     <p>/ MIDI_INSTRUMENT_MAP_INFO
9740    
9741     </p>
9742     <p>/ MIDI_INSTRUMENT_COUNT
9743    
9744     </p>
9745     <p>/ MIDI_INSTRUMENT_INFO
9746    
9747     </p>
9748     <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9749    
9750     </p>
9751     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9752    
9753     </p>
9754     <p>/ DB_INSTRUMENT_COUNT
9755    
9756     </p>
9757     <p>/ DB_INSTRUMENT_INFO
9758    
9759     </p>
9760     <p>/ DB_INSTRUMENTS_JOB_INFO
9761    
9762     </p>
9763     <p>/ MISCELLANEOUS
9764    
9765     </p>
9766     <p>/ TOTAL_STREAM_COUNT
9767    
9768     </p>
9769     <p>/ TOTAL_VOICE_COUNT
9770    
9771     </p>
9772     <p>/ GLOBAL_INFO
9773    
9774     </p>
9775     </blockquote><p>
9776    
9777     </p>
9778     <p>map_instruction =
9779     </p>
9780     <blockquote class="text">
9781     <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
9782    
9783     </p>
9784     <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
9785    
9786     </p>
9787     <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
9788    
9789     </p>
9790     <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
9791    
9792     </p>
9793     </blockquote><p>
9794    
9795     </p>
9796     <p>unmap_instruction =
9797     </p>
9798     <blockquote class="text">
9799     <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9800    
9801     </p>
9802     </blockquote><p>
9803    
9804     </p>
9805     <p>remove_instruction =
9806     </p>
9807     <blockquote class="text">
9808     <p>CHANNEL SP sampler_channel
9809    
9810     </p>
9811     <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9812    
9813     </p>
9814     <p>/ MIDI_INSTRUMENT_MAP SP ALL
9815    
9816     </p>
9817     <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9818    
9819     </p>
9820     <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9821    
9822     </p>
9823     <p>/ DB_INSTRUMENT SP db_path
9824    
9825     </p>
9826     </blockquote><p>
9827    
9828     </p>
9829     <p>get_instruction =
9830     </p>
9831     <blockquote class="text">
9832     <p>AVAILABLE_ENGINES
9833    
9834     </p>
9835     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9836    
9837     </p>
9838     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9839    
9840     </p>
9841     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9842    
9843     </p>
9844     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9845    
9846     </p>
9847     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9848    
9849     </p>
9850     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9851    
9852     </p>
9853     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9854    
9855     </p>
9856     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9857    
9858     </p>
9859     <p>/ AUDIO_OUTPUT_DEVICES
9860    
9861     </p>
9862     <p>/ MIDI_INPUT_DEVICES
9863    
9864     </p>
9865     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9866    
9867     </p>
9868     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9869    
9870     </p>
9871     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9872    
9873     </p>
9874     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9875    
9876     </p>
9877     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9878    
9879     </p>
9880     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9881    
9882     </p>
9883     <p>/ CHANNELS
9884    
9885     </p>
9886     <p>/ CHANNEL SP INFO SP sampler_channel
9887    
9888     </p>
9889     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9890    
9891     </p>
9892     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9893    
9894     </p>
9895     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9896    
9897     </p>
9898     <p>/ ENGINE SP INFO SP engine_name
9899    
9900     </p>
9901     <p>/ SERVER SP INFO
9902    
9903     </p>
9904     <p>/ TOTAL_STREAM_COUNT
9905    
9906     </p>
9907     <p>/ TOTAL_VOICE_COUNT
9908    
9909     </p>
9910     <p>/ TOTAL_VOICE_COUNT_MAX
9911    
9912     </p>
9913     <p>/ MIDI_INSTRUMENTS SP midi_map
9914    
9915     </p>
9916     <p>/ MIDI_INSTRUMENTS SP ALL
9917    
9918     </p>
9919     <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
9920    
9921     </p>
9922     <p>/ MIDI_INSTRUMENT_MAPS
9923    
9924     </p>
9925     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
9926    
9927     </p>
9928     <p>/ FX_SENDS SP sampler_channel
9929    
9930     </p>
9931     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9932    
9933     </p>
9934     <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9935    
9936     </p>
9937     <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9938    
9939     </p>
9940     <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9941    
9942     </p>
9943     <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9944    
9945     </p>
9946     <p>/ DB_INSTRUMENTS SP db_path
9947    
9948     </p>
9949     <p>/ DB_INSTRUMENT SP INFO SP db_path
9950    
9951     </p>
9952     <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9953    
9954     </p>
9955     <p>/ VOLUME
9956    
9957     </p>
9958     <p>/ FILE SP INSTRUMENTS SP filename
9959    
9960     </p>
9961     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
9962    
9963     </p>
9964     </blockquote><p>
9965    
9966     </p>
9967     <p>set_instruction =
9968     </p>
9969     <blockquote class="text">
9970     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9971    
9972     </p>
9973     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9974    
9975     </p>
9976     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9977    
9978     </p>
9979     <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9980    
9981     </p>
9982     <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9983    
9984     </p>
9985     <p>/ CHANNEL SP set_chan_instruction
9986    
9987     </p>
9988     <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9989    
9990     </p>
9991     <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
9992    
9993     </p>
9994     <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
9995    
9996     </p>
9997     <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
9998    
9999     </p>
10000     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
10001    
10002     </p>
10003     <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10004    
10005     </p>
10006     <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10007    
10008     </p>
10009     <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10010    
10011     </p>
10012     <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10013    
10014     </p>
10015     <p>/ ECHO SP boolean
10016    
10017     </p>
10018     <p>/ VOLUME SP volume_value
10019    
10020     </p>
10021     </blockquote><p>
10022    
10023     </p>
10024     <p>create_instruction =
10025     </p>
10026     <blockquote class="text">
10027     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10028    
10029     </p>
10030     <p>/ AUDIO_OUTPUT_DEVICE SP string
10031    
10032     </p>
10033     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10034    
10035     </p>
10036     <p>/ MIDI_INPUT_DEVICE SP string
10037    
10038     </p>
10039     <p>/ FX_SEND SP sampler_channel SP midi_ctrl
10040    
10041     </p>
10042     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
10043    
10044     </p>
10045     </blockquote><p>
10046    
10047     </p>
10048     <p>reset_instruction =
10049     </p>
10050     <blockquote class="text">
10051     <p>CHANNEL SP sampler_channel
10052    
10053     </p>
10054     </blockquote><p>
10055    
10056     </p>
10057     <p>clear_instruction =
10058     </p>
10059     <blockquote class="text">
10060     <p>MIDI_INSTRUMENTS SP midi_map
10061    
10062     </p>
10063     <p>/ MIDI_INSTRUMENTS SP ALL
10064    
10065     </p>
10066     </blockquote><p>
10067    
10068     </p>
10069     <p>find_instruction =
10070     </p>
10071     <blockquote class="text">
10072     <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10073    
10074     </p>
10075     <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10076    
10077     </p>
10078     <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10079    
10080     </p>
10081     <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10082    
10083     </p>
10084     </blockquote><p>
10085    
10086     </p>
10087     <p>move_instruction =
10088     </p>
10089     <blockquote class="text">
10090     <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10091    
10092     </p>
10093     <p>/ DB_INSTRUMENT SP db_path SP db_path
10094    
10095     </p>
10096     </blockquote><p>
10097    
10098     </p>
10099     <p>copy_instruction =
10100     </p>
10101     <blockquote class="text">
10102     <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10103    
10104     </p>
10105     <p>/ DB_INSTRUMENT SP db_path SP db_path
10106    
10107     </p>
10108     </blockquote><p>
10109    
10110     </p>
10111     <p>destroy_instruction =
10112     </p>
10113     <blockquote class="text">
10114     <p>AUDIO_OUTPUT_DEVICE SP number
10115    
10116     </p>
10117     <p>/ MIDI_INPUT_DEVICE SP number
10118    
10119     </p>
10120     <p>/ FX_SEND SP sampler_channel SP fx_send_id
10121    
10122     </p>
10123     </blockquote><p>
10124    
10125     </p>
10126     <p>load_instruction =
10127     </p>
10128     <blockquote class="text">
10129     <p>INSTRUMENT SP load_instr_args
10130    
10131     </p>
10132     <p>/ ENGINE SP load_engine_args
10133    
10134     </p>
10135     </blockquote><p>
10136    
10137     </p>
10138     <p>set_chan_instruction =
10139     </p>
10140     <blockquote class="text">
10141     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10142    
10143     </p>
10144     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10145    
10146     </p>
10147     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10148    
10149     </p>
10150     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10151    
10152     </p>
10153     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10154    
10155     </p>
10156     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10157    
10158     </p>
10159     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10160    
10161     </p>
10162     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10163    
10164     </p>
10165     <p>/ VOLUME SP sampler_channel SP volume_value
10166    
10167     </p>
10168     <p>/ MUTE SP sampler_channel SP boolean
10169    
10170     </p>
10171     <p>/ SOLO SP sampler_channel SP boolean
10172    
10173     </p>
10174     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
10175    
10176     </p>
10177     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
10178    
10179     </p>
10180     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
10181    
10182     </p>
10183     </blockquote><p>
10184    
10185     </p>
10186     <p>edit_instruction =
10187     </p>
10188     <blockquote class="text">
10189     <p>CHANNEL SP INSTRUMENT SP sampler_channel
10190    
10191     </p>
10192     </blockquote><p>
10193    
10194     </p>
10195     <p>format_instruction =
10196     </p>
10197     <blockquote class="text">
10198     <p>INSTRUMENTS_DB
10199    
10200     </p>
10201     </blockquote><p>
10202    
10203     </p>
10204     <p>modal_arg =
10205     </p>
10206     <blockquote class="text">
10207     <p>/* epsilon (empty argument) */
10208    
10209     </p>
10210     <p>/ NON_MODAL SP
10211    
10212     </p>
10213     </blockquote><p>
10214    
10215     </p>
10216     <p>key_val_list =
10217     </p>
10218     <blockquote class="text">
10219     <p>string '=' param_val_list
10220    
10221     </p>
10222     <p>/ key_val_list SP string '=' param_val_list
10223    
10224     </p>
10225     </blockquote><p>
10226    
10227     </p>
10228     <p>buffer_size_type =
10229     </p>
10230     <blockquote class="text">
10231     <p>BYTES
10232    
10233     </p>
10234     <p>/ PERCENTAGE
10235    
10236     </p>
10237     </blockquote><p>
10238    
10239     </p>
10240     <p>list_instruction =
10241     </p>
10242     <blockquote class="text">
10243     <p>AUDIO_OUTPUT_DEVICES
10244    
10245     </p>
10246     <p>/ MIDI_INPUT_DEVICES
10247    
10248     </p>
10249     <p>/ CHANNELS
10250    
10251     </p>
10252     <p>/ AVAILABLE_ENGINES
10253    
10254     </p>
10255     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10256    
10257     </p>
10258     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10259    
10260     </p>
10261     <p>/ MIDI_INSTRUMENTS SP midi_map
10262    
10263     </p>
10264     <p>/ MIDI_INSTRUMENTS SP ALL
10265    
10266     </p>
10267     <p>/ MIDI_INSTRUMENT_MAPS
10268    
10269     </p>
10270     <p>/ FX_SENDS SP sampler_channel
10271    
10272     </p>
10273     <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10274    
10275     </p>
10276     <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10277    
10278     </p>
10279     <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10280    
10281     </p>
10282     <p>/ DB_INSTRUMENTS SP db_path
10283    
10284     </p>
10285     <p>/ FILE SP INSTRUMENTS SP filename
10286    
10287     </p>
10288     </blockquote><p>
10289    
10290     </p>
10291     <p>load_instr_args =
10292     </p>
10293     <blockquote class="text">
10294     <p>filename SP instrument_index SP sampler_channel
10295    
10296     </p>
10297     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10298    
10299     </p>
10300     </blockquote><p>
10301    
10302     </p>
10303     <p>load_engine_args =
10304     </p>
10305     <blockquote class="text">
10306     <p>engine_name SP sampler_channel
10307    
10308     </p>
10309     </blockquote><p>
10310    
10311     </p>
10312     <p>instr_load_mode =
10313     </p>
10314     <blockquote class="text">
10315     <p>ON_DEMAND
10316    
10317     </p>
10318     <p>/ ON_DEMAND_HOLD
10319    
10320     </p>
10321     <p>/ PERSISTENT
10322    
10323     </p>
10324     </blockquote><p>
10325    
10326     </p>
10327     <p>device_index =
10328     </p>
10329     <blockquote class="text">
10330     <p>number
10331    
10332     </p>
10333     </blockquote><p>
10334    
10335     </p>
10336     <p>audio_channel_index =
10337     </p>
10338     <blockquote class="text">
10339     <p>number
10340    
10341     </p>
10342     </blockquote><p>
10343    
10344     </p>
10345     <p>audio_output_type_name =
10346     </p>
10347     <blockquote class="text">
10348     <p>string
10349    
10350     </p>
10351     </blockquote><p>
10352    
10353     </p>
10354     <p>midi_input_port_index =
10355     </p>
10356     <blockquote class="text">
10357     <p>number
10358    
10359     </p>
10360     </blockquote><p>
10361    
10362     </p>
10363     <p>midi_input_channel_index =
10364     </p>
10365     <blockquote class="text">
10366     <p>number
10367    
10368     </p>
10369     <p>/ ALL
10370    
10371     </p>
10372     </blockquote><p>
10373    
10374     </p>
10375     <p>midi_input_type_name =
10376     </p>
10377     <blockquote class="text">
10378     <p>string
10379    
10380     </p>
10381     </blockquote><p>
10382    
10383     </p>
10384     <p>midi_map =
10385     </p>
10386     <blockquote class="text">
10387     <p>number
10388    
10389     </p>
10390     </blockquote><p>
10391    
10392     </p>
10393     <p>midi_bank =
10394     </p>
10395     <blockquote class="text">
10396     <p>number
10397    
10398     </p>
10399     </blockquote><p>
10400    
10401     </p>
10402     <p>midi_prog =
10403     </p>
10404     <blockquote class="text">
10405     <p>number
10406    
10407     </p>
10408     </blockquote><p>
10409    
10410     </p>
10411     <p>midi_ctrl =
10412     </p>
10413     <blockquote class="text">
10414     <p>number
10415    
10416     </p>
10417     </blockquote><p>
10418    
10419     </p>
10420     <p>volume_value =
10421     </p>
10422     <blockquote class="text">
10423     <p>dotnum
10424    
10425     </p>
10426     <p>/ number
10427    
10428     </p>
10429     </blockquote><p>
10430    
10431     </p>
10432     <p>sampler_channel =
10433     </p>
10434     <blockquote class="text">
10435     <p>number
10436    
10437     </p>
10438     </blockquote><p>
10439    
10440     </p>
10441     <p>instrument_index =
10442     </p>
10443     <blockquote class="text">
10444     <p>number
10445    
10446     </p>
10447     </blockquote><p>
10448    
10449     </p>
10450     <p>fx_send_id =
10451     </p>
10452     <blockquote class="text">
10453     <p>number
10454    
10455     </p>
10456     </blockquote><p>
10457    
10458     </p>
10459     <p>engine_name =
10460     </p>
10461     <blockquote class="text">
10462     <p>string
10463    
10464     </p>
10465     </blockquote><p>
10466    
10467     </p>
10468     <p>filename =
10469     </p>
10470     <blockquote class="text">
10471     <p>path
10472    
10473     </p>
10474     </blockquote><p>
10475    
10476     </p>
10477     <p>db_path =
10478     </p>
10479     <blockquote class="text">
10480     <p>path
10481    
10482     </p>
10483     </blockquote><p>
10484    
10485     </p>
10486     <p>map_name =
10487     </p>
10488     <blockquote class="text">
10489     <p>stringval_escaped
10490    
10491     </p>
10492     </blockquote><p>
10493    
10494     </p>
10495     <p>entry_name =
10496     </p>
10497     <blockquote class="text">
10498     <p>stringval_escaped
10499    
10500     </p>
10501     </blockquote><p>
10502    
10503     </p>
10504     <p>fx_send_name =
10505     </p>
10506     <blockquote class="text">
10507     <p>stringval_escaped
10508    
10509     </p>
10510     </blockquote><p>
10511    
10512     </p>
10513     <p>param_val_list =
10514     </p>
10515     <blockquote class="text">
10516     <p>param_val
10517    
10518     </p>
10519     <p>/ param_val_list','param_val
10520    
10521     </p>
10522     </blockquote><p>
10523    
10524     </p>
10525     <p>param_val =
10526     </p>
10527     <blockquote class="text">
10528     <p>string
10529    
10530     </p>
10531     <p>/ stringval
10532    
10533     </p>
10534     <p>/ number
10535    
10536     </p>
10537     <p>/ dotnum
10538    
10539     </p>
10540     </blockquote><p>
10541    
10542     </p>
10543     <p>query_val_list =
10544     </p>
10545     <blockquote class="text">
10546     <p>string '=' query_val
10547    
10548     </p>
10549     <p>/ query_val_list SP string '=' query_val
10550    
10551     </p>
10552     </blockquote><p>
10553    
10554     </p>
10555     <p>query_val =
10556     </p>
10557     <blockquote class="text">
10558     <p>text_escaped
10559    
10560     </p>
10561     <p>/ stringval_escaped
10562    
10563     </p>
10564     </blockquote><p>
10565    
10566     </p>
10567     <p>scan_mode =
10568     </p>
10569     <blockquote class="text">
10570     <p>RECURSIVE
10571    
10572     </p>
10573     <p>/ NON_RECURSIVE
10574    
10575     </p>
10576     <p>/ FLAT
10577    
10578     </p>
10579     </blockquote><p>
10580    
10581     </p>
10582     <a name="character_set"></a><br /><hr />
10583     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10584     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10585     Character Set and Escape Sequences</h3>
10586    
10587     <p>Older versions of this protocol up to and including v1.1 only
10588     supported the standard ASCII character set (ASCII code 0 - 127)
10589     <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
10590     however support the Extended ASCII character set (ASCII code
10591     0 - 255). The same group of younger protocols also support
10592     escape sequences, but only for certain, explicitly declared
10593     parts of the protocol. The supported escape sequences are
10594     defined as follows:
10595     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10596     <col align="left"><col align="left">
10597     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10598     <tr>
10599     <td align="left">\n</td>
10600     <td align="left">new line</td>
10601     </tr>
10602     <tr>
10603     <td align="left">\r</td>
10604     <td align="left">carriage return</td>
10605     </tr>
10606     <tr>
10607     <td align="left">\f</td>
10608     <td align="left">form feed</td>
10609     </tr>
10610     <tr>
10611     <td align="left">\t</td>
10612     <td align="left">horizontal tab</td>
10613     </tr>
10614     <tr>
10615     <td align="left">\v</td>
10616     <td align="left">vertical tab</td>
10617     </tr>
10618     <tr>
10619     <td align="left">\'</td>
10620     <td align="left">apostrophe</td>
10621     </tr>
10622     <tr>
10623     <td align="left">\"</td>
10624     <td align="left">quotation mark</td>
10625     </tr>
10626     <tr>
10627     <td align="left">\\</td>
10628     <td align="left">backslash</td>
10629     </tr>
10630     <tr>
10631     <td align="left">\OOO</td>
10632     <td align="left">three digit octal ASCII code of the character</td>
10633     </tr>
10634     <tr>
10635     <td align="left">\xHH</td>
10636     <td align="left">two digit hex ASCII code of the character</td>
10637     </tr>
10638     </table>
10639    
10640     <p>Notice: due to the transition of certain parts of the
10641     protocol which now support escape sequences, a slight backward
10642     incompatibility to protocols version v1.1 and younger has been
10643     introduced. The only difference is that in parts of the protocol
10644     where escape characters are now supported, a backslash characters
10645     MUST be escaped as well (that is as double backslash), whereas
10646     in the old versions a single backslash was sufficient.
10647     </p>
10648     <p>The following LSCP commands support escape sequences as part
10649     of their filename / path based arguments and / or may contain
10650     a filename / path with escape sequences in their response:
10651     </p>
10652     <blockquote class="text">
10653     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10654     </p>
10655     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10656     </p>
10657     <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>
10658     </p>
10659     <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>
10660     </p>
10661     <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>
10662     </p>
10663     <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>
10664     </p>
10665     <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>
10666     </p>
10667     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10668     </p>
10669     <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>
10670     </p>
10671     <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>
10672     </p>
10673     <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>
10674     </p>
10675     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10676     </p>
10677     <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>
10678     </p>
10679     <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>
10680     </p>
10681     <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>
10682     </p>
10683     <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>
10684     </p>
10685     <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>
10686     </p>
10687     <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>
10688     </p>
10689     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10690     </p>
10691     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10692     </p>
10693     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10694     </p>
10695     <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>
10696     </p>
10697     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10698     </p>
10699     <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>
10700     </p>
10701     <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>
10702     </p>
10703     <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>
10704     </p>
10705     <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>
10706     </p>
10707     </blockquote><p>
10708     Note that the forward slash character ('/') has a special meaning in
10709     filename / path based arguments: it acts as separator of the nodes in
10710     the path, thus if a directory- or filename includes a forward slash
10711     (not intended as path node separator), you MUST escape that slash
10712     either with the respective hex escape sequence ("\x2f") or with the
10713     respective octal escape sequence ("\057").
10714    
10715     </p>
10716     <p>
10717     Note for Windows: file path arguments in LSCP are expected
10718     to use forward slashes as directory node separator similar
10719     to Unix based operating systems. In contrast to Unix however
10720     a Windows typical drive character is expected to be
10721     prefixed to the path. That is an original Windows file path
10722     like "D:\Sounds\My.gig" would become in LSCP:
10723     "D:/Sounds/My.gig".
10724    
10725     </p>
10726     <p>
10727     The following LSCP commands even support escape sequences as
10728     part of at least one of their text-based arguments (i.e. entity name,
10729     description) and / or may contain escape sequences in at least one of
10730     their text-based fields in their response:
10731     </p>
10732     <blockquote class="text">
10733     <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
10734     </p>
10735     <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>
10736     </p>
10737     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10738     </p>
10739     <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>
10740     </p>
10741     <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>
10742     </p>
10743     <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>
10744     </p>
10745     <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>
10746     </p>
10747     <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>
10748     </p>
10749     <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>
10750     </p>
10751     <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>
10752     </p>
10753     <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>
10754     </p>
10755     <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>
10756     </p>
10757     <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>
10758     </p>
10759     <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>
10760     </p>
10761     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10762     </p>
10763     <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>
10764     </p>
10765     <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>
10766     </p>
10767     <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>
10768     </p>
10769     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10770     </p>
10771     </blockquote><p>
10772     Please note that these lists are manually maintained. If you
10773     find a command that also supports escape sequences we forgot to
10774     mention here, please report it!
10775    
10776     </p>
10777     <a name="events"></a><br /><hr />
10778     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10779     <a name="rfc.section.8"></a><h3>8.&nbsp;
10780     Events</h3>
10781    
10782     <p>This chapter will describe all currently defined events supported by LinuxSampler.
10783     </p>
10784     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
10785     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10786     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
10787     Number of audio output devices changed</h3>
10788    
10789     <p>Client may want to be notified when the total number of audio output devices on the
10790     back-end changes by issuing the following command:
10791     </p>
10792     <p>
10793     </p>
10794     <blockquote class="text">
10795     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
10796     </p>
10797     </blockquote><p>
10798    
10799     </p>
10800     <p>Server will start sending the following notification messages:
10801     </p>
10802     <p>
10803     </p>
10804     <blockquote class="text">
10805     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
10806     </p>
10807     </blockquote><p>
10808    
10809     </p>
10810     <p>where &lt;devices&gt; will be replaced by the new number
10811     of audio output devices.
10812     </p>
10813     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
10814     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10815     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
10816     Audio output device's settings changed</h3>
10817    
10818     <p>Client may want to be notified when changes were made to audio output devices on the
10819     back-end by issuing the following command:
10820     </p>
10821     <p>
10822     </p>
10823     <blockquote class="text">
10824     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
10825     </p>
10826     </blockquote><p>
10827    
10828     </p>
10829     <p>Server will start sending the following notification messages:
10830     </p>
10831     <p>
10832     </p>
10833     <blockquote class="text">
10834     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
10835     </p>
10836     </blockquote><p>
10837    
10838     </p>
10839     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
10840     which settings has been changed. The front-end will have to send
10841     the respective command to actually get the audio output device info. Because these messages
10842     will be triggered by LSCP commands issued by other clients rather than real
10843     time events happening on the server, it is believed that an empty notification
10844     message is sufficient here.
10845     </p>
10846     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
10847     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10848     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
10849     Number of MIDI input devices changed</h3>
10850    
10851     <p>Client may want to be notified when the total number of MIDI input devices on the
10852     back-end changes by issuing the following command:
10853     </p>
10854     <p>
10855     </p>
10856     <blockquote class="text">
10857     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
10858     </p>
10859     </blockquote><p>
10860    
10861     </p>
10862     <p>Server will start sending the following notification messages:
10863     </p>
10864     <p>
10865     </p>
10866     <blockquote class="text">
10867     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
10868     </p>
10869     </blockquote><p>
10870    
10871     </p>
10872     <p>where &lt;devices&gt; will be replaced by the new number
10873     of MIDI input devices.
10874     </p>
10875     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
10876     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10877     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
10878     MIDI input device's settings changed</h3>
10879    
10880     <p>Client may want to be notified when changes were made to MIDI input devices on the
10881     back-end by issuing the following command:
10882     </p>
10883     <p>
10884     </p>
10885     <blockquote class="text">
10886     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
10887     </p>
10888     </blockquote><p>
10889    
10890     </p>
10891     <p>Server will start sending the following notification messages:
10892     </p>
10893     <p>
10894     </p>
10895     <blockquote class="text">
10896     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
10897     </p>
10898     </blockquote><p>
10899    
10900     </p>
10901     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
10902     which settings has been changed. The front-end will have to send
10903     the respective command to actually get the MIDI input device info. Because these messages
10904     will be triggered by LSCP commands issued by other clients rather than real
10905     time events happening on the server, it is believed that an empty notification
10906     message is sufficient here.
10907     </p>
10908     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
10909     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10910     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
10911     Number of sampler channels changed</h3>
10912    
10913     <p>Client may want to be notified when the total number of channels on the
10914     back-end changes by issuing the following command:
10915     </p>
10916     <p>
10917     </p>
10918     <blockquote class="text">
10919     <p>SUBSCRIBE CHANNEL_COUNT
10920     </p>
10921     </blockquote><p>
10922    
10923     </p>
10924     <p>Server will start sending the following notification messages:
10925     </p>
10926     <p>
10927     </p>
10928     <blockquote class="text">
10929     <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
10930     </p>
10931     </blockquote><p>
10932    
10933     </p>
10934     <p>where &lt;channels&gt; will be replaced by the new number
10935     of sampler channels.
10936     </p>
10937     <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10938     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10939     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
10940     Number of active voices changed</h3>
10941    
10942     <p>Client may want to be notified when the number of voices on the
10943     back-end changes by issuing the following command:
10944     </p>
10945     <p>
10946     </p>
10947     <blockquote class="text">
10948     <p>SUBSCRIBE VOICE_COUNT
10949     </p>
10950     </blockquote><p>
10951    
10952     </p>
10953     <p>Server will start sending the following notification messages:
10954     </p>
10955     <p>
10956     </p>
10957     <blockquote class="text">
10958     <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
10959     </p>
10960     </blockquote><p>
10961    
10962     </p>
10963     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10964     voice count change occurred and &lt;voices&gt; by the new number of
10965     active voices on that channel.
10966     </p>
10967     <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
10968     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10969     <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10970     Number of active disk streams changed</h3>
10971    
10972     <p>Client may want to be notified when the number of streams on the back-end
10973     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
10974     </p>
10975     <p>
10976     </p>
10977     <blockquote class="text">
10978     <p>SUBSCRIBE STREAM_COUNT
10979     </p>
10980     </blockquote><p>
10981    
10982     </p>
10983     <p>Server will start sending the following notification messages:
10984     </p>
10985     <p>
10986     </p>
10987     <blockquote class="text">
10988     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
10989     </p>
10990     </blockquote><p>
10991    
10992     </p>
10993     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10994     stream count change occurred and &lt;streams&gt; by the new number of
10995     active disk streams on that channel.
10996     </p>
10997     <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
10998     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10999     <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11000     Disk stream buffer fill state changed</h3>
11001    
11002     <p>Client may want to be notified when the buffer fill state of a disk stream
11003     on the back-end changes by issuing the following command:
11004     </p>
11005     <p>
11006     </p>
11007     <blockquote class="text">
11008     <p>SUBSCRIBE BUFFER_FILL
11009     </p>
11010     </blockquote><p>
11011    
11012     </p>
11013     <p>Server will start sending the following notification messages:
11014     </p>
11015     <p>
11016     </p>
11017     <blockquote class="text">
11018     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11019     </p>
11020     </blockquote><p>
11021    
11022     </p>
11023     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11024     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
11025     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>
11026     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.
11027     </p>
11028     <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11029     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11030     <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11031     Channel information changed</h3>
11032    
11033     <p>Client may want to be notified when changes were made to sampler channels on the
11034     back-end by issuing the following command:
11035     </p>
11036     <p>
11037     </p>
11038     <blockquote class="text">
11039     <p>SUBSCRIBE CHANNEL_INFO
11040     </p>
11041     </blockquote><p>
11042    
11043     </p>
11044     <p>Server will start sending the following notification messages:
11045     </p>
11046     <p>
11047     </p>
11048     <blockquote class="text">
11049     <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11050     </p>
11051     </blockquote><p>
11052    
11053     </p>
11054     <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11055     channel info change occurred. The front-end will have to send
11056     the respective command to actually get the channel info. Because these messages
11057     will be triggered by LSCP commands issued by other clients rather than real
11058     time events happening on the server, it is believed that an empty notification
11059     message is sufficient here.
11060     </p>
11061     <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
11062     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11063     <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11064     Number of effect sends changed</h3>
11065    
11066     <p>Client may want to be notified when the number of effect sends on
11067     a particular sampler channel is changed by issuing the following command:
11068     </p>
11069     <p>
11070     </p>
11071     <blockquote class="text">
11072     <p>SUBSCRIBE FX_SEND_COUNT
11073     </p>
11074     </blockquote><p>
11075    
11076     </p>
11077     <p>Server will start sending the following notification messages:
11078     </p>
11079     <p>
11080     </p>
11081     <blockquote class="text">
11082     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
11083     </p>
11084     </blockquote><p>
11085    
11086     </p>
11087     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11088     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
11089     be replaced by the new number of effect sends on that channel.
11090     </p>
11091     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
11092     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11093     <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11094     Effect send information changed</h3>
11095    
11096     <p>Client may want to be notified when changes were made to effect sends on a
11097     a particular sampler channel by issuing the following command:
11098     </p>
11099     <p>
11100     </p>
11101     <blockquote class="text">
11102     <p>SUBSCRIBE FX_SEND_INFO
11103     </p>
11104     </blockquote><p>
11105    
11106     </p>
11107     <p>Server will start sending the following notification messages:
11108     </p>
11109     <p>
11110     </p>
11111     <blockquote class="text">
11112     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
11113     </p>
11114     </blockquote><p>
11115    
11116     </p>
11117     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11118     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
11119     be replaced by the numerical ID of the changed effect send.
11120     </p>
11121     <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11122     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11123     <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11124     Total number of active voices changed</h3>
11125    
11126     <p>Client may want to be notified when the total number of voices on the
11127     back-end changes by issuing the following command:
11128     </p>
11129     <p>
11130     </p>
11131     <blockquote class="text">
11132     <p>SUBSCRIBE TOTAL_VOICE_COUNT
11133     </p>
11134     </blockquote><p>
11135    
11136     </p>
11137     <p>Server will start sending the following notification messages:
11138     </p>
11139     <p>
11140     </p>
11141     <blockquote class="text">
11142     <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11143     </p>
11144     </blockquote><p>
11145    
11146     </p>
11147     <p>where &lt;voices&gt; will be replaced by the new number of
11148     all currently active voices.
11149     </p>
11150     <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
11151     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11152     <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11153     Total number of active disk streams changed</h3>
11154    
11155     <p>Client may want to be notified when the total number of disk streams on the
11156     back-end changes by issuing the following command:
11157     </p>
11158     <p>
11159     </p>
11160     <blockquote class="text">
11161     <p>SUBSCRIBE TOTAL_STREAM_COUNT
11162     </p>
11163     </blockquote><p>
11164    
11165     </p>
11166     <p>Server will start sending the following notification messages:
11167     </p>
11168     <p>
11169     </p>
11170     <blockquote class="text">
11171     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
11172     </p>
11173     </blockquote><p>
11174    
11175     </p>
11176     <p>where &lt;streams&gt; will be replaced by the new number of
11177     all currently active disk streams.
11178     </p>
11179     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
11180     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11181     <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11182     Number of MIDI instrument maps changed</h3>
11183    
11184     <p>Client may want to be notified when the number of MIDI instrument maps on the
11185     back-end changes by issuing the following command:
11186     </p>
11187     <p>
11188     </p>
11189     <blockquote class="text">
11190     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
11191     </p>
11192     </blockquote><p>
11193    
11194     </p>
11195     <p>Server will start sending the following notification messages:
11196     </p>
11197     <p>
11198     </p>
11199     <blockquote class="text">
11200     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
11201     </p>
11202     </blockquote><p>
11203    
11204     </p>
11205     <p>where &lt;maps&gt; will be replaced by the new number
11206     of MIDI instrument maps.
11207     </p>
11208     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
11209     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11210     <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11211     MIDI instrument map information changed</h3>
11212    
11213     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
11214     back-end by issuing the following command:
11215     </p>
11216     <p>
11217     </p>
11218     <blockquote class="text">
11219     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
11220     </p>
11221     </blockquote><p>
11222    
11223     </p>
11224     <p>Server will start sending the following notification messages:
11225     </p>
11226     <p>
11227     </p>
11228     <blockquote class="text">
11229     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
11230     </p>
11231     </blockquote><p>
11232    
11233     </p>
11234     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11235     for which information changes occurred. The front-end will have to send
11236     the respective command to actually get the MIDI instrument map info. Because these messages
11237     will be triggered by LSCP commands issued by other clients rather than real
11238     time events happening on the server, it is believed that an empty notification
11239     message is sufficient here.
11240     </p>
11241     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
11242     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11243     <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11244     Number of MIDI instruments changed</h3>
11245    
11246     <p>Client may want to be notified when the number of MIDI instrument maps on the
11247     back-end changes by issuing the following command:
11248     </p>
11249     <p>
11250     </p>
11251     <blockquote class="text">
11252     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
11253     </p>
11254     </blockquote><p>
11255    
11256     </p>
11257     <p>Server will start sending the following notification messages:
11258     </p>
11259     <p>
11260     </p>
11261     <blockquote class="text">
11262     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
11263     </p>
11264     </blockquote><p>
11265    
11266     </p>
11267     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
11268     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
11269     the new number of MIDI instruments in the specified map.
11270     </p>
11271     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
11272     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11273     <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11274     MIDI instrument information changed</h3>
11275    
11276     <p>Client may want to be notified when changes were made to MIDI instruments on the
11277     back-end by issuing the following command:
11278     </p>
11279     <p>
11280     </p>
11281     <blockquote class="text">
11282     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
11283     </p>
11284     </blockquote><p>
11285    
11286     </p>
11287     <p>Server will start sending the following notification messages:
11288     </p>
11289     <p>
11290     </p>
11291     <blockquote class="text">
11292     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
11293     </p>
11294     </blockquote><p>
11295    
11296     </p>
11297     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11298     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
11299     the location of the changed MIDI instrument in the map. The front-end will have to send
11300     the respective command to actually get the MIDI instrument info. Because these messages
11301     will be triggered by LSCP commands issued by other clients rather than real
11302     time events happening on the server, it is believed that an empty notification
11303     message is sufficient here.
11304     </p>
11305     <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
11306     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11307     <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11308     Global settings changed</h3>
11309    
11310     <p>Client may want to be notified when changes to the global settings
11311     of the sampler were made by issuing the following command:
11312     </p>
11313     <p>
11314     </p>
11315     <blockquote class="text">
11316     <p>SUBSCRIBE GLOBAL_INFO
11317     </p>
11318     </blockquote><p>
11319    
11320     </p>
11321     <p>Server will start sending the following types of notification messages:
11322     </p>
11323     <p>
11324     </p>
11325     <blockquote class="text">
11326     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
11327     golbal volume of the sampler is changed, where &lt;volume&gt; will be
11328     replaced by the optional dotted floating point value, reflecting the
11329     new global volume parameter.
11330     </p>
11331     </blockquote><p>
11332    
11333     </p>
11334     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
11335     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11336     <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11337     Number of database instrument directories changed</h3>
11338    
11339     <p>Client may want to be notified when the number of instrument
11340     directories in a particular directory in the instruments database
11341     is changed by issuing the following command:
11342     </p>
11343     <p>
11344     </p>
11345     <blockquote class="text">
11346     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
11347     </p>
11348     </blockquote><p>
11349    
11350     </p>
11351     <p>Server will start sending the following notification messages:
11352     </p>
11353     <p>
11354     </p>
11355     <blockquote class="text">
11356     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
11357     </p>
11358     </blockquote><p>
11359    
11360     </p>
11361     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11362     name of the directory in the instruments database,
11363     in which the number of directories is changed.
11364     </p>
11365     <p>Note that when a non-empty directory is removed, this event
11366     is not sent for the subdirectories in that directory.
11367     </p>
11368     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
11369     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11370     <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11371     Database instrument directory information changed</h3>
11372    
11373     <p>Client may want to be notified when changes were made to directories
11374     in the instruments database by issuing the following command:
11375     </p>
11376     <p>
11377     </p>
11378     <blockquote class="text">
11379     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11380     </p>
11381     </blockquote><p>
11382    
11383     </p>
11384     <p>Server will start sending the following notification messages:
11385     </p>
11386     <p>
11387     </p>
11388     <blockquote class="text">
11389     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11390     </p>
11391     </blockquote><p>
11392    
11393     </p>
11394     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11395     of the directory, for which information changes occurred. The front-end will have to send
11396     the respective command to actually get the updated directory info. Because these messages
11397     will be triggered by LSCP commands issued by other clients rather than real
11398     time events happening on the server, it is believed that an empty notification
11399     message is sufficient here.
11400     </p>
11401     <p>
11402     </p>
11403     <blockquote class="text">
11404     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11405     </p>
11406     </blockquote><p>
11407    
11408     </p>
11409     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11410     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11411     the new name of the directory, encapsulated into apostrophes.
11412     </p>
11413     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11414     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11415     <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11416     Number of database instruments changed</h3>
11417    
11418     <p>Client may want to be notified when the number of instruments
11419     in a particular directory in the instruments database
11420     is changed by issuing the following command:
11421     </p>
11422     <p>
11423     </p>
11424     <blockquote class="text">
11425     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11426     </p>
11427     </blockquote><p>
11428    
11429     </p>
11430     <p>Server will start sending the following notification messages:
11431     </p>
11432     <p>
11433     </p>
11434     <blockquote class="text">
11435     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11436     </p>
11437     </blockquote><p>
11438    
11439     </p>
11440     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11441     name of the directory in the instruments database,
11442     in which the number of instruments is changed.
11443     </p>
11444     <p>Note that when a non-empty directory is removed, this event
11445     is not sent for the instruments in that directory.
11446     </p>
11447     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11448     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11449     <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11450     Database instrument information changed</h3>
11451    
11452     <p>Client may want to be notified when changes were made to instruments
11453     in the instruments database by issuing the following command:
11454     </p>
11455     <p>
11456     </p>
11457     <blockquote class="text">
11458     <p>SUBSCRIBE DB_INSTRUMENT_INFO
11459     </p>
11460     </blockquote><p>
11461    
11462     </p>
11463     <p>Server will start sending the following notification messages:
11464     </p>
11465     <p>
11466     </p>
11467     <blockquote class="text">
11468     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11469     </p>
11470     </blockquote><p>
11471    
11472     </p>
11473     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11474     of the instrument, which settings are changed. The front-end will have to send
11475     the respective command to actually get the updated directory info. Because these messages
11476     will be triggered by LSCP commands issued by other clients rather than real
11477     time events happening on the server, it is believed that an empty notification
11478     message is sufficient here.
11479     </p>
11480     <p>
11481     </p>
11482     <blockquote class="text">
11483     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11484     </p>
11485     </blockquote><p>
11486    
11487     </p>
11488     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11489     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11490     the new name of the instrument, encapsulated into apostrophes.
11491     </p>
11492     <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11493     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11494     <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11495     Database job status information changed</h3>
11496    
11497     <p>Client may want to be notified when the status of particular database
11498     instruments job is changed by issuing the following command:
11499     </p>
11500     <p>
11501     </p>
11502     <blockquote class="text">
11503     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11504     </p>
11505     </blockquote><p>
11506    
11507     </p>
11508     <p>Server will start sending the following notification messages:
11509     </p>
11510     <p>
11511     </p>
11512     <blockquote class="text">
11513     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11514     </p>
11515     </blockquote><p>
11516    
11517     </p>
11518     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11519     which status is changed. The front-end will have to send the respective
11520     command to actually get the status info. Because these messages
11521     will be triggered by LSCP commands issued by other clients rather than real
11522     time events happening on the server, it is believed that an empty notification
11523     message is sufficient here.
11524     </p>
11525     <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11526     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11527     <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11528     Miscellaneous and debugging events</h3>
11529    
11530     <p>Client may want to be notified of miscellaneous and debugging events occurring at
11531     the server by issuing the following command:
11532     </p>
11533     <p>
11534     </p>
11535     <blockquote class="text">
11536     <p>SUBSCRIBE MISCELLANEOUS
11537     </p>
11538     </blockquote><p>
11539    
11540     </p>
11541     <p>Server will start sending the following notification messages:
11542     </p>
11543     <p>
11544     </p>
11545     <blockquote class="text">
11546     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11547     </p>
11548     </blockquote><p>
11549    
11550     </p>
11551     <p>where &lt;string&gt; will be replaced by whatever data server
11552     wants to send to the client. Client MAY display this data to the
11553     user AS IS to facilitate debugging.
11554     </p>
11555     <a name="anchor14"></a><br /><hr />
11556     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11557     <a name="rfc.section.9"></a><h3>9.&nbsp;
11558     Security Considerations</h3>
11559    
11560     <p>As there is so far no method of authentication and authorization
11561     defined and so not required for a client applications to succeed to
11562     connect, running LinuxSampler might be a security risk for the host
11563     system the LinuxSampler instance is running on.
11564     </p>
11565     <a name="anchor15"></a><br /><hr />
11566     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11567     <a name="rfc.section.10"></a><h3>10.&nbsp;
11568     Acknowledgments</h3>
11569    
11570     <p>This document has benefited greatly from the comments of the
11571     following people, discussed on the LinuxSampler developer's mailing
11572     list:
11573     </p>
11574     <p>
11575     </p>
11576     <blockquote class="text">
11577     <p>Rui Nuno Capela
11578     </p>
11579     <p>Vladimir Senkov
11580     </p>
11581     <p>Mark Knecht
11582     </p>
11583     <p>Grigor Iliev
11584     </p>
11585     </blockquote><p>
11586    
11587     </p>
11588     <a name="rfc.references1"></a><br /><hr />
11589     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11590     <h3>11.&nbsp;References</h3>
11591     <table width="99%" border="0">
11592     <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11593     <td class="author-text">UCLA, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc20.txt">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
11594     <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11595     <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
11596     <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11597     <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2234.txt">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
11598     <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11599     <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc793.txt">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
11600     </table>
11601    
11602     <a name="rfc.authors"></a><br /><hr />
11603     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11604     <h3>Author's Address</h3>
11605     <table width="99%" border="0" cellpadding="0" cellspacing="0">
11606     <tr><td class="author-text">&nbsp;</td>
11607     <td class="author-text">C.
11608     Schoenebeck</td></tr>
11609     <tr><td class="author-text">&nbsp;</td>
11610     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11611     <tr><td class="author-text">&nbsp;</td>
11612     <td class="author-text">Max-Planck-Str. 39</td></tr>
11613     <tr><td class="author-text">&nbsp;</td>
11614     <td class="author-text">74081 Heilbronn</td></tr>
11615     <tr><td class="author-text">&nbsp;</td>
11616     <td class="author-text">Germany</td></tr>
11617     <tr><td class="author" align="right">Email:&nbsp;</td>
11618     <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
11619     </table>
11620     <a name="rfc.copyright"></a><br /><hr />
11621     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11622     <h3>Full Copyright Statement</h3>
11623     <p class='copyright'>
11624     Copyright &copy; The IETF Trust (2007).</p>
11625     <p class='copyright'>
11626     This document is subject to the rights,
11627     licenses and restrictions contained in BCP&nbsp;78,
11628     and except as set forth therein,
11629     the authors retain all their rights.</p>
11630     <p class='copyright'>
11631     This document and the information contained herein are provided
11632     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11633     THE ORGANIZATION HE/SHE REPRESENTS
11634     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11635     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11636     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11637     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11638     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11639     PURPOSE.</p>
11640     <h3>Intellectual Property</h3>
11641     <p class='copyright'>
11642     The IETF takes no position regarding the validity or scope of any
11643     Intellectual Property Rights or other rights that might be claimed
11644     to pertain to the implementation or use of the technology
11645     described in this document or the extent to which any license
11646     under such rights might or might not be available; nor does it
11647     represent that it has made any independent effort to identify any
11648     such rights.
11649     Information on the procedures with respect to
11650     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11651     <p class='copyright'>
11652     Copies of IPR disclosures made to the IETF Secretariat and any
11653     assurances of licenses to be made available,
11654     or the result of an attempt made to obtain a general license or
11655     permission for the use of such proprietary rights by implementers or
11656     users of this specification can be obtained from the IETF on-line IPR
11657     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11658     <p class='copyright'>
11659     The IETF invites any interested party to bring to its attention
11660     any copyrights,
11661     patents or patent applications,
11662     or other
11663     proprietary rights that may cover technology that may be required
11664     to implement this standard.
11665     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11666     <h3>Acknowledgment</h3>
11667     <p class='copyright'>
11668     Funding for the RFC Editor function is provided by
11669     the IETF Administrative Support Activity (IASA).</p>
11670     </body></html>
11671    

  ViewVC Help
Powered by ViewVC