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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1773 - (hide annotations) (download) (as text)
Wed Sep 10 15:14:31 2008 UTC (15 years, 7 months ago) by iliev
File MIME type: text/html
File size: 422201 byte(s)
- updated the lscp spec

1 senoner 542 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 schoenebeck 1430 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 senoner 542 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 schoenebeck 1430 <meta name="description" content="LinuxSampler Control Protocol">
5 senoner 542 <meta name="keywords" content="LSCP">
6 iliev 1773 <meta name="generator" content="xml2rfc v1.32 (http://xml.resource.org/)">
7 schoenebeck 974 <style type='text/css'><!--
8 iliev 1110 body {
9     font-family: verdana, charcoal, helvetica, arial, sans-serif;
10     font-size: small; color: #000; background-color: #FFF;
11     margin: 2em;
12     }
13 schoenebeck 974 h1, h2, h3, h4, h5, h6 {
14 iliev 1110 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 senoner 542
20 iliev 1110 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 senoner 542
35 iliev 1110 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 senoner 542
46 iliev 1110 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 senoner 542
54 iliev 1110 /* 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 senoner 542
77 iliev 1110 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 senoner 542
82 iliev 1110 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 senoner 542
88 iliev 1110 ol.text { margin-left: 2em; margin-right: 2em; }
89     ul.text { margin-left: 2em; margin-right: 2em; }
90     li { margin-left: 3em; }
91 senoner 542
92 iliev 1110 /* 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 schoenebeck 974 tt, pre, pre dfn, pre em, pre cite, pre span {
99 iliev 1110 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 schoenebeck 708
115 iliev 1110 /* 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 senoner 542
135 iliev 1110 hr { height: 1px; }
136     hr.insert {
137     width: 80%; border-style: none; border-width: 0;
138     color: #CCC; background-color: #CCC;
139     }
140 schoenebeck 974 --></style>
141 senoner 542 </head>
142     <body>
143 schoenebeck 974 <table 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 senoner 542 <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 schoenebeck 974 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 iliev 1773 <tr><td class="header">Expires: March 14, 2009</td><td class="header">September 10, 2008</td></tr>
149 senoner 542 </table></td></tr></table>
150 schoenebeck 1685 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.4</h1>
151 senoner 542
152     <h3>Status of this Memo</h3>
153     <p>
154 schoenebeck 974 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 senoner 542 <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 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
169 senoner 542 <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 iliev 1773 This Internet-Draft will expire on March 14, 2009.</p>
177 senoner 542
178 iliev 1773 <h3>Copyright Notice</h3>
179     <p>
180     Copyright &copy; The IETF Trust (2008).</p>
181    
182 senoner 542 <h3>Abstract</h3>
183    
184     <p>The LinuxSampler Control Protocol (LSCP) is an
185     application-level protocol primarily intended for local and
186 schoenebeck 575 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 senoner 542 </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 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
196     Versioning of this specification<br />
197     <a href="#anchor2">3.</a>&nbsp;
198 senoner 542 Introduction<br />
199 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
200 senoner 542 Focus of this protocol<br />
201 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
202 senoner 542 Communication Overview<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 senoner 542 Request/response communication method<br />
205 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 senoner 542 Result format<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 senoner 542 Subscribe/notify communication method<br />
209 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
210 senoner 542 Description for control commands<br />
211 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 senoner 542 Ignored lines and comments<br />
213 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 senoner 542 Configuring audio drivers<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 senoner 542 Getting amount of available audio output drivers<br />
217 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 senoner 542 Getting all available audio output drivers<br />
219 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 senoner 542 Getting information about a specific audio
221     output driver<br />
222 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 senoner 542 Getting information about specific audio
224     output driver parameter<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 senoner 542 Creating an audio output device<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 senoner 542 Destroying an audio output device<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 senoner 542 Getting all created audio output device count<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 senoner 542 Getting all created audio output device list<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 senoner 542 Getting current settings of an audio output device<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 senoner 542 Changing settings of audio output devices<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 senoner 542 Getting information about an audio channel<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 senoner 542 Getting information about specific audio channel parameter<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 senoner 542 Changing settings of audio output channels<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 senoner 542 Configuring MIDI input drivers<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 senoner 542 Getting amount of available MIDI input drivers<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 senoner 542 Getting all available MIDI input drivers<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 senoner 542 Getting information about a specific MIDI input driver<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 senoner 542 Getting information about specific MIDI input driver parameter<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 senoner 542 Creating a MIDI input device<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 senoner 542 Destroying a MIDI input device<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 senoner 542 Getting all created MIDI input device count<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 senoner 542 Getting all created MIDI input device list<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 senoner 542 Getting current settings of a MIDI input device<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 senoner 542 Changing settings of MIDI input devices<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 senoner 542 Getting information about a MIDI port<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 senoner 542 Getting information about specific MIDI port parameter<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 senoner 542 Changing settings of MIDI input ports<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 senoner 542 Configuring sampler channels<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 senoner 542 Loading an instrument<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 senoner 542 Loading a sampler engine<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 senoner 542 Getting all created sampler channel count<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 senoner 542 Getting all created sampler channel list<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 senoner 542 Adding a new sampler channel<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 senoner 542 Removing a sampler channel<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 senoner 542 Getting amount of available engines<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 senoner 542 Getting all available engines<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 senoner 542 Getting information about an engine<br />
291 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 senoner 542 Getting sampler channel information<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 senoner 542 Current number of active voices<br />
295 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 senoner 542 Current number of active disk streams<br />
297 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 senoner 542 Current fill state of disk stream buffers<br />
299 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 senoner 542 Setting audio output device<br />
301 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 senoner 542 Setting audio output type<br />
303 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 senoner 542 Setting audio output channel<br />
305 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 senoner 542 Setting MIDI input device<br />
307 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 senoner 542 Setting MIDI input type<br />
309 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 senoner 542 Setting MIDI input port<br />
311 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 senoner 542 Setting MIDI input channel<br />
313 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 senoner 542 Setting channel volume<br />
315 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 schoenebeck 708 Muting a sampler channel<br />
317 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 schoenebeck 708 Soloing a sampler channel<br />
319 schoenebeck 974 &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 schoenebeck 1002 &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 iliev 1137 &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 schoenebeck 1002 Altering effect send's audio routing<br />
335 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336 schoenebeck 1028 Altering effect send's MIDI controller<br />
337 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338 schoenebeck 1028 Altering effect send's send level<br />
339 iliev 1773 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.34.</a>&nbsp;
340     Sending MIDI messages to sampler channel<br />
341     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.35.</a>&nbsp;
342 senoner 542 Resetting a sampler channel<br />
343 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
344 senoner 542 Controlling connection<br />
345 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
346 senoner 542 Register front-end for receiving event messages<br />
347 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
348 senoner 542 Unregister front-end for not receiving event messages<br />
349 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
350 senoner 542 Enable or disable echo of commands<br />
351 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
352 senoner 542 Close client connection<br />
353 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
354 senoner 542 Global commands<br />
355 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
356     Current number of active voices<br />
357     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
358     Maximum amount of active voices<br />
359 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
360     Current number of active disk streams<br />
361     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
362 senoner 542 Reset sampler<br />
363 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
364 schoenebeck 575 General sampler informations<br />
365 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
366 schoenebeck 1006 Getting global volume attenuation<br />
367 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
368 schoenebeck 1006 Setting global volume attenuation<br />
369 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
370 schoenebeck 945 MIDI Instrument Mapping<br />
371 schoenebeck 1390 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
372 schoenebeck 974 Create a new MIDI instrument map<br />
373     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
374     Delete one particular or all MIDI instrument maps<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
376     Get amount of existing MIDI instrument maps<br />
377     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
378     Getting all created MIDI instrument maps<br />
379     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
380     Getting MIDI instrument map information<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
382     Renaming a MIDI instrument map<br />
383     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
384 schoenebeck 945 Create or replace a MIDI instrument map entry<br />
385 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
386 schoenebeck 945 Getting ammount of MIDI instrument map entries<br />
387 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
388     Getting indeces of all entries of a MIDI instrument map<br />
389     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
390 schoenebeck 945 Remove an entry from the MIDI instrument map<br />
391 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
392 schoenebeck 945 Get current settings of MIDI instrument map entry<br />
393 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
394 schoenebeck 945 Clear MIDI instrument map<br />
395 iliev 1162 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
396     Managing Instruments Database<br />
397     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
398     Creating a new instrument directory<br />
399     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
400     Deleting an instrument directory<br />
401     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
402     Getting amount of instrument directories<br />
403     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
404     Listing all directories in specific directory<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
406     Getting instrument directory information<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
408     Renaming an instrument directory<br />
409     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
410     Moving an instrument directory<br />
411 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
412     Copying instrument directories<br />
413     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
414 iliev 1162 Changing the description of directory<br />
415 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
416     Finding directories<br />
417     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
418 iliev 1162 Adding instruments to the instruments database<br />
419 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
420 iliev 1162 Removing an instrument<br />
421 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
422 iliev 1162 Getting amount of instruments<br />
423 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
424 iliev 1162 Listing all instruments in specific directory<br />
425 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
426 iliev 1162 Getting instrument information<br />
427 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
428 iliev 1162 Renaming an instrument<br />
429 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
430 iliev 1162 Moving an instrument<br />
431 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
432     Copying instruments<br />
433     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
434 iliev 1162 Changing the description of instrument<br />
435 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
436     Finding instruments<br />
437 iliev 1201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
438     Getting job status information<br />
439 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
440     Formatting the instruments database<br />
441 iliev 1731 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
442     Checking for lost instrument files<br />
443     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
444     Replacing an instrument file<br />
445 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
446     Editing Instruments<br />
447     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
448     Opening an appropriate instrument editor application<br />
449 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
450     Managing Files<br />
451     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
452     Retrieving amount of instruments of a file<br />
453     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
454     Retrieving all instruments of a file<br />
455     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
456     Retrieving informations about one instrument in a file<br />
457 schoenebeck 575 <a href="#command_syntax">7.</a>&nbsp;
458 senoner 542 Command Syntax<br />
459 schoenebeck 1251 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
460     Character Set and Escape Sequences<br />
461 schoenebeck 575 <a href="#events">8.</a>&nbsp;
462 senoner 542 Events<br />
463 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
464     Number of audio output devices changed<br />
465     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
466     Audio output device's settings changed<br />
467     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
468     Number of MIDI input devices changed<br />
469     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
470     MIDI input device's settings changed<br />
471     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
472 senoner 542 Number of sampler channels changed<br />
473 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
474     MIDI data on a sampler channel arrived<br />
475 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
476     MIDI data on a MIDI input device arrived<br />
477     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
478 senoner 542 Number of active voices changed<br />
479 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
480 senoner 542 Number of active disk streams changed<br />
481 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
482 senoner 542 Disk stream buffer fill state changed<br />
483 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
484 senoner 542 Channel information changed<br />
485 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
486 iliev 1110 Number of effect sends changed<br />
487 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
488 iliev 1110 Effect send information changed<br />
489 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
490 schoenebeck 940 Total number of active voices changed<br />
491 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
492 schoenebeck 1572 Total number of active disk streams changed<br />
493 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
494 iliev 992 Number of MIDI instrument maps changed<br />
495 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
496 iliev 992 MIDI instrument map information changed<br />
497 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
498 iliev 992 Number of MIDI instruments changed<br />
499 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
500 iliev 992 MIDI instrument information changed<br />
501 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
502 iliev 1110 Global settings changed<br />
503 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
504 iliev 1162 Number of database instrument directories changed<br />
505 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
506 iliev 1162 Database instrument directory information changed<br />
507 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
508 iliev 1162 Number of database instruments changed<br />
509 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
510 iliev 1162 Database instrument information changed<br />
511 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
512 iliev 1201 Database job status information changed<br />
513 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.26.</a>&nbsp;
514 senoner 542 Miscellaneous and debugging events<br />
515 schoenebeck 974 <a href="#anchor14">9.</a>&nbsp;
516 senoner 542 Security Considerations<br />
517 schoenebeck 974 <a href="#anchor15">10.</a>&nbsp;
518 senoner 542 Acknowledgments<br />
519 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
520 senoner 542 References<br />
521     <a href="#rfc.authors">&#167;</a>&nbsp;
522     Author's Address<br />
523     <a href="#rfc.copyright">&#167;</a>&nbsp;
524     Intellectual Property and Copyright Statements<br />
525     </p>
526     <br clear="all" />
527    
528     <a name="anchor1"></a><br /><hr />
529 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
530     <a name="rfc.section.1"></a><h3>1.&nbsp;
531     Requirements notation</h3>
532 senoner 542
533     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
534     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
535     and "OPTIONAL" in this document are to be interpreted as
536 schoenebeck 974 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>.
537 senoner 542 </p>
538     <p>This protocol is always case-sensitive if not explicitly
539     claimed the opposite.
540     </p>
541     <p>In examples, "C:" and "S:" indicate lines sent by the client
542     (front-end) and server (LinuxSampler) respectively. Lines in
543     examples must be interpreted as every line being CRLF
544     terminated (carriage return character followed by line feed
545 schoenebeck 1251 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>),
546     thus the following example:
547 senoner 542 </p>
548 schoenebeck 708 <p>
549     </p>
550 senoner 542 <blockquote class="text">
551     <p>C: "some line"
552     </p>
553     <p>&nbsp;&nbsp;&nbsp;"another line"
554     </p>
555 schoenebeck 708 </blockquote><p>
556 schoenebeck 940
557 schoenebeck 708 </p>
558 senoner 542 <p>must actually be interpreted as client sending the following
559     message:
560     </p>
561 schoenebeck 708 <p>
562     </p>
563 senoner 542 <blockquote class="text">
564     <p>"some line&lt;CR&gt;&lt;LF&gt;another
565     line&lt;CR&gt;&lt;LF&gt;"
566     </p>
567 schoenebeck 708 </blockquote><p>
568 schoenebeck 940
569 schoenebeck 708 </p>
570 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
571     &lt;LF&gt; the line feed character as defined in the ASCII
572     standard.
573     </p>
574     <p>Due to technical reasons, messages can arbitrary be
575     fragmented, means the following example:
576     </p>
577 schoenebeck 708 <p>
578     </p>
579 senoner 542 <blockquote class="text">
580     <p>S: "abcd"
581     </p>
582 schoenebeck 708 </blockquote><p>
583 schoenebeck 940
584 schoenebeck 708 </p>
585 senoner 542 <p>could also happen to be sent in three messages like in the
586     following sequence scenario:
587     </p>
588 schoenebeck 708 <p>
589     </p>
590 senoner 542 <ul class="text">
591     <li>server sending message "a"
592     </li>
593     <li>followed by a delay (pause) with
594     arbitrary duration
595     </li>
596     <li>followed by server sending message
597     "bcd&lt;CR&gt;"
598     </li>
599     <li>again followed by a delay (pause) with arbitrary
600     duration
601     </li>
602     <li>followed by server sending the message
603     "&lt;LF&gt;"
604     </li>
605 schoenebeck 708 </ul><p>
606 schoenebeck 940
607 schoenebeck 708 </p>
608 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
609     return and line feed characters respectively.
610     </p>
611 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
612 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
613     <a name="rfc.section.2"></a><h3>2.&nbsp;
614     Versioning of this specification</h3>
615 schoenebeck 575
616     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
617     release of the LSCP specification will be tagged with a unique version
618     tuple. The version tuple consists at least of a major and minor version
619     number like:
620 schoenebeck 940
621 schoenebeck 575 </p>
622 schoenebeck 708 <p>
623     </p>
624 schoenebeck 575 <blockquote class="text">
625     <p>"1.2"
626     </p>
627 schoenebeck 708 </blockquote><p>
628 schoenebeck 940
629 schoenebeck 708 </p>
630 schoenebeck 575 <p>
631     In this example the major version number would be "1" and the minor
632     version number would be "2". Note that the version tuple might also
633     have more than two elements. The major version number defines a
634     group of backward compatible versions. That means a frontend is
635     compatible to the connected sampler if and only if the LSCP versions
636     to which each of the two parties complies to, match both of the
637     following rules:
638 schoenebeck 940
639 schoenebeck 575 </p>
640     <p>Compatibility:
641     </p>
642 schoenebeck 708 <p>
643     </p>
644 schoenebeck 575 <ol class="text">
645     <li>The frontend's LSCP major version and the sampler's LSCP
646     major version are exactly equal.
647     </li>
648     <li>The frontend's LSCP minor version is less or equal than
649     the sampler's LSCP minor version.
650     </li>
651 schoenebeck 708 </ol><p>
652 schoenebeck 940
653 schoenebeck 708 </p>
654 schoenebeck 575 <p>
655     Compatibility can only be claimed if both rules are true.
656     The frontend can use the
657 schoenebeck 974 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
658 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
659 schoenebeck 940
660 schoenebeck 575 </p>
661 senoner 542 <a name="anchor2"></a><br /><hr />
662 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
663     <a name="rfc.section.3"></a><h3>3.&nbsp;
664     Introduction</h3>
665 senoner 542
666     <p>LinuxSampler is a so called software sampler application
667     capable to playback audio samples from a computer's Random
668     Access Memory (RAM) as well as directly streaming it from disk.
669     LinuxSampler is designed to be modular. It provides several so
670     called "sampler engines" where each engine is specialized for a
671     certain purpose. LinuxSampler has virtual channels which will be
672     referred in this document as "sampler channels". The channels
673     are in such way virtual as they can be connected to an
674     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
675     sampler channel 17 could be connected to an ALSA sequencer
676     device 64:0 and listening to MIDI channel 1 there). Each sampler
677 schoenebeck 575 channel will be associated with an instance of one of the available
678 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
679     each sampler channel can be routed to an arbitrary audio output
680     method (ALSA / JACK) and an arbitrary audio output channel
681     there.
682     </p>
683     <a name="anchor3"></a><br /><hr />
684 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
685     <a name="rfc.section.4"></a><h3>4.&nbsp;
686     Focus of this protocol</h3>
687 senoner 542
688     <p>Main focus of this protocol is to provide a way to configure
689     a running LinuxSampler instance and to retrieve information
690     about it. The focus of this protocol is not to provide a way to
691     control synthesis parameters or even to trigger or release
692     notes. Or in other words; the focus are those functionalities
693     which are not covered by MIDI or which may at most be handled
694     via MIDI System Exclusive Messages.
695     </p>
696     <a name="anchor4"></a><br /><hr />
697 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
698     <a name="rfc.section.5"></a><h3>5.&nbsp;
699     Communication Overview</h3>
700 senoner 542
701     <p>There are two distinct methods of communication between a
702     running instance of LinuxSampler and one or more control
703     applications, so called "front-ends": a simple request/response
704     communication method used by the clients to give commands to the
705     server as well as to inquire about server's status and a
706     subscribe/notify communication method used by the client to
707     subscribe to and receive notifications of certain events as they
708     happen on the server. The latter needs more effort to be
709     implemented in the front-end application. The two communication
710     methods will be described next.
711     </p>
712 schoenebeck 940 <a name="anchor5"></a><br /><hr />
713 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
714     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
715     Request/response communication method</h3>
716 senoner 542
717 schoenebeck 575 <p>This simple communication method is based on
718 schoenebeck 974 <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
719 senoner 542 front-end application establishes a TCP connection to the
720     LinuxSampler instance on a certain host system. Then the
721     front-end application will send certain ASCII based commands
722     as defined in this document (every command line must be CRLF
723     terminated - see "Conventions used in this document" at the
724     beginning of this document) and the LinuxSampler application
725     will response after a certain process time with an
726     appropriate ASCII based answer, also as defined in this
727     document. So this TCP communication is simply based on query
728     and answer paradigm. That way LinuxSampler is only able to
729     answer on queries from front-ends, but not able to
730     automatically send messages to the client if it's not asked
731     to. The fronted should not reconnect to LinuxSampler for
732     every single command, instead it should keep the connection
733     established and simply resend message(s) for subsequent
734     commands. To keep information in the front-end up-to-date
735     the front-end has to periodically send new requests to get
736     the current information from the LinuxSampler instance. This
737     is often referred to as "polling". While polling is simple
738     to implement and may be OK to use in some cases, there may
739     be disadvantages to polling such as network traffic overhead
740     and information being out of date.
741     It is possible for a client or several clients to open more
742     than one connection to the server at the same time. It is
743     also possible to send more than one request to the server
744     at the same time but if those requests are sent over the
745     same connection server MUST execute them sequentially. Upon
746     executing a request server will produce a result set and
747     send it to the client. Each and every request made by the
748     client MUST result in a result set being sent back to the
749     client. No other data other than a result set may be sent by
750     a server to a client. No result set may be sent to a client
751     without the client sending request to the server first. On
752     any particular connection, result sets MUST be sent in their
753     entirety without being interrupted by other result sets. If
754     several requests got queued up at the server they MUST be
755     processed in the order they were received and result sets
756     MUST be sent back in the same order.
757     </p>
758 schoenebeck 940 <a name="anchor6"></a><br /><hr />
759 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
760     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
761     Result format</h3>
762 senoner 542
763     <p>Result set could be one of the following types:
764     </p>
765 schoenebeck 708 <p>
766     </p>
767 senoner 542 <ol class="text">
768     <li>Normal
769     </li>
770     <li>Warning
771     </li>
772     <li>Error
773     </li>
774 schoenebeck 708 </ol><p>
775 schoenebeck 940
776 schoenebeck 708 </p>
777 senoner 542 <p>Warning and Error result sets MUST be single line and
778     have the following format:
779     </p>
780 schoenebeck 708 <p>
781     </p>
782 senoner 542 <ul class="text">
783     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
784     </li>
785     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
786     </li>
787 schoenebeck 708 </ul><p>
788 schoenebeck 940
789 schoenebeck 708 </p>
790 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
791     numeric unique identifiers of the warning or error and
792     &lt;warning-message&gt; and &lt;error-message&gt; are
793     human readable descriptions of the warning or error
794     respectively.
795     </p>
796     <p>Examples:
797     </p>
798 schoenebeck 708 <p>
799     </p>
800 senoner 542 <blockquote class="text">
801     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
802     </p>
803     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
804     </p>
805 schoenebeck 708 </blockquote><p>
806 schoenebeck 940
807 schoenebeck 708 </p>
808     <p>
809     </p>
810 senoner 542 <blockquote class="text">
811     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
812     </p>
813     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
814     </p>
815 schoenebeck 708 </blockquote><p>
816 schoenebeck 940
817 schoenebeck 708 </p>
818     <p>
819     </p>
820 senoner 542 <blockquote class="text">
821     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
822     </p>
823     <p>S: "ERR:9:There is no audio output device with index 123456."
824     </p>
825 schoenebeck 708 </blockquote><p>
826 schoenebeck 940
827 schoenebeck 708 </p>
828 senoner 542 <p>Normal result sets could be:
829     </p>
830 schoenebeck 708 <p>
831     </p>
832 senoner 542 <ol class="text">
833     <li>Empty
834     </li>
835     <li>Single line
836     </li>
837     <li>Multi-line
838     </li>
839 schoenebeck 708 </ol><p>
840 schoenebeck 940
841 schoenebeck 708 </p>
842 senoner 542 <p> Empty result set is issued when the server only
843     needed to acknowledge the fact that the request was
844     received and it was processed successfully and no
845     additional information is available. This result set has
846     the following format:
847     </p>
848 schoenebeck 708 <p>
849     </p>
850 senoner 542 <blockquote class="text">
851     <p>"OK"
852     </p>
853 schoenebeck 708 </blockquote><p>
854 schoenebeck 940
855 schoenebeck 708 </p>
856 senoner 542 <p>Example:
857     </p>
858 schoenebeck 708 <p>
859     </p>
860 senoner 542 <blockquote class="text">
861     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
862     </p>
863     <p>S: "OK"
864     </p>
865 schoenebeck 708 </blockquote><p>
866 schoenebeck 940
867 schoenebeck 708 </p>
868 senoner 542 <p>Single line result sets are command specific. One
869     example of a single line result set is an empty line.
870     Multi-line result sets are command specific and may
871     include one or more lines of information. They MUST
872     always end with the following line:
873     </p>
874 schoenebeck 708 <p>
875     </p>
876 senoner 542 <blockquote class="text">
877     <p>"."
878     </p>
879 schoenebeck 708 </blockquote><p>
880 schoenebeck 940
881 schoenebeck 708 </p>
882 senoner 542 <p>Example:
883     </p>
884 schoenebeck 708 <p>
885     </p>
886 senoner 542 <blockquote class="text">
887     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
888     </p>
889     <p>S: "DRIVER: ALSA"
890     </p>
891     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
892     </p>
893     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
894     </p>
895     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
896     </p>
897     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
898     </p>
899     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
900     </p>
901     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
902     </p>
903     <p>&nbsp;&nbsp;&nbsp;"."
904     </p>
905 schoenebeck 708 </blockquote><p>
906 schoenebeck 940
907 schoenebeck 708 </p>
908 senoner 542 <p>In addition to above mentioned formats, warnings and
909     empty result sets MAY be indexed. In this case, they
910     have the following formats respectively:
911     </p>
912 schoenebeck 708 <p>
913     </p>
914 senoner 542 <ul class="text">
915     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
916     </li>
917     <li>"OK[&lt;index&gt;]"
918     </li>
919 schoenebeck 708 </ul><p>
920 schoenebeck 940
921 schoenebeck 708 </p>
922 senoner 542 <p>where &lt;index&gt; is command specific and is used
923     to indicate channel number that the result set was
924     related to or other integer value.
925     </p>
926     <p>Each line of the result set MUST end with
927     &lt;CRLF&gt;.
928     </p>
929     <p>Examples:
930     </p>
931 schoenebeck 708 <p>
932     </p>
933 senoner 542 <blockquote class="text">
934     <p>C: "ADD CHANNEL"
935     </p>
936     <p>S: "OK[12]"
937     </p>
938 schoenebeck 708 </blockquote><p>
939 schoenebeck 940
940 schoenebeck 708 </p>
941     <p>
942     </p>
943 senoner 542 <blockquote class="text">
944     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
945     </p>
946     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
947     </p>
948 schoenebeck 708 </blockquote><p>
949 schoenebeck 940
950 schoenebeck 708 </p>
951 schoenebeck 940 <a name="anchor7"></a><br /><hr />
952 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
953     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
954     Subscribe/notify communication method</h3>
955 senoner 542
956     <p>This more sophisticated communication method is actually
957     only an extension of the simple request/response
958     communication method. The front-end still uses a TCP
959     connection and sends the same commands on the TCP
960     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
961     commands that allow a client to tell the server that it is
962     interested in receiving notifications about certain events
963     as they happen on the server. The SUBSCRIBE command has the
964     following syntax:
965     </p>
966 schoenebeck 708 <p>
967     </p>
968 senoner 542 <blockquote class="text">
969     <p>SUBSCRIBE &lt;event-id&gt;
970     </p>
971 schoenebeck 708 </blockquote><p>
972 schoenebeck 940
973 schoenebeck 708 </p>
974 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
975     event that client wants to subscribe to. Upon receiving such
976     request, server SHOULD respond with OK and start sending
977     EVENT notifications when a given even has occurred to the
978     front-end when an event has occurred. It MAY be possible
979     certain events may be sent before OK response during real
980     time nature of their generation. Event messages have the
981     following format:
982     </p>
983 schoenebeck 708 <p>
984     </p>
985 senoner 542 <blockquote class="text">
986     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
987     </p>
988 schoenebeck 708 </blockquote><p>
989 schoenebeck 940
990 schoenebeck 708 </p>
991 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
992     has occurred and &lt;custom-event-data&gt; is event
993     specific.
994     </p>
995     <p>Several rules must be followed by the server when
996     generating events:
997     </p>
998 schoenebeck 708 <p>
999     </p>
1000 senoner 542 <ol class="text">
1001     <li>Events MUST NOT be sent to any client who has not
1002     issued an appropriate SUBSCRIBE command.
1003     </li>
1004     <li>Events MUST only be sent using the same
1005     connection that was used to subscribe to them.
1006     </li>
1007     <li>When response is being sent to the client, event
1008     MUST be inserted in the stream before or after the
1009     response, but NOT in the middle. Same is true about
1010     the response. It should never be inserted in the
1011     middle of the event message as well as any other
1012     response.
1013     </li>
1014 schoenebeck 708 </ol><p>
1015 schoenebeck 940
1016 schoenebeck 708 </p>
1017 senoner 542 <p>If the client is not interested in a particular event
1018     anymore it MAY issue UNSUBSCRIBE command using the following
1019     syntax:
1020     </p>
1021 schoenebeck 708 <p>
1022     </p>
1023 senoner 542 <blockquote class="text">
1024     <p>UNSUBSCRIBE &lt;event-id&gt;
1025     </p>
1026 schoenebeck 708 </blockquote><p>
1027 schoenebeck 940
1028 schoenebeck 708 </p>
1029 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
1030     event that client is no longer interested in receiving. For
1031 schoenebeck 974 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1032 senoner 542 </p>
1033     <p>Example: the fill states of disk stream buffers have
1034     changed on sampler channel 4 and the LinuxSampler instance
1035     will react by sending the following message to all clients
1036     who subscribed to this event:
1037     </p>
1038 schoenebeck 708 <p>
1039     </p>
1040 senoner 542 <blockquote class="text">
1041     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1042     </p>
1043 schoenebeck 708 </blockquote><p>
1044 schoenebeck 940
1045 schoenebeck 708 </p>
1046 senoner 542 <p>Which means there are currently three active streams on
1047     sampler channel 4, where the stream with ID "35" is filled
1048     by 62%, stream with ID 33 is filled by 80% and stream with
1049     ID 37 is filled by 98%.
1050     </p>
1051     <p>Clients may choose to open more than one connection to
1052     the server and use some connections to receive notifications
1053     while using other connections to issue commands to the
1054     back-end. This is entirely legal and up to the
1055     implementation. This does not change the protocol in any way
1056     and no special restrictions exist on the server to allow or
1057     disallow this or to track what connections belong to what
1058     front-ends. Server will listen on a single port, accept
1059     multiple connections and support protocol described in this
1060     specification in it's entirety on this single port on each
1061     connection that it accepted.
1062     </p>
1063     <p>Due to the fact that TCP is used for this communication,
1064     dead peers will be detected automatically by the OS TCP
1065     stack. While it may take a while to detect dead peers if no
1066     traffic is being sent from server to client (TCP keep-alive
1067     timer is set to 2 hours on many OSes) it will not be an
1068     issue here as when notifications are sent by the server,
1069     dead client will be detected quickly.
1070     </p>
1071     <p>When connection is closed for any reason server MUST
1072     forget all subscriptions that were made on this connection.
1073     If client reconnects it MUST resubscribe to all events that
1074     it wants to receive.
1075     </p>
1076 schoenebeck 575 <a name="control_commands"></a><br /><hr />
1077 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1078     <a name="rfc.section.6"></a><h3>6.&nbsp;
1079     Description for control commands</h3>
1080 senoner 542
1081     <p>This chapter will describe the available control commands
1082     that can be sent on the TCP connection in detail. Some certain
1083 schoenebeck 974 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>
1084     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
1085 senoner 542 multiple-line responses. In this case LinuxSampler signals the
1086     end of the response by a "." (single dot) line.
1087     </p>
1088 schoenebeck 940 <a name="anchor8"></a><br /><hr />
1089 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1090     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1091     Ignored lines and comments</h3>
1092 senoner 542
1093     <p>White lines, that is lines which only contain space and
1094     tabulator characters, and lines that start with a "#"
1095     character are ignored, thus it's possible for example to
1096     group commands and to place comments in a LSCP script
1097     file.
1098     </p>
1099 schoenebeck 940 <a name="anchor9"></a><br /><hr />
1100 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1101     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1102     Configuring audio drivers</h3>
1103 senoner 542
1104     <p>Instances of drivers in LinuxSampler are called devices.
1105     You can use multiple audio devices simultaneously, e.g. to
1106     output the sound of one sampler channel using the ALSA audio
1107     output driver, and on another sampler channel you might want
1108     to use the JACK audio output driver. For particular audio
1109     output systems it's also possible to create several devices
1110     of the same audio output driver, e.g. two separate ALSA
1111     audio output devices for using two different sound cards at
1112     the same time. This chapter describes all commands to
1113     configure LinuxSampler's audio output devices and their
1114     parameters.
1115     </p>
1116     <p>Instead of defining commands and parameters for each
1117     driver individually, all possible parameters, their meanings
1118     and possible values have to be obtained at runtime. This
1119     makes the protocol a bit abstract, but has the advantage,
1120     that front-ends can be written independently of what drivers
1121     are currently implemented and what parameters these drivers
1122     are actually offering. This means front-ends can even handle
1123     drivers which are implemented somewhere in future without
1124     modifying the front-end at all.
1125     </p>
1126     <p>Note: examples in this chapter showing particular
1127     parameters of drivers are not meant as specification of the
1128     drivers' parameters. Driver implementations in LinuxSampler
1129     might have complete different parameter names and meanings
1130     than shown in these examples or might change in future, so
1131     these examples are only meant for showing how to retrieve
1132     what parameters drivers are offering, how to retrieve their
1133     possible values, etc.
1134     </p>
1135 schoenebeck 940 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1136 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1137     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1138     Getting amount of available audio output drivers</h3>
1139 senoner 542
1140     <p>Use the following command to get the number of
1141     audio output drivers currently available for the
1142     LinuxSampler instance:
1143     </p>
1144 schoenebeck 708 <p>
1145     </p>
1146 senoner 542 <blockquote class="text">
1147     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1148     </p>
1149 schoenebeck 708 </blockquote><p>
1150 schoenebeck 940
1151 schoenebeck 708 </p>
1152 senoner 542 <p>Possible Answers:
1153     </p>
1154 schoenebeck 708 <p>
1155     </p>
1156 senoner 542 <blockquote class="text">
1157     <p>LinuxSampler will answer by sending the
1158     number of audio output drivers.
1159     </p>
1160 schoenebeck 708 </blockquote><p>
1161 schoenebeck 940
1162 schoenebeck 708 </p>
1163 senoner 542 <p>Example:
1164     </p>
1165 schoenebeck 708 <p>
1166     </p>
1167 senoner 542 <blockquote class="text">
1168     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1169     </p>
1170     <p>S: "2"
1171     </p>
1172 schoenebeck 708 </blockquote><p>
1173 schoenebeck 940
1174 schoenebeck 708 </p>
1175 schoenebeck 940 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1176 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1177     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1178     Getting all available audio output drivers</h3>
1179 senoner 542
1180     <p>Use the following command to list all audio output
1181     drivers currently available for the LinuxSampler
1182     instance:
1183     </p>
1184 schoenebeck 708 <p>
1185     </p>
1186 senoner 542 <blockquote class="text">
1187     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1188     </p>
1189 schoenebeck 708 </blockquote><p>
1190 schoenebeck 940
1191 schoenebeck 708 </p>
1192 senoner 542 <p>Possible Answers:
1193     </p>
1194 schoenebeck 708 <p>
1195     </p>
1196 senoner 542 <blockquote class="text">
1197     <p>LinuxSampler will answer by sending comma
1198     separated character strings, each symbolizing an
1199     audio output driver.
1200     </p>
1201 schoenebeck 708 </blockquote><p>
1202 schoenebeck 940
1203 schoenebeck 708 </p>
1204 senoner 542 <p>Example:
1205     </p>
1206 schoenebeck 708 <p>
1207     </p>
1208 senoner 542 <blockquote class="text">
1209     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1210     </p>
1211     <p>S: "ALSA,JACK"
1212     </p>
1213 schoenebeck 708 </blockquote><p>
1214 schoenebeck 940
1215 schoenebeck 708 </p>
1216 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1217 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1218     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1219     Getting information about a specific audio
1220 schoenebeck 940 output driver</h3>
1221 senoner 542
1222     <p>Use the following command to get detailed information
1223     about a specific audio output driver:
1224     </p>
1225 schoenebeck 708 <p>
1226     </p>
1227 senoner 542 <blockquote class="text">
1228     <p>GET AUDIO_OUTPUT_DRIVER INFO
1229     &lt;audio-output-driver&gt;
1230     </p>
1231 schoenebeck 708 </blockquote><p>
1232 schoenebeck 940
1233 schoenebeck 708 </p>
1234 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1235     audio output driver, returned by the
1236 schoenebeck 974 <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.
1237 senoner 542 </p>
1238     <p>Possible Answers:
1239     </p>
1240 schoenebeck 708 <p>
1241     </p>
1242 senoner 542 <blockquote class="text">
1243     <p>LinuxSampler will answer by sending a
1244     &lt;CRLF&gt; separated list. Each answer line
1245     begins with the information category name
1246     followed by a colon and then a space character
1247     &lt;SP&gt; and finally the info character string
1248     to that info category. At the moment the
1249     following information categories are
1250     defined:
1251     </p>
1252 schoenebeck 708 <p>
1253     </p>
1254 senoner 542 <blockquote class="text">
1255     <p>DESCRIPTION -
1256     </p>
1257     <blockquote class="text">
1258     <p> character string describing the
1259     audio output driver
1260     </p>
1261 schoenebeck 940 </blockquote>
1262    
1263 senoner 542
1264     <p>VERSION -
1265     </p>
1266     <blockquote class="text">
1267     <p>character string reflecting the
1268     driver's version
1269     </p>
1270 schoenebeck 940 </blockquote>
1271    
1272 senoner 542
1273     <p>PARAMETERS -
1274     </p>
1275     <blockquote class="text">
1276     <p>comma separated list of all
1277     parameters available for the given
1278     audio output driver, at least
1279     parameters 'channels', 'samplerate'
1280     and 'active' are offered by all audio
1281     output drivers
1282     </p>
1283 schoenebeck 940 </blockquote>
1284    
1285 senoner 542
1286 schoenebeck 940 </blockquote>
1287    
1288 senoner 542
1289     <p>The mentioned fields above don't have to be
1290     in particular order.
1291     </p>
1292 schoenebeck 708 </blockquote><p>
1293 schoenebeck 940
1294 schoenebeck 708 </p>
1295 senoner 542 <p>Example:
1296     </p>
1297 schoenebeck 708 <p>
1298     </p>
1299 senoner 542 <blockquote class="text">
1300     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1301     </p>
1302     <p>S: "DESCRIPTION: Advanced Linux Sound
1303     Architecture"
1304     </p>
1305     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1306     </p>
1307     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1308     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1309     FRAGMENTSIZE,CARD"
1310     </p>
1311     <p>&nbsp;&nbsp;&nbsp;"."
1312     </p>
1313 schoenebeck 708 </blockquote><p>
1314 schoenebeck 940
1315 schoenebeck 708 </p>
1316 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1317 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1318     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1319     Getting information about specific audio
1320 schoenebeck 940 output driver parameter</h3>
1321 senoner 542
1322     <p>Use the following command to get detailed information
1323     about a specific audio output driver parameter:
1324     </p>
1325 schoenebeck 708 <p>
1326     </p>
1327 senoner 542 <blockquote class="text">
1328     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1329     </p>
1330 schoenebeck 708 </blockquote><p>
1331 schoenebeck 940
1332 schoenebeck 708 </p>
1333 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1334 schoenebeck 974 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,
1335 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1336     obtained (as returned by the
1337 schoenebeck 974 <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
1338 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1339     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1340     pairs in form of "key1=val1 key2=val2 ...", where character string values
1341     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1342     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1343     the front-end application can simply put all parameters into &lt;deplist&gt;
1344     with the values already selected by the user.
1345     </p>
1346     <p>Possible Answers:
1347     </p>
1348 schoenebeck 708 <p>
1349     </p>
1350 senoner 542 <blockquote class="text">
1351     <p>LinuxSampler will answer by sending a
1352     &lt;CRLF&gt; separated list.
1353     Each answer line begins with the information category name
1354     followed by a colon and then a space character &lt;SP&gt; and
1355     finally
1356     the info character string to that info category. There are
1357     information which is always returned, independently of the
1358     given driver parameter and there are optional information
1359     which is only shown dependently to given driver parameter. At
1360     the moment the following information categories are defined:
1361     </p>
1362 schoenebeck 708 </blockquote><p>
1363 schoenebeck 940
1364 schoenebeck 708 </p>
1365     <p>
1366     </p>
1367 senoner 542 <blockquote class="text">
1368     <p>TYPE -
1369     </p>
1370     <blockquote class="text">
1371     <p>either "BOOL" for boolean value(s) or
1372     "INT" for integer
1373     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1374     character string(s)
1375     (always returned, no matter which driver parameter)
1376     </p>
1377 schoenebeck 940 </blockquote>
1378    
1379 senoner 542
1380     <p>DESCRIPTION -
1381     </p>
1382     <blockquote class="text">
1383     <p>arbitrary text describing the purpose of the parameter
1384     (always returned, no matter which driver parameter)
1385     </p>
1386 schoenebeck 940 </blockquote>
1387    
1388 senoner 542
1389     <p>MANDATORY -
1390     </p>
1391     <blockquote class="text">
1392     <p>either true or false, defines if this parameter must be
1393     given when the device is to be created with the
1394 schoenebeck 974 <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>
1395 senoner 542 command (always returned, no matter which driver parameter)
1396     </p>
1397 schoenebeck 940 </blockquote>
1398    
1399 senoner 542
1400     <p>FIX -
1401     </p>
1402     <blockquote class="text">
1403     <p>either true or false, if false then this parameter can
1404     be changed at any time, once the device is created by
1405 schoenebeck 974 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>
1406 senoner 542 command (always returned, no matter which driver parameter)
1407     </p>
1408 schoenebeck 940 </blockquote>
1409    
1410 senoner 542
1411     <p>MULTIPLICITY -
1412     </p>
1413     <blockquote class="text">
1414     <p>either true or false, defines if this parameter allows
1415     only one value or a list of values, where true means
1416     multiple values and false only a single value allowed
1417     (always returned, no matter which driver parameter)
1418     </p>
1419 schoenebeck 940 </blockquote>
1420    
1421 senoner 542
1422     <p>DEPENDS -
1423     </p>
1424     <blockquote class="text">
1425 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1426 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1427     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1428     listed parameters, for example assuming that an audio
1429     driver (like the ALSA driver) offers parameters 'card'
1430     and 'samplerate' then parameter 'samplerate' would
1431     depend on 'card' because the possible values for
1432     'samplerate' depends on the sound card which can be
1433     chosen by the 'card' parameter
1434     (optionally returned, dependent to driver parameter)
1435     </p>
1436 schoenebeck 940 </blockquote>
1437    
1438 senoner 542
1439     <p>DEFAULT -
1440     </p>
1441     <blockquote class="text">
1442     <p>reflects the default value for this parameter which is
1443     used when the device is created and not explicitly
1444 schoenebeck 974 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,
1445 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1446     list, that's why character strings are encapsulated into
1447     apostrophes (')
1448     (optionally returned, dependent to driver parameter)
1449     </p>
1450 schoenebeck 940 </blockquote>
1451    
1452 senoner 542
1453     <p>RANGE_MIN -
1454     </p>
1455     <blockquote class="text">
1456     <p>defines lower limit of the allowed value range for this
1457     parameter, can be an integer value as well as a dotted
1458     number, this parameter is often used in conjunction
1459     with RANGE_MAX, but may also appear without
1460     (optionally returned, dependent to driver parameter)
1461     </p>
1462 schoenebeck 940 </blockquote>
1463    
1464 senoner 542
1465     <p>RANGE_MAX -
1466     </p>
1467     <blockquote class="text">
1468     <p>defines upper limit of the allowed value range for this
1469     parameter, can be an integer value as well as a dotted
1470     number, this parameter is often used in conjunction with
1471     RANGE_MIN, but may also appear without
1472     (optionally returned, dependent to driver parameter)
1473     </p>
1474 schoenebeck 940 </blockquote>
1475    
1476 senoner 542
1477     <p>POSSIBILITIES -
1478     </p>
1479     <blockquote class="text">
1480     <p>comma separated list of possible values for this
1481     parameter, character strings are encapsulated into
1482     apostrophes
1483     (optionally returned, dependent to driver parameter)
1484     </p>
1485 schoenebeck 940 </blockquote>
1486    
1487 senoner 542
1488 schoenebeck 708 </blockquote><p>
1489 schoenebeck 940
1490 schoenebeck 708 </p>
1491 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1492     </p>
1493     <p>Examples:
1494     </p>
1495 schoenebeck 708 <p>
1496     </p>
1497 senoner 542 <blockquote class="text">
1498     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1499     </p>
1500     <p>S: "DESCRIPTION: sound card to be used"
1501     </p>
1502     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1503     </p>
1504     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1505     </p>
1506     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1507     </p>
1508     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1509     </p>
1510     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1511     </p>
1512     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1513     </p>
1514     <p>&nbsp;&nbsp;&nbsp;"."
1515     </p>
1516 schoenebeck 708 </blockquote><p>
1517 schoenebeck 940
1518 schoenebeck 708 </p>
1519     <p>
1520     </p>
1521 senoner 542 <blockquote class="text">
1522     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1523     </p>
1524     <p>S: "DESCRIPTION: output sample rate in Hz"
1525     </p>
1526     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1527     </p>
1528     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1529     </p>
1530     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1531     </p>
1532     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1533     </p>
1534     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1535     </p>
1536     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1537     </p>
1538     <p>&nbsp;&nbsp;&nbsp;"."
1539     </p>
1540 schoenebeck 708 </blockquote><p>
1541 schoenebeck 940
1542 schoenebeck 708 </p>
1543     <p>
1544     </p>
1545 senoner 542 <blockquote class="text">
1546     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1547     </p>
1548     <p>S: "DESCRIPTION: output sample rate in Hz"
1549     </p>
1550     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1551     </p>
1552     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1553     </p>
1554     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1555     </p>
1556     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1557     </p>
1558     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1559     </p>
1560     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1561     </p>
1562     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1563     </p>
1564     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1565     </p>
1566     <p>&nbsp;&nbsp;&nbsp;"."
1567     </p>
1568 schoenebeck 708 </blockquote><p>
1569 schoenebeck 940
1570 schoenebeck 708 </p>
1571 schoenebeck 940 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1572 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1573     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1574     Creating an audio output device</h3>
1575 senoner 542
1576     <p>Use the following command to create a new audio output device for the desired audio output system:
1577     </p>
1578 schoenebeck 708 <p>
1579     </p>
1580 senoner 542 <blockquote class="text">
1581     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1582     </p>
1583 schoenebeck 708 </blockquote><p>
1584 schoenebeck 940
1585 schoenebeck 708 </p>
1586 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1587 schoenebeck 575 output system as returned by the
1588 schoenebeck 974 <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>
1589 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1590 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1591     character string values should be encapsulated into apostrophes (').
1592     Note that there might be drivers which require parameter(s) to be
1593     given with this command. Use the previously described commands in
1594     this chapter to get this information.
1595     </p>
1596     <p>Possible Answers:
1597     </p>
1598 schoenebeck 708 <p>
1599     </p>
1600 senoner 542 <blockquote class="text">
1601     <p>"OK[&lt;device-id&gt;]" -
1602     </p>
1603     <blockquote class="text">
1604     <p>in case the device was successfully created, where
1605     &lt;device-id&gt; is the numerical ID of the new device
1606     </p>
1607 schoenebeck 940 </blockquote>
1608    
1609 senoner 542
1610     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1611     </p>
1612     <blockquote class="text">
1613     <p>in case the device was created successfully, where
1614     &lt;device-id&gt; is the numerical ID of the new device, but there
1615     are noteworthy issue(s) related (e.g. sound card doesn't
1616     support given hardware parameters and the driver is using
1617     fall-back values), providing an appropriate warning code and
1618     warning message
1619     </p>
1620 schoenebeck 940 </blockquote>
1621    
1622 senoner 542
1623     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1624     </p>
1625     <blockquote class="text">
1626     <p>in case it failed, providing an appropriate error code and error message
1627     </p>
1628 schoenebeck 940 </blockquote>
1629    
1630 senoner 542
1631 schoenebeck 708 </blockquote><p>
1632 schoenebeck 940
1633 schoenebeck 708 </p>
1634 senoner 542 <p>Examples:
1635     </p>
1636 schoenebeck 708 <p>
1637     </p>
1638 senoner 542 <blockquote class="text">
1639     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1640     </p>
1641     <p>S: "OK[0]"
1642     </p>
1643 schoenebeck 708 </blockquote><p>
1644 schoenebeck 940
1645 schoenebeck 708 </p>
1646     <p>
1647     </p>
1648 senoner 542 <blockquote class="text">
1649     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1650     </p>
1651     <p>S: "OK[1]"
1652     </p>
1653 schoenebeck 708 </blockquote><p>
1654 schoenebeck 940
1655 schoenebeck 708 </p>
1656 schoenebeck 940 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1657 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1658     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1659     Destroying an audio output device</h3>
1660 senoner 542
1661     <p>Use the following command to destroy a created output device:
1662     </p>
1663 schoenebeck 708 <p>
1664     </p>
1665 senoner 542 <blockquote class="text">
1666     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1667     </p>
1668 schoenebeck 708 </blockquote><p>
1669 schoenebeck 940
1670 schoenebeck 708 </p>
1671 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1672     audio output device as given by the
1673 schoenebeck 974 <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>
1674     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>
1675 senoner 542 command.
1676     </p>
1677     <p>Possible Answers:
1678     </p>
1679 schoenebeck 708 <p>
1680     </p>
1681 senoner 542 <blockquote class="text">
1682     <p>"OK" -
1683     </p>
1684     <blockquote class="text">
1685     <p>in case the device was successfully destroyed
1686     </p>
1687 schoenebeck 940 </blockquote>
1688    
1689 senoner 542
1690     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1691     </p>
1692     <blockquote class="text">
1693     <p>in case the device was destroyed successfully, but there are
1694     noteworthy issue(s) related (e.g. an audio over ethernet
1695     driver was unloaded but the other host might not be
1696     informed about this situation), providing an appropriate
1697     warning code and warning message
1698     </p>
1699 schoenebeck 940 </blockquote>
1700    
1701 senoner 542
1702     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1703     </p>
1704     <blockquote class="text">
1705     <p>in case it failed, providing an appropriate error code and
1706     error message
1707     </p>
1708 schoenebeck 940 </blockquote>
1709    
1710 senoner 542
1711 schoenebeck 708 </blockquote><p>
1712 schoenebeck 940
1713 schoenebeck 708 </p>
1714 senoner 542 <p>Example:
1715     </p>
1716 schoenebeck 708 <p>
1717     </p>
1718 senoner 542 <blockquote class="text">
1719     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1720     </p>
1721     <p>S: "OK"
1722     </p>
1723 schoenebeck 708 </blockquote><p>
1724 schoenebeck 940
1725 schoenebeck 708 </p>
1726 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1727 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1728     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1729     Getting all created audio output device count</h3>
1730 senoner 542
1731     <p>Use the following command to count all created audio output devices:
1732     </p>
1733 schoenebeck 708 <p>
1734     </p>
1735 senoner 542 <blockquote class="text">
1736     <p>GET AUDIO_OUTPUT_DEVICES
1737     </p>
1738 schoenebeck 708 </blockquote><p>
1739 schoenebeck 940
1740 schoenebeck 708 </p>
1741 senoner 542 <p>Possible Answers:
1742     </p>
1743 schoenebeck 708 <p>
1744     </p>
1745 senoner 542 <blockquote class="text">
1746     <p>LinuxSampler will answer by sending the current number of all
1747     audio output devices.
1748     </p>
1749 schoenebeck 708 </blockquote><p>
1750 schoenebeck 940
1751 schoenebeck 708 </p>
1752 senoner 542 <p>Example:
1753     </p>
1754 schoenebeck 708 <p>
1755     </p>
1756 senoner 542 <blockquote class="text">
1757     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1758     </p>
1759     <p>S: "4"
1760     </p>
1761 schoenebeck 708 </blockquote><p>
1762 schoenebeck 940
1763 schoenebeck 708 </p>
1764 schoenebeck 940 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1765 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1766     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1767     Getting all created audio output device list</h3>
1768 senoner 542
1769     <p>Use the following command to list all created audio output devices:
1770     </p>
1771 schoenebeck 708 <p>
1772     </p>
1773 senoner 542 <blockquote class="text">
1774     <p>LIST AUDIO_OUTPUT_DEVICES
1775     </p>
1776 schoenebeck 708 </blockquote><p>
1777 schoenebeck 940
1778 schoenebeck 708 </p>
1779 senoner 542 <p>Possible Answers:
1780     </p>
1781 schoenebeck 708 <p>
1782     </p>
1783 senoner 542 <blockquote class="text">
1784     <p>LinuxSampler will answer by sending a comma separated list with
1785     the numerical IDs of all audio output devices.
1786     </p>
1787 schoenebeck 708 </blockquote><p>
1788 schoenebeck 940
1789 schoenebeck 708 </p>
1790 senoner 542 <p>Example:
1791     </p>
1792 schoenebeck 708 <p>
1793     </p>
1794 senoner 542 <blockquote class="text">
1795     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1796     </p>
1797     <p>S: "0,1,4,5"
1798     </p>
1799 schoenebeck 708 </blockquote><p>
1800 schoenebeck 940
1801 schoenebeck 708 </p>
1802 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1803 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1804     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1805     Getting current settings of an audio output device</h3>
1806 senoner 542
1807     <p>Use the following command to get current settings of a specific, created audio output device:
1808     </p>
1809 schoenebeck 708 <p>
1810     </p>
1811 senoner 542 <blockquote class="text">
1812     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1813     </p>
1814 schoenebeck 708 </blockquote><p>
1815 schoenebeck 940
1816 schoenebeck 708 </p>
1817 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1818     of the audio output device as e.g. returned by the
1819 schoenebeck 974 <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.
1820 senoner 542 </p>
1821     <p>Possible Answers:
1822     </p>
1823     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1824     Each answer line begins with the information category name
1825     followed by a colon and then a space character &lt;SP&gt; and finally
1826     the info character string to that info category. As some
1827     parameters might allow multiple values, character strings are
1828     encapsulated into apostrophes ('). At the moment the following
1829     information categories are defined (independently of device):
1830     </p>
1831 schoenebeck 708 <p>
1832     </p>
1833 senoner 542 <blockquote class="text">
1834     <p>DRIVER -
1835     </p>
1836     <blockquote class="text">
1837     <p>identifier of the used audio output driver, as also
1838     returned by the
1839 schoenebeck 974 <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>
1840 senoner 542 command
1841     </p>
1842 schoenebeck 940 </blockquote>
1843    
1844 senoner 542
1845     <p>CHANNELS -
1846     </p>
1847     <blockquote class="text">
1848     <p>amount of audio output channels this device currently
1849     offers
1850     </p>
1851 schoenebeck 940 </blockquote>
1852    
1853 senoner 542
1854     <p>SAMPLERATE -
1855     </p>
1856     <blockquote class="text">
1857     <p>playback sample rate the device uses
1858     </p>
1859 schoenebeck 940 </blockquote>
1860    
1861 senoner 542
1862     <p>ACTIVE -
1863     </p>
1864     <blockquote class="text">
1865     <p>either true or false, if false then the audio device is
1866     inactive and doesn't output any sound, nor do the
1867     sampler channels connected to this audio device render
1868     any audio
1869     </p>
1870 schoenebeck 940 </blockquote>
1871    
1872 senoner 542
1873 schoenebeck 708 </blockquote><p>
1874 schoenebeck 940
1875 schoenebeck 708 </p>
1876 senoner 542 <p>The mentioned fields above don't have to be in particular
1877     order. The fields above are only those fields which are
1878     returned by all audio output devices. Every audio output driver
1879     might have its own, additional driver specific parameters (see
1880 schoenebeck 974 <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>)
1881 senoner 542 which are also returned by this command.
1882     </p>
1883     <p>Example:
1884     </p>
1885 schoenebeck 708 <p>
1886     </p>
1887 senoner 542 <blockquote class="text">
1888     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1889     </p>
1890     <p>S: "DRIVER: ALSA"
1891     </p>
1892     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1893     </p>
1894     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1895     </p>
1896     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1897     </p>
1898     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1899     </p>
1900     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1901     </p>
1902     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1903     </p>
1904     <p>&nbsp;&nbsp;&nbsp;"."
1905     </p>
1906 schoenebeck 708 </blockquote><p>
1907 schoenebeck 940
1908 schoenebeck 708 </p>
1909 schoenebeck 940 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1910 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1911     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1912     Changing settings of audio output devices</h3>
1913 senoner 542
1914     <p>Use the following command to alter a specific setting of a created audio output device:
1915     </p>
1916 schoenebeck 708 <p>
1917     </p>
1918 senoner 542 <blockquote class="text">
1919     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1920     </p>
1921 schoenebeck 708 </blockquote><p>
1922 schoenebeck 940
1923 schoenebeck 708 </p>
1924 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1925 schoenebeck 575 audio output device as given by the
1926 schoenebeck 974 <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>
1927     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>
1928 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1929 senoner 542 and &lt;value&gt; by the new value for this parameter.
1930     </p>
1931     <p>Possible Answers:
1932     </p>
1933 schoenebeck 708 <p>
1934     </p>
1935 senoner 542 <blockquote class="text">
1936     <p>"OK" -
1937     </p>
1938     <blockquote class="text">
1939     <p>in case setting was successfully changed
1940     </p>
1941 schoenebeck 940 </blockquote>
1942    
1943 senoner 542
1944     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1945     </p>
1946     <blockquote class="text">
1947     <p>in case setting was changed successfully, but there are
1948     noteworthy issue(s) related, providing an appropriate
1949     warning code and warning message
1950     </p>
1951 schoenebeck 940 </blockquote>
1952    
1953 senoner 542
1954     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1955     </p>
1956     <blockquote class="text">
1957     <p>in case it failed, providing an appropriate error code and
1958     error message
1959     </p>
1960 schoenebeck 940 </blockquote>
1961    
1962 senoner 542
1963 schoenebeck 708 </blockquote><p>
1964 schoenebeck 940
1965 schoenebeck 708 </p>
1966 senoner 542 <p>Example:
1967     </p>
1968 schoenebeck 708 <p>
1969     </p>
1970 senoner 542 <blockquote class="text">
1971     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1972     </p>
1973     <p>S: "OK"
1974     </p>
1975 schoenebeck 708 </blockquote><p>
1976 schoenebeck 940
1977 schoenebeck 708 </p>
1978 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1979 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1980     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1981     Getting information about an audio channel</h3>
1982 senoner 542
1983     <p>Use the following command to get information about an audio channel:
1984     </p>
1985 schoenebeck 708 <p>
1986     </p>
1987 senoner 542 <blockquote class="text">
1988     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1989     </p>
1990 schoenebeck 708 </blockquote><p>
1991 schoenebeck 940
1992 schoenebeck 708 </p>
1993 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1994 schoenebeck 974 <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>
1995     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>
1996 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
1997 senoner 542 </p>
1998     <p>Possible Answers:
1999     </p>
2000 schoenebeck 708 <p>
2001     </p>
2002 senoner 542 <blockquote class="text">
2003     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2004     Each answer line begins with the information category name
2005     followed by a colon and then a space character &lt;SP&gt; and finally
2006     the info character string to that info category. At the moment
2007     the following information categories are defined:
2008     </p>
2009 schoenebeck 708 <p>
2010     </p>
2011 senoner 542 <blockquote class="text">
2012     <p>NAME -
2013     </p>
2014     <blockquote class="text">
2015     <p>arbitrary character string naming the channel, which
2016     doesn't have to be unique (always returned by all audio channels)
2017     </p>
2018 schoenebeck 940 </blockquote>
2019    
2020 senoner 542
2021     <p>IS_MIX_CHANNEL -
2022     </p>
2023     <blockquote class="text">
2024     <p>either true or false, a mix-channel is not a real,
2025     independent audio channel, but a virtual channel which
2026     is mixed to another real channel, this mechanism is
2027     needed for sampler engines which need more audio
2028     channels than the used audio system might be able to offer
2029     (always returned by all audio channels)
2030     </p>
2031 schoenebeck 940 </blockquote>
2032    
2033 senoner 542
2034     <p>MIX_CHANNEL_DESTINATION -
2035     </p>
2036     <blockquote class="text">
2037     <p>numerical ID (positive integer including 0)
2038     which reflects the real audio channel (of the same audio
2039     output device) this mix channel refers to, means where
2040     the audio signal actually will be routed / added to
2041     (only returned in case the audio channel is mix channel)
2042     </p>
2043 schoenebeck 940 </blockquote>
2044    
2045 senoner 542
2046 schoenebeck 940 </blockquote>
2047    
2048 senoner 542
2049 schoenebeck 708 </blockquote><p>
2050 schoenebeck 940
2051 schoenebeck 708 </p>
2052 senoner 542 <p>The mentioned fields above don't have to be in particular
2053     order. The fields above are only those fields which are
2054     generally returned for the described cases by all audio
2055     channels regardless of the audio driver. Every audio channel
2056     might have its own, additional driver and channel specific
2057     parameters.
2058     </p>
2059     <p>Examples:
2060     </p>
2061 schoenebeck 708 <p>
2062     </p>
2063 senoner 542 <blockquote class="text">
2064     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2065     </p>
2066     <p>S: "NAME: studio monitor left"
2067     </p>
2068     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2069     </p>
2070     <p>&nbsp;&nbsp;&nbsp;"."
2071     </p>
2072 schoenebeck 708 </blockquote><p>
2073 schoenebeck 940
2074 schoenebeck 708 </p>
2075     <p>
2076     </p>
2077 senoner 542 <blockquote class="text">
2078     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2079     </p>
2080     <p>S: "NAME: studio monitor right"
2081     </p>
2082     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2083     </p>
2084     <p>&nbsp;&nbsp;&nbsp;"."
2085     </p>
2086 schoenebeck 708 </blockquote><p>
2087 schoenebeck 940
2088 schoenebeck 708 </p>
2089     <p>
2090     </p>
2091 senoner 542 <blockquote class="text">
2092     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2093     </p>
2094     <p>S: "NAME: studio monitor left"
2095     </p>
2096     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2097     </p>
2098     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2099     </p>
2100     <p>&nbsp;&nbsp;&nbsp;"."
2101     </p>
2102 schoenebeck 708 </blockquote><p>
2103 schoenebeck 940
2104 schoenebeck 708 </p>
2105     <p>
2106     </p>
2107 senoner 542 <blockquote class="text">
2108     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2109     </p>
2110     <p>S: "NAME: 'ardour (left)'"
2111     </p>
2112     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2113     </p>
2114     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2115     </p>
2116     <p>&nbsp;&nbsp;&nbsp;"."
2117     </p>
2118 schoenebeck 708 </blockquote><p>
2119 schoenebeck 940
2120 schoenebeck 708 </p>
2121 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2122 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2123     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2124     Getting information about specific audio channel parameter</h3>
2125 senoner 542
2126     <p>Use the following command to get detailed information about specific audio channel parameter:
2127     </p>
2128 schoenebeck 708 <p>
2129     </p>
2130 senoner 542 <blockquote class="text">
2131     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2132     </p>
2133 schoenebeck 708 </blockquote><p>
2134 schoenebeck 940
2135 schoenebeck 708 </p>
2136 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2137 schoenebeck 974 <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>
2138     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>
2139 senoner 542 command, &lt;chan&gt; the audio channel number
2140     and &lt;param&gt; a specific channel parameter name for which information should
2141 schoenebeck 974 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).
2142 senoner 542 </p>
2143     <p>Possible Answers:
2144     </p>
2145 schoenebeck 708 <p>
2146     </p>
2147 senoner 542 <blockquote class="text">
2148     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2149     Each answer line begins with the information category name
2150     followed by a colon and then a space character &lt;SP&gt; and finally
2151     the info character string to that info category. There are
2152     information which is always returned, independently of the
2153     given channel parameter and there is optional information
2154     which is only shown dependently to the given audio channel. At
2155     the moment the following information categories are defined:
2156     </p>
2157 schoenebeck 708 <p>
2158     </p>
2159 senoner 542 <blockquote class="text">
2160     <p>TYPE -
2161     </p>
2162     <blockquote class="text">
2163     <p>either "BOOL" for boolean value(s) or "INT" for integer
2164     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2165     character string(s)
2166     (always returned)
2167     </p>
2168 schoenebeck 940 </blockquote>
2169    
2170 senoner 542
2171     <p>DESCRIPTION -
2172     </p>
2173     <blockquote class="text">
2174     <p>arbitrary text describing the purpose of the parameter (always returned)
2175     </p>
2176 schoenebeck 940 </blockquote>
2177    
2178 senoner 542
2179     <p>FIX -
2180     </p>
2181     <blockquote class="text">
2182     <p>either true or false, if true then this parameter is
2183     read only, thus cannot be altered
2184     (always returned)
2185     </p>
2186 schoenebeck 940 </blockquote>
2187    
2188 senoner 542
2189     <p>MULTIPLICITY -
2190     </p>
2191     <blockquote class="text">
2192     <p>either true or false, defines if this parameter allows
2193     only one value or a list of values, where true means
2194     multiple values and false only a single value allowed
2195     (always returned)
2196     </p>
2197 schoenebeck 940 </blockquote>
2198    
2199 senoner 542
2200     <p>RANGE_MIN -
2201     </p>
2202     <blockquote class="text">
2203     <p>defines lower limit of the allowed value range for this
2204     parameter, can be an integer value as well as a dotted
2205     number, usually used in conjunction with 'RANGE_MAX',
2206     but may also appear without
2207     (optionally returned, dependent to driver and channel
2208     parameter)
2209     </p>
2210 schoenebeck 940 </blockquote>
2211    
2212 senoner 542
2213     <p>RANGE_MAX -
2214     </p>
2215     <blockquote class="text">
2216     <p>defines upper limit of the allowed value range for this
2217     parameter, can be an integer value as well as a dotted
2218     number, usually used in conjunction with 'RANGE_MIN',
2219     but may also appear without
2220     (optionally returned, dependent to driver and channel
2221     parameter)
2222     </p>
2223 schoenebeck 940 </blockquote>
2224    
2225 senoner 542
2226     <p>POSSIBILITIES -
2227     </p>
2228     <blockquote class="text">
2229     <p>comma separated list of possible values for this
2230     parameter, character strings are encapsulated into
2231     apostrophes
2232     (optionally returned, dependent to driver and channel
2233     parameter)
2234     </p>
2235 schoenebeck 940 </blockquote>
2236    
2237 senoner 542
2238 schoenebeck 940 </blockquote>
2239    
2240 senoner 542
2241     <p>The mentioned fields above don't have to be in particular order.
2242     </p>
2243 schoenebeck 708 </blockquote><p>
2244 schoenebeck 940
2245 schoenebeck 708 </p>
2246 senoner 542 <p>Example:
2247     </p>
2248 schoenebeck 708 <p>
2249     </p>
2250 senoner 542 <blockquote class="text">
2251     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2252     </p>
2253     <p>S: "DESCRIPTION: bindings to other JACK clients"
2254     </p>
2255     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2256     </p>
2257     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2258     </p>
2259     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2260     </p>
2261     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2262     </p>
2263     <p>&nbsp;&nbsp;&nbsp;"."
2264     </p>
2265 schoenebeck 708 </blockquote><p>
2266 schoenebeck 940
2267 schoenebeck 708 </p>
2268 schoenebeck 940 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2269 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2270     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2271     Changing settings of audio output channels</h3>
2272 senoner 542
2273     <p>Use the following command to alter a specific setting of an audio output channel:
2274     </p>
2275 schoenebeck 708 <p>
2276     </p>
2277 senoner 542 <blockquote class="text">
2278     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2279     </p>
2280 schoenebeck 708 </blockquote><p>
2281 schoenebeck 940
2282 schoenebeck 708 </p>
2283 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2284 schoenebeck 974 <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>
2285     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>
2286 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2287 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2288     </p>
2289     <p>Possible Answers:
2290     </p>
2291 schoenebeck 708 <p>
2292     </p>
2293 senoner 542 <blockquote class="text">
2294     <p>"OK" -
2295     </p>
2296     <blockquote class="text">
2297     <p>in case setting was successfully changed
2298     </p>
2299 schoenebeck 940 </blockquote>
2300    
2301 senoner 542
2302     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2303     </p>
2304     <blockquote class="text">
2305     <p>in case setting was changed successfully, but there are
2306     noteworthy issue(s) related, providing an appropriate
2307     warning code and warning message
2308     </p>
2309 schoenebeck 940 </blockquote>
2310    
2311 senoner 542
2312     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2313     </p>
2314     <blockquote class="text">
2315     <p>in case it failed, providing an appropriate error code and
2316     error message
2317     </p>
2318 schoenebeck 940 </blockquote>
2319    
2320 senoner 542
2321 schoenebeck 708 </blockquote><p>
2322 schoenebeck 940
2323 schoenebeck 708 </p>
2324 senoner 542 <p>Example:
2325     </p>
2326 schoenebeck 708 <p>
2327     </p>
2328 senoner 542 <blockquote class="text">
2329     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2330     </p>
2331     <p>S: "OK"
2332     </p>
2333 schoenebeck 708 </blockquote><p>
2334 schoenebeck 940
2335 schoenebeck 708 </p>
2336     <p>
2337     </p>
2338 senoner 542 <blockquote class="text">
2339     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2340     </p>
2341     <p>S: "OK"
2342     </p>
2343 schoenebeck 708 </blockquote><p>
2344 schoenebeck 940
2345 schoenebeck 708 </p>
2346 schoenebeck 940 <a name="anchor10"></a><br /><hr />
2347 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2348     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2349     Configuring MIDI input drivers</h3>
2350 senoner 542
2351     <p>Instances of drivers in LinuxSampler are called devices. You can use
2352     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2353     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2354     channel. For particular MIDI input systems it's also possible to create
2355     several devices of the same MIDI input type. This chapter describes all
2356     commands to configure LinuxSampler's MIDI input devices and their parameters.
2357     </p>
2358     <p>Instead of defining commands and parameters for each driver individually,
2359     all possible parameters, their meanings and possible values have to be obtained
2360     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2361     front-ends can be written independently of what drivers are currently implemented
2362     and what parameters these drivers are actually offering. This means front-ends can
2363     even handle drivers which are implemented somewhere in future without modifying
2364     the front-end at all.
2365     </p>
2366     <p>Commands for configuring MIDI input devices are pretty much the same as the
2367     commands for configuring audio output drivers, already described in the last
2368     chapter.
2369     </p>
2370     <p>Note: examples in this chapter showing particular parameters of drivers are
2371     not meant as specification of the drivers' parameters. Driver implementations in
2372     LinuxSampler might have complete different parameter names and meanings than shown
2373     in these examples or might change in future, so these examples are only meant for
2374     showing how to retrieve what parameters drivers are offering, how to retrieve their
2375     possible values, etc.
2376     </p>
2377 schoenebeck 940 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2378 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2379     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2380     Getting amount of available MIDI input drivers</h3>
2381 senoner 542
2382     <p>Use the following command to get the number of
2383     MIDI input drivers currently available for the
2384     LinuxSampler instance:
2385     </p>
2386 schoenebeck 708 <p>
2387     </p>
2388 senoner 542 <blockquote class="text">
2389     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2390     </p>
2391 schoenebeck 708 </blockquote><p>
2392 schoenebeck 940
2393 schoenebeck 708 </p>
2394 senoner 542 <p>Possible Answers:
2395     </p>
2396 schoenebeck 708 <p>
2397     </p>
2398 senoner 542 <blockquote class="text">
2399     <p>LinuxSampler will answer by sending the
2400     number of available MIDI input drivers.
2401     </p>
2402 schoenebeck 708 </blockquote><p>
2403 schoenebeck 940
2404 schoenebeck 708 </p>
2405 senoner 542 <p>Example:
2406     </p>
2407 schoenebeck 708 <p>
2408     </p>
2409 senoner 542 <blockquote class="text">
2410     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2411     </p>
2412     <p>S: "2"
2413     </p>
2414 schoenebeck 708 </blockquote><p>
2415 schoenebeck 940
2416 schoenebeck 708 </p>
2417 schoenebeck 940 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2418 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2419     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2420     Getting all available MIDI input drivers</h3>
2421 senoner 542
2422     <p>Use the following command to list all MIDI input drivers currently available
2423     for the LinuxSampler instance:
2424     </p>
2425 schoenebeck 708 <p>
2426     </p>
2427 senoner 542 <blockquote class="text">
2428     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2429     </p>
2430 schoenebeck 708 </blockquote><p>
2431 schoenebeck 940
2432 schoenebeck 708 </p>
2433 senoner 542 <p>Possible Answers:
2434     </p>
2435 schoenebeck 708 <p>
2436     </p>
2437 senoner 542 <blockquote class="text">
2438     <p>LinuxSampler will answer by sending comma separated character
2439     strings, each symbolizing a MIDI input driver.
2440     </p>
2441 schoenebeck 708 </blockquote><p>
2442 schoenebeck 940
2443 schoenebeck 708 </p>
2444 senoner 542 <p>Example:
2445     </p>
2446 schoenebeck 708 <p>
2447     </p>
2448 senoner 542 <blockquote class="text">
2449     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2450     </p>
2451     <p>S: "ALSA,JACK"
2452     </p>
2453 schoenebeck 708 </blockquote><p>
2454 schoenebeck 940
2455 schoenebeck 708 </p>
2456 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2457 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2458     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2459     Getting information about a specific MIDI input driver</h3>
2460 senoner 542
2461     <p>Use the following command to get detailed information about a specific MIDI input driver:
2462     </p>
2463 schoenebeck 708 <p>
2464     </p>
2465 senoner 542 <blockquote class="text">
2466     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2467     </p>
2468 schoenebeck 708 </blockquote><p>
2469 schoenebeck 940
2470 schoenebeck 708 </p>
2471 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2472 schoenebeck 974 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.
2473 senoner 542 </p>
2474     <p>Possible Answers:
2475     </p>
2476 schoenebeck 708 <p>
2477     </p>
2478 senoner 542 <blockquote class="text">
2479     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2480     Each answer line begins with the information category name
2481     followed by a colon and then a space character &lt;SP&gt; and finally
2482     the info character string to that info category. At the moment
2483     the following information categories are defined:
2484     </p>
2485 schoenebeck 708 <p>
2486     </p>
2487 senoner 542 <blockquote class="text">
2488     <p>DESCRIPTION -
2489     </p>
2490     <blockquote class="text">
2491     <p>arbitrary description text about the MIDI input driver
2492     </p>
2493 schoenebeck 940 </blockquote>
2494    
2495 senoner 542
2496     <p>VERSION -
2497     </p>
2498     <blockquote class="text">
2499     <p>arbitrary character string regarding the driver's version
2500     </p>
2501 schoenebeck 940 </blockquote>
2502    
2503 senoner 542
2504     <p>PARAMETERS -
2505     </p>
2506     <blockquote class="text">
2507     <p>comma separated list of all parameters available for the given MIDI input driver
2508     </p>
2509 schoenebeck 940 </blockquote>
2510    
2511 senoner 542
2512 schoenebeck 940 </blockquote>
2513    
2514 senoner 542
2515     <p>The mentioned fields above don't have to be in particular order.
2516     </p>
2517 schoenebeck 708 </blockquote><p>
2518 schoenebeck 940
2519 schoenebeck 708 </p>
2520 senoner 542 <p>Example:
2521     </p>
2522 schoenebeck 708 <p>
2523     </p>
2524 senoner 542 <blockquote class="text">
2525     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2526     </p>
2527     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2528     </p>
2529     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2530     </p>
2531     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2532     </p>
2533     <p>&nbsp;&nbsp;&nbsp;"."
2534     </p>
2535 schoenebeck 708 </blockquote><p>
2536 schoenebeck 940
2537 schoenebeck 708 </p>
2538 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2539 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2540     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2541     Getting information about specific MIDI input driver parameter</h3>
2542 senoner 542
2543     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2544     </p>
2545 schoenebeck 708 <p>
2546     </p>
2547 senoner 542 <blockquote class="text">
2548     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2549     </p>
2550 schoenebeck 708 </blockquote><p>
2551 schoenebeck 940
2552 schoenebeck 708 </p>
2553 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2554 schoenebeck 974 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
2555 senoner 542 parameter name for which information should be obtained (as returned by the
2556 schoenebeck 974 <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
2557 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2558     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2559     where character string values are encapsulated into apostrophes ('). Arguments
2560     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2561     will be ignored, means the front-end application can simply put all parameters
2562     in &lt;deplist&gt; with the values selected by the user.
2563     </p>
2564     <p>Possible Answers:
2565     </p>
2566     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2567     Each answer line begins with the information category name
2568     followed by a colon and then a space character &lt;SP> and finally
2569     the info character string to that info category. There is
2570     information which is always returned, independent of the
2571     given driver parameter and there is optional information
2572     which is only shown dependent to given driver parameter. At
2573     the moment the following information categories are defined:
2574     </p>
2575 schoenebeck 708 <p>
2576     </p>
2577 senoner 542 <blockquote class="text">
2578     <p>TYPE -
2579     </p>
2580     <blockquote class="text">
2581     <p>either "BOOL" for boolean value(s) or "INT" for integer
2582     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2583     character string(s)
2584     (always returned, no matter which driver parameter)
2585     </p>
2586 schoenebeck 940 </blockquote>
2587    
2588 senoner 542
2589     <p>DESCRIPTION -
2590     </p>
2591     <blockquote class="text">
2592     <p>arbitrary text describing the purpose of the parameter
2593     (always returned, no matter which driver parameter)
2594     </p>
2595 schoenebeck 940 </blockquote>
2596    
2597 senoner 542
2598     <p>MANDATORY -
2599     </p>
2600     <blockquote class="text">
2601     <p>either true or false, defines if this parameter must be
2602     given when the device is to be created with the
2603 schoenebeck 974 <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
2604 senoner 542 (always returned, no matter which driver parameter)
2605     </p>
2606 schoenebeck 940 </blockquote>
2607    
2608 senoner 542
2609     <p>FIX -
2610     </p>
2611     <blockquote class="text">
2612     <p>either true or false, if false then this parameter can
2613     be changed at any time, once the device is created by
2614 schoenebeck 974 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
2615 senoner 542 (always returned, no matter which driver parameter)
2616     </p>
2617 schoenebeck 940 </blockquote>
2618    
2619 senoner 542
2620     <p>MULTIPLICITY -
2621     </p>
2622     <blockquote class="text">
2623     <p>either true or false, defines if this parameter allows
2624     only one value or a list of values, where true means
2625     multiple values and false only a single value allowed
2626     (always returned, no matter which driver parameter)
2627     </p>
2628 schoenebeck 940 </blockquote>
2629    
2630 senoner 542
2631     <p>DEPENDS -
2632     </p>
2633     <blockquote class="text">
2634 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2635 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2636     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2637     listed parameters, for example assuming that an audio
2638     driver (like the ALSA driver) offers parameters 'card'
2639     and 'samplerate' then parameter 'samplerate' would
2640     depend on 'card' because the possible values for
2641     'samplerate' depends on the sound card which can be
2642     chosen by the 'card' parameter
2643     (optionally returned, dependent to driver parameter)
2644     </p>
2645 schoenebeck 940 </blockquote>
2646    
2647 senoner 542
2648     <p>DEFAULT -
2649     </p>
2650     <blockquote class="text">
2651     <p>reflects the default value for this parameter which is
2652     used when the device is created and not explicitly
2653 schoenebeck 974 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,
2654 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2655     list, that's why character strings are encapsulated into
2656     apostrophes (')
2657     (optionally returned, dependent to driver parameter)
2658     </p>
2659 schoenebeck 940 </blockquote>
2660    
2661 senoner 542
2662     <p>RANGE_MIN -
2663     </p>
2664     <blockquote class="text">
2665     <p>defines lower limit of the allowed value range for this
2666     parameter, can be an integer value as well as a dotted
2667     number, this parameter is often used in conjunction
2668     with RANGE_MAX, but may also appear without
2669     (optionally returned, dependent to driver parameter)
2670     </p>
2671 schoenebeck 940 </blockquote>
2672    
2673 senoner 542
2674     <p>RANGE_MAX -
2675     </p>
2676     <blockquote class="text">
2677     <p>defines upper limit of the allowed value range for this
2678     parameter, can be an integer value as well as a dotted
2679     number, this parameter is often used in conjunction with
2680     RANGE_MIN, but may also appear without
2681     (optionally returned, dependent to driver parameter)
2682     </p>
2683 schoenebeck 940 </blockquote>
2684    
2685 senoner 542
2686     <p>POSSIBILITIES -
2687     </p>
2688     <blockquote class="text">
2689     <p>comma separated list of possible values for this
2690     parameter, character strings are encapsulated into
2691     apostrophes
2692     (optionally returned, dependent to driver parameter)
2693     </p>
2694 schoenebeck 940 </blockquote>
2695    
2696 senoner 542
2697 schoenebeck 708 </blockquote><p>
2698 schoenebeck 940
2699 schoenebeck 708 </p>
2700 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2701     </p>
2702     <p>Example:
2703     </p>
2704 schoenebeck 708 <p>
2705     </p>
2706 senoner 542 <blockquote class="text">
2707     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2708     </p>
2709     <p>S: "DESCRIPTION: Whether device is enabled"
2710     </p>
2711     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2712     </p>
2713     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2714     </p>
2715     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2716     </p>
2717     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2718     </p>
2719     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2720     </p>
2721     <p>&nbsp;&nbsp;&nbsp;"."
2722     </p>
2723 schoenebeck 708 </blockquote><p>
2724 schoenebeck 940
2725 schoenebeck 708 </p>
2726 schoenebeck 940 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2727 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2728     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2729     Creating a MIDI input device</h3>
2730 senoner 542
2731     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2732     </p>
2733 schoenebeck 708 <p>
2734     </p>
2735 senoner 542 <blockquote class="text">
2736     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2737     </p>
2738 schoenebeck 708 </blockquote><p>
2739 schoenebeck 940
2740 schoenebeck 708 </p>
2741 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2742 schoenebeck 974 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
2743 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2744     character string values should be encapsulated into apostrophes (').
2745     Note that there might be drivers which require parameter(s) to be
2746     given with this command. Use the previously described commands in
2747     this chapter to get that information.
2748     </p>
2749     <p>Possible Answers:
2750     </p>
2751 schoenebeck 708 <p>
2752     </p>
2753 senoner 542 <blockquote class="text">
2754     <p>"OK[&lt;device-id&gt;]" -
2755     </p>
2756     <blockquote class="text">
2757     <p>in case the device was successfully created, where
2758     &lt;device-id&gt; is the numerical ID of the new device
2759     </p>
2760 schoenebeck 940 </blockquote>
2761    
2762 senoner 542
2763     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2764     </p>
2765     <blockquote class="text">
2766     <p>in case the driver was loaded successfully, where
2767     &lt;device-id&gt; is the numerical ID of the new device, but
2768     there are noteworthy issue(s) related, providing an
2769     appropriate warning code and warning message
2770     </p>
2771 schoenebeck 940 </blockquote>
2772    
2773 senoner 542
2774     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2775     </p>
2776     <blockquote class="text">
2777     <p>in case it failed, providing an appropriate error code and error message
2778     </p>
2779 schoenebeck 940 </blockquote>
2780    
2781 senoner 542
2782 schoenebeck 708 </blockquote><p>
2783 schoenebeck 940
2784 schoenebeck 708 </p>
2785 senoner 542 <p>Example:
2786     </p>
2787 schoenebeck 708 <p>
2788     </p>
2789 senoner 542 <blockquote class="text">
2790     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2791     </p>
2792     <p>S: "OK[0]"
2793     </p>
2794 schoenebeck 708 </blockquote><p>
2795 schoenebeck 940
2796 schoenebeck 708 </p>
2797 schoenebeck 940 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2798 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2799     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2800     Destroying a MIDI input device</h3>
2801 senoner 542
2802     <p>Use the following command to destroy a created MIDI input device:
2803     </p>
2804 schoenebeck 708 <p>
2805     </p>
2806 senoner 542 <blockquote class="text">
2807     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2808     </p>
2809 schoenebeck 708 </blockquote><p>
2810 schoenebeck 940
2811 schoenebeck 708 </p>
2812 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2813 schoenebeck 974 <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>
2814     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>
2815 schoenebeck 575 command.
2816 senoner 542 </p>
2817     <p>Possible Answers:
2818     </p>
2819 schoenebeck 708 <p>
2820     </p>
2821 senoner 542 <blockquote class="text">
2822     <p>"OK" -
2823     </p>
2824     <blockquote class="text">
2825     <p>in case the device was successfully destroyed
2826     </p>
2827 schoenebeck 940 </blockquote>
2828    
2829 senoner 542
2830     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2831     </p>
2832     <blockquote class="text">
2833     <p>in case the device was destroyed, but there are noteworthy
2834     issue(s) related, providing an appropriate warning code and
2835     warning message
2836     </p>
2837 schoenebeck 940 </blockquote>
2838    
2839 senoner 542
2840     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2841     </p>
2842     <blockquote class="text">
2843     <p>in case it failed, providing an appropriate error code and error message
2844     </p>
2845 schoenebeck 940 </blockquote>
2846    
2847 senoner 542
2848 schoenebeck 708 </blockquote><p>
2849 schoenebeck 940
2850 schoenebeck 708 </p>
2851 senoner 542 <p>Example:
2852     </p>
2853 schoenebeck 708 <p>
2854     </p>
2855 senoner 542 <blockquote class="text">
2856     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2857     </p>
2858     <p>S: "OK"
2859     </p>
2860 schoenebeck 708 </blockquote><p>
2861 schoenebeck 940
2862 schoenebeck 708 </p>
2863 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2864 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2865     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2866     Getting all created MIDI input device count</h3>
2867 senoner 542
2868     <p>Use the following command to count all created MIDI input devices:
2869     </p>
2870 schoenebeck 708 <p>
2871     </p>
2872 senoner 542 <blockquote class="text">
2873     <p>GET MIDI_INPUT_DEVICES
2874     </p>
2875 schoenebeck 708 </blockquote><p>
2876 schoenebeck 940
2877 schoenebeck 708 </p>
2878 senoner 542 <p>Possible Answers:
2879     </p>
2880 schoenebeck 708 <p>
2881     </p>
2882 senoner 542 <blockquote class="text">
2883     <p>LinuxSampler will answer by sending the current number of all
2884     MIDI input devices.
2885     </p>
2886 schoenebeck 708 </blockquote><p>
2887 schoenebeck 940
2888 schoenebeck 708 </p>
2889 senoner 542 <p>Example:
2890     </p>
2891 schoenebeck 708 <p>
2892     </p>
2893 senoner 542 <blockquote class="text">
2894     <p>C: "GET MIDI_INPUT_DEVICES"
2895     </p>
2896     <p>S: "3"
2897     </p>
2898 schoenebeck 708 </blockquote><p>
2899 schoenebeck 940
2900 schoenebeck 708 </p>
2901 schoenebeck 940 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2902 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2903     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2904     Getting all created MIDI input device list</h3>
2905 senoner 542
2906     <p>Use the following command to list all created MIDI input devices:
2907     </p>
2908 schoenebeck 708 <p>
2909     </p>
2910 senoner 542 <blockquote class="text">
2911     <p>LIST MIDI_INPUT_DEVICES
2912     </p>
2913 schoenebeck 708 </blockquote><p>
2914 schoenebeck 940
2915 schoenebeck 708 </p>
2916 senoner 542 <p>Possible Answers:
2917     </p>
2918 schoenebeck 708 <p>
2919     </p>
2920 senoner 542 <blockquote class="text">
2921     <p>LinuxSampler will answer by sending a comma separated list
2922     with the numerical Ids of all created MIDI input devices.
2923     </p>
2924 schoenebeck 708 </blockquote><p>
2925 schoenebeck 940
2926 schoenebeck 708 </p>
2927 senoner 542 <p>Examples:
2928     </p>
2929 schoenebeck 708 <p>
2930     </p>
2931 senoner 542 <blockquote class="text">
2932     <p>C: "LIST MIDI_INPUT_DEVICES"
2933     </p>
2934     <p>S: "0,1,2"
2935     </p>
2936 schoenebeck 708 </blockquote><p>
2937 schoenebeck 940
2938 schoenebeck 708 </p>
2939     <p>
2940     </p>
2941 senoner 542 <blockquote class="text">
2942     <p>C: "LIST MIDI_INPUT_DEVICES"
2943     </p>
2944     <p>S: "1,3"
2945     </p>
2946 schoenebeck 708 </blockquote><p>
2947 schoenebeck 940
2948 schoenebeck 708 </p>
2949 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2950 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2951     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2952     Getting current settings of a MIDI input device</h3>
2953 senoner 542
2954     <p>Use the following command to get current settings of a specific, created MIDI input device:
2955     </p>
2956 schoenebeck 708 <p>
2957     </p>
2958 senoner 542 <blockquote class="text">
2959     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2960     </p>
2961 schoenebeck 708 </blockquote><p>
2962 schoenebeck 940
2963 schoenebeck 708 </p>
2964 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2965 schoenebeck 974 <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>
2966     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>
2967 schoenebeck 575 command.
2968 senoner 542 </p>
2969     <p>Possible Answers:
2970     </p>
2971 schoenebeck 708 <p>
2972     </p>
2973 senoner 542 <blockquote class="text">
2974     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2975     Each answer line begins with the information category name
2976     followed by a colon and then a space character &lt;SP&gt; and finally
2977     the info character string to that info category. As some
2978     parameters might allow multiple values, character strings are
2979     encapsulated into apostrophes ('). At the moment the following
2980     information categories are defined (independent of driver):
2981     </p>
2982 schoenebeck 708 <p>
2983     </p>
2984 senoner 542 <blockquote class="text">
2985     <p>DRIVER -
2986     </p>
2987     <blockquote class="text">
2988     <p>identifier of the used MIDI input driver, as e.g.
2989 schoenebeck 974 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>
2990 senoner 542 command
2991     </p>
2992 schoenebeck 940 </blockquote>
2993    
2994 senoner 542
2995 schoenebeck 940 </blockquote>
2996    
2997 senoner 542 <blockquote class="text">
2998 schoenebeck 708 <p>ACTIVE -
2999 senoner 542 </p>
3000     <blockquote class="text">
3001     <p>either true or false, if false then the MIDI device is
3002     inactive and doesn't listen to any incoming MIDI events
3003     and thus doesn't forward them to connected sampler
3004     channels
3005     </p>
3006 schoenebeck 940 </blockquote>
3007    
3008 senoner 542
3009 schoenebeck 940 </blockquote>
3010    
3011 senoner 542
3012 schoenebeck 708 </blockquote><p>
3013 schoenebeck 940
3014 schoenebeck 708 </p>
3015 senoner 542 <p>The mentioned fields above don't have to be in particular
3016     order. The fields above are only those fields which are
3017     returned by all MIDI input devices. Every MIDI input driver
3018     might have its own, additional driver specific parameters (see
3019 schoenebeck 974 <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
3020 senoner 542 by this command.
3021     </p>
3022     <p>Example:
3023     </p>
3024 schoenebeck 708 <p>
3025     </p>
3026 senoner 542 <blockquote class="text">
3027     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3028     </p>
3029     <p>S: "DRIVER: ALSA"
3030     </p>
3031     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3032     </p>
3033     <p>&nbsp;&nbsp;&nbsp;"."
3034     </p>
3035 schoenebeck 708 </blockquote><p>
3036 schoenebeck 940
3037 schoenebeck 708 </p>
3038 schoenebeck 940 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3039 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3040     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3041     Changing settings of MIDI input devices</h3>
3042 senoner 542
3043     <p>Use the following command to alter a specific setting of a created MIDI input device:
3044     </p>
3045 schoenebeck 708 <p>
3046     </p>
3047 senoner 542 <blockquote class="text">
3048     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3049     </p>
3050 schoenebeck 708 </blockquote><p>
3051 schoenebeck 940
3052 schoenebeck 708 </p>
3053 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3054 schoenebeck 575 MIDI input device as returned by the
3055 schoenebeck 974 <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>
3056     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>
3057 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
3058 senoner 542 &lt;value&gt; by the new value for this parameter.
3059     </p>
3060     <p>Possible Answers:
3061     </p>
3062 schoenebeck 708 <p>
3063     </p>
3064 senoner 542 <blockquote class="text">
3065     <p>"OK" -
3066     </p>
3067     <blockquote class="text">
3068     <p>in case setting was successfully changed
3069     </p>
3070 schoenebeck 940 </blockquote>
3071    
3072 senoner 542
3073     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3074     </p>
3075     <blockquote class="text">
3076     <p>in case setting was changed successfully, but there are
3077     noteworthy issue(s) related, providing an appropriate
3078     warning code and warning message
3079     </p>
3080 schoenebeck 940 </blockquote>
3081    
3082 senoner 542
3083     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3084     </p>
3085     <blockquote class="text">
3086     <p>in case it failed, providing an appropriate error code and error message
3087     </p>
3088 schoenebeck 940 </blockquote>
3089    
3090 senoner 542
3091 schoenebeck 708 </blockquote><p>
3092 schoenebeck 940
3093 schoenebeck 708 </p>
3094 senoner 542 <p>Example:
3095     </p>
3096 schoenebeck 708 <p>
3097     </p>
3098 senoner 542 <blockquote class="text">
3099     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3100     </p>
3101     <p>S: "OK"
3102     </p>
3103 schoenebeck 708 </blockquote><p>
3104 schoenebeck 940
3105 schoenebeck 708 </p>
3106 schoenebeck 940 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3107 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3108     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3109     Getting information about a MIDI port</h3>
3110 senoner 542
3111     <p>Use the following command to get information about a MIDI port:
3112     </p>
3113 schoenebeck 708 <p>
3114     </p>
3115 senoner 542 <blockquote class="text">
3116     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3117     </p>
3118 schoenebeck 708 </blockquote><p>
3119 schoenebeck 940
3120 schoenebeck 708 </p>
3121 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3122 schoenebeck 974 <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>
3123     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>
3124 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
3125 senoner 542 </p>
3126     <p>Possible Answers:
3127     </p>
3128 schoenebeck 708 <p>
3129     </p>
3130 senoner 542 <blockquote class="text">
3131     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3132     Each answer line begins with the information category name
3133     followed by a colon and then a space character &lt;SP&gt; and finally
3134     the info character string to that info category. At the moment
3135     the following information categories are defined:
3136     </p>
3137     <p>NAME -
3138     </p>
3139     <blockquote class="text">
3140     <p>arbitrary character string naming the port
3141     </p>
3142 schoenebeck 940 </blockquote>
3143    
3144 senoner 542
3145 schoenebeck 708 </blockquote><p>
3146 schoenebeck 940
3147 schoenebeck 708 </p>
3148 senoner 542 <p>The field above is only the one which is returned by all MIDI
3149     ports regardless of the MIDI driver and port. Every MIDI port
3150     might have its own, additional driver and port specific
3151     parameters.
3152     </p>
3153     <p>Example:
3154     </p>
3155 schoenebeck 708 <p>
3156     </p>
3157 senoner 542 <blockquote class="text">
3158     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3159     </p>
3160     <p>S: "NAME: 'Masterkeyboard'"
3161     </p>
3162     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3163     </p>
3164     <p>&nbsp;&nbsp;&nbsp;"."
3165     </p>
3166 schoenebeck 708 </blockquote><p>
3167 schoenebeck 940
3168 schoenebeck 708 </p>
3169 schoenebeck 940 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3170 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3171     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3172     Getting information about specific MIDI port parameter</h3>
3173 senoner 542
3174     <p>Use the following command to get detailed information about specific MIDI port parameter:
3175     </p>
3176 schoenebeck 708 <p>
3177     </p>
3178 senoner 542 <blockquote class="text">
3179     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3180     </p>
3181 schoenebeck 708 </blockquote><p>
3182 schoenebeck 940
3183 schoenebeck 708 </p>
3184 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3185 schoenebeck 974 <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>
3186     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>
3187 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
3188 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
3189 schoenebeck 974 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).
3190 senoner 542 </p>
3191     <p>Possible Answers:
3192     </p>
3193 schoenebeck 708 <p>
3194     </p>
3195 senoner 542 <blockquote class="text">
3196     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3197     Each answer line begins with the information category name
3198     followed by a colon and then a space character &lt;SP&gt; and finally
3199     the info character string to that info category. There is
3200     information which is always returned, independently of the
3201     given channel parameter and there is optional information
3202     which are only shown dependently to the given MIDI port. At the
3203     moment the following information categories are defined:
3204     </p>
3205     <p>TYPE -
3206     </p>
3207     <blockquote class="text">
3208     <p>either "BOOL" for boolean value(s) or "INT" for integer
3209     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3210     character string(s)
3211     (always returned)
3212     </p>
3213 schoenebeck 940 </blockquote>
3214    
3215 senoner 542
3216     <p>DESCRIPTION -
3217     </p>
3218     <blockquote class="text">
3219     <p>arbitrary text describing the purpose of the parameter
3220     (always returned)
3221     </p>
3222 schoenebeck 940 </blockquote>
3223    
3224 senoner 542
3225     <p>FIX -
3226     </p>
3227     <blockquote class="text">
3228     <p>either true or false, if true then this parameter is
3229     read only, thus cannot be altered
3230     (always returned)
3231     </p>
3232 schoenebeck 940 </blockquote>
3233    
3234 senoner 542
3235     <p>MULTIPLICITY -
3236     </p>
3237     <blockquote class="text">
3238     <p>either true or false, defines if this parameter allows
3239     only one value or a list of values, where true means
3240     multiple values and false only a single value allowed
3241     (always returned)
3242     </p>
3243 schoenebeck 940 </blockquote>
3244    
3245 senoner 542
3246     <p>RANGE_MIN -
3247     </p>
3248     <blockquote class="text">
3249     <p>defines lower limit of the allowed value range for this
3250     parameter, can be an integer value as well as a dotted
3251     number, this parameter is usually used in conjunction
3252     with 'RANGE_MAX' but may also appear without
3253     (optionally returned, dependent to driver and port
3254     parameter)
3255     </p>
3256 schoenebeck 940 </blockquote>
3257    
3258 senoner 542
3259     <p>RANGE_MAX -
3260     </p>
3261     <blockquote class="text">
3262     <p>defines upper limit of the allowed value range for this
3263     parameter, can be an integer value as well as a dotted
3264     number, this parameter is usually used in conjunction
3265     with 'RANGE_MIN' but may also appear without
3266     (optionally returned, dependent to driver and port
3267     parameter)
3268     </p>
3269 schoenebeck 940 </blockquote>
3270    
3271 senoner 542
3272     <p>POSSIBILITIES -
3273     </p>
3274     <blockquote class="text">
3275     <p>comma separated list of possible values for this
3276     parameter, character strings are encapsulated into
3277     apostrophes
3278     (optionally returned, dependent to device and port
3279     parameter)
3280     </p>
3281 schoenebeck 940 </blockquote>
3282    
3283 senoner 542
3284 schoenebeck 708 </blockquote><p>
3285 schoenebeck 940
3286 schoenebeck 708 </p>
3287 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3288     </p>
3289     <p>Example:
3290     </p>
3291 schoenebeck 708 <p>
3292     </p>
3293 senoner 542 <blockquote class="text">
3294     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3295     </p>
3296     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3297     </p>
3298     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3299     </p>
3300     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3301     </p>
3302     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3303     </p>
3304     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3305     </p>
3306     <p>&nbsp;&nbsp;&nbsp;"."
3307     </p>
3308 schoenebeck 708 </blockquote><p>
3309 schoenebeck 940
3310 schoenebeck 708 </p>
3311 schoenebeck 940 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3312 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3313     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3314     Changing settings of MIDI input ports</h3>
3315 senoner 542
3316     <p>Use the following command to alter a specific setting of a MIDI input port:
3317     </p>
3318 schoenebeck 708 <p>
3319     </p>
3320 senoner 542 <blockquote class="text">
3321     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3322     </p>
3323 schoenebeck 708 </blockquote><p>
3324 schoenebeck 940
3325 schoenebeck 708 </p>
3326 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3327 schoenebeck 575 MIDI device as returned by the
3328 schoenebeck 974 <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>
3329     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>
3330 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3331 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3332 schoenebeck 1363 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3333     for specifying no value for parameters allowing a list of values.
3334 senoner 542 </p>
3335     <p>Possible Answers:
3336     </p>
3337 schoenebeck 708 <p>
3338     </p>
3339 senoner 542 <blockquote class="text">
3340     <p>"OK" -
3341     </p>
3342     <blockquote class="text">
3343     <p>in case setting was successfully changed
3344     </p>
3345 schoenebeck 940 </blockquote>
3346    
3347 senoner 542
3348     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3349     </p>
3350     <blockquote class="text">
3351     <p>in case setting was changed successfully, but there are
3352     noteworthy issue(s) related, providing an appropriate
3353     warning code and warning message
3354     </p>
3355 schoenebeck 940 </blockquote>
3356    
3357 senoner 542
3358     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3359     </p>
3360     <blockquote class="text">
3361     <p>in case it failed, providing an appropriate error code and error message
3362     </p>
3363 schoenebeck 940 </blockquote>
3364    
3365 senoner 542
3366 schoenebeck 708 </blockquote><p>
3367 schoenebeck 940
3368 schoenebeck 708 </p>
3369 senoner 542 <p>Example:
3370     </p>
3371 schoenebeck 708 <p>
3372     </p>
3373 senoner 542 <blockquote class="text">
3374 schoenebeck 1363 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3375     </p>
3376     <p>S: "OK"
3377     </p>
3378     </blockquote><p>
3379    
3380     </p>
3381 senoner 542 <p>
3382 schoenebeck 1363 </p>
3383     <blockquote class="text">
3384     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3385 senoner 542 </p>
3386 schoenebeck 1363 <p>S: "OK"
3387     </p>
3388 schoenebeck 708 </blockquote><p>
3389 schoenebeck 940
3390 schoenebeck 708 </p>
3391 schoenebeck 940 <a name="anchor11"></a><br /><hr />
3392 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3393     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3394     Configuring sampler channels</h3>
3395 senoner 542
3396 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3397     sampler channel with a sampler engine, load instruments and connect sampler channels to
3398     MIDI and audio devices.
3399 senoner 542 </p>
3400 schoenebeck 940 <a name="LOAD INSTRUMENT"></a><br /><hr />
3401 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3402     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3403     Loading an instrument</h3>
3404 senoner 542
3405     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3406     </p>
3407 schoenebeck 708 <p>
3408     </p>
3409 senoner 542 <blockquote class="text">
3410     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3411     </p>
3412 schoenebeck 708 </blockquote><p>
3413 schoenebeck 940
3414 schoenebeck 708 </p>
3415 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3416     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3417     instrument in the instrument file and &lt;sampler-channel> is the
3418     number of the sampler channel the instrument should be assigned to.
3419     Each sampler channel can only have one instrument.
3420     </p>
3421 schoenebeck 1251 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3422     escape characters for special characters (see chapter
3423     "<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>"
3424     for details) and accordingly backslash characters in the filename
3425     MUST now be escaped as well!
3426     </p>
3427 senoner 542 <p>The difference between regular and NON_MODAL versions of the command
3428     is that the regular command returns OK only after the instrument has been
3429     fully loaded and the channel is ready to be used while NON_MODAL version
3430     returns immediately and a background process is launched to load the instrument
3431 schoenebeck 974 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>
3432 senoner 542 command can be used to obtain loading
3433     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3434     such as making sure that the file could be read and it is of a proper format
3435     and SHOULD return ERR and SHOULD not launch the background process should any
3436     errors be detected at that point.
3437     </p>
3438     <p>Possible Answers:
3439     </p>
3440 schoenebeck 708 <p>
3441     </p>
3442 senoner 542 <blockquote class="text">
3443     <p>"OK" -
3444     </p>
3445     <blockquote class="text">
3446     <p>in case the instrument was successfully loaded
3447     </p>
3448 schoenebeck 940 </blockquote>
3449    
3450 senoner 542
3451     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3452     </p>
3453     <blockquote class="text">
3454     <p>in case the instrument was loaded successfully, but there
3455     are noteworthy issue(s) related (e.g. Engine doesn't support
3456     one or more patch parameters provided by the loaded
3457     instrument file), providing an appropriate warning code and
3458     warning message
3459     </p>
3460 schoenebeck 940 </blockquote>
3461    
3462 senoner 542
3463     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3464     </p>
3465     <blockquote class="text">
3466     <p>in case it failed, providing an appropriate error code and error message
3467     </p>
3468 schoenebeck 940 </blockquote>
3469    
3470 senoner 542
3471 schoenebeck 708 </blockquote><p>
3472 schoenebeck 940
3473 schoenebeck 708 </p>
3474 schoenebeck 1572 <p>Example (Unix):
3475 senoner 542 </p>
3476 schoenebeck 708 <p>
3477     </p>
3478 senoner 542 <blockquote class="text">
3479 schoenebeck 1572 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3480     </p>
3481     <p>S: OK
3482     </p>
3483     </blockquote><p>
3484    
3485     </p>
3486     <p>Example (Windows):
3487     </p>
3488 senoner 542 <p>
3489 schoenebeck 1572 </p>
3490     <blockquote class="text">
3491     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3492 senoner 542 </p>
3493 schoenebeck 1572 <p>S: OK
3494     </p>
3495 schoenebeck 708 </blockquote><p>
3496 schoenebeck 940
3497 schoenebeck 708 </p>
3498 schoenebeck 940 <a name="LOAD ENGINE"></a><br /><hr />
3499 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3500     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3501     Loading a sampler engine</h3>
3502 senoner 542
3503 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3504 senoner 542 channel by the following command:
3505     </p>
3506 schoenebeck 708 <p>
3507     </p>
3508 senoner 542 <blockquote class="text">
3509     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3510     </p>
3511 schoenebeck 708 </blockquote><p>
3512 schoenebeck 940
3513 schoenebeck 708 </p>
3514 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3515 schoenebeck 974 <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;
3516 schoenebeck 575 the sampler channel as returned by the
3517 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3518     <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
3519 schoenebeck 575 the engine type should be assigned to. This command should be issued
3520     after adding a new sampler channel and before any other control
3521     commands on the new sampler channel. It can also be used to change
3522     the engine type of a sampler channel. This command has (currently) no
3523     way to define or force if a new engine instance should be created and
3524     assigned to the given sampler channel or if an already existing
3525     instance of that engine type, shared with other sampler channels,
3526     should be used.
3527 senoner 542 </p>
3528     <p>Possible Answers:
3529     </p>
3530 schoenebeck 708 <p>
3531     </p>
3532 senoner 542 <blockquote class="text">
3533     <p>"OK" -
3534     </p>
3535     <blockquote class="text">
3536     <p>in case the engine was successfully deployed
3537     </p>
3538 schoenebeck 940 </blockquote>
3539    
3540 senoner 542
3541     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3542     </p>
3543     <blockquote class="text">
3544     <p>in case the engine was deployed successfully, but there
3545     are noteworthy issue(s) related, providing an appropriate
3546     warning code and warning message
3547     </p>
3548 schoenebeck 940 </blockquote>
3549    
3550 senoner 542
3551     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3552     </p>
3553     <blockquote class="text">
3554     <p>in case it failed, providing an appropriate error code and
3555     error message
3556     </p>
3557 schoenebeck 940 </blockquote>
3558    
3559 senoner 542
3560 schoenebeck 708 </blockquote><p>
3561 schoenebeck 940
3562 schoenebeck 708 </p>
3563 senoner 542 <p>Example:
3564     </p>
3565 schoenebeck 708 <p>
3566     </p>
3567 senoner 542 <blockquote class="text">
3568     <p>
3569     </p>
3570 schoenebeck 708 </blockquote><p>
3571 schoenebeck 940
3572 schoenebeck 708 </p>
3573 schoenebeck 940 <a name="GET CHANNELS"></a><br /><hr />
3574 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3575     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3576     Getting all created sampler channel count</h3>
3577 senoner 542
3578     <p>The number of sampler channels can change on runtime. To get the
3579     current amount of sampler channels, the front-end can send the
3580     following command:
3581     </p>
3582 schoenebeck 708 <p>
3583     </p>
3584 senoner 542 <blockquote class="text">
3585     <p>GET CHANNELS
3586     </p>
3587 schoenebeck 708 </blockquote><p>
3588 schoenebeck 940
3589 schoenebeck 708 </p>
3590 senoner 542 <p>Possible Answers:
3591     </p>
3592 schoenebeck 708 <p>
3593     </p>
3594 senoner 542 <blockquote class="text">
3595     <p>LinuxSampler will answer by returning the current number of sampler channels.
3596     </p>
3597 schoenebeck 708 </blockquote><p>
3598 schoenebeck 940
3599 schoenebeck 708 </p>
3600 senoner 542 <p>Example:
3601     </p>
3602 schoenebeck 708 <p>
3603     </p>
3604 senoner 542 <blockquote class="text">
3605     <p>C: "GET CHANNELS"
3606     </p>
3607     <p>S: "12"
3608     </p>
3609 schoenebeck 708 </blockquote><p>
3610 schoenebeck 940
3611 schoenebeck 708 </p>
3612 schoenebeck 940 <a name="LIST CHANNELS"></a><br /><hr />
3613 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3614     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3615     Getting all created sampler channel list</h3>
3616 senoner 542
3617     <p>The number of sampler channels can change on runtime. To get the
3618     current list of sampler channels, the front-end can send the
3619     following command:
3620     </p>
3621 schoenebeck 708 <p>
3622     </p>
3623 senoner 542 <blockquote class="text">
3624     <p>LIST CHANNELS
3625     </p>
3626 schoenebeck 708 </blockquote><p>
3627 schoenebeck 940
3628 schoenebeck 708 </p>
3629 senoner 542 <p>Possible Answers:
3630     </p>
3631 schoenebeck 708 <p>
3632     </p>
3633 senoner 542 <blockquote class="text">
3634     <p>LinuxSampler will answer by returning a comma separated list
3635     with all sampler channels numerical IDs.
3636     </p>
3637 schoenebeck 708 </blockquote><p>
3638 schoenebeck 940
3639 schoenebeck 708 </p>
3640 senoner 542 <p>Example:
3641     </p>
3642 schoenebeck 708 <p>
3643     </p>
3644 senoner 542 <blockquote class="text">
3645     <p>C: "LIST CHANNELS"
3646     </p>
3647     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3648     </p>
3649 schoenebeck 708 </blockquote><p>
3650 schoenebeck 940
3651 schoenebeck 708 </p>
3652 schoenebeck 940 <a name="ADD CHANNEL"></a><br /><hr />
3653 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3654     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3655     Adding a new sampler channel</h3>
3656 senoner 542
3657     <p>A new sampler channel can be added to the end of the sampler
3658     channel list by sending the following command:
3659     </p>
3660 schoenebeck 708 <p>
3661     </p>
3662 senoner 542 <blockquote class="text">
3663     <p>ADD CHANNEL
3664     </p>
3665 schoenebeck 708 </blockquote><p>
3666 schoenebeck 940
3667 schoenebeck 708 </p>
3668 senoner 542 <p>This will increment the sampler channel count by one and the new
3669     sampler channel will be appended to the end of the sampler channel
3670     list. The front-end should send the respective, related commands
3671     right after to e.g. load an engine, load an instrument and setting
3672     input, output method and eventually other commands to initialize
3673     the new channel. The front-end should use the sampler channel
3674     returned by the answer of this command to perform the previously
3675     recommended commands, to avoid race conditions e.g. with other
3676     front-ends that might also have sent an "ADD CHANNEL" command.
3677     </p>
3678     <p>Possible Answers:
3679     </p>
3680 schoenebeck 708 <p>
3681     </p>
3682 senoner 542 <blockquote class="text">
3683     <p>"OK[&lt;sampler-channel&gt;]" -
3684     </p>
3685     <blockquote class="text">
3686     <p>in case a new sampler channel could be added, where
3687     &lt;sampler-channel&gt; reflects the channel number of the new
3688 schoenebeck 561 created sampler channel which should be used to set up
3689     the sampler channel by sending subsequent initialization
3690 senoner 542 commands
3691     </p>
3692 schoenebeck 940 </blockquote>
3693    
3694 senoner 542
3695     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3696     </p>
3697     <blockquote class="text">
3698     <p>in case a new channel was added successfully, but there are
3699     noteworthy issue(s) related, providing an appropriate
3700     warning code and warning message
3701     </p>
3702 schoenebeck 940 </blockquote>
3703    
3704 senoner 542
3705     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3706     </p>
3707     <blockquote class="text">
3708     <p>in case it failed, providing an appropriate error code and
3709     error message
3710     </p>
3711 schoenebeck 940 </blockquote>
3712    
3713 senoner 542
3714 schoenebeck 708 </blockquote><p>
3715 schoenebeck 940
3716 schoenebeck 708 </p>
3717 senoner 542 <p>Example:
3718     </p>
3719 schoenebeck 708 <p>
3720     </p>
3721 senoner 542 <blockquote class="text">
3722     <p>
3723     </p>
3724 schoenebeck 708 </blockquote><p>
3725 schoenebeck 940
3726 schoenebeck 708 </p>
3727 schoenebeck 940 <a name="REMOVE CHANNEL"></a><br /><hr />
3728 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3729     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3730     Removing a sampler channel</h3>
3731 senoner 542
3732     <p>A sampler channel can be removed by sending the following command:
3733     </p>
3734 schoenebeck 708 <p>
3735     </p>
3736 senoner 542 <blockquote class="text">
3737     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3738     </p>
3739 schoenebeck 708 </blockquote><p>
3740 schoenebeck 940
3741 schoenebeck 708 </p>
3742 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3743     number of the sampler channel as given by the
3744 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3745     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3746 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3747     remain the same.
3748 senoner 542 </p>
3749     <p>Possible Answers:
3750     </p>
3751 schoenebeck 708 <p>
3752     </p>
3753 senoner 542 <blockquote class="text">
3754     <p>"OK" -
3755     </p>
3756     <blockquote class="text">
3757     <p>in case the given sampler channel could be removed
3758     </p>
3759 schoenebeck 940 </blockquote>
3760    
3761 senoner 542
3762     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3763     </p>
3764     <blockquote class="text">
3765     <p>in case the given channel was removed, but there are
3766     noteworthy issue(s) related, providing an appropriate
3767     warning code and warning message
3768     </p>
3769 schoenebeck 940 </blockquote>
3770    
3771 senoner 542
3772     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3773     </p>
3774     <blockquote class="text">
3775     <p>in case it failed, providing an appropriate error code and
3776     error message
3777     </p>
3778 schoenebeck 940 </blockquote>
3779    
3780 senoner 542
3781 schoenebeck 708 </blockquote><p>
3782 schoenebeck 940
3783 schoenebeck 708 </p>
3784 senoner 542 <p>Example:
3785     </p>
3786 schoenebeck 708 <p>
3787     </p>
3788 senoner 542 <blockquote class="text">
3789     <p>
3790     </p>
3791 schoenebeck 708 </blockquote><p>
3792 schoenebeck 940
3793 schoenebeck 708 </p>
3794 schoenebeck 940 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3795 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3796     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3797     Getting amount of available engines</h3>
3798 senoner 542
3799     <p>The front-end can ask for the number of available engines by sending the following command:
3800     </p>
3801 schoenebeck 708 <p>
3802     </p>
3803 senoner 542 <blockquote class="text">
3804     <p>GET AVAILABLE_ENGINES
3805     </p>
3806 schoenebeck 708 </blockquote><p>
3807 schoenebeck 940
3808 schoenebeck 708 </p>
3809 senoner 542 <p>Possible Answers:
3810     </p>
3811 schoenebeck 708 <p>
3812     </p>
3813 senoner 542 <blockquote class="text">
3814     <p>LinuxSampler will answer by sending the number of available engines.
3815     </p>
3816 schoenebeck 708 </blockquote><p>
3817 schoenebeck 940
3818 schoenebeck 708 </p>
3819 senoner 542 <p>Example:
3820     </p>
3821 schoenebeck 708 <p>
3822     </p>
3823 senoner 542 <blockquote class="text">
3824     <p>C: "GET AVAILABLE_ENGINES"
3825     </p>
3826     <p>S: "4"
3827     </p>
3828 schoenebeck 708 </blockquote><p>
3829 schoenebeck 940
3830 schoenebeck 708 </p>
3831 schoenebeck 940 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3832 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3833     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3834     Getting all available engines</h3>
3835 senoner 542
3836     <p>The front-end can ask for a list of all available engines by sending the following command:
3837     </p>
3838 schoenebeck 708 <p>
3839     </p>
3840 senoner 542 <blockquote class="text">
3841     <p>LIST AVAILABLE_ENGINES
3842     </p>
3843 schoenebeck 708 </blockquote><p>
3844 schoenebeck 940
3845 schoenebeck 708 </p>
3846 senoner 542 <p>Possible Answers:
3847     </p>
3848 schoenebeck 708 <p>
3849     </p>
3850 senoner 542 <blockquote class="text">
3851 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3852     of the engines' names encapsulated into apostrophes (').
3853     Engine names can consist of lower and upper cases,
3854     digits and underlines ("_" character).
3855 senoner 542 </p>
3856 schoenebeck 708 </blockquote><p>
3857 schoenebeck 940
3858 schoenebeck 708 </p>
3859 senoner 542 <p>Example:
3860     </p>
3861 schoenebeck 708 <p>
3862     </p>
3863 senoner 542 <blockquote class="text">
3864     <p>C: "LIST AVAILABLE_ENGINES"
3865     </p>
3866 schoenebeck 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3867 senoner 542 </p>
3868 schoenebeck 708 </blockquote><p>
3869 schoenebeck 940
3870 schoenebeck 708 </p>
3871 schoenebeck 940 <a name="GET ENGINE INFO"></a><br /><hr />
3872 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3873     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3874     Getting information about an engine</h3>
3875 senoner 542
3876     <p>The front-end can ask for information about a specific engine by
3877     sending the following command:
3878     </p>
3879 schoenebeck 708 <p>
3880     </p>
3881 senoner 542 <blockquote class="text">
3882     <p>GET ENGINE INFO &lt;engine-name&gt;
3883     </p>
3884 schoenebeck 708 </blockquote><p>
3885 schoenebeck 940
3886 schoenebeck 708 </p>
3887 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3888 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3889 senoner 542 </p>
3890     <p>Possible Answers:
3891     </p>
3892 schoenebeck 708 <p>
3893     </p>
3894 senoner 542 <blockquote class="text">
3895     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3896     Each answer line begins with the information category name
3897     followed by a colon and then a space character &lt;SP&gt; and finally
3898     the info character string to that info category. At the moment
3899     the following categories are defined:
3900     </p>
3901 schoenebeck 708 <p>
3902     </p>
3903 senoner 542 <blockquote class="text">
3904     <p>DESCRIPTION -
3905     </p>
3906     <blockquote class="text">
3907     <p>arbitrary description text about the engine
3908 schoenebeck 1400 (note that the character string may contain
3909     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3910 senoner 542 </p>
3911 schoenebeck 940 </blockquote>
3912    
3913 senoner 542
3914     <p>VERSION -
3915     </p>
3916     <blockquote class="text">
3917     <p>arbitrary character string regarding the engine's version
3918     </p>
3919 schoenebeck 940 </blockquote>
3920    
3921 senoner 542
3922 schoenebeck 940 </blockquote>
3923    
3924 senoner 542
3925 schoenebeck 708 </blockquote><p>
3926 schoenebeck 940
3927 schoenebeck 708 </p>
3928 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3929     </p>
3930     <p>Example:
3931     </p>
3932 schoenebeck 708 <p>
3933     </p>
3934 senoner 542 <blockquote class="text">
3935     <p>C: "GET ENGINE INFO JoesCustomEngine"
3936     </p>
3937     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3938     </p>
3939     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3940     </p>
3941     <p>&nbsp;&nbsp;&nbsp;"."
3942     </p>
3943 schoenebeck 708 </blockquote><p>
3944 schoenebeck 940
3945 schoenebeck 708 </p>
3946 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
3947 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3948     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3949     Getting sampler channel information</h3>
3950 senoner 542
3951     <p>The front-end can ask for the current settings of a sampler channel
3952     by sending the following command:
3953     </p>
3954 schoenebeck 708 <p>
3955     </p>
3956 senoner 542 <blockquote class="text">
3957     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3958     </p>
3959 schoenebeck 708 </blockquote><p>
3960 schoenebeck 940
3961 schoenebeck 708 </p>
3962 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3963 schoenebeck 974 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>
3964     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.
3965 senoner 542 </p>
3966     <p>Possible Answers:
3967     </p>
3968 schoenebeck 708 <p>
3969     </p>
3970 senoner 542 <blockquote class="text">
3971     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3972     Each answer line begins with the settings category name
3973     followed by a colon and then a space character &lt;SP&gt; and finally
3974     the info character string to that setting category. At the
3975     moment the following categories are defined:
3976     </p>
3977 schoenebeck 708 <p>
3978     </p>
3979 senoner 542 <blockquote class="text">
3980     <p>ENGINE_NAME -
3981     </p>
3982     <blockquote class="text">
3983 schoenebeck 575 <p>name of the engine that is associated with the sampler
3984     channel, "NONE" if there's no engine associated yet for
3985 senoner 542 this sampler channel
3986     </p>
3987 schoenebeck 940 </blockquote>
3988    
3989 senoner 542
3990     <p>AUDIO_OUTPUT_DEVICE -
3991     </p>
3992     <blockquote class="text">
3993     <p>numerical ID of the audio output device which is
3994     currently connected to this sampler channel to output
3995     the audio signal, "NONE" if there's no device
3996     connected to this sampler channel
3997     </p>
3998 schoenebeck 940 </blockquote>
3999    
4000 senoner 542
4001     <p>AUDIO_OUTPUT_CHANNELS -
4002     </p>
4003     <blockquote class="text">
4004     <p>number of output channels the sampler channel offers
4005     (dependent to used sampler engine and loaded instrument)
4006     </p>
4007 schoenebeck 940 </blockquote>
4008    
4009 senoner 542
4010     <p>AUDIO_OUTPUT_ROUTING -
4011     </p>
4012     <blockquote class="text">
4013     <p>comma separated list which reflects to which audio
4014     channel of the selected audio output device each
4015     sampler output channel is routed to, e.g. "0,3" would
4016     mean the engine's output channel 0 is routed to channel
4017     0 of the audio output device and the engine's output
4018     channel 1 is routed to the channel 3 of the audio
4019     output device
4020     </p>
4021 schoenebeck 940 </blockquote>
4022    
4023 senoner 542
4024     <p>INSTRUMENT_FILE -
4025     </p>
4026     <blockquote class="text">
4027     <p>the file name of the loaded instrument, "NONE" if
4028     there's no instrument yet loaded for this sampler
4029 schoenebeck 1400 channel (note: since LSCP 1.2 this path may contain
4030     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4031 senoner 542 </p>
4032 schoenebeck 940 </blockquote>
4033    
4034 senoner 542
4035     <p>INSTRUMENT_NR -
4036     </p>
4037     <blockquote class="text">
4038     <p>the instrument index number of the loaded instrument
4039     </p>
4040 schoenebeck 940 </blockquote>
4041    
4042 senoner 542
4043     <p>INSTRUMENT_NAME -
4044     </p>
4045     <blockquote class="text">
4046     <p>the instrument name of the loaded instrument
4047 schoenebeck 1400 (note: since LSCP 1.2 this character string may contain
4048     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4049 senoner 542 </p>
4050 schoenebeck 940 </blockquote>
4051    
4052 senoner 542
4053     <p>INSTRUMENT_STATUS -
4054     </p>
4055     <blockquote class="text">
4056     <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4057     value indicates a loading exception. Value of 100 indicates that the instrument is fully
4058     loaded.
4059     </p>
4060 schoenebeck 940 </blockquote>
4061    
4062 senoner 542
4063     <p>MIDI_INPUT_DEVICE -
4064     </p>
4065     <blockquote class="text">
4066     <p>numerical ID of the MIDI input device which is
4067     currently connected to this sampler channel to deliver
4068     MIDI input commands, "NONE" if there's no device
4069     connected to this sampler channel
4070     </p>
4071 schoenebeck 940 </blockquote>
4072    
4073 senoner 542
4074     <p>MIDI_INPUT_PORT -
4075     </p>
4076     <blockquote class="text">
4077     <p>port number of the MIDI input device
4078     </p>
4079 schoenebeck 940 </blockquote>
4080    
4081 senoner 542
4082     <p>MIDI_INPUT_CHANNEL -
4083     </p>
4084     <blockquote class="text">
4085     <p>the MIDI input channel number this sampler channel
4086     should listen to or "ALL" to listen on all MIDI channels
4087     </p>
4088 schoenebeck 940 </blockquote>
4089    
4090 senoner 542
4091     <p>VOLUME -
4092     </p>
4093     <blockquote class="text">
4094     <p>optionally dotted number for the channel volume factor
4095 schoenebeck 1028 (where a value &lt; 1.0 means attenuation and a value >
4096 senoner 542 1.0 means amplification)
4097     </p>
4098 schoenebeck 940 </blockquote>
4099    
4100 senoner 542
4101 schoenebeck 708 <p>MUTE -
4102     </p>
4103     <blockquote class="text">
4104     <p>Determines whether the channel is muted, "true" if the
4105     channel is muted, "false" if the channel is not muted, and
4106     "MUTED_BY_SOLO" if the channel is muted because of the
4107     presence of a solo channel and will be unmuted when
4108     there are no solo channels left
4109     </p>
4110 schoenebeck 940 </blockquote>
4111    
4112 senoner 542
4113 schoenebeck 708 <p>SOLO -
4114     </p>
4115     <blockquote class="text">
4116     <p>Determines whether this is a solo channel, "true" if
4117     the channel is a solo channel; "false" otherwise
4118     </p>
4119 schoenebeck 940 </blockquote>
4120    
4121 senoner 542
4122 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
4123     </p>
4124     <blockquote class="text">
4125     <p>Determines to which MIDI instrument map this sampler
4126     channel is assigned to. Read chapter
4127     <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>
4128     for a list of possible values.
4129     </p>
4130 schoenebeck 940 </blockquote>
4131 schoenebeck 974
4132    
4133     </blockquote>
4134 schoenebeck 940
4135 schoenebeck 708
4136     </blockquote><p>
4137 schoenebeck 940
4138 schoenebeck 708 </p>
4139 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4140     </p>
4141     <p>Example:
4142     </p>
4143 schoenebeck 708 <p>
4144     </p>
4145 senoner 542 <blockquote class="text">
4146     <p>C: "GET CHANNEL INFO 34"
4147     </p>
4148     <p>S: "ENGINE_NAME: GigEngine"
4149     </p>
4150     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4151     </p>
4152     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4153     </p>
4154     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4155     </p>
4156     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4157     </p>
4158     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4159     </p>
4160     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4161     </p>
4162     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4163     </p>
4164     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4165     </p>
4166     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4167     </p>
4168     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4169     </p>
4170     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4171     </p>
4172 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4173     </p>
4174     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4175     </p>
4176     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4177     </p>
4178     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4179     </p>
4180 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4181     </p>
4182 schoenebeck 708 </blockquote><p>
4183 schoenebeck 940
4184 schoenebeck 708 </p>
4185 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4186 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4187     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4188     Current number of active voices</h3>
4189 senoner 542
4190     <p>The front-end can ask for the current number of active voices on a
4191     sampler channel by sending the following command:
4192     </p>
4193 schoenebeck 708 <p>
4194     </p>
4195 senoner 542 <blockquote class="text">
4196     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4197     </p>
4198 schoenebeck 708 </blockquote><p>
4199 schoenebeck 940
4200 schoenebeck 708 </p>
4201 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4202 schoenebeck 974 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>
4203     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.
4204 senoner 542 </p>
4205     <p>Possible Answers:
4206     </p>
4207 schoenebeck 708 <p>
4208     </p>
4209 senoner 542 <blockquote class="text">
4210     <p>LinuxSampler will answer by returning the number of active
4211     voices on that channel.
4212     </p>
4213 schoenebeck 708 </blockquote><p>
4214 schoenebeck 940
4215 schoenebeck 708 </p>
4216 senoner 542 <p>Example:
4217     </p>
4218 schoenebeck 708 <p>
4219     </p>
4220 senoner 542 <blockquote class="text">
4221     <p>
4222     </p>
4223 schoenebeck 708 </blockquote><p>
4224 schoenebeck 940
4225 schoenebeck 708 </p>
4226 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4227 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4228     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4229     Current number of active disk streams</h3>
4230 senoner 542
4231     <p>The front-end can ask for the current number of active disk streams
4232     on a sampler channel by sending the following command:
4233     </p>
4234 schoenebeck 708 <p>
4235     </p>
4236 senoner 542 <blockquote class="text">
4237     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4238     </p>
4239 schoenebeck 708 </blockquote><p>
4240 schoenebeck 940
4241 schoenebeck 708 </p>
4242 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4243 schoenebeck 974 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>
4244     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.
4245 senoner 542 </p>
4246     <p>Possible Answers:
4247     </p>
4248 schoenebeck 708 <p>
4249     </p>
4250 senoner 542 <blockquote class="text">
4251     <p>LinuxSampler will answer by returning the number of active
4252     disk streams on that channel in case the engine supports disk
4253     streaming, if the engine doesn't support disk streaming it will
4254     return "NA" for not available.
4255     </p>
4256 schoenebeck 708 </blockquote><p>
4257 schoenebeck 940
4258 schoenebeck 708 </p>
4259 senoner 542 <p>Example:
4260     </p>
4261 schoenebeck 708 <p>
4262     </p>
4263 senoner 542 <blockquote class="text">
4264     <p>
4265     </p>
4266 schoenebeck 708 </blockquote><p>
4267 schoenebeck 940
4268 schoenebeck 708 </p>
4269 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4270 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4271     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4272     Current fill state of disk stream buffers</h3>
4273 senoner 542
4274     <p>The front-end can ask for the current fill state of all disk streams
4275     on a sampler channel by sending the following command:
4276     </p>
4277 schoenebeck 708 <p>
4278     </p>
4279 senoner 542 <blockquote class="text">
4280     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4281     </p>
4282 schoenebeck 708 </blockquote><p>
4283 schoenebeck 940
4284 schoenebeck 708 </p>
4285 senoner 542 <p>to get the fill state in bytes or
4286     </p>
4287 schoenebeck 708 <p>
4288     </p>
4289 senoner 542 <blockquote class="text">
4290     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4291     </p>
4292 schoenebeck 708 </blockquote><p>
4293 schoenebeck 940
4294 schoenebeck 708 </p>
4295 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4296 schoenebeck 575 sampler channel number the front-end is interested in
4297 schoenebeck 974 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>
4298     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.
4299 senoner 542 </p>
4300     <p>Possible Answers:
4301     </p>
4302 schoenebeck 708 <p>
4303     </p>
4304 senoner 542 <blockquote class="text">
4305     <p>LinuxSampler will either answer by returning a comma separated
4306     string with the fill state of all disk stream buffers on that
4307     channel or an empty line if there are no active disk streams or
4308     "NA" for *not available* in case the engine which is deployed
4309     doesn't support disk streaming. Each entry in the answer list
4310     will begin with the stream's ID in brackets followed by the
4311     numerical representation of the fill size (either in bytes or
4312     percentage). Note: due to efficiency reasons the fill states in
4313     the response are not in particular order, thus the front-end has
4314     to sort them by itself if necessary.
4315     </p>
4316 schoenebeck 708 </blockquote><p>
4317 schoenebeck 940
4318 schoenebeck 708 </p>
4319 senoner 542 <p>Examples:
4320     </p>
4321 schoenebeck 708 <p>
4322     </p>
4323 senoner 542 <blockquote class="text">
4324     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4325     </p>
4326     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4327     </p>
4328 schoenebeck 708 </blockquote><p>
4329    
4330     </p>
4331 senoner 542 <blockquote class="text">
4332 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4333 senoner 542 </p>
4334     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4335     </p>
4336 schoenebeck 708 </blockquote><p>
4337    
4338     </p>
4339 senoner 542 <blockquote class="text">
4340 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4341 senoner 542 </p>
4342     <p>S: ""
4343     </p>
4344 schoenebeck 708 </blockquote><p>
4345 schoenebeck 940
4346 schoenebeck 708 </p>
4347 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4348 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4349     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4350     Setting audio output device</h3>
4351 senoner 542
4352     <p>The front-end can set the audio output device on a specific sampler
4353     channel by sending the following command:
4354     </p>
4355 schoenebeck 708 <p>
4356     </p>
4357 senoner 542 <blockquote class="text">
4358     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4359     </p>
4360 schoenebeck 708 </blockquote><p>
4361 schoenebeck 940
4362 schoenebeck 708 </p>
4363 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4364 schoenebeck 974 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>
4365     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
4366 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4367 schoenebeck 974 <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>
4368     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>
4369 schoenebeck 575 command.
4370 senoner 542 </p>
4371     <p>Possible Answers:
4372     </p>
4373 schoenebeck 708 <p>
4374     </p>
4375 senoner 542 <blockquote class="text">
4376     <p>"OK" -
4377     </p>
4378     <blockquote class="text">
4379     <p>on success
4380     </p>
4381 schoenebeck 940 </blockquote>
4382    
4383 senoner 542
4384     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4385     </p>
4386     <blockquote class="text">
4387     <p>if audio output device was set, but there are noteworthy
4388     issue(s) related, providing an appropriate warning code and
4389     warning message
4390     </p>
4391 schoenebeck 940 </blockquote>
4392    
4393 senoner 542
4394     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4395     </p>
4396     <blockquote class="text">
4397     <p>in case it failed, providing an appropriate error code and error message
4398     </p>
4399 schoenebeck 940 </blockquote>
4400    
4401 senoner 542
4402 schoenebeck 708 </blockquote><p>
4403 schoenebeck 940
4404 schoenebeck 708 </p>
4405 senoner 542 <p>Examples:
4406     </p>
4407 schoenebeck 708 <p>
4408     </p>
4409 senoner 542 <blockquote class="text">
4410     <p>
4411     </p>
4412 schoenebeck 708 </blockquote><p>
4413 schoenebeck 940
4414 schoenebeck 708 </p>
4415 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4416     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4417     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4418     Setting audio output type</h3>
4419 senoner 542
4420     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4421     </p>
4422     <p>The front-end can alter the audio output type on a specific sampler
4423     channel by sending the following command:
4424     </p>
4425 schoenebeck 708 <p>
4426     </p>
4427 senoner 542 <blockquote class="text">
4428     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4429     </p>
4430 schoenebeck 708 </blockquote><p>
4431 schoenebeck 940
4432 schoenebeck 708 </p>
4433 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4434     &lt;sampler-channel&gt; is the respective sampler channel number.
4435     </p>
4436     <p>Possible Answers:
4437     </p>
4438 schoenebeck 708 <p>
4439     </p>
4440 senoner 542 <blockquote class="text">
4441     <p>"OK" -
4442     </p>
4443     <blockquote class="text">
4444     <p>on success
4445     </p>
4446 schoenebeck 940 </blockquote>
4447    
4448 senoner 542
4449     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4450     </p>
4451     <blockquote class="text">
4452     <p>if audio output type was set, but there are noteworthy
4453     issue(s) related, providing an appropriate warning code and
4454     warning message
4455     </p>
4456 schoenebeck 940 </blockquote>
4457    
4458 senoner 542
4459     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4460     </p>
4461     <blockquote class="text">
4462     <p>in case it failed, providing an appropriate error code and error message
4463     </p>
4464 schoenebeck 940 </blockquote>
4465    
4466 senoner 542
4467 schoenebeck 708 </blockquote><p>
4468 schoenebeck 940
4469 schoenebeck 708 </p>
4470 senoner 542 <p>Examples:
4471     </p>
4472 schoenebeck 708 <p>
4473     </p>
4474 senoner 542 <blockquote class="text">
4475     <p>
4476     </p>
4477 schoenebeck 708 </blockquote><p>
4478 schoenebeck 940
4479 schoenebeck 708 </p>
4480 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4481 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4482     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4483     Setting audio output channel</h3>
4484 senoner 542
4485     <p>The front-end can alter the audio output channel on a specific
4486     sampler channel by sending the following command:
4487     </p>
4488 schoenebeck 708 <p>
4489     </p>
4490 senoner 542 <blockquote class="text">
4491     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4492     </p>
4493 schoenebeck 708 </blockquote><p>
4494 schoenebeck 940
4495 schoenebeck 708 </p>
4496 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4497 schoenebeck 974 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>
4498     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
4499 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4500     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4501     output device where &lt;audio-out&gt; should be routed to.
4502     </p>
4503     <p>Possible Answers:
4504     </p>
4505 schoenebeck 708 <p>
4506     </p>
4507 senoner 542 <blockquote class="text">
4508     <p>"OK" -
4509     </p>
4510     <blockquote class="text">
4511     <p>on success
4512     </p>
4513 schoenebeck 940 </blockquote>
4514    
4515 senoner 542
4516     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4517     </p>
4518     <blockquote class="text">
4519     <p>if audio output channel was set, but there are noteworthy
4520     issue(s) related, providing an appropriate warning code and
4521     warning message
4522     </p>
4523 schoenebeck 940 </blockquote>
4524    
4525 senoner 542
4526     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4527     </p>
4528     <blockquote class="text">
4529     <p>in case it failed, providing an appropriate error code and error message
4530     </p>
4531 schoenebeck 940 </blockquote>
4532    
4533 senoner 542
4534 schoenebeck 708 </blockquote><p>
4535 schoenebeck 940
4536 schoenebeck 708 </p>
4537 senoner 542 <p>Examples:
4538     </p>
4539 schoenebeck 708 <p>
4540     </p>
4541 senoner 542 <blockquote class="text">
4542     <p>
4543     </p>
4544 schoenebeck 708 </blockquote><p>
4545 schoenebeck 940
4546 schoenebeck 708 </p>
4547 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4548 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4549     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4550     Setting MIDI input device</h3>
4551 senoner 542
4552     <p>The front-end can set the MIDI input device on a specific sampler
4553     channel by sending the following command:
4554     </p>
4555 schoenebeck 708 <p>
4556     </p>
4557 senoner 542 <blockquote class="text">
4558     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4559     </p>
4560 schoenebeck 708 </blockquote><p>
4561 schoenebeck 940
4562 schoenebeck 708 </p>
4563 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4564 schoenebeck 974 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>
4565     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
4566 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4567 schoenebeck 974 <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>
4568     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.
4569 senoner 542 </p>
4570     <p>Possible Answers:
4571     </p>
4572 schoenebeck 708 <p>
4573     </p>
4574 senoner 542 <blockquote class="text">
4575     <p>"OK" -
4576     </p>
4577     <blockquote class="text">
4578     <p>on success
4579     </p>
4580 schoenebeck 940 </blockquote>
4581    
4582 senoner 542
4583     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4584     </p>
4585     <blockquote class="text">
4586     <p>if MIDI input device was set, but there are noteworthy
4587     issue(s) related, providing an appropriate warning code and
4588     warning message
4589     </p>
4590 schoenebeck 940 </blockquote>
4591    
4592 senoner 542
4593     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4594     </p>
4595     <blockquote class="text">
4596     <p>in case it failed, providing an appropriate error code and error message
4597     </p>
4598 schoenebeck 940 </blockquote>
4599    
4600 senoner 542
4601 schoenebeck 708 </blockquote><p>
4602 schoenebeck 940
4603 schoenebeck 708 </p>
4604 senoner 542 <p>Examples:
4605     </p>
4606 schoenebeck 708 <p>
4607     </p>
4608 senoner 542 <blockquote class="text">
4609     <p>
4610     </p>
4611 schoenebeck 708 </blockquote><p>
4612 schoenebeck 940
4613 schoenebeck 708 </p>
4614 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4615 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4616     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4617     Setting MIDI input type</h3>
4618 senoner 542
4619     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4620     </p>
4621     <p>The front-end can alter the MIDI input type on a specific sampler
4622     channel by sending the following command:
4623     </p>
4624 schoenebeck 708 <p>
4625     </p>
4626 senoner 542 <blockquote class="text">
4627     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4628     </p>
4629 schoenebeck 708 </blockquote><p>
4630 schoenebeck 940
4631 schoenebeck 708 </p>
4632 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4633     &lt;sampler-channel&gt; is the respective sampler channel number.
4634     </p>
4635     <p>Possible Answers:
4636     </p>
4637 schoenebeck 708 <p>
4638     </p>
4639 senoner 542 <blockquote class="text">
4640     <p>"OK" -
4641     </p>
4642     <blockquote class="text">
4643     <p>on success
4644     </p>
4645 schoenebeck 940 </blockquote>
4646    
4647 senoner 542
4648     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4649     </p>
4650     <blockquote class="text">
4651     <p>if MIDI input type was set, but there are noteworthy
4652     issue(s) related, providing an appropriate warning code and
4653     warning message
4654     </p>
4655 schoenebeck 940 </blockquote>
4656    
4657 senoner 542
4658     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4659     </p>
4660     <blockquote class="text">
4661     <p>in case it failed, providing an appropriate error code and error message
4662     </p>
4663 schoenebeck 940 </blockquote>
4664    
4665 senoner 542
4666 schoenebeck 708 </blockquote><p>
4667 schoenebeck 940
4668 schoenebeck 708 </p>
4669 senoner 542 <p>Examples:
4670     </p>
4671 schoenebeck 708 <p>
4672     </p>
4673 senoner 542 <blockquote class="text">
4674     <p>
4675     </p>
4676 schoenebeck 708 </blockquote><p>
4677 schoenebeck 940
4678 schoenebeck 708 </p>
4679 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4680 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4681     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4682     Setting MIDI input port</h3>
4683 senoner 542
4684     <p>The front-end can alter the MIDI input port on a specific sampler
4685     channel by sending the following command:
4686     </p>
4687 schoenebeck 708 <p>
4688     </p>
4689 senoner 542 <blockquote class="text">
4690     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4691     </p>
4692 schoenebeck 708 </blockquote><p>
4693 schoenebeck 940
4694 schoenebeck 708 </p>
4695 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4696     MIDI input device connected to the sampler channel given by
4697     &lt;sampler-channel&gt;.
4698     </p>
4699     <p>Possible Answers:
4700     </p>
4701 schoenebeck 708 <p>
4702     </p>
4703 senoner 542 <blockquote class="text">
4704     <p>"OK" -
4705     </p>
4706     <blockquote class="text">
4707     <p>on success
4708     </p>
4709 schoenebeck 940 </blockquote>
4710    
4711 senoner 542
4712     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4713     </p>
4714     <blockquote class="text">
4715     <p>if MIDI input port was set, but there are noteworthy
4716     issue(s) related, providing an appropriate warning code and
4717     warning message
4718     </p>
4719 schoenebeck 940 </blockquote>
4720    
4721 senoner 542
4722     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4723     </p>
4724     <blockquote class="text">
4725 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4726 senoner 542 </p>
4727 schoenebeck 940 </blockquote>
4728    
4729 senoner 542
4730 schoenebeck 708 </blockquote><p>
4731 schoenebeck 940
4732 schoenebeck 708 </p>
4733 senoner 542 <p>Examples:
4734     </p>
4735 schoenebeck 708 <p>
4736     </p>
4737 senoner 542 <blockquote class="text">
4738     <p>
4739     </p>
4740 schoenebeck 708 </blockquote><p>
4741 schoenebeck 940
4742 schoenebeck 708 </p>
4743 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4744 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4745     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4746     Setting MIDI input channel</h3>
4747 senoner 542
4748     <p>The front-end can alter the MIDI channel a sampler channel should
4749     listen to by sending the following command:
4750     </p>
4751 schoenebeck 708 <p>
4752     </p>
4753 senoner 542 <blockquote class="text">
4754     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4755     </p>
4756 schoenebeck 708 </blockquote><p>
4757 schoenebeck 940
4758 schoenebeck 708 </p>
4759 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4760     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4761     channels.
4762     </p>
4763     <p>Possible Answers:
4764     </p>
4765 schoenebeck 708 <p>
4766     </p>
4767 senoner 542 <blockquote class="text">
4768     <p>"OK" -
4769     </p>
4770     <blockquote class="text">
4771     <p>on success
4772     </p>
4773 schoenebeck 940 </blockquote>
4774    
4775 senoner 542
4776     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4777     </p>
4778     <blockquote class="text">
4779     <p>if MIDI input channel was set, but there are noteworthy
4780     issue(s) related, providing an appropriate warning code and
4781     warning message
4782     </p>
4783 schoenebeck 940 </blockquote>
4784    
4785 senoner 542
4786     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4787     </p>
4788     <blockquote class="text">
4789     <p>in case it failed, providing an appropriate error code and error message
4790     </p>
4791 schoenebeck 940 </blockquote>
4792    
4793 senoner 542
4794 schoenebeck 708 </blockquote><p>
4795 schoenebeck 940
4796 schoenebeck 708 </p>
4797 senoner 542 <p>Examples:
4798     </p>
4799 schoenebeck 708 <p>
4800     </p>
4801 senoner 542 <blockquote class="text">
4802     <p>
4803     </p>
4804 schoenebeck 708 </blockquote><p>
4805 schoenebeck 940
4806 schoenebeck 708 </p>
4807 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4808 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4809     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4810     Setting channel volume</h3>
4811 senoner 542
4812     <p>The front-end can alter the volume of a sampler channel by sending
4813     the following command:
4814     </p>
4815 schoenebeck 708 <p>
4816     </p>
4817 senoner 542 <blockquote class="text">
4818     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4819     </p>
4820 schoenebeck 708 </blockquote><p>
4821 schoenebeck 940
4822 schoenebeck 708 </p>
4823 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4824     smaller than 1.0 means attenuation, whereas a value greater than
4825     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4826     channel where this volume factor should be set.
4827     </p>
4828     <p>Possible Answers:
4829     </p>
4830 schoenebeck 708 <p>
4831     </p>
4832 senoner 542 <blockquote class="text">
4833     <p>"OK" -
4834     </p>
4835     <blockquote class="text">
4836     <p>on success
4837     </p>
4838 schoenebeck 940 </blockquote>
4839    
4840 senoner 542
4841     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4842     </p>
4843     <blockquote class="text">
4844     <p>if channel volume was set, but there are noteworthy
4845     issue(s) related, providing an appropriate warning code and
4846     warning message
4847     </p>
4848 schoenebeck 940 </blockquote>
4849    
4850 senoner 542
4851     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4852     </p>
4853     <blockquote class="text">
4854     <p>in case it failed, providing an appropriate error code and error message
4855     </p>
4856 schoenebeck 940 </blockquote>
4857    
4858 senoner 542
4859 schoenebeck 708 </blockquote><p>
4860 schoenebeck 940
4861 schoenebeck 708 </p>
4862 senoner 542 <p>Examples:
4863     </p>
4864 schoenebeck 708 <p>
4865     </p>
4866 senoner 542 <blockquote class="text">
4867     <p>
4868     </p>
4869 schoenebeck 708 </blockquote><p>
4870 schoenebeck 940
4871 schoenebeck 708 </p>
4872 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
4873 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4874     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4875     Muting a sampler channel</h3>
4876 senoner 542
4877 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4878     channel by sending the following command:
4879     </p>
4880     <p>
4881     </p>
4882     <blockquote class="text">
4883     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4884     </p>
4885     </blockquote><p>
4886 schoenebeck 940
4887 schoenebeck 708 </p>
4888     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4889 schoenebeck 974 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>
4890     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
4891 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4892     to unmute the channel.
4893     </p>
4894     <p>Possible Answers:
4895     </p>
4896     <p>
4897     </p>
4898     <blockquote class="text">
4899     <p>"OK" -
4900     </p>
4901     <blockquote class="text">
4902     <p>on success
4903     </p>
4904 schoenebeck 940 </blockquote>
4905    
4906 schoenebeck 708
4907     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4908     </p>
4909     <blockquote class="text">
4910     <p>if the channel was muted/unmuted, but there are noteworthy
4911     issue(s) related, providing an appropriate warning code and
4912     warning message
4913     </p>
4914 schoenebeck 940 </blockquote>
4915    
4916 schoenebeck 708
4917     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4918     </p>
4919     <blockquote class="text">
4920     <p>in case it failed, providing an appropriate error code and error message
4921     </p>
4922 schoenebeck 940 </blockquote>
4923    
4924 schoenebeck 708
4925     </blockquote><p>
4926 schoenebeck 940
4927 schoenebeck 708 </p>
4928     <p>Examples:
4929     </p>
4930     <p>
4931     </p>
4932     <blockquote class="text">
4933     <p>
4934     </p>
4935     </blockquote><p>
4936 schoenebeck 940
4937 schoenebeck 708 </p>
4938 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
4939 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4940     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4941     Soloing a sampler channel</h3>
4942 schoenebeck 708
4943     <p>The front-end can solo/unsolo a specific sampler channel
4944     by sending the following command:
4945     </p>
4946     <p>
4947     </p>
4948     <blockquote class="text">
4949     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4950     </p>
4951     </blockquote><p>
4952 schoenebeck 940
4953 schoenebeck 708 </p>
4954     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4955 schoenebeck 974 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>
4956     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
4957 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4958     to unsolo the channel.
4959     </p>
4960     <p>Possible Answers:
4961     </p>
4962     <p>
4963     </p>
4964     <blockquote class="text">
4965     <p>"OK" -
4966     </p>
4967     <blockquote class="text">
4968     <p>on success
4969     </p>
4970 schoenebeck 940 </blockquote>
4971    
4972 schoenebeck 708
4973     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4974     </p>
4975     <blockquote class="text">
4976     <p>if the channel was soloed/unsoloed, but there are noteworthy
4977     issue(s) related, providing an appropriate warning code and
4978     warning message
4979     </p>
4980 schoenebeck 940 </blockquote>
4981    
4982 schoenebeck 708
4983     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4984     </p>
4985     <blockquote class="text">
4986     <p>in case it failed, providing an appropriate error code and error message
4987     </p>
4988 schoenebeck 940 </blockquote>
4989    
4990 schoenebeck 708
4991     </blockquote><p>
4992 schoenebeck 940
4993 schoenebeck 708 </p>
4994     <p>Examples:
4995     </p>
4996     <p>
4997     </p>
4998     <blockquote class="text">
4999     <p>
5000     </p>
5001     </blockquote><p>
5002 schoenebeck 940
5003 schoenebeck 708 </p>
5004 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5005     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5006     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5007     Assigning a MIDI instrument map to a sampler channel</h3>
5008    
5009     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5010     by sending the following command:
5011     </p>
5012     <p>
5013     </p>
5014     <blockquote class="text">
5015     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5016     </p>
5017     </blockquote><p>
5018    
5019     </p>
5020     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5021     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>
5022     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
5023     &lt;map&gt; can have the following possibilites:
5024     </p>
5025     <p>
5026     </p>
5027     <blockquote class="text">
5028     <p>"NONE" -
5029     </p>
5030     <blockquote class="text">
5031     <p>This is the default setting. In this case
5032     the sampler channel is not assigned any MIDI
5033     instrument map and thus will ignore all MIDI
5034     program change messages.
5035     </p>
5036     </blockquote>
5037    
5038    
5039     <p>"DEFAULT" -
5040     </p>
5041     <blockquote class="text">
5042     <p>The sampler channel will always use the
5043     default MIDI instrument map to handle MIDI
5044     program change messages.
5045     </p>
5046     </blockquote>
5047    
5048    
5049     <p>numeric ID -
5050     </p>
5051     <blockquote class="text">
5052     <p>You can assign a specific MIDI instrument map
5053     by replacing &lt;map&gt; with the respective numeric
5054     ID of the MIDI instrument map as returned by the
5055     <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>
5056     command. Once that map will be deleted, the sampler
5057     channel would fall back to "NONE".
5058     </p>
5059     </blockquote>
5060    
5061    
5062     </blockquote><p>
5063    
5064     </p>
5065     <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>
5066     for details regarding MIDI instrument mapping.
5067     </p>
5068     <p>Possible Answers:
5069     </p>
5070     <p>
5071     </p>
5072     <blockquote class="text">
5073     <p>"OK" -
5074     </p>
5075     <blockquote class="text">
5076     <p>on success
5077     </p>
5078     </blockquote>
5079    
5080    
5081     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5082     </p>
5083     <blockquote class="text">
5084     <p>in case it failed, providing an appropriate error code and error message
5085     </p>
5086     </blockquote>
5087    
5088    
5089     </blockquote><p>
5090    
5091     </p>
5092     <p>Examples:
5093     </p>
5094     <p>
5095     </p>
5096     <blockquote class="text">
5097     <p>
5098     </p>
5099     </blockquote><p>
5100    
5101     </p>
5102 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
5103     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5104     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5105     Adding an effect send to a sampler channel</h3>
5106    
5107     <p>The front-end can create an additional effect send on a specific sampler channel
5108     by sending the following command:
5109     </p>
5110     <p>
5111     </p>
5112     <blockquote class="text">
5113     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5114     </p>
5115     </blockquote><p>
5116    
5117     </p>
5118     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5119     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>
5120     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
5121     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5122     is a number between 0..127 defining the MIDI controller which can alter the
5123     effect send level and &lt;name&gt; is an optional argument defining a name
5124 schoenebeck 1390 for the effect send entity. The name does not have to be unique, but MUST be
5125     encapsulated into apostrophes and supports escape sequences as described in chapter
5126     "<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>".
5127 schoenebeck 1002 </p>
5128     <p>By default, that is as initial routing, the effect send's audio channels
5129     are automatically routed to the last audio channels of the sampler channel's
5130     audio output device, that way you can i.e. first increase the amount of audio
5131     channels on the audio output device for having dedicated effect send output
5132     channels and when "CREATE FX_SEND" is called, those channels will automatically
5133     be picked. You can alter the destination channels however with
5134     <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>.
5135    
5136     </p>
5137     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5138     sends on a sampler channel will decrease runtime performance, because for implementing channel
5139     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5140     the voices and route the audio signal afterwards to the master outputs and effect send
5141     outputs (along with their respective effect send levels). A sampler channel without effect
5142     sends however can mix its voices directly into the audio output devices's audio buffers
5143     and is thus faster.
5144    
5145     </p>
5146     <p>Possible Answers:
5147     </p>
5148     <p>
5149     </p>
5150     <blockquote class="text">
5151     <p>"OK[&lt;fx-send-id&gt;]" -
5152     </p>
5153     <blockquote class="text">
5154     <p>in case a new effect send could be added to the
5155     sampler channel, where &lt;fx-send-id&gt; reflects the
5156     unique ID of the newly created effect send entity
5157     </p>
5158     </blockquote>
5159    
5160    
5161     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5162     </p>
5163     <blockquote class="text">
5164     <p>when a new effect send could not be added, i.e.
5165     due to invalid parameters
5166     </p>
5167     </blockquote>
5168    
5169    
5170     </blockquote><p>
5171    
5172     </p>
5173     <p>Examples:
5174     </p>
5175     <p>
5176     </p>
5177     <blockquote class="text">
5178     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5179     </p>
5180     <p>S: "OK[0]"
5181     </p>
5182     </blockquote><p>
5183    
5184     </p>
5185     <p>
5186     </p>
5187     <blockquote class="text">
5188     <p>C: "CREATE FX_SEND 0 93"
5189     </p>
5190     <p>S: "OK[1]"
5191     </p>
5192     </blockquote><p>
5193    
5194     </p>
5195     <a name="DESTROY FX_SEND"></a><br /><hr />
5196     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5197     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5198     Removing an effect send from a sampler channel</h3>
5199    
5200     <p>The front-end can remove an existing effect send on a specific sampler channel
5201     by sending the following command:
5202     </p>
5203     <p>
5204     </p>
5205     <blockquote class="text">
5206     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5207     </p>
5208     </blockquote><p>
5209    
5210     </p>
5211     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5212     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>
5213     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
5214     sampler channel from which the effect send should be removed from and
5215     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5216     <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>
5217     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.
5218     </p>
5219     <p>Possible Answers:
5220     </p>
5221     <p>
5222     </p>
5223     <blockquote class="text">
5224     <p>"OK" -
5225     </p>
5226     <blockquote class="text">
5227     <p>on success
5228     </p>
5229     </blockquote>
5230    
5231    
5232     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5233     </p>
5234     <blockquote class="text">
5235     <p>in case it failed, providing an appropriate error code and
5236     error message
5237     </p>
5238     </blockquote>
5239    
5240    
5241     </blockquote><p>
5242    
5243     </p>
5244     <p>Example:
5245     </p>
5246     <p>
5247     </p>
5248     <blockquote class="text">
5249     <p>C: "DESTROY FX_SEND 0 0"
5250     </p>
5251     <p>S: "OK"
5252     </p>
5253     </blockquote><p>
5254    
5255     </p>
5256     <a name="GET FX_SENDS"></a><br /><hr />
5257     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5258     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5259     Getting amount of effect sends on a sampler channel</h3>
5260    
5261     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5262     by sending the following command:
5263     </p>
5264     <p>
5265     </p>
5266     <blockquote class="text">
5267     <p>GET FX_SENDS &lt;sampler-channel&gt;
5268     </p>
5269     </blockquote><p>
5270    
5271     </p>
5272     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5273     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>
5274     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.
5275     </p>
5276     <p>Possible Answers:
5277     </p>
5278     <p>
5279     </p>
5280     <blockquote class="text">
5281     <p>The sampler will answer by returning the number of effect
5282     sends on the given sampler channel.
5283     </p>
5284     </blockquote><p>
5285    
5286     </p>
5287     <p>Example:
5288     </p>
5289     <p>
5290     </p>
5291     <blockquote class="text">
5292     <p>C: "GET FX_SENDS 0"
5293     </p>
5294     <p>S: "2"
5295     </p>
5296     </blockquote><p>
5297    
5298     </p>
5299     <a name="LIST FX_SENDS"></a><br /><hr />
5300     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5301     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5302     Listing all effect sends on a sampler channel</h3>
5303    
5304     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5305     by sending the following command:
5306     </p>
5307     <p>
5308     </p>
5309     <blockquote class="text">
5310     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5311     </p>
5312     </blockquote><p>
5313    
5314     </p>
5315     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5316     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>
5317     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.
5318     </p>
5319     <p>Possible Answers:
5320     </p>
5321     <p>
5322     </p>
5323     <blockquote class="text">
5324     <p>The sampler will answer by returning a comma separated list
5325     with all effect sends' numerical IDs on the given sampler
5326     channel.
5327     </p>
5328     </blockquote><p>
5329    
5330     </p>
5331     <p>Examples:
5332     </p>
5333     <p>
5334     </p>
5335     <blockquote class="text">
5336     <p>C: "LIST FX_SENDS 0"
5337     </p>
5338     <p>S: "0,1"
5339     </p>
5340     </blockquote><p>
5341    
5342     </p>
5343     <p>
5344     </p>
5345     <blockquote class="text">
5346     <p>C: "LIST FX_SENDS 1"
5347     </p>
5348     <p>S: ""
5349     </p>
5350     </blockquote><p>
5351    
5352     </p>
5353     <a name="GET FX_SEND INFO"></a><br /><hr />
5354     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5355     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5356     Getting effect send information</h3>
5357    
5358     <p>The front-end can ask for the current settings of an effect send entity
5359     by sending the following command:
5360     </p>
5361     <p>
5362     </p>
5363     <blockquote class="text">
5364     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5365     </p>
5366     </blockquote><p>
5367    
5368     </p>
5369     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5370     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>
5371     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
5372     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5373     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>
5374     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.
5375    
5376     </p>
5377     <p>Possible Answers:
5378     </p>
5379     <p>
5380     </p>
5381     <blockquote class="text">
5382     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5383     Each answer line begins with the settings category name
5384     followed by a colon and then a space character &lt;SP&gt; and finally
5385     the info character string to that setting category. At the
5386     moment the following categories are defined:
5387     </p>
5388     <p>
5389     </p>
5390     <blockquote class="text">
5391     <p>NAME -
5392     </p>
5393     <blockquote class="text">
5394     <p>name of the effect send entity
5395 schoenebeck 1400 (note that this character string may contain
5396     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5397 schoenebeck 1002 </p>
5398     </blockquote>
5399    
5400    
5401 schoenebeck 1028 <p>MIDI_CONTROLLER -
5402     </p>
5403     <blockquote class="text">
5404     <p>a value between 0 and 127 reflecting the MIDI controller
5405     which is able to modify the effect send's send level
5406     </p>
5407     </blockquote>
5408    
5409    
5410     <p>LEVEL -
5411     </p>
5412     <blockquote class="text">
5413     <p>optionally dotted number reflecting the effect send's
5414     current send level (where a value &lt; 1.0 means attenuation
5415     and a value > 1.0 means amplification)
5416     </p>
5417     </blockquote>
5418    
5419    
5420 schoenebeck 1002 <p>AUDIO_OUTPUT_ROUTING -
5421     </p>
5422     <blockquote class="text">
5423     <p>comma separated list which reflects to which audio
5424     channel of the selected audio output device each
5425     effect send output channel is routed to, e.g. "0,3" would
5426     mean the effect send's output channel 0 is routed to channel
5427     0 of the audio output device and the effect send's output
5428     channel 1 is routed to the channel 3 of the audio
5429     output device (see
5430     <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>
5431     for details)
5432     </p>
5433     </blockquote>
5434    
5435    
5436     </blockquote>
5437    
5438    
5439     </blockquote><p>
5440    
5441     </p>
5442     <p>The mentioned fields above don't have to be in particular order.
5443     </p>
5444     <p>Example:
5445     </p>
5446     <p>
5447     </p>
5448     <blockquote class="text">
5449     <p>C: "GET FX_SEND INFO 0 0"
5450     </p>
5451     <p>S: "NAME: Reverb Send"
5452     </p>
5453 schoenebeck 1028 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5454     </p>
5455     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5456     </p>
5457 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5458     </p>
5459     <p>&nbsp;&nbsp;&nbsp;"."
5460     </p>
5461     </blockquote><p>
5462    
5463     </p>
5464 iliev 1137 <a name="SET FX_SEND NAME"></a><br /><hr />
5465     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5466     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5467     Changing effect send's name</h3>
5468    
5469     <p>The front-end can alter the current name of an effect
5470     send entity by sending the following command:
5471     </p>
5472     <p>
5473     </p>
5474     <blockquote class="text">
5475     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5476     </p>
5477     </blockquote><p>
5478    
5479     </p>
5480     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5481     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>
5482     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,
5483     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5484     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>
5485     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
5486     &lt;name&gt; is the new name of the effect send entity, which
5487 schoenebeck 1390 does not have to be unique (name MUST be encapsulated into apostrophes
5488     and supports escape sequences as described in chapter
5489     "<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>").
5490    
5491 iliev 1137 </p>
5492     <p>Possible Answers:
5493     </p>
5494     <p>
5495     </p>
5496     <blockquote class="text">
5497     <p>"OK" -
5498     </p>
5499     <blockquote class="text">
5500     <p>on success
5501     </p>
5502     </blockquote>
5503    
5504    
5505     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5506     </p>
5507     <blockquote class="text">
5508     <p>in case it failed, providing an appropriate error code and error message
5509     </p>
5510     </blockquote>
5511    
5512    
5513     </blockquote><p>
5514    
5515     </p>
5516     <p>Example:
5517     </p>
5518     <p>
5519     </p>
5520     <blockquote class="text">
5521     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5522     </p>
5523     <p>S: "OK"
5524     </p>
5525     </blockquote><p>
5526    
5527     </p>
5528 schoenebeck 1002 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5529     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5530 iliev 1137 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5531 schoenebeck 1002 Altering effect send's audio routing</h3>
5532    
5533     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5534     sampler channel by sending the following command:
5535     </p>
5536     <p>
5537     </p>
5538     <blockquote class="text">
5539     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5540     </p>
5541     </blockquote><p>
5542    
5543     </p>
5544     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5545     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>
5546     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,
5547     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5548     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>
5549     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,
5550     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5551     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5552     the audio channel of the selected audio output device where &lt;audio-src&gt;
5553     should be routed to.
5554     </p>
5555     <p>Note that effect sends can only route audio to the same audio output
5556     device as assigned to the effect send's sampler channel. Also note that an
5557     effect send entity does always have exactly as much audio channels as its
5558     sampler channel. So if the sampler channel is stereo, the effect send does
5559     have two audio channels as well. Also keep in mind that the amount of audio
5560     channels on a sampler channel might be dependant not only to the deployed
5561     sampler engine on the sampler channel, but also dependant to the instrument
5562     currently loaded. However you can (effectively) turn an i.e. stereo effect
5563     send into a mono one by simply altering its audio routing appropriately.
5564     </p>
5565     <p>Possible Answers:
5566     </p>
5567     <p>
5568     </p>
5569     <blockquote class="text">
5570     <p>"OK" -
5571     </p>
5572     <blockquote class="text">
5573     <p>on success
5574     </p>
5575     </blockquote>
5576    
5577    
5578     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5579     </p>
5580     <blockquote class="text">
5581     <p>if audio output channel was set, but there are noteworthy
5582     issue(s) related, providing an appropriate warning code and
5583     warning message
5584     </p>
5585     </blockquote>
5586    
5587    
5588     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5589     </p>
5590     <blockquote class="text">
5591     <p>in case it failed, providing an appropriate error code and error message
5592     </p>
5593     </blockquote>
5594    
5595    
5596     </blockquote><p>
5597    
5598     </p>
5599     <p>Example:
5600     </p>
5601     <p>
5602     </p>
5603     <blockquote class="text">
5604     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5605     </p>
5606     <p>S: "OK"
5607     </p>
5608     </blockquote><p>
5609    
5610     </p>
5611 schoenebeck 1028 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5612     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5613 iliev 1137 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5614 schoenebeck 1028 Altering effect send's MIDI controller</h3>
5615    
5616     <p>The front-end can alter the MIDI controller of an effect
5617     send entity by sending the following command:
5618     </p>
5619     <p>
5620     </p>
5621     <blockquote class="text">
5622     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5623     </p>
5624     </blockquote><p>
5625    
5626     </p>
5627     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5628     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>
5629     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,
5630     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5631     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>
5632     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
5633     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5634     able to modify the effect send's send level.
5635     </p>
5636     <p>Possible Answers:
5637     </p>
5638     <p>
5639     </p>
5640     <blockquote class="text">
5641     <p>"OK" -
5642     </p>
5643     <blockquote class="text">
5644     <p>on success
5645     </p>
5646     </blockquote>
5647    
5648    
5649     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5650     </p>
5651     <blockquote class="text">
5652     <p>if MIDI controller was set, but there are noteworthy
5653     issue(s) related, providing an appropriate warning code and
5654     warning message
5655     </p>
5656     </blockquote>
5657    
5658    
5659     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5660     </p>
5661     <blockquote class="text">
5662     <p>in case it failed, providing an appropriate error code and error message
5663     </p>
5664     </blockquote>
5665    
5666    
5667     </blockquote><p>
5668    
5669     </p>
5670     <p>Example:
5671     </p>
5672     <p>
5673     </p>
5674     <blockquote class="text">
5675     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5676     </p>
5677     <p>S: "OK"
5678     </p>
5679     </blockquote><p>
5680    
5681     </p>
5682     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5683     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5684 iliev 1137 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5685 schoenebeck 1028 Altering effect send's send level</h3>
5686    
5687     <p>The front-end can alter the current send level of an effect
5688     send entity by sending the following command:
5689     </p>
5690     <p>
5691     </p>
5692     <blockquote class="text">
5693     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5694     </p>
5695     </blockquote><p>
5696    
5697     </p>
5698     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5699     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>
5700     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,
5701     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5702     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>
5703     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
5704     &lt;volume&gt; is an optionally dotted positive number (a value
5705     smaller than 1.0 means attenuation, whereas a value greater than
5706     1.0 means amplification) reflecting the new send level.
5707     </p>
5708     <p>Possible Answers:
5709     </p>
5710     <p>
5711     </p>
5712     <blockquote class="text">
5713     <p>"OK" -
5714     </p>
5715     <blockquote class="text">
5716     <p>on success
5717     </p>
5718     </blockquote>
5719    
5720    
5721     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5722     </p>
5723     <blockquote class="text">
5724     <p>if new send level was set, but there are noteworthy
5725     issue(s) related, providing an appropriate warning code and
5726     warning message
5727     </p>
5728     </blockquote>
5729    
5730    
5731     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5732     </p>
5733     <blockquote class="text">
5734     <p>in case it failed, providing an appropriate error code and error message
5735     </p>
5736     </blockquote>
5737    
5738    
5739     </blockquote><p>
5740    
5741     </p>
5742     <p>Example:
5743     </p>
5744     <p>
5745     </p>
5746     <blockquote class="text">
5747     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5748     </p>
5749     <p>S: "OK"
5750     </p>
5751     </blockquote><p>
5752    
5753     </p>
5754 iliev 1773 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5755     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5756     <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5757     Sending MIDI messages to sampler channel</h3>
5758    
5759     <p>The front-end can send MIDI events to specific sampler channel
5760     by sending the following command:
5761     </p>
5762     <p>
5763     </p>
5764     <blockquote class="text">
5765     <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
5766     </p>
5767     </blockquote><p>
5768    
5769     </p>
5770     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5771     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>
5772     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,
5773     &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
5774     specifies the MIDI message type. Currently, the following MIDI messages are supported:
5775     </p>
5776     <p>
5777     </p>
5778     <blockquote class="text">
5779     <p>"NOTE_ON" -
5780     </p>
5781     <blockquote class="text">
5782     <p>For turning on MIDI notes, where &lt;arg1&gt;
5783     specifies the key number and &lt;arg2&gt; the velocity
5784     as described in the MIDI specification.
5785     </p>
5786     </blockquote>
5787    
5788    
5789     <p>"NOTE_OFF" -
5790     </p>
5791     <blockquote class="text">
5792     <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
5793     specifies the key number and &lt;arg2&gt; the velocity
5794     as described in the MIDI specification.
5795     </p>
5796     </blockquote>
5797    
5798    
5799     </blockquote><p>
5800    
5801     </p>
5802     <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
5803     and no realtime guarantee whatsoever will be made!
5804     </p>
5805     <p>Possible Answers:
5806     </p>
5807     <p>
5808     </p>
5809     <blockquote class="text">
5810     <p>"OK" -
5811     </p>
5812     <blockquote class="text">
5813     <p>on success
5814     </p>
5815     </blockquote>
5816    
5817    
5818     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5819     </p>
5820     <blockquote class="text">
5821     <p>in case it failed, providing an appropriate error code and error message
5822     </p>
5823     </blockquote>
5824    
5825    
5826     </blockquote><p>
5827    
5828     </p>
5829     <p>Example:
5830     </p>
5831     <p>
5832     </p>
5833     <blockquote class="text">
5834     <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
5835     </p>
5836     <p>S: "OK"
5837     </p>
5838     </blockquote><p>
5839    
5840     </p>
5841 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
5842 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5843 iliev 1773 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5844 schoenebeck 974 Resetting a sampler channel</h3>
5845 schoenebeck 708
5846 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
5847     </p>
5848 schoenebeck 708 <p>
5849     </p>
5850 senoner 542 <blockquote class="text">
5851     <p>RESET CHANNEL &lt;sampler-channel&gt;
5852     </p>
5853 schoenebeck 708 </blockquote><p>
5854 schoenebeck 940
5855 schoenebeck 708 </p>
5856 senoner 542 <p>
5857     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5858     This will cause the engine on that sampler channel, its voices and
5859     eventually disk streams and all control and status variables to be
5860     reset.
5861     </p>
5862     <p>Possible Answers:
5863     </p>
5864 schoenebeck 708 <p>
5865     </p>
5866 senoner 542 <blockquote class="text">
5867     <p>"OK" -
5868     </p>
5869     <blockquote class="text">
5870     <p>on success
5871     </p>
5872 schoenebeck 940 </blockquote>
5873    
5874 senoner 542
5875     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5876     </p>
5877     <blockquote class="text">
5878     <p>if channel was reset, but there are noteworthy issue(s)
5879     related, providing an appropriate warning code and warning
5880     message
5881     </p>
5882 schoenebeck 940 </blockquote>
5883    
5884 senoner 542
5885     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5886     </p>
5887     <blockquote class="text">
5888     <p>in case it failed, providing an appropriate error code and
5889     error message
5890     </p>
5891 schoenebeck 940 </blockquote>
5892    
5893 senoner 542
5894 schoenebeck 708 </blockquote><p>
5895 schoenebeck 940
5896 schoenebeck 708 </p>
5897 senoner 542 <p>Examples:
5898     </p>
5899 schoenebeck 708 <p>
5900     </p>
5901 senoner 542 <blockquote class="text">
5902     <p>
5903     </p>
5904 schoenebeck 708 </blockquote><p>
5905 schoenebeck 940
5906 schoenebeck 708 </p>
5907 schoenebeck 940 <a name="anchor12"></a><br /><hr />
5908 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5909     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5910     Controlling connection</h3>
5911 senoner 542
5912     <p>The following commands are used to control the connection to LinuxSampler.
5913     </p>
5914 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
5915 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5916     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5917     Register front-end for receiving event messages</h3>
5918 senoner 542
5919     <p>The front-end can register itself to the LinuxSampler application to
5920     be informed about noteworthy events by sending this command:
5921     </p>
5922 schoenebeck 708 <p>
5923     </p>
5924 senoner 542 <blockquote class="text">
5925     <p>SUBSCRIBE &lt;event-id&gt;
5926     </p>
5927 schoenebeck 708 </blockquote><p>
5928 schoenebeck 940
5929 schoenebeck 708 </p>
5930 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
5931     client wants to subscribe to.
5932     </p>
5933     <p>Possible Answers:
5934     </p>
5935 schoenebeck 708 <p>
5936     </p>
5937 senoner 542 <blockquote class="text">
5938     <p>"OK" -
5939     </p>
5940     <blockquote class="text">
5941     <p>on success
5942     </p>
5943 schoenebeck 940 </blockquote>
5944    
5945 senoner 542
5946     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5947     </p>
5948     <blockquote class="text">
5949     <p>if registration succeeded, but there are noteworthy
5950     issue(s) related, providing an appropriate warning code and
5951     warning message
5952     </p>
5953 schoenebeck 940 </blockquote>
5954    
5955 senoner 542
5956     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5957     </p>
5958     <blockquote class="text">
5959     <p>in case it failed, providing an appropriate error code and
5960     error message
5961     </p>
5962 schoenebeck 940 </blockquote>
5963    
5964 senoner 542
5965 schoenebeck 708 </blockquote><p>
5966 schoenebeck 940
5967 schoenebeck 708 </p>
5968 senoner 542 <p>Examples:
5969     </p>
5970 schoenebeck 708 <p>
5971     </p>
5972 senoner 542 <blockquote class="text">
5973     <p>
5974     </p>
5975 schoenebeck 708 </blockquote><p>
5976 schoenebeck 940
5977 schoenebeck 708 </p>
5978 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
5979 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5980     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5981     Unregister front-end for not receiving event messages</h3>
5982 senoner 542
5983     <p>The front-end can unregister itself if it doesn't want to receive event
5984     messages anymore by sending the following command:
5985     </p>
5986 schoenebeck 708 <p>
5987     </p>
5988 senoner 542 <blockquote class="text">
5989     <p>UNSUBSCRIBE &lt;event-id&gt;
5990     </p>
5991 schoenebeck 708 </blockquote><p>
5992 schoenebeck 940
5993 schoenebeck 708 </p>
5994 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5995     client doesn't want to receive anymore.
5996     </p>
5997     <p>Possible Answers:
5998     </p>
5999 schoenebeck 708 <p>
6000     </p>
6001 senoner 542 <blockquote class="text">
6002     <p>"OK" -
6003     </p>
6004     <blockquote class="text">
6005     <p>on success
6006     </p>
6007 schoenebeck 940 </blockquote>
6008    
6009 senoner 542
6010     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6011     </p>
6012     <blockquote class="text">
6013     <p>if unregistration succeeded, but there are noteworthy
6014     issue(s) related, providing an appropriate warning code and
6015     warning message
6016     </p>
6017 schoenebeck 940 </blockquote>
6018    
6019 senoner 542
6020     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6021     </p>
6022     <blockquote class="text">
6023     <p>in case it failed, providing an appropriate error code and
6024     error message
6025     </p>
6026 schoenebeck 940 </blockquote>
6027    
6028 senoner 542
6029 schoenebeck 708 </blockquote><p>
6030 schoenebeck 940
6031 schoenebeck 708 </p>
6032 senoner 542 <p>Examples:
6033     </p>
6034 schoenebeck 708 <p>
6035     </p>
6036 senoner 542 <blockquote class="text">
6037     <p>
6038     </p>
6039 schoenebeck 708 </blockquote><p>
6040 schoenebeck 940
6041 schoenebeck 708 </p>
6042 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
6043 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6044     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6045     Enable or disable echo of commands</h3>
6046 senoner 542
6047     <p>To enable or disable back sending of commands to the client the following command can be used:
6048     </p>
6049 schoenebeck 708 <p>
6050     </p>
6051 senoner 542 <blockquote class="text">
6052     <p>SET ECHO &lt;value&gt;
6053     </p>
6054 schoenebeck 708 </blockquote><p>
6055 schoenebeck 940
6056 schoenebeck 708 </p>
6057 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6058     or "0" to disable echo mode. When echo mode is enabled, all
6059     commands send to LinuxSampler will be immediately send back and
6060     after this echo the actual response to the command will be
6061     returned. Echo mode will only be altered for the client connection
6062     that issued the "SET ECHO" command, not globally for all client
6063     connections.
6064     </p>
6065     <p>Possible Answers:
6066     </p>
6067 schoenebeck 708 <p>
6068     </p>
6069 senoner 542 <blockquote class="text">
6070     <p>"OK" -
6071     </p>
6072     <blockquote class="text">
6073     <p>usually
6074     </p>
6075 schoenebeck 940 </blockquote>
6076    
6077 senoner 542
6078     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6079     </p>
6080     <blockquote class="text">
6081     <p>on syntax error, e.g. non boolean value
6082     </p>
6083 schoenebeck 940 </blockquote>
6084    
6085 senoner 542
6086 schoenebeck 708 </blockquote><p>
6087 schoenebeck 940
6088 schoenebeck 708 </p>
6089 senoner 542 <p>Examples:
6090     </p>
6091 schoenebeck 708 <p>
6092     </p>
6093 senoner 542 <blockquote class="text">
6094     <p>
6095     </p>
6096 schoenebeck 708 </blockquote><p>
6097 schoenebeck 940
6098 schoenebeck 708 </p>
6099 schoenebeck 940 <a name="QUIT"></a><br /><hr />
6100 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6101     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6102     Close client connection</h3>
6103 senoner 542
6104     <p>The client can close its network connection to LinuxSampler by sending the following command:
6105     </p>
6106 schoenebeck 708 <p>
6107     </p>
6108 senoner 542 <blockquote class="text">
6109     <p>QUIT
6110     </p>
6111 schoenebeck 708 </blockquote><p>
6112 schoenebeck 940
6113 schoenebeck 708 </p>
6114 senoner 542 <p>This is probably more interesting for manual telnet connections to
6115     LinuxSampler than really useful for a front-end implementation.
6116     </p>
6117 schoenebeck 940 <a name="anchor13"></a><br /><hr />
6118 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6119     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6120     Global commands</h3>
6121 senoner 542
6122     <p>The following commands have global impact on the sampler.
6123     </p>
6124 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6125 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6126     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6127     Current number of active voices</h3>
6128 senoner 542
6129 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
6130     the sampler by sending the following command:
6131     </p>
6132     <p>
6133     </p>
6134     <blockquote class="text">
6135     <p>GET TOTAL_VOICE_COUNT
6136     </p>
6137     </blockquote><p>
6138    
6139     </p>
6140     <p>Possible Answers:
6141     </p>
6142     <p>
6143     </p>
6144     <blockquote class="text">
6145     <p>LinuxSampler will answer by returning the number of all active
6146     voices on the sampler.
6147     </p>
6148     </blockquote><p>
6149    
6150     </p>
6151     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6152 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6153     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6154     Maximum amount of active voices</h3>
6155 schoenebeck 940
6156     <p>The front-end can ask for the maximum number of active voices
6157     by sending the following command:
6158     </p>
6159     <p>
6160     </p>
6161     <blockquote class="text">
6162     <p>GET TOTAL_VOICE_COUNT_MAX
6163     </p>
6164     </blockquote><p>
6165    
6166     </p>
6167     <p>Possible Answers:
6168     </p>
6169     <p>
6170     </p>
6171     <blockquote class="text">
6172     <p>LinuxSampler will answer by returning the maximum number
6173     of active voices.
6174     </p>
6175     </blockquote><p>
6176    
6177     </p>
6178 schoenebeck 1572 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6179     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6180     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6181     Current number of active disk streams</h3>
6182    
6183     <p>The front-end can ask for the current number of active disk streams on
6184     the sampler by sending the following command:
6185     </p>
6186     <p>
6187     </p>
6188     <blockquote class="text">
6189     <p>GET TOTAL_STREAM_COUNT
6190     </p>
6191     </blockquote><p>
6192    
6193     </p>
6194     <p>Possible Answers:
6195     </p>
6196     <p>
6197     </p>
6198     <blockquote class="text">
6199     <p>LinuxSampler will answer by returning the number of all active
6200     disk streams on the sampler.
6201     </p>
6202     </blockquote><p>
6203    
6204     </p>
6205 schoenebeck 940 <a name="RESET"></a><br /><hr />
6206 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6207 schoenebeck 1572 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6208 schoenebeck 974 Reset sampler</h3>
6209 schoenebeck 940
6210 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
6211     </p>
6212 schoenebeck 708 <p>
6213     </p>
6214 senoner 542 <blockquote class="text">
6215     <p>RESET
6216     </p>
6217 schoenebeck 708 </blockquote><p>
6218 schoenebeck 940
6219 schoenebeck 708 </p>
6220 senoner 542 <p>Possible Answers:
6221     </p>
6222 schoenebeck 708 <p>
6223     </p>
6224 senoner 542 <blockquote class="text">
6225     <p>"OK" -
6226     </p>
6227     <blockquote class="text">
6228     <p>always
6229     </p>
6230 schoenebeck 940 </blockquote>
6231    
6232 senoner 542
6233 schoenebeck 708 </blockquote><p>
6234 schoenebeck 940
6235 schoenebeck 708 </p>
6236 senoner 542 <p>Examples:
6237     </p>
6238 schoenebeck 708 <p>
6239     </p>
6240 senoner 542 <blockquote class="text">
6241     <p>
6242     </p>
6243 schoenebeck 708 </blockquote><p>
6244 schoenebeck 940
6245 schoenebeck 708 </p>
6246 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
6247 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6248 schoenebeck 1572 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6249 schoenebeck 974 General sampler informations</h3>
6250 schoenebeck 575
6251     <p>The client can ask for general informations about the LinuxSampler
6252     instance by sending the following command:
6253     </p>
6254 schoenebeck 708 <p>
6255     </p>
6256 schoenebeck 575 <blockquote class="text">
6257     <p>GET SERVER INFO
6258     </p>
6259 schoenebeck 708 </blockquote><p>
6260 schoenebeck 940
6261 schoenebeck 708 </p>
6262 schoenebeck 575 <p>Possible Answers:
6263     </p>
6264 schoenebeck 708 <p>
6265     </p>
6266 schoenebeck 575 <blockquote class="text">
6267     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6268     Each answer line begins with the information category name
6269     followed by a colon and then a space character &lt;SP&gt; and finally
6270     the info character string to that information category. At the
6271     moment the following categories are defined:
6272 schoenebeck 940
6273 schoenebeck 575 </p>
6274 schoenebeck 708 <p>
6275     </p>
6276 schoenebeck 575 <blockquote class="text">
6277     <p>DESCRIPTION -
6278     </p>
6279     <blockquote class="text">
6280     <p>arbitrary textual description about the sampler
6281 schoenebeck 1390 (note that the character string may contain
6282     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6283 schoenebeck 575 </p>
6284 schoenebeck 940 </blockquote>
6285    
6286 schoenebeck 575
6287     <p>VERSION -
6288     </p>
6289     <blockquote class="text">
6290     <p>version of the sampler
6291     </p>
6292 schoenebeck 940 </blockquote>
6293    
6294 schoenebeck 575
6295     <p>PROTOCOL_VERSION -
6296     </p>
6297     <blockquote class="text">
6298     <p>version of the LSCP specification the sampler
6299 schoenebeck 974 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)
6300 schoenebeck 575 </p>
6301 schoenebeck 940 </blockquote>
6302    
6303 schoenebeck 575
6304 iliev 1162 <p>INSTRUMENTS_DB_SUPPORT -
6305     </p>
6306     <blockquote class="text">
6307     <p>either yes or no, specifies whether the
6308     sampler is build with instruments database support.
6309     </p>
6310 schoenebeck 940 </blockquote>
6311 iliev 1162
6312    
6313     </blockquote>
6314 schoenebeck 940
6315 schoenebeck 575
6316 schoenebeck 708 </blockquote><p>
6317 schoenebeck 940
6318 schoenebeck 708 </p>
6319 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
6320     Other fields might be added in future.
6321     </p>
6322 schoenebeck 1006 <a name="GET VOLUME"></a><br /><hr />
6323     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6324 schoenebeck 1572 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6325 schoenebeck 1006 Getting global volume attenuation</h3>
6326    
6327     <p>The client can ask for the current global sampler-wide volume
6328     attenuation by sending the following command:
6329     </p>
6330     <p>
6331     </p>
6332     <blockquote class="text">
6333     <p>GET VOLUME
6334     </p>
6335     </blockquote><p>
6336    
6337     </p>
6338     <p>Possible Answers:
6339     </p>
6340     <p>
6341     </p>
6342     <blockquote class="text">
6343     <p>The sampler will always answer by returning the optional
6344     dotted floating point coefficient, reflecting the current
6345     global volume attenuation.
6346    
6347     </p>
6348     </blockquote><p>
6349    
6350     </p>
6351     <p>Note: it is up to the respective sampler engine whether to obey
6352     that global volume parameter or not, but in general all engines SHOULD
6353     use this parameter.
6354     </p>
6355     <a name="SET VOLUME"></a><br /><hr />
6356     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6357 schoenebeck 1572 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6358 schoenebeck 1006 Setting global volume attenuation</h3>
6359    
6360     <p>The client can alter the current global sampler-wide volume
6361     attenuation by sending the following command:
6362     </p>
6363     <p>
6364     </p>
6365     <blockquote class="text">
6366     <p>SET VOLUME &lt;volume&gt;
6367     </p>
6368     </blockquote><p>
6369    
6370     </p>
6371     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6372     floating point value, reflecting the new global volume parameter.
6373     This value might usually be in the range between 0.0 and 1.0, that
6374     is for attenuating the overall volume.
6375     </p>
6376     <p>Possible Answers:
6377     </p>
6378     <p>
6379     </p>
6380     <blockquote class="text">
6381     <p>"OK" -
6382     </p>
6383     <blockquote class="text">
6384     <p>on success
6385     </p>
6386     </blockquote>
6387    
6388    
6389     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6390     </p>
6391     <blockquote class="text">
6392     <p>if the global volume was set, but there are noteworthy
6393     issue(s) related, providing an appropriate warning code and
6394     warning message
6395     </p>
6396     </blockquote>
6397    
6398    
6399     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6400     </p>
6401     <blockquote class="text">
6402     <p>in case it failed, providing an appropriate error code and error message
6403     </p>
6404     </blockquote>
6405    
6406    
6407     </blockquote><p>
6408    
6409     </p>
6410 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
6411     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6412     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6413     MIDI Instrument Mapping</h3>
6414 schoenebeck 945
6415     <p>The MIDI protocol provides a way to switch between instruments
6416     by sending so called MIDI bank select and MIDI program change
6417     messages which are essentially just numbers. The following commands
6418     allow to actually map arbitrary MIDI bank select / program change
6419     numbers with real instruments.
6420     </p>
6421 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
6422     instrument maps which define which instrument to load on
6423     which MIDI program change message.
6424 schoenebeck 945 </p>
6425 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
6426     map, thus the sampler will simply ignore all program change
6427     messages. The front-end has to explicitly create at least one
6428     map, add entries to the map and tell the respective sampler
6429     channel(s) which MIDI instrument map to use, so the sampler
6430     knows how to react on a given program change message on the
6431     respective sampler channel, that is by switching to the
6432     respectively defined engine type and loading the respective
6433     instrument. See command
6434     <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>
6435     for how to assign a MIDI instrument map to a sampler channel.
6436     </p>
6437 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
6438     cause to switch to another instrument. Instead when receiving a
6439     bank select message the bank value will be stored and a subsequent
6440     program change message (which may occur at any time) will finally
6441     cause the sampler to switch to the respective instrument as
6442     reflected by the current MIDI instrument map.
6443     </p>
6444 schoenebeck 1390 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6445 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6446     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6447     Create a new MIDI instrument map</h3>
6448    
6449     <p>The front-end can add a new MIDI instrument map by sending
6450     the following command:
6451     </p>
6452     <p>
6453     </p>
6454     <blockquote class="text">
6455     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6456     </p>
6457     </blockquote><p>
6458    
6459     </p>
6460     <p>Where &lt;name&gt; is an optional argument allowing to
6461     assign a custom name to the new map. MIDI instrument Map
6462 schoenebeck 1390 names do not have to be unique, but MUST be encapsulated
6463     into apostrophes and support escape sequences as described
6464     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>".
6465    
6466 schoenebeck 974 </p>
6467     <p>Possible Answers:
6468     </p>
6469     <p>
6470     </p>
6471     <blockquote class="text">
6472     <p>"OK[&lt;map&gt;]" -
6473     </p>
6474     <blockquote class="text">
6475     <p>in case a new MIDI instrument map could
6476     be added, where &lt;map&gt; reflects the
6477     unique ID of the newly created MIDI
6478     instrument map
6479     </p>
6480     </blockquote>
6481    
6482    
6483     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6484     </p>
6485     <blockquote class="text">
6486     <p>when a new map could not be created, which
6487     might never occur in practice
6488     </p>
6489     </blockquote>
6490    
6491    
6492     </blockquote><p>
6493    
6494     </p>
6495     <p>Examples:
6496     </p>
6497     <p>
6498     </p>
6499     <blockquote class="text">
6500     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6501     </p>
6502     <p>S: "OK[0]"
6503     </p>
6504     </blockquote><p>
6505    
6506     </p>
6507     <p>
6508     </p>
6509     <blockquote class="text">
6510     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6511     </p>
6512     <p>S: "OK[1]"
6513     </p>
6514     </blockquote><p>
6515    
6516     </p>
6517     <p>
6518     </p>
6519     <blockquote class="text">
6520     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6521     </p>
6522     <p>S: "OK[5]"
6523     </p>
6524     </blockquote><p>
6525    
6526     </p>
6527     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6528     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6529     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6530     Delete one particular or all MIDI instrument maps</h3>
6531    
6532     <p>The front-end can delete a particular MIDI instrument map
6533     by sending the following command:
6534     </p>
6535     <p>
6536     </p>
6537     <blockquote class="text">
6538     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6539     </p>
6540     </blockquote><p>
6541    
6542     </p>
6543     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6544     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>
6545     command.
6546     </p>
6547     <p>The front-end can delete all MIDI instrument maps by
6548     sending the following command:
6549     </p>
6550     <p>
6551     </p>
6552     <blockquote class="text">
6553     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6554     </p>
6555     </blockquote><p>
6556    
6557     </p>
6558     <p>Possible Answers:
6559     </p>
6560     <p>
6561     </p>
6562     <blockquote class="text">
6563     <p>"OK" -
6564     </p>
6565     <blockquote class="text">
6566     <p>in case the map(s) could be deleted
6567     </p>
6568     </blockquote>
6569    
6570    
6571     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6572     </p>
6573     <blockquote class="text">
6574     <p>when the given map does not exist
6575     </p>
6576     </blockquote>
6577    
6578    
6579     </blockquote><p>
6580    
6581     </p>
6582     <p>Examples:
6583     </p>
6584     <p>
6585     </p>
6586     <blockquote class="text">
6587     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6588     </p>
6589     <p>S: "OK"
6590     </p>
6591     </blockquote><p>
6592    
6593     </p>
6594     <p>
6595     </p>
6596     <blockquote class="text">
6597     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6598     </p>
6599     <p>S: "OK"
6600     </p>
6601     </blockquote><p>
6602    
6603     </p>
6604     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6605     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6606     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6607     Get amount of existing MIDI instrument maps</h3>
6608    
6609     <p>The front-end can retrieve the current amount of MIDI
6610     instrument maps by sending the following command:
6611     </p>
6612     <p>
6613     </p>
6614     <blockquote class="text">
6615     <p>GET MIDI_INSTRUMENT_MAPS
6616     </p>
6617     </blockquote><p>
6618    
6619     </p>
6620     <p>Possible Answers:
6621     </p>
6622     <p>
6623     </p>
6624     <blockquote class="text">
6625     <p>The sampler will answer by returning the current
6626     number of MIDI instrument maps.
6627     </p>
6628     </blockquote><p>
6629    
6630     </p>
6631     <p>Example:
6632     </p>
6633     <p>
6634     </p>
6635     <blockquote class="text">
6636     <p>C: "GET MIDI_INSTRUMENT_MAPS"
6637     </p>
6638     <p>S: "2"
6639     </p>
6640     </blockquote><p>
6641    
6642     </p>
6643     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6644     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6645     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6646     Getting all created MIDI instrument maps</h3>
6647    
6648     <p>The number of MIDI instrument maps can change on runtime. To get the
6649     current list of MIDI instrument maps, the front-end can send the
6650     following command:
6651     </p>
6652     <p>
6653     </p>
6654     <blockquote class="text">
6655     <p>LIST MIDI_INSTRUMENT_MAPS
6656     </p>
6657     </blockquote><p>
6658    
6659     </p>
6660     <p>Possible Answers:
6661     </p>
6662     <p>
6663     </p>
6664     <blockquote class="text">
6665     <p>The sampler will answer by returning a comma separated list
6666     with all MIDI instrument maps' numerical IDs.
6667     </p>
6668     </blockquote><p>
6669    
6670     </p>
6671     <p>Example:
6672     </p>
6673     <p>
6674     </p>
6675     <blockquote class="text">
6676     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6677     </p>
6678     <p>S: "0,1,5,12"
6679     </p>
6680     </blockquote><p>
6681    
6682     </p>
6683     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6684     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6685     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6686     Getting MIDI instrument map information</h3>
6687    
6688     <p>The front-end can ask for the current settings of a MIDI
6689     instrument map by sending the following command:
6690     </p>
6691     <p>
6692     </p>
6693     <blockquote class="text">
6694     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6695     </p>
6696     </blockquote><p>
6697    
6698     </p>
6699     <p>Where &lt;map&gt; is the numerical ID of the map the
6700     front-end is interested in as returned by the
6701     <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>
6702     command.
6703     </p>
6704     <p>Possible Answers:
6705     </p>
6706     <p>
6707     </p>
6708     <blockquote class="text">
6709     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6710     Each answer line begins with the settings category name
6711     followed by a colon and then a space character &lt;SP&gt; and finally
6712     the info character string to that setting category. At the
6713     moment the following categories are defined:
6714     </p>
6715     <p>
6716     </p>
6717     <blockquote class="text">
6718     <p>NAME -
6719     </p>
6720     <blockquote class="text">
6721     <p>custom name of the given map,
6722     which does not have to be unique
6723 schoenebeck 1400 (note that this character string may contain
6724     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6725 schoenebeck 974 </p>
6726     </blockquote>
6727    
6728    
6729 iliev 1137 <p>DEFAULT -
6730     </p>
6731     <blockquote class="text">
6732     <p>either true or false,
6733     defines whether this map is the default map
6734     </p>
6735 schoenebeck 974 </blockquote>
6736 iliev 1137
6737    
6738     </blockquote>
6739 schoenebeck 974
6740    
6741     </blockquote><p>
6742    
6743     </p>
6744     <p>The mentioned fields above don't have to be in particular order.
6745     </p>
6746     <p>Example:
6747     </p>
6748     <p>
6749     </p>
6750     <blockquote class="text">
6751     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6752     </p>
6753     <p>S: "NAME: Standard Map"
6754     </p>
6755 iliev 1137 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6756     </p>
6757 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"."
6758     </p>
6759     </blockquote><p>
6760    
6761     </p>
6762     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6763     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6764     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6765     Renaming a MIDI instrument map</h3>
6766    
6767     <p>The front-end can alter the custom name of a MIDI
6768     instrument map by sending the following command:
6769     </p>
6770     <p>
6771     </p>
6772     <blockquote class="text">
6773     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6774     </p>
6775     </blockquote><p>
6776    
6777     </p>
6778     <p>Where &lt;map&gt; is the numerical ID of the map and
6779     &lt;name&gt; the new custom name of the map, which does not
6780 schoenebeck 1390 have to be unique (name MUST be encapsulated into apostrophes
6781     and supports escape sequences as described in chapter
6782     "<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>").
6783    
6784 schoenebeck 974 </p>
6785     <p>Possible Answers:
6786     </p>
6787     <p>
6788     </p>
6789     <blockquote class="text">
6790     <p>"OK" -
6791     </p>
6792     <blockquote class="text">
6793     <p>on success
6794     </p>
6795     </blockquote>
6796    
6797    
6798     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6799     </p>
6800     <blockquote class="text">
6801     <p>in case the given map does not exist
6802     </p>
6803     </blockquote>
6804    
6805    
6806     </blockquote><p>
6807    
6808     </p>
6809     <p>Example:
6810     </p>
6811     <p>
6812     </p>
6813     <blockquote class="text">
6814     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6815     </p>
6816     <p>S: "OK"
6817     </p>
6818     </blockquote><p>
6819    
6820     </p>
6821 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6822 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6823     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6824     Create or replace a MIDI instrument map entry</h3>
6825 schoenebeck 945
6826     <p>The front-end can create a new or replace an existing entry
6827 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
6828 schoenebeck 945 command:
6829     </p>
6830     <p>
6831     </p>
6832     <blockquote class="text">
6833 schoenebeck 1048 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6834 schoenebeck 974 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6835 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6836     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6837     </p>
6838     </blockquote><p>
6839    
6840     </p>
6841 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6842     &lt;midi_bank&gt; is an integer value between
6843     0..16383 reflecting the MIDI bank select index,
6844     &lt;midi_prog&gt; an
6845 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
6846     index, &lt;engine_name&gt; a sampler engine name as returned by
6847 schoenebeck 974 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6848 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6849 schoenebeck 1251 of the instrument's file to be deployed (encapsulated into apostrophes,
6850     supporting escape sequences as described in chapter
6851     "<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>"),
6852 schoenebeck 974 &lt;instrument_index&gt; the index (integer value) of the instrument
6853 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
6854     volume of the instrument as optionally dotted number (where a
6855 schoenebeck 1028 value &lt; 1.0 means attenuation and a value > 1.0 means
6856 schoenebeck 945 amplification). This parameter easily allows to adjust the
6857     volume of all intruments within a custom instrument map
6858     without having to adjust their instrument files. The
6859     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6860     time of the instrument, that is when the instrument should
6861     be loaded, when freed and has exactly the following
6862     possibilities:
6863     </p>
6864     <p>
6865     </p>
6866     <blockquote class="text">
6867     <p>"ON_DEMAND" -
6868     </p>
6869     <blockquote class="text">
6870     <p>The instrument will be loaded when needed,
6871     that is when demanded by at least one sampler
6872     channel. It will immediately be freed from memory
6873     when not needed by any sampler channel anymore.
6874     </p>
6875     </blockquote>
6876    
6877    
6878     <p>"ON_DEMAND_HOLD" -
6879     </p>
6880     <blockquote class="text">
6881     <p>The instrument will be loaded when needed,
6882     that is when demanded by at least one sampler
6883     channel. It will be kept in memory even when
6884     not needed by any sampler channel anymore.
6885     Instruments with this mode are only freed
6886     when the sampler is reset or all mapping
6887     entries with this mode (and respective
6888     instrument) are explicitly changed to
6889     "ON_DEMAND" and no sampler channel is using
6890     the instrument anymore.
6891     </p>
6892     </blockquote>
6893    
6894    
6895     <p>"PERSISTENT" -
6896     </p>
6897     <blockquote class="text">
6898     <p>The instrument will immediately be loaded
6899 schoenebeck 1048 into memory when this mapping
6900 schoenebeck 945 command is sent and the instrument is kept all
6901     the time. Instruments with this mode are
6902     only freed when the sampler is reset or all
6903     mapping entries with this mode (and
6904     respective instrument) are explicitly
6905     changed to "ON_DEMAND" and no sampler
6906     channel is using the instrument anymore.
6907     </p>
6908     </blockquote>
6909    
6910    
6911     <p>not supplied -
6912     </p>
6913     <blockquote class="text">
6914     <p>In case there is no &lt;instr_load_mode&gt;
6915     argument given, it will be up to the
6916     InstrumentManager to decide which mode to use.
6917     Usually it will use "ON_DEMAND" if an entry
6918     for the given instrument does not exist in
6919     the InstrumentManager's list yet, otherwise
6920     if an entry already exists, it will simply
6921     stick with the mode currently reflected by
6922     the already existing entry, that is it will
6923     not change the mode.
6924     </p>
6925     </blockquote>
6926    
6927    
6928     </blockquote><p>
6929    
6930     </p>
6931     <p>
6932     The &lt;instr_load_mode&gt; argument thus allows to define an
6933     appropriate strategy (low memory consumption vs. fast
6934     instrument switching) for each instrument individually. Note, the
6935     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6936     "PERSISTENT" have to be supported by the respective sampler engine
6937     (which is technically the case when the engine provides an
6938     InstrumentManager for its format). If this is not the case the
6939     argument will automatically fall back to the default value
6940     "ON_DEMAND". Also the load mode of one instrument may
6941     automatically change the laod mode of other instrument(s), i.e.
6942     because the instruments are part of the same file and the
6943     engine does not allow a way to manage load modes for them
6944     individually. Due to this, in case the frontend shows the
6945     load modes of entries, the frontend should retrieve the actual
6946     mode by i.e. sending
6947 schoenebeck 974 <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>
6948 schoenebeck 1390 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6949     (encapsulated into apostrophes, supporting escape sequences as described in chapter
6950     "<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
6951     mapping entry, useful for frontends for displaying an appropriate name for
6952 schoenebeck 945 mapped instruments (using
6953 schoenebeck 974 <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>).
6954 schoenebeck 945
6955     </p>
6956     <p>
6957 schoenebeck 1048 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6958     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6959     however causes the respective "MAP MIDI_INSTRUMENT" command to return
6960     immediately, that is to let the sampler establish the mapping in the
6961     background. So this argument might be especially useful for mappings with
6962     a "PERSISTENT" type, because these have to load the respective instruments
6963     immediately and might thus block for a very long time. It is recommended
6964     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6965     because it has the following drawbacks: as "NON_MODAL" instructions return
6966     immediately, they may not necessarily return an error i.e. when the given
6967     instrument file turns out to be corrupt, beside that subsequent commands
6968     in a LSCP instruction sequence might fail, because mandatory mappings are
6969     not yet completed.
6970 schoenebeck 945
6971     </p>
6972     <p>Possible Answers:
6973     </p>
6974     <p>
6975     </p>
6976     <blockquote class="text">
6977     <p>"OK" -
6978     </p>
6979     <blockquote class="text">
6980     <p>usually
6981     </p>
6982     </blockquote>
6983    
6984    
6985     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6986     </p>
6987     <blockquote class="text">
6988 schoenebeck 974 <p>when the given map or engine does not exist or a value
6989 schoenebeck 945 is out of range
6990     </p>
6991     </blockquote>
6992    
6993    
6994     </blockquote><p>
6995    
6996     </p>
6997     <p>Examples:
6998     </p>
6999     <p>
7000     </p>
7001     <blockquote class="text">
7002 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7003 schoenebeck 945 </p>
7004     <p>S: "OK"
7005     </p>
7006     </blockquote><p>
7007    
7008     </p>
7009     <p>
7010     </p>
7011     <blockquote class="text">
7012 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7013 schoenebeck 945 </p>
7014     <p>S: "OK"
7015     </p>
7016     </blockquote><p>
7017    
7018     </p>
7019     <p>
7020     </p>
7021     <blockquote class="text">
7022     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7023     </p>
7024     <p>S: "OK"
7025     </p>
7026 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7027 schoenebeck 945 </p>
7028     <p>S: "OK"
7029     </p>
7030     </blockquote><p>
7031    
7032     </p>
7033     <p>
7034     </p>
7035     <blockquote class="text">
7036 schoenebeck 1048 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7037 schoenebeck 945 </p>
7038     <p>S: "OK"
7039     </p>
7040     </blockquote><p>
7041    
7042     </p>
7043     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7044 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7045     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7046     Getting ammount of MIDI instrument map entries</h3>
7047 schoenebeck 945
7048 schoenebeck 974 <p>The front-end can query the amount of currently existing
7049     entries in a MIDI instrument map by sending the following
7050 schoenebeck 945 command:
7051     </p>
7052     <p>
7053     </p>
7054     <blockquote class="text">
7055 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7056 schoenebeck 945 </p>
7057     </blockquote><p>
7058    
7059     </p>
7060 schoenebeck 974 <p>The front-end can query the amount of currently existing
7061     entries in all MIDI instrument maps by sending the following
7062     command:
7063     </p>
7064     <p>
7065     </p>
7066     <blockquote class="text">
7067     <p>GET MIDI_INSTRUMENTS ALL
7068     </p>
7069     </blockquote><p>
7070    
7071     </p>
7072 schoenebeck 945 <p>Possible Answers:
7073     </p>
7074     <p>
7075     </p>
7076     <blockquote class="text">
7077 schoenebeck 974 <p>The sampler will answer by sending the current number of
7078     entries in the MIDI instrument map(s).
7079 schoenebeck 945 </p>
7080     </blockquote><p>
7081    
7082     </p>
7083     <p>Example:
7084     </p>
7085     <p>
7086     </p>
7087     <blockquote class="text">
7088 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
7089 schoenebeck 945 </p>
7090 schoenebeck 974 <p>S: "234"
7091 schoenebeck 945 </p>
7092     </blockquote><p>
7093    
7094     </p>
7095 schoenebeck 974 <p>
7096     </p>
7097     <blockquote class="text">
7098     <p>C: "GET MIDI_INSTRUMENTS ALL"
7099     </p>
7100     <p>S: "954"
7101     </p>
7102     </blockquote><p>
7103    
7104     </p>
7105 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7106 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7107     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7108     Getting indeces of all entries of a MIDI instrument map</h3>
7109 schoenebeck 945
7110 schoenebeck 974 <p>The front-end can query a list of all currently existing
7111     entries in a certain MIDI instrument map by sending the following
7112     command:
7113 schoenebeck 945 </p>
7114     <p>
7115     </p>
7116     <blockquote class="text">
7117 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7118 schoenebeck 945 </p>
7119     </blockquote><p>
7120    
7121     </p>
7122 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7123     </p>
7124     <p>The front-end can query a list of all currently existing
7125     entries of all MIDI instrument maps by sending the following
7126     command:
7127     </p>
7128     <p>
7129     </p>
7130     <blockquote class="text">
7131     <p>LIST MIDI_INSTRUMENTS ALL
7132     </p>
7133     </blockquote><p>
7134    
7135     </p>
7136 schoenebeck 945 <p>Possible Answers:
7137     </p>
7138     <p>
7139     </p>
7140     <blockquote class="text">
7141 schoenebeck 974 <p>The sampler will answer by sending a comma separated
7142     list of map ID - MIDI bank - MIDI program triples, where
7143     each triple is encapsulated into curly braces. The
7144     list is returned in one single line. Each triple
7145     just reflects the key of the respective map entry,
7146     thus subsequent
7147     <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>
7148 schoenebeck 945 command(s) are necessary to retrieve detailed informations
7149     about each entry.
7150     </p>
7151     </blockquote><p>
7152    
7153     </p>
7154     <p>Example:
7155     </p>
7156     <p>
7157     </p>
7158     <blockquote class="text">
7159 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
7160 schoenebeck 945 </p>
7161 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7162 schoenebeck 945 </p>
7163     </blockquote><p>
7164    
7165     </p>
7166     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7167 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7168     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7169     Remove an entry from the MIDI instrument map</h3>
7170 schoenebeck 945
7171 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
7172 schoenebeck 945 map by sending the following command:
7173     </p>
7174     <p>
7175     </p>
7176     <blockquote class="text">
7177 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7178 schoenebeck 945 </p>
7179     </blockquote><p>
7180    
7181     </p>
7182     <p>
7183 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7184     &lt;midi_bank&gt; is an integer value between 0..16383
7185     reflecting the MIDI bank value and
7186     &lt;midi_prog&gt; an integer value between
7187     0..127 reflecting the MIDI program value of the map's entrie's key
7188 schoenebeck 945 index triple.
7189    
7190     </p>
7191     <p>Possible Answers:
7192     </p>
7193     <p>
7194     </p>
7195     <blockquote class="text">
7196     <p>"OK" -
7197     </p>
7198     <blockquote class="text">
7199     <p>usually
7200     </p>
7201     </blockquote>
7202    
7203    
7204     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7205     </p>
7206     <blockquote class="text">
7207     <p>when index out of bounds
7208     </p>
7209     </blockquote>
7210    
7211    
7212     </blockquote><p>
7213    
7214     </p>
7215     <p>Example:
7216     </p>
7217     <p>
7218     </p>
7219     <blockquote class="text">
7220 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7221 schoenebeck 945 </p>
7222     <p>S: "OK"
7223     </p>
7224     </blockquote><p>
7225    
7226     </p>
7227     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7228 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7229     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7230     Get current settings of MIDI instrument map entry</h3>
7231 schoenebeck 945
7232     <p>The front-end can retrieve the current settings of a certain
7233     instrument map entry by sending the following command:
7234     </p>
7235     <p>
7236     </p>
7237     <blockquote class="text">
7238 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7239 schoenebeck 945 </p>
7240     </blockquote><p>
7241    
7242     </p>
7243     <p>
7244 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7245     &lt;midi_bank&gt; is an integer value between 0..16383
7246     reflecting the MIDI bank value, &lt;midi_bank&gt;
7247     and &lt;midi_prog&gt; an integer value between
7248     0..127 reflecting the MIDI program value of the map's entrie's key
7249 schoenebeck 945 index triple.
7250    
7251     </p>
7252     <p>Possible Answers:
7253     </p>
7254     <p>
7255     </p>
7256     <blockquote class="text">
7257     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7258     separated list. Each answer line begins with the
7259     information category name followed by a colon and then
7260     a space character &lt;SP&gt; and finally the info
7261     character string to that info category. At the moment
7262     the following categories are defined:
7263     </p>
7264     <p>"NAME" -
7265     </p>
7266     <blockquote class="text">
7267     <p>Name for this MIDI instrument map entry (if defined).
7268     This name shall be used by frontends for displaying a
7269     name for this mapped instrument. It can be set and
7270     changed with the
7271 schoenebeck 974 <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>
7272 schoenebeck 945 command and does not have to be unique.
7273 schoenebeck 1400 (note that this character string may contain
7274     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7275 schoenebeck 945 </p>
7276     </blockquote>
7277    
7278    
7279     <p>"ENGINE_NAME" -
7280     </p>
7281     <blockquote class="text">
7282     <p>Name of the engine to be deployed for this
7283     instrument.
7284     </p>
7285     </blockquote>
7286    
7287    
7288     <p>"INSTRUMENT_FILE" -
7289     </p>
7290     <blockquote class="text">
7291 schoenebeck 1400 <p>File name of the instrument
7292     (note that this path may contain
7293     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7294 schoenebeck 945 </p>
7295     </blockquote>
7296    
7297    
7298     <p>"INSTRUMENT_NR" -
7299     </p>
7300     <blockquote class="text">
7301     <p>Index of the instrument within the file.
7302     </p>
7303     </blockquote>
7304    
7305    
7306     <p>"INSTRUMENT_NAME" -
7307     </p>
7308     <blockquote class="text">
7309     <p>Name of the loaded instrument as reflected by its file.
7310     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7311 schoenebeck 1400 cannot be changed (note that this character string may contain
7312     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7313 schoenebeck 945 </p>
7314     </blockquote>
7315    
7316    
7317     <p>"LOAD_MODE" -
7318     </p>
7319     <blockquote class="text">
7320     <p>Life time of instrument
7321 schoenebeck 974 (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).
7322 schoenebeck 945 </p>
7323     </blockquote>
7324    
7325    
7326     <p>"VOLUME" -
7327     </p>
7328     <blockquote class="text">
7329     <p>master volume of the instrument as optionally
7330 schoenebeck 1028 dotted number (where a value &lt; 1.0 means attenuation
7331 schoenebeck 945 and a value > 1.0 means amplification)
7332     </p>
7333     </blockquote>
7334    
7335    
7336     <p>The mentioned fields above don't have to be in particular order.
7337     </p>
7338     </blockquote><p>
7339    
7340     </p>
7341     <p>Example:
7342     </p>
7343     <p>
7344     </p>
7345     <blockquote class="text">
7346 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7347 schoenebeck 945 </p>
7348     <p>S: "NAME: Drums for Foo Song"
7349     </p>
7350     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7351     </p>
7352     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7353     </p>
7354     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7355     </p>
7356     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7357     </p>
7358     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7359     </p>
7360     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7361     </p>
7362     <p>&nbsp;&nbsp;&nbsp;"."
7363     </p>
7364     </blockquote><p>
7365    
7366     </p>
7367     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7368 schoenebeck 974 <table 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.7.12"></a><h3>6.7.12.&nbsp;
7370     Clear MIDI instrument map</h3>
7371 schoenebeck 945
7372 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
7373     is delete all its entries by sending the following command:
7374 schoenebeck 945 </p>
7375     <p>
7376     </p>
7377     <blockquote class="text">
7378 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7379 schoenebeck 945 </p>
7380     </blockquote><p>
7381    
7382     </p>
7383 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7384     </p>
7385     <p>The front-end can clear all MIDI instrument maps, that
7386     is delete all entries of all maps by sending the following
7387     command:
7388     </p>
7389     <p>
7390     </p>
7391     <blockquote class="text">
7392     <p>CLEAR MIDI_INSTRUMENTS ALL
7393     </p>
7394     </blockquote><p>
7395    
7396     </p>
7397     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7398     maps, only their entries, thus the map's settings like
7399     custom name will be preservevd.
7400     </p>
7401 schoenebeck 945 <p>Possible Answers:
7402     </p>
7403     <p>
7404     </p>
7405     <blockquote class="text">
7406     <p>"OK" -
7407     </p>
7408     <blockquote class="text">
7409     <p>always
7410     </p>
7411     </blockquote>
7412    
7413    
7414     </blockquote><p>
7415    
7416     </p>
7417 schoenebeck 974 <p>Examples:
7418 schoenebeck 945 </p>
7419     <p>
7420     </p>
7421     <blockquote class="text">
7422 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7423 schoenebeck 945 </p>
7424     <p>S: "OK"
7425     </p>
7426     </blockquote><p>
7427    
7428     </p>
7429 schoenebeck 974 <p>
7430     </p>
7431     <blockquote class="text">
7432     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7433     </p>
7434     <p>S: "OK"
7435     </p>
7436     </blockquote><p>
7437    
7438     </p>
7439 iliev 1162 <a name="Managing Instruments Database"></a><br /><hr />
7440     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7441     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7442     Managing Instruments Database</h3>
7443    
7444     <p>The following commands describe how to use and manage
7445     the instruments database.
7446     </p>
7447 schoenebeck 1363 <p>Notice:
7448     </p>
7449     <p>
7450     </p>
7451     <blockquote class="text">
7452     <p>All command arguments representing a path or
7453     instrument/directory name support escape sequences as described in chapter
7454     "<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>".
7455    
7456     </p>
7457     <p>All occurrences of a forward slash in instrument and directory
7458     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7459    
7460     </p>
7461     </blockquote><p>
7462    
7463     </p>
7464 iliev 1162 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7465     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7466     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7467     Creating a new instrument directory</h3>
7468    
7469     <p>The front-end can add a new instrument directory to the
7470     instruments database by sending the following command:
7471     </p>
7472     <p>
7473     </p>
7474     <blockquote class="text">
7475     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7476     </p>
7477     </blockquote><p>
7478    
7479     </p>
7480     <p>Where &lt;dir&gt; is the absolute path name of the directory
7481     to be created (encapsulated into apostrophes).
7482     </p>
7483     <p>Possible Answers:
7484     </p>
7485     <p>
7486     </p>
7487     <blockquote class="text">
7488     <p>"OK" -
7489     </p>
7490     <blockquote class="text">
7491     <p>on success
7492     </p>
7493     </blockquote>
7494    
7495    
7496     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7497     </p>
7498     <blockquote class="text">
7499     <p>when the directory could not be created, which
7500     can happen if the directory already exists or the
7501     name contains not allowed symbols
7502     </p>
7503     </blockquote>
7504    
7505    
7506     </blockquote><p>
7507    
7508     </p>
7509     <p>Examples:
7510     </p>
7511     <p>
7512     </p>
7513     <blockquote class="text">
7514     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7515     </p>
7516     <p>S: "OK"
7517     </p>
7518     </blockquote><p>
7519    
7520     </p>
7521     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7522     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7523     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7524     Deleting an instrument directory</h3>
7525    
7526     <p>The front-end can delete a particular instrument directory
7527     from the instruments database by sending the following command:
7528     </p>
7529     <p>
7530     </p>
7531     <blockquote class="text">
7532     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7533     </p>
7534     </blockquote><p>
7535    
7536     </p>
7537     <p>Where &lt;dir&gt; is the absolute path name of the directory
7538     to delete. The optional FORCE argument can be used to
7539     force the deletion of a non-empty directory and all its content.
7540     </p>
7541     <p>Possible Answers:
7542     </p>
7543     <p>
7544     </p>
7545     <blockquote class="text">
7546     <p>"OK" -
7547     </p>
7548     <blockquote class="text">
7549     <p>if the directory is deleted successfully
7550     </p>
7551     </blockquote>
7552    
7553    
7554     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7555     </p>
7556     <blockquote class="text">
7557     <p>if the given directory does not exist, or
7558     if trying to delete a non-empty directory,
7559     without using the FORCE argument.
7560     </p>
7561     </blockquote>
7562    
7563    
7564     </blockquote><p>
7565    
7566     </p>
7567     <p>Examples:
7568     </p>
7569     <p>
7570     </p>
7571     <blockquote class="text">
7572     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7573     </p>
7574     <p>S: "OK"
7575     </p>
7576     </blockquote><p>
7577    
7578     </p>
7579     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7580     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7581     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7582     Getting amount of instrument directories</h3>
7583    
7584     <p>The front-end can retrieve the current amount of
7585     directories in a specific directory by sending the following command:
7586     </p>
7587     <p>
7588     </p>
7589     <blockquote class="text">
7590 iliev 1189 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7591 iliev 1162 </p>
7592     </blockquote><p>
7593    
7594     </p>
7595     <p>Where &lt;dir&gt; should be replaced by the absolute path
7596 iliev 1189 name of the directory. If RECURSIVE is specified, the number of
7597     all directories, including those located in subdirectories of the
7598     specified directory, will be returned.
7599 iliev 1162 </p>
7600     <p>Possible Answers:
7601     </p>
7602     <p>
7603     </p>
7604     <blockquote class="text">
7605     <p>The current number of instrument directories
7606     in the specified directory.
7607     </p>
7608     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7609     </p>
7610     <blockquote class="text">
7611     <p>if the given directory does not exist.
7612     </p>
7613     </blockquote>
7614    
7615    
7616     </blockquote><p>
7617    
7618     </p>
7619     <p>Example:
7620     </p>
7621     <p>
7622     </p>
7623     <blockquote class="text">
7624     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7625     </p>
7626     <p>S: "2"
7627     </p>
7628     </blockquote><p>
7629    
7630     </p>
7631     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7632     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7633     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7634     Listing all directories in specific directory</h3>
7635    
7636     <p>The front-end can retrieve the current list of directories
7637     in specific directory by sending the following command:
7638     </p>
7639     <p>
7640     </p>
7641     <blockquote class="text">
7642 iliev 1189 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7643 iliev 1162 </p>
7644     </blockquote><p>
7645    
7646     </p>
7647     <p>Where &lt;dir&gt; should be replaced by the absolute path
7648 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path names
7649     of all directories, including those located in subdirectories of the
7650     specified directory, will be returned.
7651 iliev 1162 </p>
7652     <p>Possible Answers:
7653     </p>
7654     <p>
7655     </p>
7656     <blockquote class="text">
7657     <p>A comma separated list of all instrument directories
7658     (encapsulated into apostrophes) in the specified directory.
7659     </p>
7660     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7661     </p>
7662     <blockquote class="text">
7663     <p>if the given directory does not exist.
7664     </p>
7665     </blockquote>
7666    
7667    
7668     </blockquote><p>
7669    
7670     </p>
7671     <p>Example:
7672     </p>
7673     <p>
7674     </p>
7675     <blockquote class="text">
7676     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7677     </p>
7678     <p>S: "'Piano Collection','Percussion Collection'"
7679     </p>
7680     </blockquote><p>
7681    
7682     </p>
7683 iliev 1189 <p>
7684     </p>
7685     <blockquote class="text">
7686     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7687     </p>
7688     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7689     </p>
7690     </blockquote><p>
7691    
7692     </p>
7693 iliev 1162 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7694     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7695     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7696     Getting instrument directory information</h3>
7697    
7698     <p>The front-end can ask for the current settings of an
7699     instrument directory by sending the following command:
7700     </p>
7701     <p>
7702     </p>
7703     <blockquote class="text">
7704     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7705     </p>
7706     </blockquote><p>
7707    
7708     </p>
7709     <p>Where &lt;dir&gt; should be replaced by the absolute path
7710     name of the directory the front-end is interested in.
7711     </p>
7712     <p>Possible Answers:
7713     </p>
7714     <p>
7715     </p>
7716     <blockquote class="text">
7717     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7718     Each answer line begins with the settings category name
7719     followed by a colon and then a space character &lt;SP&gt; and finally
7720     the info character string to that setting category. At the
7721     moment the following categories are defined:
7722     </p>
7723     <p>
7724     </p>
7725     <blockquote class="text">
7726     <p>DESCRIPTION -
7727     </p>
7728     <blockquote class="text">
7729 schoenebeck 1363 <p>A brief description of the directory content.
7730     Note that the character string may contain
7731     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7732 iliev 1162 </p>
7733     </blockquote>
7734    
7735    
7736     <p>CREATED -
7737     </p>
7738     <blockquote class="text">
7739     <p>The creation date and time of the directory,
7740     represented in "YYYY-MM-DD HH:MM:SS" format
7741     </p>
7742     </blockquote>
7743    
7744    
7745     <p>MODIFIED -
7746     </p>
7747     <blockquote class="text">
7748     <p>The date and time of the last modification of the
7749     directory, represented in "YYYY-MM-DD HH:MM:SS" format
7750     </p>
7751     </blockquote>
7752    
7753    
7754     </blockquote>
7755    
7756    
7757     </blockquote><p>
7758    
7759     </p>
7760     <p>The mentioned fields above don't have to be in particular order.
7761     </p>
7762     <p>Example:
7763     </p>
7764     <p>
7765     </p>
7766     <blockquote class="text">
7767     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7768     </p>
7769     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7770     </p>
7771     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7772     </p>
7773     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7774     </p>
7775     <p>&nbsp;&nbsp;&nbsp;"."
7776     </p>
7777     </blockquote><p>
7778    
7779     </p>
7780     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7781     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7782     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7783     Renaming an instrument directory</h3>
7784    
7785     <p>The front-end can alter the name of a specific
7786     instrument directory by sending the following command:
7787     </p>
7788     <p>
7789     </p>
7790     <blockquote class="text">
7791     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7792     </p>
7793     </blockquote><p>
7794    
7795     </p>
7796     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7797     &lt;name&gt; is the new name for that directory.
7798     </p>
7799     <p>Possible Answers:
7800     </p>
7801     <p>
7802     </p>
7803     <blockquote class="text">
7804     <p>"OK" -
7805     </p>
7806     <blockquote class="text">
7807     <p>on success
7808     </p>
7809     </blockquote>
7810    
7811    
7812     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7813     </p>
7814     <blockquote class="text">
7815     <p>in case the given directory does not exists,
7816     or if a directory with name equal to the new
7817     name already exists.
7818     </p>
7819     </blockquote>
7820    
7821    
7822     </blockquote><p>
7823    
7824     </p>
7825     <p>Example:
7826     </p>
7827     <p>
7828     </p>
7829     <blockquote class="text">
7830     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7831     </p>
7832     <p>S: "OK"
7833     </p>
7834     </blockquote><p>
7835    
7836     </p>
7837     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7838     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7839     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7840     Moving an instrument directory</h3>
7841    
7842     <p>The front-end can move a specific
7843     instrument directory by sending the following command:
7844     </p>
7845     <p>
7846     </p>
7847     <blockquote class="text">
7848     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7849     </p>
7850     </blockquote><p>
7851    
7852     </p>
7853     <p>Where &lt;dir&gt; is the absolute path name of the directory
7854     to move and &lt;dst&gt; is the location where the directory will
7855     be moved to.
7856     </p>
7857     <p>Possible Answers:
7858     </p>
7859     <p>
7860     </p>
7861     <blockquote class="text">
7862     <p>"OK" -
7863     </p>
7864     <blockquote class="text">
7865     <p>on success
7866     </p>
7867     </blockquote>
7868    
7869    
7870     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7871     </p>
7872     <blockquote class="text">
7873     <p>in case a given directory does not exists,
7874     or if a directory with name equal to the name
7875     of the specified directory already exists in
7876     the destination directory. Error is also thrown
7877     when trying to move a directory to a subdirectory
7878     of itself.
7879     </p>
7880     </blockquote>
7881    
7882    
7883     </blockquote><p>
7884    
7885     </p>
7886     <p>Example:
7887     </p>
7888     <p>
7889     </p>
7890     <blockquote class="text">
7891     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7892     </p>
7893     <p>S: "OK"
7894     </p>
7895     </blockquote><p>
7896    
7897     </p>
7898 iliev 1189 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7899     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7900     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7901     Copying instrument directories</h3>
7902    
7903     <p>The front-end can copy a specific
7904     instrument directory by sending the following command:
7905     </p>
7906     <p>
7907     </p>
7908     <blockquote class="text">
7909     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7910     </p>
7911     </blockquote><p>
7912    
7913     </p>
7914     <p>Where &lt;dir&gt; is the absolute path name of the directory
7915     to copy and &lt;dst&gt; is the location where the directory will
7916     be copied to.
7917     </p>
7918     <p>Possible Answers:
7919     </p>
7920     <p>
7921     </p>
7922     <blockquote class="text">
7923     <p>"OK" -
7924     </p>
7925     <blockquote class="text">
7926     <p>on success
7927     </p>
7928     </blockquote>
7929    
7930    
7931     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7932     </p>
7933     <blockquote class="text">
7934     <p>in case a given directory does not exists,
7935     or if a directory with name equal to the name
7936     of the specified directory already exists in
7937     the destination directory. Error is also thrown
7938     when trying to copy a directory to a subdirectory
7939     of itself.
7940     </p>
7941     </blockquote>
7942    
7943    
7944     </blockquote><p>
7945    
7946     </p>
7947     <p>Example:
7948     </p>
7949     <p>
7950     </p>
7951     <blockquote class="text">
7952     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7953     </p>
7954     <p>S: "OK"
7955     </p>
7956     </blockquote><p>
7957    
7958     </p>
7959 iliev 1162 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7960     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7961 iliev 1189 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7962 iliev 1162 Changing the description of directory</h3>
7963    
7964     <p>The front-end can alter the description of a specific
7965     instrument directory by sending the following command:
7966     </p>
7967     <p>
7968     </p>
7969     <blockquote class="text">
7970     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7971     </p>
7972     </blockquote><p>
7973    
7974     </p>
7975     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7976 schoenebeck 1363 &lt;desc&gt; is the new description for the directory
7977     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7978     "<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>").
7979 iliev 1162 </p>
7980     <p>Possible Answers:
7981     </p>
7982     <p>
7983     </p>
7984     <blockquote class="text">
7985     <p>"OK" -
7986     </p>
7987     <blockquote class="text">
7988     <p>on success
7989     </p>
7990     </blockquote>
7991    
7992    
7993     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7994     </p>
7995     <blockquote class="text">
7996     <p>in case the given directory does not exists.
7997     </p>
7998     </blockquote>
7999    
8000    
8001     </blockquote><p>
8002    
8003     </p>
8004     <p>Example:
8005     </p>
8006     <p>
8007     </p>
8008     <blockquote class="text">
8009     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8010     </p>
8011     <p>S: "OK"
8012     </p>
8013     </blockquote><p>
8014    
8015     </p>
8016 iliev 1189 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8017     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8018     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8019     Finding directories</h3>
8020    
8021     <p>The front-end can search for directories
8022     in specific directory by sending the following command:
8023     </p>
8024     <p>
8025     </p>
8026     <blockquote class="text">
8027     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8028     </p>
8029     </blockquote><p>
8030    
8031     </p>
8032     <p>Where &lt;dir&gt; should be replaced by the absolute path
8033     name of the directory to search in. If NON_RECURSIVE is specified, the
8034     directories located in subdirectories of the specified directory will not
8035     be searched. &lt;criteria-list&gt; is a list of search criterias
8036     in form of "key1=val1 key2=val2 ...". The following criterias are
8037     allowed:
8038     </p>
8039     <p>
8040    
8041     <p>NAME='&lt;search-string&gt;'
8042     </p>
8043     <blockquote class="text">
8044     <p>Restricts the search to directories, which names
8045 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8046     supporting escape sequences as described in chapter
8047     "<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>").
8048 iliev 1189 </p>
8049     </blockquote><p>
8050    
8051     </p>
8052    
8053    
8054     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8055     </p>
8056     <blockquote class="text">
8057     <p>Restricts the search to directories, which creation
8058     date satisfies the specified period, where &lt;date-after&gt;
8059     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8060     If &lt;date-after&gt; is omitted the search is restricted to
8061     directories created before &lt;date-before&gt;. If
8062     &lt;date-before&gt; is omitted, the search is restricted
8063     to directories created after &lt;date-after&gt;.
8064     </p>
8065     </blockquote><p>
8066    
8067     </p>
8068    
8069    
8070     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8071     </p>
8072     <blockquote class="text">
8073     <p>Restricts the search to directories, which
8074     date of last modification satisfies the specified period, where
8075     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8076     format. If &lt;date-after&gt; is omitted the search is restricted to
8077     directories, which are last modified before &lt;date-before&gt;. If
8078     &lt;date-before&gt; is omitted, the search is restricted to directories,
8079     which are last modified after &lt;date-after&gt;.
8080     </p>
8081     </blockquote><p>
8082    
8083     </p>
8084    
8085    
8086     <p>DESCRIPTION='&lt;search-string&gt;'
8087     </p>
8088     <blockquote class="text">
8089     <p>Restricts the search to directories with description
8090 schoenebeck 1363 that satisfies the supplied search string
8091     (encapsulated into apostrophes, supporting escape
8092     sequences as described in chapter
8093     "<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>").
8094 iliev 1189 </p>
8095     </blockquote><p>
8096    
8097     </p>
8098    
8099    
8100     <p>Where &lt;search-string&gt; is either a regular expression, or a
8101     word list separated with spaces for OR search and with '+' for AND search.
8102     </p>
8103     <p>Possible Answers:
8104     </p>
8105     <p>
8106     </p>
8107     <blockquote class="text">
8108     <p>A comma separated list with the absolute path names (encapsulated into
8109     apostrophes) of all directories in the specified directory that satisfy
8110     the supplied search criterias.
8111     </p>
8112     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8113     </p>
8114     <blockquote class="text">
8115     <p>if the given directory does not exist.
8116     </p>
8117     </blockquote>
8118    
8119    
8120     </blockquote><p>
8121    
8122     </p>
8123     <p>Example:
8124     </p>
8125     <p>
8126     </p>
8127     <blockquote class="text">
8128     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8129     </p>
8130     <p>S: "'/Piano Collection'"
8131     </p>
8132     </blockquote><p>
8133    
8134     </p>
8135     <p>
8136     </p>
8137     <blockquote class="text">
8138     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8139     </p>
8140     <p>S: "'/Piano Collection','/Percussions'"
8141     </p>
8142     </blockquote><p>
8143    
8144     </p>
8145 iliev 1162 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8146     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8147 iliev 1189 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8148 iliev 1162 Adding instruments to the instruments database</h3>
8149    
8150     <p>The front-end can add one or more instruments
8151     to the instruments database by sending the following command:
8152     </p>
8153     <p>
8154     </p>
8155     <blockquote class="text">
8156 iliev 1201 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8157 iliev 1162 </p>
8158     </blockquote><p>
8159    
8160     </p>
8161     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8162     (encapsulated into apostrophes) in the instruments database in which
8163     only the new instruments (that are not already in the database) will
8164     be added, &lt;file_path&gt; is the absolute path name of a file or
8165     directory in the file system (encapsulated into apostrophes). In case
8166     an instrument file is supplied, only the instruments in the specified
8167     file will be added to the instruments database. If the optional
8168     &lt;instr_index&gt; (the index of the instrument within the given file)
8169     is supplied too, then only the specified instrument will be added.
8170     In case a directory is supplied, the instruments in that directory
8171     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8172     when a directory is provided as &lt;file_path&gt; and specifies how the
8173     scanning will be done and has exactly the following possibilities:
8174     </p>
8175     <p>
8176     </p>
8177     <blockquote class="text">
8178 iliev 1201 <p>"RECURSIVE" -
8179     </p>
8180     <blockquote class="text">
8181     <p>All instruments will be processed, including those
8182     in the subdirectories, and the respective subdirectory
8183     tree structure will be recreated in the instruments
8184     database
8185     </p>
8186     </blockquote>
8187    
8188    
8189 iliev 1162 <p>"NON_RECURSIVE" -
8190     </p>
8191     <blockquote class="text">
8192     <p>Only the instruments in the specified directory
8193     will be added, the instruments in the subdirectories
8194     will not be processed.
8195     </p>
8196     </blockquote>
8197    
8198    
8199     <p>"FLAT" -
8200     </p>
8201     <blockquote class="text">
8202     <p>All instruments will be processed, including those
8203     in the subdirectories, but the respective subdirectory
8204     structure will not be recreated in the instruments
8205     database. All instruments will be added directly in
8206     the specified database directory.
8207     </p>
8208     </blockquote>
8209    
8210    
8211     </blockquote><p>
8212    
8213     </p>
8214 iliev 1201 <p>The difference between regular and NON_MODAL versions of the command
8215     is that the regular command returns when the scanning is finished
8216     while NON_MODAL version returns immediately and a background process is launched.
8217     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>
8218     command can be used to monitor the scanning progress.
8219     </p>
8220 iliev 1162 <p>Possible Answers:
8221     </p>
8222     <p>
8223     </p>
8224     <blockquote class="text">
8225     <p>"OK" -
8226     </p>
8227     <blockquote class="text">
8228 iliev 1201 <p>on success when NON_MODAL is not supplied
8229 iliev 1162 </p>
8230     </blockquote>
8231    
8232    
8233 iliev 1201 <p>"OK[&lt;job-id&gt;]" -
8234     </p>
8235     <blockquote class="text">
8236     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8237     is a numerical ID used to obtain status information about the job progress.
8238     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>
8239    
8240     </p>
8241     </blockquote>
8242    
8243    
8244 iliev 1162 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8245     </p>
8246     <blockquote class="text">
8247     <p>if an invalid path is specified.
8248     </p>
8249     </blockquote>
8250    
8251    
8252     </blockquote><p>
8253    
8254     </p>
8255     <p>Examples:
8256     </p>
8257     <p>
8258     </p>
8259     <blockquote class="text">
8260     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8261     </p>
8262     <p>S: "OK"
8263     </p>
8264     </blockquote><p>
8265    
8266     </p>
8267     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8268     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8269 iliev 1189 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8270 iliev 1162 Removing an instrument</h3>
8271    
8272     <p>The front-end can remove a particular instrument
8273     from the instruments database by sending the following command:
8274     </p>
8275     <p>
8276     </p>
8277     <blockquote class="text">
8278     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8279     </p>
8280     </blockquote><p>
8281    
8282     </p>
8283     <p>Where &lt;instr_path&gt; is the absolute path name
8284     (in the instruments database) of the instrument to remove.
8285     </p>
8286     <p>Possible Answers:
8287     </p>
8288     <p>
8289     </p>
8290     <blockquote class="text">
8291     <p>"OK" -
8292     </p>
8293     <blockquote class="text">
8294     <p>if the instrument is removed successfully
8295     </p>
8296     </blockquote>
8297    
8298    
8299     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8300     </p>
8301     <blockquote class="text">
8302     <p>if the given path does not exist or
8303     is a directory.
8304     </p>
8305     </blockquote>
8306    
8307    
8308     </blockquote><p>
8309    
8310     </p>
8311     <p>Examples:
8312     </p>
8313     <p>
8314     </p>
8315     <blockquote class="text">
8316     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8317     </p>
8318     <p>S: "OK"
8319     </p>
8320     </blockquote><p>
8321    
8322     </p>
8323     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8324     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8325 iliev 1189 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8326 iliev 1162 Getting amount of instruments</h3>
8327    
8328     <p>The front-end can retrieve the current amount of
8329     instruments in a specific directory by sending the following command:
8330     </p>
8331     <p>
8332     </p>
8333     <blockquote class="text">
8334 iliev 1189 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8335 iliev 1162 </p>
8336     </blockquote><p>
8337    
8338     </p>
8339     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8340 iliev 1189 of the directory. If RECURSIVE is specified, the number of all
8341     instruments, including those located in subdirectories of the
8342     specified directory, will be returned.
8343 iliev 1162 </p>
8344     <p>Possible Answers:
8345     </p>
8346     <p>
8347     </p>
8348     <blockquote class="text">
8349     <p>The current number of instruments
8350     in the specified directory.
8351     </p>
8352     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8353     </p>
8354     <blockquote class="text">
8355     <p>if the given directory does not exist.
8356     </p>
8357     </blockquote>
8358    
8359    
8360     </blockquote><p>
8361    
8362     </p>
8363     <p>Example:
8364     </p>
8365     <p>
8366     </p>
8367     <blockquote class="text">
8368     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8369     </p>
8370     <p>S: "2"
8371     </p>
8372     </blockquote><p>
8373    
8374     </p>
8375     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8376     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8377 iliev 1189 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8378 iliev 1162 Listing all instruments in specific directory</h3>
8379    
8380     <p>The front-end can retrieve the current list of instruments
8381     in specific directory by sending the following command:
8382     </p>
8383     <p>
8384     </p>
8385     <blockquote class="text">
8386 iliev 1189 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8387 iliev 1162 </p>
8388     </blockquote><p>
8389    
8390     </p>
8391     <p>Where &lt;dir&gt; should be replaced by the absolute path
8392 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path
8393     names of all instruments, including those located in subdirectories
8394     of the specified directory, will be returned.
8395 iliev 1162 </p>
8396     <p>Possible Answers:
8397     </p>
8398     <p>
8399     </p>
8400     <blockquote class="text">
8401     <p>A comma separated list of all instruments
8402     (encapsulated into apostrophes) in the specified directory.
8403     </p>
8404     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8405     </p>
8406     <blockquote class="text">
8407     <p>if the given directory does not exist.
8408     </p>
8409     </blockquote>
8410    
8411    
8412     </blockquote><p>
8413    
8414     </p>
8415     <p>Example:
8416     </p>
8417     <p>
8418     </p>
8419     <blockquote class="text">
8420     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8421     </p>
8422     <p>S: "'Bosendorfer 290','Steinway D'"
8423     </p>
8424     </blockquote><p>
8425    
8426     </p>
8427 iliev 1189 <p>
8428     </p>
8429     <blockquote class="text">
8430     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8431     </p>
8432     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8433     </p>
8434     </blockquote><p>
8435    
8436     </p>
8437 iliev 1162 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8438     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8439 iliev 1189 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8440 iliev 1162 Getting instrument information</h3>
8441    
8442     <p>The front-end can ask for the current settings of an
8443     instrument by sending the following command:
8444     </p>
8445     <p>
8446     </p>
8447     <blockquote class="text">
8448     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8449     </p>
8450     </blockquote><p>
8451    
8452     </p>
8453     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8454     name of the instrument the front-end is interested in.
8455     </p>
8456     <p>Possible Answers:
8457     </p>
8458     <p>
8459     </p>
8460     <blockquote class="text">
8461     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8462     Each answer line begins with the settings category name
8463     followed by a colon and then a space character &lt;SP&gt; and finally
8464     the info character string to that setting category. At the
8465     moment the following categories are defined:
8466     </p>
8467     <p>
8468     </p>
8469     <blockquote class="text">
8470     <p>INSTRUMENT_FILE -
8471     </p>
8472     <blockquote class="text">
8473     <p>File name of the instrument.
8474 schoenebeck 1363 Note that the character string may contain
8475     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8476 iliev 1162 </p>
8477     </blockquote>
8478    
8479    
8480     <p>INSTRUMENT_NR -
8481     </p>
8482     <blockquote class="text">
8483     <p>Index of the instrument within the file.
8484     </p>
8485     </blockquote>
8486    
8487    
8488     <p>FORMAT_FAMILY -
8489     </p>
8490     <blockquote class="text">
8491     <p>The format family of the instrument.
8492     </p>
8493     </blockquote>
8494    
8495    
8496     <p>FORMAT_VERSION -
8497     </p>
8498     <blockquote class="text">
8499     <p>The format version of the instrument.
8500     </p>
8501     </blockquote>
8502    
8503    
8504     <p>SIZE -
8505     </p>
8506     <blockquote class="text">
8507     <p>The size of the instrument in bytes.
8508     </p>
8509     </blockquote>
8510    
8511    
8512     <p>CREATED -
8513     </p>
8514     <blockquote class="text">
8515     <p>The date and time when the instrument is added
8516     in the instruments database, represented in
8517     "YYYY-MM-DD HH:MM:SS" format
8518     </p>
8519     </blockquote>
8520    
8521    
8522     <p>MODIFIED -
8523     </p>
8524     <blockquote class="text">
8525     <p>The date and time of the last modification of the
8526     instrument's database settings, represented in
8527     "YYYY-MM-DD HH:MM:SS" format
8528     </p>
8529     </blockquote>
8530    
8531    
8532     <p>DESCRIPTION -
8533     </p>
8534     <blockquote class="text">
8535 schoenebeck 1363 <p>A brief description of the instrument.
8536     Note that the character string may contain
8537     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8538 iliev 1162 </p>
8539     </blockquote>
8540    
8541    
8542     <p>IS_DRUM -
8543     </p>
8544     <blockquote class="text">
8545     <p>either true or false, determines whether the
8546     instrument is a drumkit or a chromatic instrument
8547     </p>
8548     </blockquote>
8549    
8550    
8551     <p>PRODUCT -
8552     </p>
8553     <blockquote class="text">
8554 schoenebeck 1363 <p>The product title of the instrument.
8555     Note that the character string may contain
8556     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8557 iliev 1162 </p>
8558     </blockquote>
8559    
8560    
8561     <p>ARTISTS -
8562     </p>
8563     <blockquote class="text">
8564 schoenebeck 1363 <p>Lists the artist names.
8565     Note that the character string may contain
8566     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8567 iliev 1162 </p>
8568     </blockquote>
8569    
8570    
8571     <p>KEYWORDS -
8572     </p>
8573     <blockquote class="text">
8574     <p>Provides a list of keywords that refer to the instrument.
8575     Keywords are separated with semicolon and blank.
8576 schoenebeck 1363 Note that the character string may contain
8577     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8578 iliev 1162 </p>
8579     </blockquote>
8580    
8581    
8582     </blockquote>
8583    
8584    
8585     </blockquote><p>
8586    
8587     </p>
8588     <p>The mentioned fields above don't have to be in particular order.
8589     </p>
8590     <p>Example:
8591     </p>
8592     <p>
8593     </p>
8594     <blockquote class="text">
8595     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8596     </p>
8597     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8598     </p>
8599     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8600     </p>
8601     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8602     </p>
8603     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8604     </p>
8605     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8606     </p>
8607     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8608     </p>
8609     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8610     </p>
8611     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8612     </p>
8613     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8614     </p>
8615     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8616     </p>
8617     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8618     </p>
8619     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8620     </p>
8621     <p>&nbsp;&nbsp;&nbsp;"."
8622     </p>
8623     </blockquote><p>
8624    
8625     </p>
8626     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8627     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8628 iliev 1189 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8629 iliev 1162 Renaming an instrument</h3>
8630    
8631     <p>The front-end can alter the name of a specific
8632     instrument by sending the following command:
8633     </p>
8634     <p>
8635     </p>
8636     <blockquote class="text">
8637     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8638     </p>
8639     </blockquote><p>
8640    
8641     </p>
8642     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8643     &lt;name&gt; is the new name for that instrument.
8644     </p>
8645     <p>Possible Answers:
8646     </p>
8647     <p>
8648     </p>
8649     <blockquote class="text">
8650     <p>"OK" -
8651     </p>
8652     <blockquote class="text">
8653     <p>on success
8654     </p>
8655     </blockquote>
8656    
8657    
8658     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8659     </p>
8660     <blockquote class="text">
8661     <p>in case the given instrument does not exists,
8662     or if an instrument with name equal to the new
8663     name already exists.
8664     </p>
8665     </blockquote>
8666    
8667    
8668     </blockquote><p>
8669    
8670     </p>
8671     <p>Example:
8672     </p>
8673     <p>
8674     </p>
8675     <blockquote class="text">
8676     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8677     </p>
8678     <p>S: "OK"
8679     </p>
8680     </blockquote><p>
8681    
8682     </p>
8683     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8684     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8685 iliev 1189 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8686 iliev 1162 Moving an instrument</h3>
8687    
8688     <p>The front-end can move a specific instrument to another directory by
8689     sending the following command:
8690     </p>
8691     <p>
8692     </p>
8693     <blockquote class="text">
8694     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8695     </p>
8696     </blockquote><p>
8697    
8698     </p>
8699     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8700     to move and &lt;dst&gt; is the directory where the instrument will
8701     be moved to.
8702     </p>
8703     <p>Possible Answers:
8704     </p>
8705     <p>
8706     </p>
8707     <blockquote class="text">
8708     <p>"OK" -
8709     </p>
8710     <blockquote class="text">
8711     <p>on success
8712     </p>
8713     </blockquote>
8714    
8715    
8716     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8717     </p>
8718     <blockquote class="text">
8719     <p>in case the given instrument does not exists,
8720     or if an instrument with name equal to the name of the
8721     specified instrument already exists in the destination
8722     directory.
8723     </p>
8724     </blockquote>
8725    
8726    
8727     </blockquote><p>
8728    
8729     </p>
8730     <p>Example:
8731     </p>
8732     <p>
8733     </p>
8734     <blockquote class="text">
8735     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8736     </p>
8737     <p>S: "OK"
8738     </p>
8739     </blockquote><p>
8740    
8741     </p>
8742 iliev 1189 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8743     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8744     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8745     Copying instruments</h3>
8746    
8747     <p>The front-end can copy a specific instrument to another directory by
8748     sending the following command:
8749     </p>
8750     <p>
8751     </p>
8752     <blockquote class="text">
8753     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8754     </p>
8755     </blockquote><p>
8756    
8757     </p>
8758     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8759     to copy and &lt;dst&gt; is the directory where the instrument will
8760     be copied to.
8761     </p>
8762     <p>Possible Answers:
8763     </p>
8764     <p>
8765     </p>
8766     <blockquote class="text">
8767     <p>"OK" -
8768     </p>
8769     <blockquote class="text">
8770     <p>on success
8771     </p>
8772     </blockquote>
8773    
8774    
8775     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8776     </p>
8777     <blockquote class="text">
8778     <p>in case the given instrument does not exists,
8779     or if an instrument with name equal to the name of the
8780     specified instrument already exists in the destination
8781     directory.
8782     </p>
8783     </blockquote>
8784    
8785    
8786     </blockquote><p>
8787    
8788     </p>
8789     <p>Example:
8790     </p>
8791     <p>
8792     </p>
8793     <blockquote class="text">
8794     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8795     </p>
8796     <p>S: "OK"
8797     </p>
8798     </blockquote><p>
8799    
8800     </p>
8801 iliev 1162 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8802     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8803 iliev 1189 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8804 iliev 1162 Changing the description of instrument</h3>
8805    
8806     <p>The front-end can alter the description of a specific
8807     instrument by sending the following command:
8808     </p>
8809     <p>
8810     </p>
8811     <blockquote class="text">
8812     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8813     </p>
8814     </blockquote><p>
8815    
8816     </p>
8817     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8818 schoenebeck 1572 &lt;desc&gt; is the new description for the instrument
8819 schoenebeck 1363 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8820     "<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>").
8821 iliev 1162 </p>
8822     <p>Possible Answers:
8823     </p>
8824     <p>
8825     </p>
8826     <blockquote class="text">
8827     <p>"OK" -
8828     </p>
8829     <blockquote class="text">
8830     <p>on success
8831     </p>
8832     </blockquote>
8833    
8834    
8835     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8836     </p>
8837     <blockquote class="text">
8838     <p>in case the given instrument does not exists.
8839     </p>
8840     </blockquote>
8841    
8842    
8843     </blockquote><p>
8844    
8845     </p>
8846     <p>Example:
8847     </p>
8848     <p>
8849     </p>
8850     <blockquote class="text">
8851     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8852     </p>
8853     <p>S: "OK"
8854     </p>
8855     </blockquote><p>
8856    
8857     </p>
8858 iliev 1189 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8859     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8860     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8861     Finding instruments</h3>
8862    
8863     <p>The front-end can search for instruments
8864     in specific directory by sending the following command:
8865     </p>
8866     <p>
8867     </p>
8868     <blockquote class="text">
8869     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8870     </p>
8871     </blockquote><p>
8872    
8873     </p>
8874     <p>Where &lt;dir&gt; should be replaced by the absolute path
8875     name of the directory to search in. If NON_RECURSIVE is specified, the
8876     directories located in subdirectories of the specified directory will not
8877     be searched. &lt;criteria-list&gt; is a list of search criterias
8878     in form of "key1=val1 key2=val2 ...". The following criterias are
8879     allowed:
8880     </p>
8881     <p>
8882    
8883     <p>NAME='&lt;search-string&gt;'
8884     </p>
8885     <blockquote class="text">
8886     <p>Restricts the search to instruments, which names
8887 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8888     supporting escape sequences as described in chapter
8889     "<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>").
8890 iliev 1189 </p>
8891     </blockquote><p>
8892    
8893     </p>
8894    
8895    
8896     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8897     </p>
8898     <blockquote class="text">
8899 schoenebeck 1251 <p>Restricts the search to instruments, which
8900 iliev 1189 size is in the specified range. If &lt;min&gt; is omitted,
8901     the search results are restricted to instruments with size less then
8902     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8903     search is restricted to instruments with size greater then
8904     or equal to &lt;min&gt;.
8905     </p>
8906     </blockquote><p>
8907    
8908     </p>
8909    
8910    
8911     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8912     </p>
8913     <blockquote class="text">
8914     <p>Restricts the search to instruments, which creation
8915     date satisfies the specified period, where &lt;date-after&gt;
8916     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8917     If &lt;date-after&gt; is omitted the search is restricted to
8918     instruments created before &lt;date-before&gt;. If
8919     &lt;date-before&gt; is omitted, the search is restricted
8920     to instruments created after &lt;date-after&gt;.
8921     </p>
8922     </blockquote><p>
8923    
8924     </p>
8925    
8926    
8927     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8928     </p>
8929     <blockquote class="text">
8930     <p>Restricts the search to instruments, which
8931     date of last modification satisfies the specified period, where
8932     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8933     format. If &lt;date-after&gt; is omitted the search is restricted to
8934     instruments, which are last modified before &lt;date-before&gt;. If
8935     &lt;date-before&gt; is omitted, the search is restricted to instruments,
8936     which are last modified after &lt;date-after&gt;.
8937     </p>
8938     </blockquote><p>
8939    
8940     </p>
8941    
8942    
8943     <p>DESCRIPTION='&lt;search-string&gt;'
8944     </p>
8945     <blockquote class="text">
8946     <p>Restricts the search to instruments with description
8947 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8948     supporting escape sequences as described in chapter
8949     "<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>").
8950 iliev 1189 </p>
8951     </blockquote><p>
8952    
8953     </p>
8954    
8955    
8956     <p>PRODUCT='&lt;search-string&gt;'
8957     </p>
8958     <blockquote class="text">
8959     <p>Restricts the search to instruments with product info
8960 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8961     supporting escape sequences as described in chapter
8962     "<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>").
8963 iliev 1189 </p>
8964     </blockquote><p>
8965    
8966     </p>
8967    
8968    
8969     <p>ARTISTS='&lt;search-string&gt;'
8970     </p>
8971     <blockquote class="text">
8972     <p>Restricts the search to instruments with artists info
8973 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8974     supporting escape sequences as described in chapter
8975     "<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>").
8976 iliev 1189 </p>
8977     </blockquote><p>
8978    
8979     </p>
8980    
8981    
8982     <p>KEYWORDS='&lt;search-string&gt;'
8983     </p>
8984     <blockquote class="text">
8985     <p>Restricts the search to instruments with keyword list
8986 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8987     supporting escape sequences as described in chapter
8988     "<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>").
8989 iliev 1189 </p>
8990     </blockquote><p>
8991    
8992     </p>
8993    
8994    
8995     <p>IS_DRUM=true | false
8996     </p>
8997     <blockquote class="text">
8998 schoenebeck 1251 <p>Either true or false. Restricts the search to
8999 iliev 1189 drum kits or chromatic instruments.
9000     </p>
9001     </blockquote><p>
9002    
9003     </p>
9004    
9005    
9006     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9007     </p>
9008     <blockquote class="text">
9009     <p>Restricts the search to instruments of the supplied format families,
9010     where &lt;format-list&gt; is a comma separated list of format families.
9011     </p>
9012     </blockquote><p>
9013    
9014     </p>
9015    
9016    
9017     <p>Where &lt;search-string&gt; is either a regular expression, or a
9018     word list separated with spaces for OR search and with '+' for AND search.
9019     </p>
9020     <p>Possible Answers:
9021     </p>
9022     <p>
9023     </p>
9024     <blockquote class="text">
9025     <p>A comma separated list with the absolute path names (encapsulated into
9026     apostrophes) of all instruments in the specified directory that satisfy
9027     the supplied search criterias.
9028     </p>
9029     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9030     </p>
9031     <blockquote class="text">
9032     <p>if the given directory does not exist.
9033     </p>
9034     </blockquote>
9035    
9036    
9037     </blockquote><p>
9038    
9039     </p>
9040     <p>Example:
9041     </p>
9042     <p>
9043     </p>
9044     <blockquote class="text">
9045     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9046     </p>
9047     <p>S: "'/Piano Collection/Bosendorfer 290'"
9048     </p>
9049     </blockquote><p>
9050    
9051     </p>
9052     <p>
9053     </p>
9054     <blockquote class="text">
9055     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9056     </p>
9057     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9058     </p>
9059     </blockquote><p>
9060    
9061     </p>
9062 iliev 1201 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9063     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9064     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9065     Getting job status information</h3>
9066    
9067     <p>The front-end can ask for the current status of a
9068     particular database instruments job by sending the following command:
9069     </p>
9070     <p>
9071     </p>
9072     <blockquote class="text">
9073     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9074     </p>
9075     </blockquote><p>
9076    
9077     </p>
9078     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9079     of the job the front-end is interested in.
9080     </p>
9081     <p>Possible Answers:
9082     </p>
9083     <p>
9084     </p>
9085     <blockquote class="text">
9086     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9087     Each answer line begins with the settings category name
9088     followed by a colon and then a space character &lt;SP&gt; and finally
9089     the info character string to that setting category. At the
9090     moment the following categories are defined:
9091     </p>
9092     <p>
9093     </p>
9094     <blockquote class="text">
9095     <p>FILES_TOTAL -
9096     </p>
9097     <blockquote class="text">
9098     <p>The total number of files scheduled for scanning
9099     </p>
9100     </blockquote>
9101    
9102    
9103     <p>FILES_SCANNED -
9104     </p>
9105     <blockquote class="text">
9106     <p>The current number of scanned files
9107     </p>
9108     </blockquote>
9109    
9110    
9111     <p>SCANNING -
9112     </p>
9113     <blockquote class="text">
9114     <p>The absolute path name of the file which is currently
9115     being scanned
9116     </p>
9117     </blockquote>
9118    
9119    
9120     <p>STATUS -
9121     </p>
9122     <blockquote class="text">
9123     <p>An integer value between 0 and 100 indicating the
9124     scanning progress percentage of the file which is
9125     currently being scanned
9126     </p>
9127     </blockquote>
9128    
9129    
9130     </blockquote>
9131    
9132    
9133     </blockquote><p>
9134    
9135     </p>
9136     <p>The mentioned fields above don't have to be in particular order.
9137     </p>
9138     <p>Example:
9139     </p>
9140     <p>
9141     </p>
9142     <blockquote class="text">
9143     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9144     </p>
9145     <p>S: "FILES_TOTAL: 12"
9146     </p>
9147     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9148     </p>
9149     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9150     </p>
9151     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9152     </p>
9153     <p>&nbsp;&nbsp;&nbsp;"."
9154     </p>
9155     </blockquote><p>
9156    
9157     </p>
9158 schoenebeck 1363 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9159     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9160     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9161     Formatting the instruments database</h3>
9162    
9163     <p>The front-end can remove all instruments and directories and re-create
9164     the instruments database structure (e.g., in case of a database corruption)
9165     by sending the following command:
9166     </p>
9167     <p>
9168     </p>
9169     <blockquote class="text">
9170     <p>FORMAT INSTRUMENTS_DB
9171     </p>
9172     </blockquote><p>
9173    
9174     </p>
9175     <p>Possible Answers:
9176     </p>
9177     <p>
9178     </p>
9179     <blockquote class="text">
9180     <p>"OK" -
9181     </p>
9182     <blockquote class="text">
9183     <p>on success
9184     </p>
9185     </blockquote>
9186    
9187    
9188     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9189     </p>
9190     <blockquote class="text">
9191     <p>If the formatting of the instruments database
9192     failed.
9193     </p>
9194     </blockquote>
9195    
9196    
9197     </blockquote><p>
9198    
9199     </p>
9200 iliev 1731 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9201     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9202     <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9203     Checking for lost instrument files</h3>
9204    
9205     <p>The front-end can retrieve the list of all instrument files in the instruments database
9206     that don't exist in the filesystem by sending the following command:
9207     </p>
9208     <p>
9209     </p>
9210     <blockquote class="text">
9211     <p>FIND LOST DB_INSTRUMENT_FILES
9212     </p>
9213     </blockquote><p>
9214    
9215     </p>
9216     <p>Possible Answers:
9217     </p>
9218     <p>
9219     </p>
9220     <blockquote class="text">
9221     <p>A comma separated list with the absolute path names
9222     (encapsulated into apostrophes) of all lost instrument files.
9223     </p>
9224     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9225     </p>
9226     <blockquote class="text">
9227     <p>in case it failed, providing an appropriate error code and error message.
9228     </p>
9229     </blockquote>
9230    
9231    
9232     </blockquote><p>
9233    
9234     </p>
9235     <p>Example:
9236     </p>
9237     <p>
9238     </p>
9239     <blockquote class="text">
9240     <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9241     </p>
9242     <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9243     </p>
9244     </blockquote><p>
9245    
9246     </p>
9247     <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9248     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9249     <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9250     Replacing an instrument file</h3>
9251    
9252     <p>The front-end can substitute all occurrences of an instrument file
9253     in the instruments database with a new one by sending the following command:
9254     </p>
9255     <p>
9256     </p>
9257     <blockquote class="text">
9258     <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9259     </p>
9260     </blockquote><p>
9261    
9262     </p>
9263     <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9264     to substitute with &lt;new_path&gt;.
9265     </p>
9266     <p>Possible Answers:
9267     </p>
9268     <p>
9269     </p>
9270     <blockquote class="text">
9271     <p>"OK" -
9272     </p>
9273     <blockquote class="text">
9274     <p>on success
9275     </p>
9276     </blockquote>
9277    
9278    
9279     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9280     </p>
9281     <blockquote class="text">
9282     <p>in case it failed, providing an appropriate error code and error message.
9283     </p>
9284     </blockquote>
9285    
9286    
9287     </blockquote><p>
9288    
9289     </p>
9290     <p>Example:
9291     </p>
9292     <p>
9293     </p>
9294     <blockquote class="text">
9295     <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9296     </p>
9297     <p>S: "OK"
9298     </p>
9299     </blockquote><p>
9300    
9301     </p>
9302 schoenebeck 1363 <a name="editing_instruments"></a><br /><hr />
9303     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9304     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9305     Editing Instruments</h3>
9306    
9307     <p>The sampler allows to edit instruments while playing with the
9308     sampler by spawning an external (3rd party) instrument editor
9309     application for a given instrument. The 3rd party instrument
9310     editor applications have to place a respective plugin DLL file
9311     into the sampler's plugins directory. The sampler will
9312     automatically try to load all plugin DLLs in that directory on
9313     startup and only on startup!
9314     </p>
9315     <p>At the moment there is only one command for this feature set,
9316     but this will most probably change in future.
9317     </p>
9318     <a name="EDIT INSTRUMENT"></a><br /><hr />
9319     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9320     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9321     Opening an appropriate instrument editor application</h3>
9322    
9323     <p>The front-end can request to open an appropriate instrument
9324     editor application by sending the following command:
9325     </p>
9326     <p>
9327     </p>
9328     <blockquote class="text">
9329 schoenebeck 1430 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9330 schoenebeck 1363 </p>
9331     </blockquote><p>
9332    
9333     </p>
9334     <p>Where &lt;sampler-channel&gt; should be replaced by the
9335     number of the sampler channel as given by the
9336     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9337     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9338     command.
9339     </p>
9340     <p>The sampler will try to ask all registered instrument
9341     editors (or to be more specific: their sampler plugins)
9342     whether they are capable to handle the instrument on the
9343     given sampler channel. The sampler will simply use the first
9344     instrument editor application which replied with a positive
9345     answer and spawn that instrument editor application within
9346     the sampler's process and provide that application access
9347     to the instrument's data structures, so both applications
9348     can share and access the same instruments data at the same
9349     time, thus allowing to immediately hear changes with the
9350     sampler made by the instrument editor.
9351     </p>
9352     <p>Note: consequently instrument editors are always spawned
9353     locally on the same machine where the sampler is running
9354     on!
9355     </p>
9356     <p>Possible Answers:
9357     </p>
9358     <p>
9359     </p>
9360     <blockquote class="text">
9361     <p>"OK" -
9362     </p>
9363     <blockquote class="text">
9364     <p>when an appropriate instrument editor was
9365     launched
9366     </p>
9367     </blockquote>
9368    
9369    
9370     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9371     </p>
9372     <blockquote class="text">
9373     <p>when an appropriate instrument editor was
9374     launched, but there are noteworthy issues
9375     </p>
9376     </blockquote>
9377    
9378    
9379     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9380     </p>
9381     <blockquote class="text">
9382     <p>when an appropriate instrument editor
9383     could not be launched
9384     </p>
9385     </blockquote>
9386    
9387    
9388     </blockquote><p>
9389    
9390     </p>
9391     <p>Examples:
9392     </p>
9393     <p>
9394     </p>
9395     <blockquote class="text">
9396 schoenebeck 1430 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9397 schoenebeck 1363 </p>
9398     <p>S: "OK"
9399     </p>
9400     </blockquote><p>
9401    
9402     </p>
9403 schoenebeck 1572 <a name="file_management"></a><br /><hr />
9404     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9405     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9406     Managing Files</h3>
9407    
9408     <p>You can query detailed informations about files located
9409     at the same system where the sampler instance is running on.
9410     Using this command set allows to retrieve file informations
9411     even remotely from another machine.
9412     </p>
9413     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9414     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9415     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9416     Retrieving amount of instruments of a file</h3>
9417    
9418     <p>The front-end can retrieve the amount of instruments
9419     within a given instrument file by sending the
9420     following command:
9421     </p>
9422     <p>
9423     </p>
9424     <blockquote class="text">
9425     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9426     </p>
9427     </blockquote><p>
9428    
9429     </p>
9430     <p>Where &lt;filename&gt; is the name of the instrument
9431     file (encapsulated into apostrophes, supporting escape
9432     sequences as described in chapter
9433     "<a class='info' href='#character_set'>Character Set and Escape
9434     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9435     </p>
9436     <p>The sampler will try to ask all sampler engines,
9437     whether they support the given file and ask the first
9438     engine with a positive answer for the amount of
9439     instruments.
9440     </p>
9441     <p>Possible Answers:
9442     </p>
9443     <p>
9444     </p>
9445     <blockquote class="text">
9446     <p>On success, the sampler will answer by
9447     returning the amount of instruments.
9448    
9449     </p>
9450     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9451     </p>
9452     <blockquote class="text">
9453     <p>if the file could not be handled
9454     </p>
9455     </blockquote>
9456    
9457    
9458     </blockquote><p>
9459    
9460     </p>
9461     <p>Examples:
9462     </p>
9463     <p>
9464     </p>
9465     <blockquote class="text">
9466     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9467     </p>
9468     <p>S: "10"
9469     </p>
9470     </blockquote><p>
9471    
9472     </p>
9473     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9474     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9475     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9476     Retrieving all instruments of a file</h3>
9477    
9478     <p>The front-end can retrieve a list of all instruments
9479     within a given instrument file by sending the
9480     following command:
9481     </p>
9482     <p>
9483     </p>
9484     <blockquote class="text">
9485     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9486     </p>
9487     </blockquote><p>
9488    
9489     </p>
9490     <p>Where &lt;filename&gt; is the name of the instrument
9491     file (encapsulated into apostrophes, supporting escape
9492     sequences as described in chapter
9493     "<a class='info' href='#character_set'>Character Set and Escape
9494     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9495     </p>
9496     <p>The sampler will try to ask all sampler engines,
9497     whether they support the given file and ask the first
9498     engine with a positive answer for a list of IDs for the
9499     instruments in the given file.
9500     </p>
9501     <p>Possible Answers:
9502     </p>
9503     <p>
9504     </p>
9505     <blockquote class="text">
9506     <p>On success, the sampler will answer by
9507     returning a comma separated list of
9508     instrument IDs.
9509    
9510     </p>
9511     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9512     </p>
9513     <blockquote class="text">
9514     <p>if the file could not be handled
9515     </p>
9516     </blockquote>
9517    
9518    
9519     </blockquote><p>
9520    
9521     </p>
9522     <p>Examples:
9523     </p>
9524     <p>
9525     </p>
9526     <blockquote class="text">
9527     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9528     </p>
9529     <p>S: "0,1,2,3,4,5,6,7,8,9"
9530     </p>
9531     </blockquote><p>
9532    
9533     </p>
9534     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9535     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9536     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9537     Retrieving informations about one instrument in a file</h3>
9538    
9539     <p>The front-end can retrieve detailed informations
9540     about a specific instrument within a given instrument
9541     file by sending the following command:
9542     </p>
9543     <p>
9544     </p>
9545     <blockquote class="text">
9546     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9547     &lt;instr-id&gt;
9548     </p>
9549     </blockquote><p>
9550    
9551     </p>
9552     <p>Where &lt;filename&gt; is the name of the instrument
9553     file (encapsulated into apostrophes, supporting escape
9554     sequences as described in chapter
9555     "<a class='info' href='#character_set'>Character Set and Escape
9556     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9557     instrument ID as returned by the
9558     <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.
9559     </p>
9560     <p>The sampler will try to ask all sampler engines,
9561     whether they support the given file and ask the first
9562     engine with a positive answer for informations about the
9563     specific instrument in the given file.
9564     </p>
9565     <p>Possible Answers:
9566     </p>
9567     <p>
9568     </p>
9569     <blockquote class="text">
9570     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9571     Each answer line begins with the settings category name
9572     followed by a colon and then a space character &lt;SP&gt; and finally
9573     the info character string to that setting category. At the
9574     moment the following categories are defined:
9575     </p>
9576     <p>
9577     </p>
9578     <blockquote class="text">
9579     <p>NAME -
9580     </p>
9581     <blockquote class="text">
9582     <p>name of the instrument as
9583     stored in the instrument file
9584     </p>
9585     </blockquote>
9586    
9587    
9588     <p>FORMAT_FAMILY -
9589     </p>
9590     <blockquote class="text">
9591     <p>name of the sampler format
9592     of the given instrument
9593     </p>
9594     </blockquote>
9595    
9596    
9597     <p>FORMAT_VERSION -
9598     </p>
9599     <blockquote class="text">
9600     <p>version of the sampler format
9601     the instrumen is stored as
9602     </p>
9603     </blockquote>
9604    
9605    
9606     <p>PRODUCT -
9607     </p>
9608     <blockquote class="text">
9609     <p>official product name of the
9610     instrument as stored in the file
9611    
9612     </p>
9613     </blockquote>
9614    
9615    
9616     <p>ARTISTS -
9617     </p>
9618     <blockquote class="text">
9619     <p>artists / sample library
9620     vendor of the instrument
9621     </p>
9622     </blockquote>
9623    
9624    
9625 iliev 1773 <p>KEY_BINDINGS -
9626     </p>
9627     <blockquote class="text">
9628     <p>comma separated list of integer values representing
9629     the instrument's key mapping in the range between 0 .. 127,
9630     reflecting the analog meaning of the MIDI specification.
9631     </p>
9632 schoenebeck 1572 </blockquote>
9633 iliev 1773
9634    
9635     <p>KEYSWITCH_BINDINGS -
9636     </p>
9637     <blockquote class="text">
9638     <p>comma separated list of integer values representing
9639     the instrument's keyswitch mapping in the range between 0 .. 127,
9640     reflecting the analog meaning of the MIDI specification.
9641     </p>
9642     </blockquote>
9643    
9644    
9645     </blockquote>
9646 schoenebeck 1572
9647    
9648     </blockquote><p>
9649    
9650     </p>
9651     <p>The mentioned fields above don't have to be in particular order.
9652     </p>
9653     <p>Example:
9654     </p>
9655     <p>
9656     </p>
9657     <blockquote class="text">
9658     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
9659     </p>
9660     <p>S: "NAME: Lunatic Loops"
9661     </p>
9662     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9663     </p>
9664     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
9665     </p>
9666     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
9667     </p>
9668     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
9669     </p>
9670     <p>&nbsp;&nbsp;&nbsp;"."
9671     </p>
9672     </blockquote><p>
9673    
9674     </p>
9675 senoner 542 <a name="command_syntax"></a><br /><hr />
9676 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9677     <a name="rfc.section.7"></a><h3>7.&nbsp;
9678     Command Syntax</h3>
9679 senoner 542
9680 schoenebeck 974 <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>
9681     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>)
9682 schoenebeck 575 where applicable.
9683 schoenebeck 940
9684 senoner 542 </p>
9685 schoenebeck 575 <p>input =
9686     </p>
9687     <blockquote class="text">
9688     <p>line LF
9689 schoenebeck 940
9690 schoenebeck 575 </p>
9691     <p>/ line CR LF
9692 schoenebeck 940
9693 schoenebeck 575 </p>
9694 schoenebeck 708 </blockquote><p>
9695 schoenebeck 575
9696 schoenebeck 708 </p>
9697 schoenebeck 575 <p>line =
9698     </p>
9699     <blockquote class="text">
9700     <p>/* epsilon (empty line ignored) */
9701 schoenebeck 940
9702 schoenebeck 575 </p>
9703     <p>/ comment
9704 schoenebeck 940
9705 schoenebeck 575 </p>
9706     <p>/ command
9707 schoenebeck 940
9708 schoenebeck 575 </p>
9709     <p>/ error
9710 schoenebeck 940
9711 schoenebeck 575 </p>
9712 schoenebeck 708 </blockquote><p>
9713 schoenebeck 575
9714 schoenebeck 708 </p>
9715 schoenebeck 575 <p>comment =
9716     </p>
9717     <blockquote class="text">
9718     <p>'#'
9719 schoenebeck 940
9720 schoenebeck 575 </p>
9721     <p>/ comment '#'
9722 schoenebeck 940
9723 schoenebeck 575 </p>
9724     <p>/ comment SP
9725 schoenebeck 940
9726 schoenebeck 575 </p>
9727     <p>/ comment number
9728 schoenebeck 940
9729 schoenebeck 575 </p>
9730     <p>/ comment string
9731 schoenebeck 940
9732 schoenebeck 575 </p>
9733 schoenebeck 708 </blockquote><p>
9734 schoenebeck 575
9735 schoenebeck 708 </p>
9736 schoenebeck 575 <p>command =
9737     </p>
9738     <blockquote class="text">
9739 schoenebeck 974 <p>ADD SP add_instruction
9740 schoenebeck 940
9741 schoenebeck 575 </p>
9742 schoenebeck 945 <p>/ MAP SP map_instruction
9743    
9744     </p>
9745     <p>/ UNMAP SP unmap_instruction
9746    
9747     </p>
9748 schoenebeck 575 <p>/ GET SP get_instruction
9749 schoenebeck 940
9750 schoenebeck 575 </p>
9751     <p>/ CREATE SP create_instruction
9752 schoenebeck 940
9753 schoenebeck 575 </p>
9754     <p>/ DESTROY SP destroy_instruction
9755 schoenebeck 940
9756 schoenebeck 575 </p>
9757     <p>/ LIST SP list_instruction
9758 schoenebeck 940
9759 schoenebeck 575 </p>
9760     <p>/ LOAD SP load_instruction
9761 schoenebeck 940
9762 schoenebeck 575 </p>
9763 schoenebeck 945 <p>/ REMOVE SP remove_instruction
9764 schoenebeck 940
9765 schoenebeck 575 </p>
9766     <p>/ SET SP set_instruction
9767 schoenebeck 940
9768 schoenebeck 575 </p>
9769     <p>/ SUBSCRIBE SP subscribe_event
9770 schoenebeck 940
9771 schoenebeck 575 </p>
9772     <p>/ UNSUBSCRIBE SP unsubscribe_event
9773 schoenebeck 940
9774 schoenebeck 575 </p>
9775 schoenebeck 945 <p>/ RESET SP reset_instruction
9776 schoenebeck 940
9777 schoenebeck 575 </p>
9778 schoenebeck 945 <p>/ CLEAR SP clear_instruction
9779    
9780     </p>
9781 iliev 1189 <p>/ FIND SP find_instruction
9782    
9783     </p>
9784 iliev 1162 <p>/ MOVE SP move_instruction
9785    
9786     </p>
9787 iliev 1189 <p>/ COPY SP copy_instruction
9788    
9789     </p>
9790 schoenebeck 1251 <p>/ EDIT SP edit_instruction
9791    
9792     </p>
9793 schoenebeck 1363 <p>/ FORMAT SP format_instruction
9794 iliev 1773
9795     </p>
9796     <p>SEND SP send_instruction
9797 schoenebeck 1363
9798     </p>
9799 schoenebeck 575 <p>/ RESET
9800 schoenebeck 940
9801 schoenebeck 575 </p>
9802     <p>/ QUIT
9803 schoenebeck 940
9804 schoenebeck 575 </p>
9805 schoenebeck 708 </blockquote><p>
9806 schoenebeck 575
9807 schoenebeck 708 </p>
9808 schoenebeck 974 <p>add_instruction =
9809     </p>
9810     <blockquote class="text">
9811     <p>CHANNEL
9812    
9813     </p>
9814 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9815 iliev 1162
9816     </p>
9817 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9818 iliev 1162
9819     </p>
9820 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9821 iliev 1162
9822     </p>
9823 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9824 iliev 1201
9825     </p>
9826 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9827 iliev 1201
9828     </p>
9829 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename
9830 iliev 1162
9831     </p>
9832 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9833 iliev 1162
9834     </p>
9835 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP
9836    
9837     </p>
9838     <p>/ MIDI_INSTRUMENT_MAP SP map_name
9839    
9840     </p>
9841     </blockquote><p>
9842    
9843     </p>
9844 schoenebeck 575 <p>subscribe_event =
9845     </p>
9846     <blockquote class="text">
9847 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
9848 schoenebeck 940
9849 schoenebeck 575 </p>
9850 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9851    
9852     </p>
9853     <p>/ MIDI_INPUT_DEVICE_COUNT
9854    
9855     </p>
9856     <p>/ MIDI_INPUT_DEVICE_INFO
9857    
9858     </p>
9859     <p>/ CHANNEL_COUNT
9860    
9861     </p>
9862 schoenebeck 1685 <p>/ CHANNEL_MIDI
9863    
9864     </p>
9865 schoenebeck 1696 <p>/ DEVICE_MIDI
9866    
9867     </p>
9868 schoenebeck 575 <p>/ VOICE_COUNT
9869 schoenebeck 940
9870 schoenebeck 575 </p>
9871     <p>/ STREAM_COUNT
9872 schoenebeck 940
9873 schoenebeck 575 </p>
9874     <p>/ BUFFER_FILL
9875 schoenebeck 940
9876 schoenebeck 575 </p>
9877     <p>/ CHANNEL_INFO
9878 schoenebeck 940
9879 schoenebeck 575 </p>
9880 iliev 1110 <p>/ FX_SEND_COUNT
9881    
9882     </p>
9883     <p>/ FX_SEND_INFO
9884    
9885     </p>
9886 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9887    
9888     </p>
9889     <p>/ MIDI_INSTRUMENT_MAP_INFO
9890    
9891     </p>
9892     <p>/ MIDI_INSTRUMENT_COUNT
9893    
9894     </p>
9895     <p>/ MIDI_INSTRUMENT_INFO
9896    
9897     </p>
9898 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9899    
9900     </p>
9901     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9902    
9903     </p>
9904     <p>/ DB_INSTRUMENT_COUNT
9905    
9906     </p>
9907     <p>/ DB_INSTRUMENT_INFO
9908    
9909     </p>
9910 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
9911    
9912     </p>
9913 schoenebeck 575 <p>/ MISCELLANEOUS
9914 schoenebeck 940
9915 schoenebeck 575 </p>
9916 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9917    
9918     </p>
9919 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9920    
9921     </p>
9922 iliev 1110 <p>/ GLOBAL_INFO
9923    
9924     </p>
9925 schoenebeck 708 </blockquote><p>
9926 schoenebeck 575
9927 schoenebeck 708 </p>
9928 schoenebeck 575 <p>unsubscribe_event =
9929     </p>
9930     <blockquote class="text">
9931 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
9932 schoenebeck 940
9933 schoenebeck 575 </p>
9934 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9935    
9936     </p>
9937     <p>/ MIDI_INPUT_DEVICE_COUNT
9938    
9939     </p>
9940     <p>/ MIDI_INPUT_DEVICE_INFO
9941    
9942     </p>
9943     <p>/ CHANNEL_COUNT
9944    
9945     </p>
9946 schoenebeck 1685 <p>/ CHANNEL_MIDI
9947    
9948     </p>
9949 schoenebeck 1696 <p>/ DEVICE_MIDI
9950    
9951     </p>
9952 schoenebeck 575 <p>/ VOICE_COUNT
9953 schoenebeck 940
9954 schoenebeck 575 </p>
9955     <p>/ STREAM_COUNT
9956 schoenebeck 940
9957 schoenebeck 575 </p>
9958     <p>/ BUFFER_FILL
9959 schoenebeck 940
9960 schoenebeck 575 </p>
9961     <p>/ CHANNEL_INFO
9962 schoenebeck 940
9963 schoenebeck 575 </p>
9964 iliev 1110 <p>/ FX_SEND_COUNT
9965    
9966     </p>
9967     <p>/ FX_SEND_INFO
9968    
9969     </p>
9970 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9971    
9972     </p>
9973     <p>/ MIDI_INSTRUMENT_MAP_INFO
9974    
9975     </p>
9976     <p>/ MIDI_INSTRUMENT_COUNT
9977    
9978     </p>
9979     <p>/ MIDI_INSTRUMENT_INFO
9980    
9981     </p>
9982 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9983    
9984     </p>
9985     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9986    
9987     </p>
9988     <p>/ DB_INSTRUMENT_COUNT
9989    
9990     </p>
9991     <p>/ DB_INSTRUMENT_INFO
9992    
9993     </p>
9994 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
9995    
9996     </p>
9997 schoenebeck 575 <p>/ MISCELLANEOUS
9998 schoenebeck 940
9999 schoenebeck 575 </p>
10000 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
10001    
10002     </p>
10003 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
10004    
10005     </p>
10006 iliev 1110 <p>/ GLOBAL_INFO
10007    
10008     </p>
10009 schoenebeck 708 </blockquote><p>
10010 schoenebeck 575
10011 schoenebeck 708 </p>
10012 schoenebeck 945 <p>map_instruction =
10013     </p>
10014     <blockquote class="text">
10015 schoenebeck 1048 <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
10016 schoenebeck 945
10017     </p>
10018 schoenebeck 1048 <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
10019 schoenebeck 945
10020     </p>
10021 schoenebeck 1048 <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
10022 schoenebeck 945
10023     </p>
10024 schoenebeck 1048 <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
10025 schoenebeck 945
10026     </p>
10027     </blockquote><p>
10028    
10029     </p>
10030     <p>unmap_instruction =
10031     </p>
10032     <blockquote class="text">
10033 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
10034 schoenebeck 945
10035     </p>
10036     </blockquote><p>
10037    
10038     </p>
10039     <p>remove_instruction =
10040     </p>
10041     <blockquote class="text">
10042     <p>CHANNEL SP sampler_channel
10043    
10044     </p>
10045 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
10046    
10047     </p>
10048     <p>/ MIDI_INSTRUMENT_MAP SP ALL
10049    
10050     </p>
10051 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
10052 iliev 1162
10053     </p>
10054 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
10055 iliev 1162
10056     </p>
10057 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path
10058 iliev 1162
10059     </p>
10060 schoenebeck 945 </blockquote><p>
10061    
10062     </p>
10063 schoenebeck 575 <p>get_instruction =
10064     </p>
10065     <blockquote class="text">
10066     <p>AVAILABLE_ENGINES
10067 schoenebeck 940
10068 schoenebeck 575 </p>
10069     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10070 schoenebeck 940
10071 schoenebeck 575 </p>
10072     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
10073 schoenebeck 940
10074 schoenebeck 575 </p>
10075     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
10076 schoenebeck 940
10077 schoenebeck 575 </p>
10078     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
10079 schoenebeck 940
10080 schoenebeck 575 </p>
10081     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10082 schoenebeck 940
10083 schoenebeck 575 </p>
10084     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
10085 schoenebeck 940
10086 schoenebeck 575 </p>
10087     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
10088 schoenebeck 940
10089 schoenebeck 575 </p>
10090     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
10091 schoenebeck 940
10092 schoenebeck 575 </p>
10093     <p>/ AUDIO_OUTPUT_DEVICES
10094 schoenebeck 940
10095 schoenebeck 575 </p>
10096     <p>/ MIDI_INPUT_DEVICES
10097 schoenebeck 940
10098 schoenebeck 575 </p>
10099     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
10100 schoenebeck 940
10101 schoenebeck 575 </p>
10102     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
10103 schoenebeck 940
10104 schoenebeck 575 </p>
10105     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
10106 schoenebeck 940
10107 schoenebeck 575 </p>
10108     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
10109 schoenebeck 940
10110 schoenebeck 575 </p>
10111     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
10112 schoenebeck 940
10113 schoenebeck 575 </p>
10114     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
10115 schoenebeck 940
10116 schoenebeck 575 </p>
10117     <p>/ CHANNELS
10118 schoenebeck 940
10119 schoenebeck 575 </p>
10120     <p>/ CHANNEL SP INFO SP sampler_channel
10121 schoenebeck 940
10122 schoenebeck 575 </p>
10123     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
10124 schoenebeck 940
10125 schoenebeck 575 </p>
10126     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
10127 schoenebeck 940
10128 schoenebeck 575 </p>
10129     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
10130 schoenebeck 940
10131 schoenebeck 575 </p>
10132     <p>/ ENGINE SP INFO SP engine_name
10133 schoenebeck 940
10134 schoenebeck 575 </p>
10135     <p>/ SERVER SP INFO
10136 schoenebeck 940
10137 schoenebeck 575 </p>
10138 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
10139    
10140     </p>
10141 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
10142    
10143     </p>
10144     <p>/ TOTAL_VOICE_COUNT_MAX
10145    
10146     </p>
10147 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
10148 schoenebeck 945
10149     </p>
10150 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10151 schoenebeck 945
10152     </p>
10153 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
10154    
10155     </p>
10156     <p>/ MIDI_INSTRUMENT_MAPS
10157    
10158     </p>
10159     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
10160    
10161     </p>
10162 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
10163    
10164     </p>
10165     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
10166    
10167     </p>
10168 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10169 iliev 1189
10170     </p>
10171 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10172 iliev 1162
10173     </p>
10174 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
10175 iliev 1162
10176     </p>
10177 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10178 iliev 1189
10179     </p>
10180 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
10181 iliev 1162
10182     </p>
10183 schoenebeck 1363 <p>/ DB_INSTRUMENT SP INFO SP db_path
10184 iliev 1162
10185     </p>
10186 iliev 1201 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
10187    
10188     </p>
10189 schoenebeck 1006 <p>/ VOLUME
10190    
10191     </p>
10192 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
10193    
10194     </p>
10195     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
10196    
10197     </p>
10198 schoenebeck 708 </blockquote><p>
10199 schoenebeck 575
10200 schoenebeck 708 </p>
10201 schoenebeck 575 <p>set_instruction =
10202     </p>
10203     <blockquote class="text">
10204     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
10205 schoenebeck 940
10206 schoenebeck 575 </p>
10207     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
10208 schoenebeck 940
10209 schoenebeck 575 </p>
10210     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
10211 schoenebeck 940
10212 schoenebeck 575 </p>
10213 schoenebeck 1363 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
10214    
10215     </p>
10216 schoenebeck 575 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
10217 schoenebeck 940
10218 schoenebeck 575 </p>
10219     <p>/ CHANNEL SP set_chan_instruction
10220 schoenebeck 940
10221 schoenebeck 575 </p>
10222 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
10223    
10224     </p>
10225 iliev 1137 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
10226    
10227     </p>
10228 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
10229    
10230     </p>
10231 schoenebeck 1028 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
10232    
10233     </p>
10234     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
10235    
10236     </p>
10237 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10238 iliev 1162
10239     </p>
10240 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10241 iliev 1162
10242     </p>
10243 schoenebeck 1363 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10244 iliev 1162
10245     </p>
10246 schoenebeck 1363 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10247 iliev 1162
10248     </p>
10249 iliev 1731 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
10250    
10251     </p>
10252 schoenebeck 575 <p>/ ECHO SP boolean
10253 schoenebeck 940
10254 schoenebeck 575 </p>
10255 schoenebeck 1006 <p>/ VOLUME SP volume_value
10256    
10257     </p>
10258 schoenebeck 708 </blockquote><p>
10259 schoenebeck 575
10260 schoenebeck 708 </p>
10261 schoenebeck 575 <p>create_instruction =
10262     </p>
10263     <blockquote class="text">
10264     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10265 schoenebeck 940
10266 schoenebeck 575 </p>
10267     <p>/ AUDIO_OUTPUT_DEVICE SP string
10268 schoenebeck 940
10269 schoenebeck 575 </p>
10270     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10271 schoenebeck 940
10272 schoenebeck 575 </p>
10273     <p>/ MIDI_INPUT_DEVICE SP string
10274 schoenebeck 940
10275 schoenebeck 575 </p>
10276 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
10277    
10278     </p>
10279     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
10280    
10281     </p>
10282 schoenebeck 708 </blockquote><p>
10283 schoenebeck 575
10284 schoenebeck 708 </p>
10285 schoenebeck 945 <p>reset_instruction =
10286     </p>
10287     <blockquote class="text">
10288     <p>CHANNEL SP sampler_channel
10289    
10290     </p>
10291     </blockquote><p>
10292    
10293     </p>
10294     <p>clear_instruction =
10295     </p>
10296     <blockquote class="text">
10297 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
10298 schoenebeck 945
10299     </p>
10300 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10301    
10302     </p>
10303 schoenebeck 945 </blockquote><p>
10304    
10305     </p>
10306 iliev 1189 <p>find_instruction =
10307     </p>
10308     <blockquote class="text">
10309 schoenebeck 1363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10310 iliev 1189
10311     </p>
10312 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10313 iliev 1189
10314     </p>
10315 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10316 iliev 1189
10317     </p>
10318 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10319 iliev 1189
10320     </p>
10321 iliev 1731 <p>/ LOST SP DB_INSTRUMENT_FILES
10322    
10323     </p>
10324 iliev 1189 </blockquote><p>
10325    
10326     </p>
10327 iliev 1162 <p>move_instruction =
10328     </p>
10329     <blockquote class="text">
10330 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10331 iliev 1162
10332     </p>
10333 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
10334 iliev 1162
10335     </p>
10336     </blockquote><p>
10337    
10338     </p>
10339 iliev 1189 <p>copy_instruction =
10340     </p>
10341     <blockquote class="text">
10342 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10343 iliev 1189
10344     </p>
10345 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
10346 iliev 1189
10347     </p>
10348     </blockquote><p>
10349    
10350     </p>
10351 schoenebeck 575 <p>destroy_instruction =
10352     </p>
10353     <blockquote class="text">
10354     <p>AUDIO_OUTPUT_DEVICE SP number
10355 schoenebeck 940
10356 schoenebeck 575 </p>
10357     <p>/ MIDI_INPUT_DEVICE SP number
10358 schoenebeck 940
10359 schoenebeck 575 </p>
10360 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
10361    
10362     </p>
10363 schoenebeck 708 </blockquote><p>
10364 schoenebeck 575
10365 schoenebeck 708 </p>
10366 schoenebeck 575 <p>load_instruction =
10367     </p>
10368     <blockquote class="text">
10369     <p>INSTRUMENT SP load_instr_args
10370 schoenebeck 940
10371 schoenebeck 575 </p>
10372     <p>/ ENGINE SP load_engine_args
10373 schoenebeck 940
10374 schoenebeck 575 </p>
10375 schoenebeck 708 </blockquote><p>
10376 schoenebeck 575
10377 schoenebeck 708 </p>
10378 schoenebeck 575 <p>set_chan_instruction =
10379     </p>
10380     <blockquote class="text">
10381     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10382 schoenebeck 940
10383 schoenebeck 575 </p>
10384     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10385 schoenebeck 940
10386 schoenebeck 575 </p>
10387     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10388 schoenebeck 940
10389 schoenebeck 575 </p>
10390     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10391 schoenebeck 940
10392 schoenebeck 575 </p>
10393     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10394 schoenebeck 940
10395 schoenebeck 575 </p>
10396     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10397 schoenebeck 940
10398 schoenebeck 575 </p>
10399     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10400 schoenebeck 940
10401 schoenebeck 575 </p>
10402     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10403 schoenebeck 940
10404 schoenebeck 575 </p>
10405     <p>/ VOLUME SP sampler_channel SP volume_value
10406 schoenebeck 940
10407 schoenebeck 575 </p>
10408 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
10409 schoenebeck 940
10410 schoenebeck 708 </p>
10411     <p>/ SOLO SP sampler_channel SP boolean
10412 schoenebeck 940
10413 schoenebeck 708 </p>
10414 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
10415    
10416     </p>
10417     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
10418    
10419     </p>
10420     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
10421    
10422     </p>
10423 schoenebeck 708 </blockquote><p>
10424    
10425     </p>
10426 schoenebeck 1251 <p>edit_instruction =
10427     </p>
10428     <blockquote class="text">
10429 schoenebeck 1430 <p>CHANNEL SP INSTRUMENT SP sampler_channel
10430 schoenebeck 1251
10431     </p>
10432     </blockquote><p>
10433    
10434     </p>
10435 schoenebeck 1363 <p>format_instruction =
10436     </p>
10437     <blockquote class="text">
10438     <p>INSTRUMENTS_DB
10439    
10440     </p>
10441     </blockquote><p>
10442    
10443     </p>
10444 schoenebeck 1048 <p>modal_arg =
10445     </p>
10446     <blockquote class="text">
10447     <p>/* epsilon (empty argument) */
10448    
10449     </p>
10450     <p>/ NON_MODAL SP
10451    
10452     </p>
10453     </blockquote><p>
10454    
10455     </p>
10456 schoenebeck 575 <p>key_val_list =
10457     </p>
10458     <blockquote class="text">
10459     <p>string '=' param_val_list
10460 schoenebeck 940
10461 schoenebeck 575 </p>
10462     <p>/ key_val_list SP string '=' param_val_list
10463 schoenebeck 940
10464 schoenebeck 575 </p>
10465 schoenebeck 708 </blockquote><p>
10466 schoenebeck 575
10467 schoenebeck 708 </p>
10468 schoenebeck 575 <p>buffer_size_type =
10469     </p>
10470     <blockquote class="text">
10471     <p>BYTES
10472 schoenebeck 940
10473 schoenebeck 575 </p>
10474     <p>/ PERCENTAGE
10475 schoenebeck 940
10476 schoenebeck 575 </p>
10477 schoenebeck 708 </blockquote><p>
10478 schoenebeck 575
10479 schoenebeck 708 </p>
10480 schoenebeck 575 <p>list_instruction =
10481     </p>
10482     <blockquote class="text">
10483     <p>AUDIO_OUTPUT_DEVICES
10484 schoenebeck 940
10485 schoenebeck 575 </p>
10486     <p>/ MIDI_INPUT_DEVICES
10487 schoenebeck 940
10488 schoenebeck 575 </p>
10489     <p>/ CHANNELS
10490 schoenebeck 940
10491 schoenebeck 575 </p>
10492     <p>/ AVAILABLE_ENGINES
10493 schoenebeck 940
10494 schoenebeck 575 </p>
10495     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10496 schoenebeck 940
10497 schoenebeck 575 </p>
10498     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10499 schoenebeck 940
10500 schoenebeck 575 </p>
10501 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
10502 schoenebeck 945
10503     </p>
10504 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10505    
10506     </p>
10507     <p>/ MIDI_INSTRUMENT_MAPS
10508    
10509     </p>
10510 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
10511    
10512     </p>
10513 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10514 iliev 1189
10515     </p>
10516 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10517 iliev 1162
10518     </p>
10519 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10520 iliev 1189
10521     </p>
10522 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
10523 iliev 1162
10524     </p>
10525 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
10526    
10527     </p>
10528 schoenebeck 708 </blockquote><p>
10529 schoenebeck 575
10530 schoenebeck 708 </p>
10531 iliev 1773 <p>send_instruction =
10532     </p>
10533     <blockquote class="text">
10534     <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
10535    
10536     </p>
10537     </blockquote><p>
10538    
10539     </p>
10540 schoenebeck 575 <p>load_instr_args =
10541     </p>
10542     <blockquote class="text">
10543     <p>filename SP instrument_index SP sampler_channel
10544 schoenebeck 940
10545 schoenebeck 575 </p>
10546     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10547 schoenebeck 940
10548 schoenebeck 575 </p>
10549 schoenebeck 708 </blockquote><p>
10550 schoenebeck 575
10551 schoenebeck 708 </p>
10552 schoenebeck 575 <p>load_engine_args =
10553     </p>
10554     <blockquote class="text">
10555     <p>engine_name SP sampler_channel
10556 schoenebeck 940
10557 schoenebeck 575 </p>
10558 schoenebeck 708 </blockquote><p>
10559 schoenebeck 575
10560 schoenebeck 708 </p>
10561 schoenebeck 945 <p>instr_load_mode =
10562     </p>
10563     <blockquote class="text">
10564     <p>ON_DEMAND
10565    
10566     </p>
10567     <p>/ ON_DEMAND_HOLD
10568    
10569     </p>
10570     <p>/ PERSISTENT
10571    
10572     </p>
10573     </blockquote><p>
10574    
10575     </p>
10576 schoenebeck 575 <p>device_index =
10577     </p>
10578     <blockquote class="text">
10579     <p>number
10580 schoenebeck 940
10581 schoenebeck 575 </p>
10582 schoenebeck 708 </blockquote><p>
10583 schoenebeck 575
10584 schoenebeck 708 </p>
10585 schoenebeck 575 <p>audio_channel_index =
10586     </p>
10587     <blockquote class="text">
10588     <p>number
10589 schoenebeck 940
10590 schoenebeck 575 </p>
10591 schoenebeck 708 </blockquote><p>
10592 schoenebeck 575
10593 schoenebeck 708 </p>
10594 schoenebeck 575 <p>audio_output_type_name =
10595     </p>
10596     <blockquote class="text">
10597     <p>string
10598 schoenebeck 940
10599 schoenebeck 575 </p>
10600 schoenebeck 708 </blockquote><p>
10601 schoenebeck 575
10602 schoenebeck 708 </p>
10603 schoenebeck 575 <p>midi_input_port_index =
10604     </p>
10605     <blockquote class="text">
10606     <p>number
10607 schoenebeck 940
10608 schoenebeck 575 </p>
10609 schoenebeck 708 </blockquote><p>
10610 schoenebeck 575
10611 schoenebeck 708 </p>
10612 schoenebeck 575 <p>midi_input_channel_index =
10613     </p>
10614     <blockquote class="text">
10615     <p>number
10616 schoenebeck 940
10617 schoenebeck 575 </p>
10618     <p>/ ALL
10619 schoenebeck 940
10620 schoenebeck 575 </p>
10621 schoenebeck 708 </blockquote><p>
10622 schoenebeck 575
10623 schoenebeck 708 </p>
10624 schoenebeck 575 <p>midi_input_type_name =
10625     </p>
10626     <blockquote class="text">
10627     <p>string
10628 schoenebeck 940
10629 schoenebeck 575 </p>
10630 schoenebeck 708 </blockquote><p>
10631 schoenebeck 575
10632 schoenebeck 708 </p>
10633 schoenebeck 974 <p>midi_map =
10634 schoenebeck 945 </p>
10635     <blockquote class="text">
10636     <p>number
10637    
10638     </p>
10639     </blockquote><p>
10640    
10641     </p>
10642 schoenebeck 974 <p>midi_bank =
10643 schoenebeck 945 </p>
10644     <blockquote class="text">
10645     <p>number
10646    
10647     </p>
10648     </blockquote><p>
10649    
10650     </p>
10651     <p>midi_prog =
10652     </p>
10653     <blockquote class="text">
10654     <p>number
10655    
10656     </p>
10657     </blockquote><p>
10658    
10659     </p>
10660 schoenebeck 1002 <p>midi_ctrl =
10661     </p>
10662     <blockquote class="text">
10663     <p>number
10664    
10665     </p>
10666     </blockquote><p>
10667    
10668     </p>
10669 schoenebeck 575 <p>volume_value =
10670     </p>
10671     <blockquote class="text">
10672     <p>dotnum
10673 schoenebeck 940
10674 schoenebeck 575 </p>
10675     <p>/ number
10676 schoenebeck 940
10677 schoenebeck 575 </p>
10678 schoenebeck 708 </blockquote><p>
10679 schoenebeck 575
10680 schoenebeck 708 </p>
10681 schoenebeck 575 <p>sampler_channel =
10682     </p>
10683     <blockquote class="text">
10684     <p>number
10685 schoenebeck 940
10686 schoenebeck 575 </p>
10687 schoenebeck 708 </blockquote><p>
10688 schoenebeck 575
10689 schoenebeck 708 </p>
10690 schoenebeck 575 <p>instrument_index =
10691     </p>
10692     <blockquote class="text">
10693     <p>number
10694 schoenebeck 940
10695 schoenebeck 575 </p>
10696 schoenebeck 708 </blockquote><p>
10697 schoenebeck 575
10698 schoenebeck 708 </p>
10699 schoenebeck 1002 <p>fx_send_id =
10700     </p>
10701     <blockquote class="text">
10702     <p>number
10703    
10704     </p>
10705     </blockquote><p>
10706    
10707     </p>
10708 schoenebeck 575 <p>engine_name =
10709     </p>
10710     <blockquote class="text">
10711     <p>string
10712 schoenebeck 940
10713 schoenebeck 575 </p>
10714 schoenebeck 708 </blockquote><p>
10715 schoenebeck 575
10716 schoenebeck 708 </p>
10717 schoenebeck 1363 <p>filename =
10718 iliev 1162 </p>
10719     <blockquote class="text">
10720 schoenebeck 1363 <p>path
10721 iliev 1162
10722     </p>
10723     </blockquote><p>
10724    
10725     </p>
10726 schoenebeck 1363 <p>db_path =
10727 iliev 1162 </p>
10728     <blockquote class="text">
10729 schoenebeck 1363 <p>path
10730 iliev 1162
10731     </p>
10732     </blockquote><p>
10733    
10734     </p>
10735 schoenebeck 974 <p>map_name =
10736     </p>
10737     <blockquote class="text">
10738 schoenebeck 1390 <p>stringval_escaped
10739 schoenebeck 974
10740     </p>
10741     </blockquote><p>
10742    
10743     </p>
10744 schoenebeck 945 <p>entry_name =
10745     </p>
10746     <blockquote class="text">
10747 schoenebeck 1390 <p>stringval_escaped
10748 schoenebeck 945
10749     </p>
10750     </blockquote><p>
10751    
10752     </p>
10753 schoenebeck 1002 <p>fx_send_name =
10754     </p>
10755     <blockquote class="text">
10756 schoenebeck 1390 <p>stringval_escaped
10757 schoenebeck 1002
10758     </p>
10759     </blockquote><p>
10760    
10761     </p>
10762 schoenebeck 575 <p>param_val_list =
10763     </p>
10764     <blockquote class="text">
10765     <p>param_val
10766 schoenebeck 940
10767 schoenebeck 575 </p>
10768     <p>/ param_val_list','param_val
10769 schoenebeck 940
10770 schoenebeck 575 </p>
10771 schoenebeck 708 </blockquote><p>
10772 schoenebeck 575
10773 schoenebeck 708 </p>
10774 schoenebeck 575 <p>param_val =
10775     </p>
10776     <blockquote class="text">
10777     <p>string
10778 schoenebeck 940
10779 schoenebeck 575 </p>
10780 schoenebeck 940 <p>/ stringval
10781    
10782 schoenebeck 575 </p>
10783     <p>/ number
10784 schoenebeck 940
10785 schoenebeck 575 </p>
10786     <p>/ dotnum
10787 schoenebeck 940
10788 schoenebeck 575 </p>
10789 schoenebeck 708 </blockquote><p>
10790 schoenebeck 575
10791 schoenebeck 708 </p>
10792 iliev 1189 <p>query_val_list =
10793     </p>
10794     <blockquote class="text">
10795     <p>string '=' query_val
10796    
10797     </p>
10798     <p>/ query_val_list SP string '=' query_val
10799    
10800     </p>
10801     </blockquote><p>
10802    
10803     </p>
10804     <p>query_val =
10805     </p>
10806     <blockquote class="text">
10807 schoenebeck 1390 <p>text_escaped
10808 iliev 1189
10809     </p>
10810 schoenebeck 1363 <p>/ stringval_escaped
10811 iliev 1189
10812     </p>
10813     </blockquote><p>
10814    
10815     </p>
10816 iliev 1201 <p>scan_mode =
10817     </p>
10818     <blockquote class="text">
10819     <p>RECURSIVE
10820    
10821     </p>
10822     <p>/ NON_RECURSIVE
10823    
10824     </p>
10825     <p>/ FLAT
10826    
10827     </p>
10828     </blockquote><p>
10829    
10830     </p>
10831 schoenebeck 1251 <a name="character_set"></a><br /><hr />
10832     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10833     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10834     Character Set and Escape Sequences</h3>
10835    
10836     <p>Older versions of this protocol up to and including v1.1 only
10837     supported the standard ASCII character set (ASCII code 0 - 127)
10838     <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
10839     however support the Extended ASCII character set (ASCII code
10840     0 - 255). The same group of younger protocols also support
10841     escape sequences, but only for certain, explicitly declared
10842     parts of the protocol. The supported escape sequences are
10843     defined as follows:
10844     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10845     <col align="left"><col align="left">
10846     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10847     <tr>
10848     <td align="left">\n</td>
10849     <td align="left">new line</td>
10850     </tr>
10851     <tr>
10852     <td align="left">\r</td>
10853     <td align="left">carriage return</td>
10854     </tr>
10855     <tr>
10856     <td align="left">\f</td>
10857     <td align="left">form feed</td>
10858     </tr>
10859     <tr>
10860     <td align="left">\t</td>
10861     <td align="left">horizontal tab</td>
10862     </tr>
10863     <tr>
10864     <td align="left">\v</td>
10865     <td align="left">vertical tab</td>
10866     </tr>
10867     <tr>
10868     <td align="left">\'</td>
10869     <td align="left">apostrophe</td>
10870     </tr>
10871     <tr>
10872     <td align="left">\"</td>
10873     <td align="left">quotation mark</td>
10874     </tr>
10875     <tr>
10876     <td align="left">\\</td>
10877     <td align="left">backslash</td>
10878     </tr>
10879     <tr>
10880     <td align="left">\OOO</td>
10881     <td align="left">three digit octal ASCII code of the character</td>
10882     </tr>
10883     <tr>
10884     <td align="left">\xHH</td>
10885     <td align="left">two digit hex ASCII code of the character</td>
10886     </tr>
10887     </table>
10888    
10889     <p>Notice: due to the transition of certain parts of the
10890     protocol which now support escape sequences, a slight backward
10891     incompatibility to protocols version v1.1 and younger has been
10892     introduced. The only difference is that in parts of the protocol
10893     where escape characters are now supported, a backslash characters
10894     MUST be escaped as well (that is as double backslash), whereas
10895     in the old versions a single backslash was sufficient.
10896     </p>
10897 schoenebeck 1390 <p>The following LSCP commands support escape sequences as part
10898 schoenebeck 1400 of their filename / path based arguments and / or may contain
10899     a filename / path with escape sequences in their response:
10900 schoenebeck 1390 </p>
10901     <blockquote class="text">
10902     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10903     </p>
10904 schoenebeck 1400 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10905     </p>
10906 schoenebeck 1390 <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>
10907     </p>
10908 schoenebeck 1400 <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>
10909     </p>
10910 schoenebeck 1390 <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>
10911     </p>
10912     <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>
10913     </p>
10914     <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>
10915     </p>
10916     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10917     </p>
10918     <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>
10919     </p>
10920     <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>
10921     </p>
10922     <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>
10923     </p>
10924     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10925     </p>
10926     <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>
10927     </p>
10928     <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>
10929     </p>
10930     <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>
10931     </p>
10932     <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>
10933     </p>
10934     <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>
10935     </p>
10936     <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>
10937     </p>
10938     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10939     </p>
10940     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10941     </p>
10942     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10943     </p>
10944     <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>
10945     </p>
10946     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10947     </p>
10948     <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>
10949     </p>
10950 iliev 1731 <p><a class='info' href='#FIND LOST DB_INSTRUMENT_FILES'>"FIND LOST DB_INSTRUMENT_FILES"<span> (</span><span class='info'>Checking for lost instrument files</span><span>)</span></a>
10951     </p>
10952     <p><a class='info' href='#SET DB_INSTRUMENT FILE_PATH'>"SET DB_INSTRUMENT FILE_PATH"<span> (</span><span class='info'>Replacing an instrument file</span><span>)</span></a>
10953     </p>
10954 schoenebeck 1572 <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>
10955     </p>
10956     <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>
10957     </p>
10958     <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>
10959     </p>
10960 schoenebeck 1390 </blockquote><p>
10961     Note that the forward slash character ('/') has a special meaning in
10962     filename / path based arguments: it acts as separator of the nodes in
10963     the path, thus if a directory- or filename includes a forward slash
10964     (not intended as path node separator), you MUST escape that slash
10965     either with the respective hex escape sequence ("\x2f") or with the
10966     respective octal escape sequence ("\057").
10967    
10968     </p>
10969     <p>
10970 schoenebeck 1572 Note for Windows: file path arguments in LSCP are expected
10971     to use forward slashes as directory node separator similar
10972     to Unix based operating systems. In contrast to Unix however
10973     a Windows typical drive character is expected to be
10974     prefixed to the path. That is an original Windows file path
10975     like "D:\Sounds\My.gig" would become in LSCP:
10976     "D:/Sounds/My.gig".
10977    
10978     </p>
10979     <p>
10980 schoenebeck 1390 The following LSCP commands even support escape sequences as
10981     part of at least one of their text-based arguments (i.e. entity name,
10982 schoenebeck 1400 description) and / or may contain escape sequences in at least one of
10983     their text-based fields in their response:
10984 schoenebeck 1390 </p>
10985     <blockquote class="text">
10986 schoenebeck 1400 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
10987     </p>
10988     <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>
10989     </p>
10990     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10991     </p>
10992     <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>
10993     </p>
10994     <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>
10995     </p>
10996     <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>
10997     </p>
10998     <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>
10999     </p>
11000     <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>
11001     </p>
11002 schoenebeck 1390 <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>
11003     </p>
11004     <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>
11005     </p>
11006     <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>
11007     </p>
11008 schoenebeck 1430 <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>
11009     </p>
11010 schoenebeck 1390 <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>
11011     </p>
11012     <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>
11013     </p>
11014 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
11015     </p>
11016 schoenebeck 1430 <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>
11017     </p>
11018 schoenebeck 1390 <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>
11019     </p>
11020     <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>
11021     </p>
11022 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
11023 schoenebeck 1390 </p>
11024     </blockquote><p>
11025     Please note that these lists are manually maintained. If you
11026     find a command that also supports escape sequences we forgot to
11027     mention here, please report it!
11028    
11029     </p>
11030 senoner 542 <a name="events"></a><br /><hr />
11031 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11032     <a name="rfc.section.8"></a><h3>8.&nbsp;
11033     Events</h3>
11034 senoner 542
11035     <p>This chapter will describe all currently defined events supported by LinuxSampler.
11036     </p>
11037 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
11038 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11039     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
11040 iliev 992 Number of audio output devices changed</h3>
11041    
11042     <p>Client may want to be notified when the total number of audio output devices on the
11043     back-end changes by issuing the following command:
11044     </p>
11045     <p>
11046     </p>
11047     <blockquote class="text">
11048     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
11049     </p>
11050     </blockquote><p>
11051    
11052     </p>
11053     <p>Server will start sending the following notification messages:
11054     </p>
11055     <p>
11056     </p>
11057     <blockquote class="text">
11058     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
11059     </p>
11060     </blockquote><p>
11061    
11062     </p>
11063     <p>where &lt;devices&gt; will be replaced by the new number
11064     of audio output devices.
11065     </p>
11066     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
11067     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11068     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
11069     Audio output device's settings changed</h3>
11070    
11071     <p>Client may want to be notified when changes were made to audio output devices on the
11072     back-end by issuing the following command:
11073     </p>
11074     <p>
11075     </p>
11076     <blockquote class="text">
11077     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
11078     </p>
11079     </blockquote><p>
11080    
11081     </p>
11082     <p>Server will start sending the following notification messages:
11083     </p>
11084     <p>
11085     </p>
11086     <blockquote class="text">
11087     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
11088     </p>
11089     </blockquote><p>
11090    
11091     </p>
11092     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
11093     which settings has been changed. The front-end will have to send
11094     the respective command to actually get the audio output device info. Because these messages
11095     will be triggered by LSCP commands issued by other clients rather than real
11096     time events happening on the server, it is believed that an empty notification
11097     message is sufficient here.
11098     </p>
11099     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
11100     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11101     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
11102     Number of MIDI input devices changed</h3>
11103    
11104     <p>Client may want to be notified when the total number of MIDI input devices on the
11105     back-end changes by issuing the following command:
11106     </p>
11107     <p>
11108     </p>
11109     <blockquote class="text">
11110     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
11111     </p>
11112     </blockquote><p>
11113    
11114     </p>
11115     <p>Server will start sending the following notification messages:
11116     </p>
11117     <p>
11118     </p>
11119     <blockquote class="text">
11120     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
11121     </p>
11122     </blockquote><p>
11123    
11124     </p>
11125     <p>where &lt;devices&gt; will be replaced by the new number
11126     of MIDI input devices.
11127     </p>
11128     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
11129     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11130     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
11131     MIDI input device's settings changed</h3>
11132    
11133     <p>Client may want to be notified when changes were made to MIDI input devices on the
11134     back-end by issuing the following command:
11135     </p>
11136     <p>
11137     </p>
11138     <blockquote class="text">
11139     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
11140     </p>
11141     </blockquote><p>
11142    
11143     </p>
11144     <p>Server will start sending the following notification messages:
11145     </p>
11146     <p>
11147     </p>
11148     <blockquote class="text">
11149     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
11150     </p>
11151     </blockquote><p>
11152    
11153     </p>
11154     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
11155     which settings has been changed. The front-end will have to send
11156     the respective command to actually get the MIDI input device info. Because these messages
11157     will be triggered by LSCP commands issued by other clients rather than real
11158     time events happening on the server, it is believed that an empty notification
11159     message is sufficient here.
11160     </p>
11161     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
11162     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11163     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
11164 schoenebeck 974 Number of sampler channels changed</h3>
11165 senoner 542
11166     <p>Client may want to be notified when the total number of channels on the
11167     back-end changes by issuing the following command:
11168     </p>
11169 schoenebeck 708 <p>
11170     </p>
11171 senoner 542 <blockquote class="text">
11172 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
11173 senoner 542 </p>
11174 schoenebeck 708 </blockquote><p>
11175 schoenebeck 940
11176 schoenebeck 708 </p>
11177 senoner 542 <p>Server will start sending the following notification messages:
11178     </p>
11179 schoenebeck 708 <p>
11180     </p>
11181 senoner 542 <blockquote class="text">
11182 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
11183 senoner 542 </p>
11184 schoenebeck 708 </blockquote><p>
11185 schoenebeck 940
11186 schoenebeck 708 </p>
11187 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
11188     of sampler channels.
11189     </p>
11190 schoenebeck 1685 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
11191     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11192     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
11193     MIDI data on a sampler channel arrived</h3>
11194    
11195     <p>Client may want to be notified when MIDI data arrive on sampler channels on
11196     back-end side, by issuing the following command:
11197     </p>
11198     <p>
11199     </p>
11200     <blockquote class="text">
11201     <p>SUBSCRIBE CHANNEL_MIDI
11202     </p>
11203     </blockquote><p>
11204    
11205     </p>
11206     <p>Server will start sending one of the the following notification messages:
11207     </p>
11208     <p>
11209     </p>
11210     <blockquote class="text">
11211     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
11212     </p>
11213     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
11214     </p>
11215     </blockquote><p>
11216    
11217     </p>
11218     <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
11219     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
11220     0 .. 127, reflecting the analog meaning of the MIDI specification.
11221    
11222     </p>
11223     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
11224     delivered by this mechanism! With other words: events could be lost at any time!
11225     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
11226     thread unaffected by this feature.
11227     </p>
11228 schoenebeck 1696 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
11229     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11230     <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
11231     MIDI data on a MIDI input device arrived</h3>
11232    
11233     <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
11234     </p>
11235     <p>
11236     </p>
11237     <blockquote class="text">
11238     <p>SUBSCRIBE DEVICE_MIDI
11239     </p>
11240     </blockquote><p>
11241    
11242     </p>
11243     <p>Server will start sending one of the the following notification messages:
11244     </p>
11245     <p>
11246     </p>
11247     <blockquote class="text">
11248 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
11249 schoenebeck 1696 </p>
11250 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
11251 schoenebeck 1696 </p>
11252     </blockquote><p>
11253    
11254     </p>
11255     <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
11256     by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
11257     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
11258     0 .. 127, reflecting the analog meaning of the MIDI specification.
11259    
11260     </p>
11261     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
11262     delivered by this mechanism! With other words: events could be lost at any time!
11263     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
11264     thread unaffected by this feature.
11265     </p>
11266 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
11267 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11268 schoenebeck 1696 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11269 schoenebeck 974 Number of active voices changed</h3>
11270 senoner 542
11271     <p>Client may want to be notified when the number of voices on the
11272     back-end changes by issuing the following command:
11273     </p>
11274 schoenebeck 708 <p>
11275     </p>
11276 senoner 542 <blockquote class="text">
11277     <p>SUBSCRIBE VOICE_COUNT
11278     </p>
11279 schoenebeck 708 </blockquote><p>
11280 schoenebeck 940
11281 schoenebeck 708 </p>
11282 senoner 542 <p>Server will start sending the following notification messages:
11283     </p>
11284 schoenebeck 708 <p>
11285     </p>
11286 senoner 542 <blockquote class="text">
11287 iliev 1110 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
11288 senoner 542 </p>
11289 schoenebeck 708 </blockquote><p>
11290 schoenebeck 940
11291 schoenebeck 708 </p>
11292 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11293     voice count change occurred and &lt;voices&gt; by the new number of
11294     active voices on that channel.
11295     </p>
11296 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
11297 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11298 schoenebeck 1696 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11299 schoenebeck 974 Number of active disk streams changed</h3>
11300 senoner 542
11301     <p>Client may want to be notified when the number of streams on the back-end
11302     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
11303     </p>
11304 schoenebeck 708 <p>
11305     </p>
11306 senoner 542 <blockquote class="text">
11307     <p>SUBSCRIBE STREAM_COUNT
11308     </p>
11309 schoenebeck 708 </blockquote><p>
11310 schoenebeck 940
11311 schoenebeck 708 </p>
11312 senoner 542 <p>Server will start sending the following notification messages:
11313     </p>
11314 schoenebeck 708 <p>
11315     </p>
11316 senoner 542 <blockquote class="text">
11317     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
11318     </p>
11319 schoenebeck 708 </blockquote><p>
11320 schoenebeck 940
11321 schoenebeck 708 </p>
11322 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11323     stream count change occurred and &lt;streams&gt; by the new number of
11324     active disk streams on that channel.
11325     </p>
11326 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
11327 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11328 schoenebeck 1696 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11329 schoenebeck 974 Disk stream buffer fill state changed</h3>
11330 senoner 542
11331     <p>Client may want to be notified when the buffer fill state of a disk stream
11332     on the back-end changes by issuing the following command:
11333     </p>
11334 schoenebeck 708 <p>
11335     </p>
11336 senoner 542 <blockquote class="text">
11337     <p>SUBSCRIBE BUFFER_FILL
11338     </p>
11339 schoenebeck 708 </blockquote><p>
11340 schoenebeck 940
11341 schoenebeck 708 </p>
11342 senoner 542 <p>Server will start sending the following notification messages:
11343     </p>
11344 schoenebeck 708 <p>
11345     </p>
11346 senoner 542 <blockquote class="text">
11347     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11348     </p>
11349 schoenebeck 708 </blockquote><p>
11350 schoenebeck 940
11351 schoenebeck 708 </p>
11352 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11353     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
11354 schoenebeck 974 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>
11355     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.
11356 senoner 542 </p>
11357 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11358 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11359 schoenebeck 1696 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11360 schoenebeck 974 Channel information changed</h3>
11361 senoner 542
11362     <p>Client may want to be notified when changes were made to sampler channels on the
11363 schoenebeck 561 back-end by issuing the following command:
11364 senoner 542 </p>
11365 schoenebeck 708 <p>
11366     </p>
11367 senoner 542 <blockquote class="text">
11368 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
11369 senoner 542 </p>
11370 schoenebeck 708 </blockquote><p>
11371 schoenebeck 940
11372 schoenebeck 708 </p>
11373 senoner 542 <p>Server will start sending the following notification messages:
11374     </p>
11375 schoenebeck 708 <p>
11376     </p>
11377 senoner 542 <blockquote class="text">
11378 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11379 senoner 542 </p>
11380 schoenebeck 708 </blockquote><p>
11381 schoenebeck 940
11382 schoenebeck 708 </p>
11383 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11384     channel info change occurred. The front-end will have to send
11385     the respective command to actually get the channel info. Because these messages
11386     will be triggered by LSCP commands issued by other clients rather than real
11387     time events happening on the server, it is believed that an empty notification
11388     message is sufficient here.
11389     </p>
11390 iliev 1110 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
11391     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11392 schoenebeck 1696 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11393 iliev 1110 Number of effect sends changed</h3>
11394    
11395 schoenebeck 1251 <p>Client may want to be notified when the number of effect sends on
11396 iliev 1110 a particular sampler channel is changed by issuing the following command:
11397     </p>
11398     <p>
11399     </p>
11400     <blockquote class="text">
11401     <p>SUBSCRIBE FX_SEND_COUNT
11402     </p>
11403     </blockquote><p>
11404    
11405     </p>
11406     <p>Server will start sending the following notification messages:
11407     </p>
11408     <p>
11409     </p>
11410     <blockquote class="text">
11411     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
11412     </p>
11413     </blockquote><p>
11414    
11415     </p>
11416     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11417     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
11418     be replaced by the new number of effect sends on that channel.
11419     </p>
11420     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
11421     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11422 schoenebeck 1696 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11423 iliev 1110 Effect send information changed</h3>
11424    
11425     <p>Client may want to be notified when changes were made to effect sends on a
11426     a particular sampler channel by issuing the following command:
11427     </p>
11428     <p>
11429     </p>
11430     <blockquote class="text">
11431     <p>SUBSCRIBE FX_SEND_INFO
11432     </p>
11433     </blockquote><p>
11434    
11435     </p>
11436     <p>Server will start sending the following notification messages:
11437     </p>
11438     <p>
11439     </p>
11440     <blockquote class="text">
11441     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
11442     </p>
11443     </blockquote><p>
11444    
11445     </p>
11446     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11447     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
11448     be replaced by the numerical ID of the changed effect send.
11449     </p>
11450 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11451 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11452 schoenebeck 1696 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11453 schoenebeck 974 Total number of active voices changed</h3>
11454 senoner 542
11455 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
11456     back-end changes by issuing the following command:
11457     </p>
11458     <p>
11459     </p>
11460     <blockquote class="text">
11461     <p>SUBSCRIBE TOTAL_VOICE_COUNT
11462     </p>
11463     </blockquote><p>
11464    
11465     </p>
11466     <p>Server will start sending the following notification messages:
11467     </p>
11468     <p>
11469     </p>
11470     <blockquote class="text">
11471 iliev 1110 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11472 schoenebeck 940 </p>
11473     </blockquote><p>
11474    
11475     </p>
11476     <p>where &lt;voices&gt; will be replaced by the new number of
11477     all currently active voices.
11478     </p>
11479 schoenebeck 1572 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
11480     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11481 schoenebeck 1696 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11482 schoenebeck 1572 Total number of active disk streams changed</h3>
11483    
11484     <p>Client may want to be notified when the total number of disk streams on the
11485     back-end changes by issuing the following command:
11486     </p>
11487     <p>
11488     </p>
11489     <blockquote class="text">
11490     <p>SUBSCRIBE TOTAL_STREAM_COUNT
11491     </p>
11492     </blockquote><p>
11493    
11494     </p>
11495     <p>Server will start sending the following notification messages:
11496     </p>
11497     <p>
11498     </p>
11499     <blockquote class="text">
11500     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
11501     </p>
11502     </blockquote><p>
11503    
11504     </p>
11505     <p>where &lt;streams&gt; will be replaced by the new number of
11506     all currently active disk streams.
11507     </p>
11508 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
11509     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11510 schoenebeck 1696 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11511 iliev 992 Number of MIDI instrument maps changed</h3>
11512    
11513     <p>Client may want to be notified when the number of MIDI instrument maps on the
11514     back-end changes by issuing the following command:
11515     </p>
11516     <p>
11517     </p>
11518     <blockquote class="text">
11519     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
11520     </p>
11521     </blockquote><p>
11522    
11523     </p>
11524     <p>Server will start sending the following notification messages:
11525     </p>
11526     <p>
11527     </p>
11528     <blockquote class="text">
11529     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
11530     </p>
11531     </blockquote><p>
11532    
11533     </p>
11534     <p>where &lt;maps&gt; will be replaced by the new number
11535     of MIDI instrument maps.
11536     </p>
11537     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
11538     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11539 schoenebeck 1696 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11540 iliev 992 MIDI instrument map information changed</h3>
11541    
11542     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
11543     back-end by issuing the following command:
11544     </p>
11545     <p>
11546     </p>
11547     <blockquote class="text">
11548     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
11549     </p>
11550     </blockquote><p>
11551    
11552     </p>
11553     <p>Server will start sending the following notification messages:
11554     </p>
11555     <p>
11556     </p>
11557     <blockquote class="text">
11558     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
11559     </p>
11560     </blockquote><p>
11561    
11562     </p>
11563     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11564     for which information changes occurred. The front-end will have to send
11565     the respective command to actually get the MIDI instrument map info. Because these messages
11566     will be triggered by LSCP commands issued by other clients rather than real
11567     time events happening on the server, it is believed that an empty notification
11568     message is sufficient here.
11569     </p>
11570     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
11571     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11572 schoenebeck 1696 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11573 iliev 992 Number of MIDI instruments changed</h3>
11574    
11575     <p>Client may want to be notified when the number of MIDI instrument maps on the
11576     back-end changes by issuing the following command:
11577     </p>
11578     <p>
11579     </p>
11580     <blockquote class="text">
11581     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
11582     </p>
11583     </blockquote><p>
11584    
11585     </p>
11586     <p>Server will start sending the following notification messages:
11587     </p>
11588     <p>
11589     </p>
11590     <blockquote class="text">
11591     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
11592     </p>
11593     </blockquote><p>
11594    
11595     </p>
11596     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
11597     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
11598     the new number of MIDI instruments in the specified map.
11599     </p>
11600     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
11601     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11602 schoenebeck 1696 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11603 iliev 992 MIDI instrument information changed</h3>
11604    
11605     <p>Client may want to be notified when changes were made to MIDI instruments on the
11606     back-end by issuing the following command:
11607     </p>
11608     <p>
11609     </p>
11610     <blockquote class="text">
11611     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
11612     </p>
11613     </blockquote><p>
11614    
11615     </p>
11616     <p>Server will start sending the following notification messages:
11617     </p>
11618     <p>
11619     </p>
11620     <blockquote class="text">
11621     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
11622     </p>
11623     </blockquote><p>
11624    
11625     </p>
11626     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11627     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
11628     the location of the changed MIDI instrument in the map. The front-end will have to send
11629     the respective command to actually get the MIDI instrument info. Because these messages
11630     will be triggered by LSCP commands issued by other clients rather than real
11631     time events happening on the server, it is believed that an empty notification
11632     message is sufficient here.
11633     </p>
11634 iliev 1110 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
11635     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11636 schoenebeck 1696 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11637 iliev 1110 Global settings changed</h3>
11638    
11639     <p>Client may want to be notified when changes to the global settings
11640     of the sampler were made by issuing the following command:
11641     </p>
11642     <p>
11643     </p>
11644     <blockquote class="text">
11645     <p>SUBSCRIBE GLOBAL_INFO
11646     </p>
11647     </blockquote><p>
11648    
11649     </p>
11650     <p>Server will start sending the following types of notification messages:
11651     </p>
11652     <p>
11653     </p>
11654     <blockquote class="text">
11655     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
11656     golbal volume of the sampler is changed, where &lt;volume&gt; will be
11657     replaced by the optional dotted floating point value, reflecting the
11658     new global volume parameter.
11659     </p>
11660     </blockquote><p>
11661    
11662     </p>
11663 iliev 1162 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
11664     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11665 schoenebeck 1696 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11666 iliev 1162 Number of database instrument directories changed</h3>
11667    
11668     <p>Client may want to be notified when the number of instrument
11669     directories in a particular directory in the instruments database
11670     is changed by issuing the following command:
11671     </p>
11672     <p>
11673     </p>
11674     <blockquote class="text">
11675     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
11676     </p>
11677     </blockquote><p>
11678    
11679     </p>
11680     <p>Server will start sending the following notification messages:
11681     </p>
11682     <p>
11683     </p>
11684     <blockquote class="text">
11685     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
11686     </p>
11687     </blockquote><p>
11688    
11689     </p>
11690     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11691     name of the directory in the instruments database,
11692     in which the number of directories is changed.
11693     </p>
11694     <p>Note that when a non-empty directory is removed, this event
11695     is not sent for the subdirectories in that directory.
11696     </p>
11697     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
11698     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11699 schoenebeck 1696 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11700 iliev 1162 Database instrument directory information changed</h3>
11701    
11702     <p>Client may want to be notified when changes were made to directories
11703     in the instruments database by issuing the following command:
11704     </p>
11705     <p>
11706     </p>
11707     <blockquote class="text">
11708     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11709     </p>
11710     </blockquote><p>
11711    
11712     </p>
11713     <p>Server will start sending the following notification messages:
11714     </p>
11715     <p>
11716     </p>
11717     <blockquote class="text">
11718     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11719     </p>
11720     </blockquote><p>
11721    
11722     </p>
11723     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11724     of the directory, for which information changes occurred. The front-end will have to send
11725     the respective command to actually get the updated directory info. Because these messages
11726     will be triggered by LSCP commands issued by other clients rather than real
11727     time events happening on the server, it is believed that an empty notification
11728     message is sufficient here.
11729     </p>
11730     <p>
11731     </p>
11732     <blockquote class="text">
11733     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11734     </p>
11735     </blockquote><p>
11736    
11737     </p>
11738     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11739     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11740     the new name of the directory, encapsulated into apostrophes.
11741     </p>
11742     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11743     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11744 schoenebeck 1696 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11745 iliev 1162 Number of database instruments changed</h3>
11746    
11747     <p>Client may want to be notified when the number of instruments
11748     in a particular directory in the instruments database
11749     is changed by issuing the following command:
11750     </p>
11751     <p>
11752     </p>
11753     <blockquote class="text">
11754     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11755     </p>
11756     </blockquote><p>
11757    
11758     </p>
11759     <p>Server will start sending the following notification messages:
11760     </p>
11761     <p>
11762     </p>
11763     <blockquote class="text">
11764     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11765     </p>
11766     </blockquote><p>
11767    
11768     </p>
11769     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11770     name of the directory in the instruments database,
11771     in which the number of instruments is changed.
11772     </p>
11773     <p>Note that when a non-empty directory is removed, this event
11774     is not sent for the instruments in that directory.
11775     </p>
11776     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11777     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11778 schoenebeck 1696 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11779 iliev 1162 Database instrument information changed</h3>
11780    
11781     <p>Client may want to be notified when changes were made to instruments
11782     in the instruments database by issuing the following command:
11783     </p>
11784     <p>
11785     </p>
11786     <blockquote class="text">
11787     <p>SUBSCRIBE DB_INSTRUMENT_INFO
11788     </p>
11789     </blockquote><p>
11790    
11791     </p>
11792     <p>Server will start sending the following notification messages:
11793     </p>
11794     <p>
11795     </p>
11796     <blockquote class="text">
11797     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11798     </p>
11799     </blockquote><p>
11800    
11801     </p>
11802     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11803     of the instrument, which settings are changed. The front-end will have to send
11804     the respective command to actually get the updated directory info. Because these messages
11805     will be triggered by LSCP commands issued by other clients rather than real
11806     time events happening on the server, it is believed that an empty notification
11807     message is sufficient here.
11808     </p>
11809     <p>
11810     </p>
11811     <blockquote class="text">
11812     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11813     </p>
11814     </blockquote><p>
11815    
11816     </p>
11817     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11818     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11819     the new name of the instrument, encapsulated into apostrophes.
11820     </p>
11821 iliev 1201 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11822     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11823 schoenebeck 1696 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
11824 iliev 1201 Database job status information changed</h3>
11825    
11826     <p>Client may want to be notified when the status of particular database
11827     instruments job is changed by issuing the following command:
11828     </p>
11829     <p>
11830     </p>
11831     <blockquote class="text">
11832     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11833     </p>
11834     </blockquote><p>
11835    
11836     </p>
11837     <p>Server will start sending the following notification messages:
11838     </p>
11839     <p>
11840     </p>
11841     <blockquote class="text">
11842     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11843     </p>
11844     </blockquote><p>
11845    
11846     </p>
11847     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11848     which status is changed. The front-end will have to send the respective
11849     command to actually get the status info. Because these messages
11850     will be triggered by LSCP commands issued by other clients rather than real
11851     time events happening on the server, it is believed that an empty notification
11852     message is sufficient here.
11853     </p>
11854 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11855 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11856 schoenebeck 1696 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
11857 schoenebeck 974 Miscellaneous and debugging events</h3>
11858 schoenebeck 940
11859 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
11860     the server by issuing the following command:
11861     </p>
11862 schoenebeck 708 <p>
11863     </p>
11864 senoner 542 <blockquote class="text">
11865     <p>SUBSCRIBE MISCELLANEOUS
11866     </p>
11867 schoenebeck 708 </blockquote><p>
11868 schoenebeck 940
11869 schoenebeck 708 </p>
11870 senoner 542 <p>Server will start sending the following notification messages:
11871     </p>
11872 schoenebeck 708 <p>
11873     </p>
11874 senoner 542 <blockquote class="text">
11875     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11876     </p>
11877 schoenebeck 708 </blockquote><p>
11878 schoenebeck 940
11879 schoenebeck 708 </p>
11880 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
11881     wants to send to the client. Client MAY display this data to the
11882     user AS IS to facilitate debugging.
11883     </p>
11884 schoenebeck 974 <a name="anchor14"></a><br /><hr />
11885     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11886     <a name="rfc.section.9"></a><h3>9.&nbsp;
11887     Security Considerations</h3>
11888 senoner 542
11889     <p>As there is so far no method of authentication and authorization
11890     defined and so not required for a client applications to succeed to
11891     connect, running LinuxSampler might be a security risk for the host
11892     system the LinuxSampler instance is running on.
11893     </p>
11894 schoenebeck 974 <a name="anchor15"></a><br /><hr />
11895     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11896     <a name="rfc.section.10"></a><h3>10.&nbsp;
11897     Acknowledgments</h3>
11898 senoner 542
11899     <p>This document has benefited greatly from the comments of the
11900     following people, discussed on the LinuxSampler developer's mailing
11901     list:
11902     </p>
11903 schoenebeck 708 <p>
11904     </p>
11905 senoner 542 <blockquote class="text">
11906     <p>Rui Nuno Capela
11907     </p>
11908     <p>Vladimir Senkov
11909     </p>
11910     <p>Mark Knecht
11911     </p>
11912 schoenebeck 561 <p>Grigor Iliev
11913     </p>
11914 schoenebeck 708 </blockquote><p>
11915 schoenebeck 940
11916 schoenebeck 708 </p>
11917 senoner 542 <a name="rfc.references1"></a><br /><hr />
11918 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11919 schoenebeck 708 <h3>11.&nbsp;References</h3>
11920 senoner 542 <table width="99%" border="0">
11921 schoenebeck 1251 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11922 iliev 1773 <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>
11923 senoner 542 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11924 iliev 1773 <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>
11925 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11926 iliev 1773 <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>
11927 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11928 iliev 1773 <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>
11929 senoner 542 </table>
11930    
11931     <a name="rfc.authors"></a><br /><hr />
11932 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11933 senoner 542 <h3>Author's Address</h3>
11934     <table width="99%" border="0" cellpadding="0" cellspacing="0">
11935     <tr><td class="author-text">&nbsp;</td>
11936     <td class="author-text">C.
11937     Schoenebeck</td></tr>
11938     <tr><td class="author-text">&nbsp;</td>
11939     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11940     <tr><td class="author-text">&nbsp;</td>
11941     <td class="author-text">Max-Planck-Str. 39</td></tr>
11942     <tr><td class="author-text">&nbsp;</td>
11943     <td class="author-text">74081 Heilbronn</td></tr>
11944     <tr><td class="author-text">&nbsp;</td>
11945     <td class="author-text">Germany</td></tr>
11946 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
11947 senoner 542 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
11948     </table>
11949     <a name="rfc.copyright"></a><br /><hr />
11950 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11951     <h3>Full Copyright Statement</h3>
11952 senoner 542 <p class='copyright'>
11953 schoenebeck 1685 Copyright &copy; The IETF Trust (2008).</p>
11954 senoner 542 <p class='copyright'>
11955 schoenebeck 974 This document is subject to the rights,
11956     licenses and restrictions contained in BCP&nbsp;78,
11957     and except as set forth therein,
11958     the authors retain all their rights.</p>
11959 senoner 542 <p class='copyright'>
11960 schoenebeck 974 This document and the information contained herein are provided
11961     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11962 iliev 1110 THE ORGANIZATION HE/SHE REPRESENTS
11963     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11964     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11965     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11966     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11967     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11968     PURPOSE.</p>
11969 schoenebeck 974 <h3>Intellectual Property</h3>
11970 senoner 542 <p class='copyright'>
11971 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
11972     Intellectual Property Rights or other rights that might be claimed
11973     to pertain to the implementation or use of the technology
11974     described in this document or the extent to which any license
11975     under such rights might or might not be available; nor does it
11976     represent that it has made any independent effort to identify any
11977     such rights.
11978     Information on the procedures with respect to
11979     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11980 senoner 542 <p class='copyright'>
11981 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
11982     assurances of licenses to be made available,
11983     or the result of an attempt made to obtain a general license or
11984     permission for the use of such proprietary rights by implementers or
11985     users of this specification can be obtained from the IETF on-line IPR
11986     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11987 senoner 542 <p class='copyright'>
11988 schoenebeck 974 The IETF invites any interested party to bring to its attention
11989     any copyrights,
11990     patents or patent applications,
11991     or other
11992     proprietary rights that may cover technology that may be required
11993     to implement this standard.
11994     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11995 iliev 1773 <h3>Acknowledgment</h3>
11996     <p class='copyright'>
11997     Funding for the RFC Editor function is provided by
11998     the IETF Administrative Support Activity (IASA).</p>
11999 senoner 542 </body></html>

  ViewVC Help
Powered by ViewVC